diff --git a/.travis.yml b/.travis.yml index a35c80b5b1..e58c8fee13 100755 --- a/.travis.yml +++ b/.travis.yml @@ -112,7 +112,7 @@ jobs: - $HOME/Library/Caches/Homebrew - /usr/local/Homebrew env: - - CMAKE_OPTS="-DBUILD_QT5=ON -DUSE_PYTHON3=1 -DCMAKE_CXX_FLAGS='-Wno-deprecated-declarations' -DBUILD_FEM_NETGEN=1 -DBUILD_FEM=1 -DBUILD_TECHDRAW=0 -DCMAKE_PREFIX_PATH='/usr/local/opt/qt/lib/cmake;/usr/local/opt/nglib/Contents/Resources' -DBUILD_FEM_NETGEN:BOOL=ON -DFREECAD_USE_EXTERNAL_KDL=ON -DCMAKE_BUILD_TYPE=Release" + - CMAKE_OPTS="-DBUILD_QT5=ON -DBUILD_ENABLE_CXX_STD='C++17' -DUSE_PYTHON3=1 -DCMAKE_CXX_FLAGS='-Wno-deprecated-declarations' -DBUILD_FEM_NETGEN=1 -DBUILD_FEM=1 -DBUILD_TECHDRAW=0 -DCMAKE_PREFIX_PATH='/usr/local/opt/qt/lib/cmake;/usr/local/opt/nglib/Contents/Resources' -DBUILD_FEM_NETGEN:BOOL=ON -DFREECAD_USE_EXTERNAL_KDL=ON -DCMAKE_BUILD_TYPE=Release" - PATH=/usr/local/bin:$PATH - CACHE_NAME=OSX1 @@ -339,7 +339,7 @@ script: cat $HOME/.ccache/ccache.conf ccache -z -s df -h - if [ "${TRAVIS_OS_NAME}" == "osx" ]; then export PATH="/usr/local/opt/ccacche/libexec:$PATH"; sudo gtimeout -s KILL 5400 make -j2; [ $? == 0 ] && echo "No timeout" || { ccache -s; return 0; } fi + if [ "${TRAVIS_OS_NAME}" == "osx" ]; then export PATH="/usr/local/opt/ccacche/libexec:$PATH"; sudo gtimeout -s KILL 7200 make -j2; [ $? == 124 ] && { ccache -s; return 0; } fi if [ "${TRAVIS_OS_NAME}" == "linux" ]; then sudo timeout -k 175m 170m make -j2 install || true; fi sudo make -j2 install ccache -s diff --git a/cMake/FindOpenCasCade.cmake b/cMake/FindOpenCasCade.cmake index 1668794d6e..48e5c98750 100644 --- a/cMake/FindOpenCasCade.cmake +++ b/cMake/FindOpenCasCade.cmake @@ -37,6 +37,12 @@ else(OCE_FOUND) #look for OpenCASCADE # we first try to find opencascade directly: if(NOT OCCT_CMAKE_FALLBACK) find_package(OpenCASCADE CONFIG QUIET) + if(NOT (CMAKE_VERSION VERSION_LESS 3.6.0)) + get_property(flags DIRECTORY PROPERTY COMPILE_DEFINITIONS) + # OCCT 7.5 adds this define that causes hundreds of compiler warnings with Qt5.x, so remove it again + list(FILTER flags EXCLUDE REGEX [[GL_GLEXT_LEGACY]]) + set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS ${flags}) + endif() endif(NOT OCCT_CMAKE_FALLBACK) if(OpenCASCADE_FOUND) set(OCC_FOUND ${OpenCASCADE_FOUND}) @@ -156,6 +162,8 @@ if(OCC_FOUND) ) if(OCC_VERSION_STRING VERSION_LESS 6.7.3) list(APPEND OCC_OCAF_LIBRARIES TKAdvTools) + elseif(NOT OCC_VERSION_STRING VERSION_LESS 7.5.0) + list(APPEND OCC_OCAF_LIBRARIES TKRWMesh) endif(OCC_VERSION_STRING VERSION_LESS 6.7.3) message(STATUS "-- Found OCE/OpenCASCADE version: ${OCC_VERSION_STRING}") message(STATUS "-- OCE/OpenCASCADE include directory: ${OCC_INCLUDE_DIR}") diff --git a/cMake/FreeCAD_Helpers/PrintFinalReport.cmake b/cMake/FreeCAD_Helpers/PrintFinalReport.cmake index 7a73db91e3..eccec0dcb2 100644 --- a/cMake/FreeCAD_Helpers/PrintFinalReport.cmake +++ b/cMake/FreeCAD_Helpers/PrintFinalReport.cmake @@ -223,8 +223,7 @@ macro(PrintFinalReport) file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin) file(COPY ${FREECAD_LIBPACK_DIR}/plugins/printsupport DESTINATION ${CMAKE_BINARY_DIR}/bin) file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR}) - file(COPY ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/PySide2/translations/qtwebengine_locales - DESTINATION ${CMAKE_BINARY_DIR}/bin) + file(COPY ${FREECAD_LIBPACK_DIR}/translations/qtwebengine_locales DESTINATION ${CMAKE_BINARY_DIR}/translations) message(STATUS "... end copying.\n=======================================\n") endif(FREECAD_COPY_DEPEND_DIRS_TO_BUILD) @@ -258,7 +257,7 @@ macro(PrintFinalReport) install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/sqldrivers DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/printsupport DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) - install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin/Lib/site-packages/PySide2/translations/qtwebengine_locales DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) + install(DIRECTORY ${FREECAD_LIBPACK_DIR}/translations/qtwebengine_locales DESTINATION ${CMAKE_INSTALL_PREFIX}/translations) install(DIRECTORY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin DESTINATION ${CMAKE_INSTALL_PREFIX}) message(STATUS "Created install commands for INSTALL target.\n") diff --git a/package/fedora/freecad.spec b/package/fedora/freecad.spec index 321e440585..4a96404b24 100644 --- a/package/fedora/freecad.spec +++ b/package/fedora/freecad.spec @@ -245,6 +245,9 @@ mv %{buildroot}%{_libdir}/%{name}/share/metainfo/* %{buildroot}%{_metainfodir}/ mkdir %{buildroot}%{_datadir}/applications/ mv %{buildroot}%{_libdir}/%{name}/share/applications/* %{buildroot}%{_datadir}/applications/ +mkdir -p %{buildroot}%{_datadir}/thumbnailers/ +mv %{buildroot}%{_libdir}/%{name}/share/thumbnailers/* %{buildroot}%{_datadir}/thumbnailers/ + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/ mv %{buildroot}%{_libdir}/%{name}/share/icons/hicolor/scalable/* %{buildroot}%{_datadir}/icons/hicolor/scalable/ @@ -264,7 +267,8 @@ popd # Remove obsolete Start_Page.html rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html # Belongs in %%license not %%doc -rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html +#No longer present? +#rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html # Bug maintainers to keep %%{plugins} macro up to date. # @@ -330,6 +334,7 @@ fi %{_datadir}/icons/hicolor/scalable/* %{_datadir}/pixmaps/* %{_datadir}/mime/packages/* +%{_datadir}/thumbnailers/* %files data %{_datadir}/%{name}/ diff --git a/src/3rdParty/salomesmesh/inc/Basics_Utils.hxx b/src/3rdParty/salomesmesh/inc/Basics_Utils.hxx index dd97bb9a68..20d0923c97 100644 --- a/src/3rdParty/salomesmesh/inc/Basics_Utils.hxx +++ b/src/3rdParty/salomesmesh/inc/Basics_Utils.hxx @@ -32,6 +32,9 @@ #ifndef WIN32 #include #else +// avoid name collision with std::byte in C++17 +#define NOCRYPT +#define NOGDI #include #include #pragma comment(lib,"winmm.lib") diff --git a/src/3rdParty/salomesmesh/inc/GEOMUtils.hxx b/src/3rdParty/salomesmesh/inc/GEOMUtils.hxx index 8ffa25be2e..7d92b8ab0e 100644 --- a/src/3rdParty/salomesmesh/inc/GEOMUtils.hxx +++ b/src/3rdParty/salomesmesh/inc/GEOMUtils.hxx @@ -106,8 +106,11 @@ namespace GEOMUtils * \brief Sort shapes in the list by their coordinates. * \param SL The list of shapes to sort. */ - struct CompareShapes : public std::binary_function + struct CompareShapes { + typedef TopoDS_Shape first_argument_type; + typedef TopoDS_Shape second_argument_type; + typedef bool result_type; CompareShapes (bool isOldSorting) : myIsOldSorting(isOldSorting) {} diff --git a/src/3rdParty/salomesmesh/inc/SMESH_ExceptHandlers.hxx b/src/3rdParty/salomesmesh/inc/SMESH_ExceptHandlers.hxx index e610a8c1ea..50cd06c805 100644 --- a/src/3rdParty/salomesmesh/inc/SMESH_ExceptHandlers.hxx +++ b/src/3rdParty/salomesmesh/inc/SMESH_ExceptHandlers.hxx @@ -51,13 +51,14 @@ class SMESH_EXPORT Unexpect { //save / retrieve unexpected exceptions treatment PVF old; public : #ifndef WNT + // std::set_unexpected has been removed in C++17 Unexpect( PVF f ) - { old = std::set_unexpected(f); } - ~Unexpect() { std::set_unexpected(old); } + { /*old = std::set_unexpected(f);*/old = f; } + ~Unexpect() { /*std::set_unexpected(old);*/ } #else Unexpect( PVF f ) - { old = std::set_unexpected(f); } - ~Unexpect() { std::set_unexpected(old); } + { old = ::set_unexpected(f); } + ~Unexpect() { ::set_unexpected(old); } #endif }; diff --git a/src/3rdParty/salomesmesh/inc/Utils_ExceptHandlers.hxx b/src/3rdParty/salomesmesh/inc/Utils_ExceptHandlers.hxx index 6cf1c56c05..6985f8fa67 100644 --- a/src/3rdParty/salomesmesh/inc/Utils_ExceptHandlers.hxx +++ b/src/3rdParty/salomesmesh/inc/Utils_ExceptHandlers.hxx @@ -39,9 +39,10 @@ class UTILS_EXPORT Unexpect { //save / retrieve unexpected exceptions treatment PVF old; public : #ifndef WIN32 + // std::set_unexpected has been removed in C++17 Unexpect( PVF f ) - { old = std::set_unexpected(f); } - ~Unexpect() { std::set_unexpected(old); } + { /*old = std::set_unexpected(f);*/old = f; } + ~Unexpect() { /*std::set_unexpected(old);*/ } #else Unexpect( PVF f ) { old = ::set_unexpected(f); } diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 5c7fb90814..e5cb6029fa 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -802,9 +802,9 @@ std::vector Application::openDocuments(const std::vector return res; } -Document* Application::openDocumentPrivate(const char * FileName, +Document* Application::openDocumentPrivate(const char * FileName, const char *propFileName, const char *label, - bool isMainDoc, bool createView, + bool isMainDoc, bool createView, const std::set &objNames) { FileInfo File(FileName); @@ -831,12 +831,12 @@ Document* Application::openDocumentPrivate(const char * FileName, } continue; } - if(it->second->testStatus(App::Document::PartialDoc) + if(it->second->testStatus(App::Document::PartialDoc) || it->second->testStatus(App::Document::PartialRestore)) { // Here means a document is already partially loaded, but the document - // is requested again, either partial or not. We must check if the + // is requested again, either partial or not. We must check if the // document contains the required object - + if(isMainDoc) { // Main document must be open fully, so close and reopen closeDocument(it->first.c_str()); @@ -1039,7 +1039,7 @@ std::string Application::getHelpDir() int Application::checkLinkDepth(int depth, bool no_throw) { if(_objCount<0) { _objCount = 0; - for(auto &v : DocMap) + for(auto &v : DocMap) _objCount += v.second->countObjects(); } if(depth > _objCount+2) { @@ -1704,7 +1704,7 @@ void Application::init(int argc, char ** argv) std::signal(SIGSEGV,segmentation_fault_handler); std::signal(SIGABRT,segmentation_fault_handler); std::set_terminate(unhandled_exception_handler); - std::set_unexpected(unexpection_error_handler); + ::set_unexpected(unexpection_error_handler); #elif defined(FC_OS_LINUX) std::signal(SIGSEGV,segmentation_fault_handler); #endif @@ -2127,7 +2127,7 @@ void Application::initApplication(void) catch (const Base::Exception& e) { e.ReportException(); } - + // seed randomizer srand(time(0)); } diff --git a/src/App/Application.h b/src/App/Application.h index 2d0fa041a7..f03dc97f99 100644 --- a/src/App/Application.h +++ b/src/App/Application.h @@ -72,7 +72,7 @@ class AppExport Application public: //--------------------------------------------------------------------- - // exported functions goes here +++++++++++++++++++++++++++++++++++++++ + // exported functions go here +++++++++++++++++++++++++++++++++++++++++ //--------------------------------------------------------------------- /** @name methods for document handling */ @@ -111,7 +111,7 @@ public: * * This function will also open any external referenced files. */ - std::vector openDocuments(const std::vector &filenames, + std::vector openDocuments(const std::vector &filenames, const std::vector *paths=0, const std::vector *labels=0, std::vector *errs=0, @@ -136,7 +136,7 @@ public: /// Indicate the application is closing all document bool isClosingAll() const; //@} - + /** @name Application-wide trandaction setting */ //@{ /** Setup a pending application-wide active transaction @@ -263,9 +263,9 @@ public: /// signal on about changing the editor mode of a property boost::signals2::signal signalChangePropertyEditor; //@} - + /** @name Signals of extension changes - * These signals are emitted on dynamic extension addition. Dynamic extensions are the ones added by python (c++ ones are part + * These signals are emitted on dynamic extension addition. Dynamic extensions are the ones added by python (c++ ones are part * of the class definition, hence not dynamic) * The extension in question is provided as parameter. */ @@ -382,7 +382,7 @@ public: /** @name Link handling */ //@{ - + /** Check for link recursion depth * * @param depth: current depth @@ -513,7 +513,7 @@ private: static PyObject *sGetActiveTransaction (PyObject *self,PyObject *args); static PyObject *sCloseActiveTransaction(PyObject *self,PyObject *args); static PyObject *sCheckAbort(PyObject *self,PyObject *args); - static PyMethodDef Methods[]; + static PyMethodDef Methods[]; friend class ApplicationObserver; @@ -526,7 +526,7 @@ private: static Application *_pcSingleton; /// argument helper function static void ParseOptions(int argc, char ** argv); - /// checks if the environment is allreight + /// checks if the environment is alright //static void CheckEnv(void); /// Search for the FreeCAD home path based on argv[0] /*! diff --git a/src/App/ApplicationPy.cpp b/src/App/ApplicationPy.cpp index 0aa2c16b78..345cce3895 100644 --- a/src/App/ApplicationPy.cpp +++ b/src/App/ApplicationPy.cpp @@ -174,9 +174,9 @@ PyMethodDef Application::Methods[] = { "active transaction causes any document changes to open a transaction with\n" "the given name and ID."}, {"getActiveTransaction", (PyCFunction) Application::sGetActiveTransaction, METH_VARARGS, - "getActiveTransaction() -> (name,id) return the current active transaction name and ID"}, + "getActiveTransaction() -> (name,id) return the current active transaction name and ID"}, {"closeActiveTransaction", (PyCFunction) Application::sCloseActiveTransaction, METH_VARARGS, - "closeActiveTransaction(abort=False) -- commit or abort current active transaction"}, + "closeActiveTransaction(abort=False) -- commit or abort current active transaction"}, {"isRestoring", (PyCFunction) Application::sIsRestoring, METH_VARARGS, "isRestoring() -> Bool -- Test if the application is opening some document"}, {"checkAbort", (PyCFunction) Application::sCheckAbort, METH_VARARGS, @@ -877,7 +877,7 @@ PyObject *Application::sGetLinksTo(PyObject * /*self*/, PyObject *args) auto links = GetApplication().getLinksTo(obj,options,count); Py::Tuple ret(links.size()); int i=0; - for(auto o : links) + for(auto o : links) ret.setItem(i++,Py::Object(o->getPyObject(),true)); return Py::new_reference_to(ret); }PY_CATCH; @@ -893,7 +893,7 @@ PyObject *Application::sGetDependentObjects(PyObject * /*self*/, PyObject *args) std::vector objs; if(PySequence_Check(obj)) { Py::Sequence seq(obj); - for(size_t i=0;i(seq[i].ptr())->getDocumentObjectPtr()); } }else if(!PyObject_TypeCheck(obj,&DocumentObjectPy::Type)) { - PyErr_SetString(PyExc_TypeError, + PyErr_SetString(PyExc_TypeError, "Expect first argument to be either a document object or sequence of document objects"); return 0; }else @@ -911,7 +911,7 @@ PyObject *Application::sGetDependentObjects(PyObject * /*self*/, PyObject *args) auto ret = App::Document::getDependencyList(objs,options); Py::Tuple tuple(ret.size()); - for(size_t i=0;igetPyObject(),true)); return Py::new_reference_to(tuple); } PY_CATCH; @@ -924,7 +924,7 @@ PyObject *Application::sSetActiveTransaction(PyObject * /*self*/, PyObject *args PyObject *persist = Py_False; if (!PyArg_ParseTuple(args, "s|O", &name,&persist)) return 0; - + PY_TRY { Py::Int ret(GetApplication().setActiveTransaction(name,PyObject_IsTrue(persist))); return Py::new_reference_to(ret); @@ -935,7 +935,7 @@ PyObject *Application::sGetActiveTransaction(PyObject * /*self*/, PyObject *args { if (!PyArg_ParseTuple(args, "")) return 0; - + PY_TRY { int id = 0; const char *name = GetApplication().getActiveTransaction(&id); @@ -954,7 +954,7 @@ PyObject *Application::sCloseActiveTransaction(PyObject * /*self*/, PyObject *ar int id = 0; if (!PyArg_ParseTuple(args, "|Oi", &abort,&id)) return 0; - + PY_TRY { GetApplication().closeActiveTransaction(PyObject_IsTrue(abort),id); Py_Return; diff --git a/src/App/AutoTransaction.cpp b/src/App/AutoTransaction.cpp index 6094ef2070..08fe11a69f 100644 --- a/src/App/AutoTransaction.cpp +++ b/src/App/AutoTransaction.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -50,7 +50,7 @@ AutoTransaction::AutoTransaction(const char *name, bool tmpName) { // We use negative transaction guard to disable auto transaction from here // and any stack below. This is to support user setting active transaction // before having any existing AutoTransaction on stack, or 'persist' - // transaction that can out live AutoTransaction. + // transaction that can out live AutoTransaction. if(app._activeTransactionGuard<0) --app._activeTransactionGuard; else if(tid || app._activeTransactionGuard>0) diff --git a/src/App/AutoTransaction.h b/src/App/AutoTransaction.h index e792b41b89..6f75d752b3 100644 --- a/src/App/AutoTransaction.h +++ b/src/App/AutoTransaction.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -70,10 +70,10 @@ public: * * Once disabled, any empty temporary named transaction is closed. If there * are non-empty or non-temporary named active transaction, it will not be - * auto closed. + * auto closed. * * This function may be used in, for example, Gui::Document::setEdit() to - * allow a transaction live past any command scope. + * allow a transaction live past any command scope. */ static void setEnable(bool enable); diff --git a/src/App/ColorModel.h b/src/App/ColorModel.h index 535047c7d2..af381d5516 100644 --- a/src/App/ColorModel.h +++ b/src/App/ColorModel.h @@ -197,7 +197,7 @@ public: ColorField (void); ColorField (const ColorField &rclCF); ColorField (const ColorModel &rclModel, float fMin, float fMax, unsigned short usCt); - virtual ~ColorField (); + virtual ~ColorField (); ColorField& operator = (const ColorField &rclCF); @@ -212,7 +212,7 @@ public: void setDirect (unsigned short usInd, Color clCol) { _aclField[usInd] = clCol; } float getMinValue (void) const { return _fMin; } float getMaxValue (void) const { return _fMax; } - + Color getColor (unsigned short usIndex) const { return _aclField[usIndex]; } inline Color getColor (float fVal) const; inline unsigned short getColorIndex (float fVal) const; @@ -281,7 +281,7 @@ public: ColorGradient& operator = (const ColorGradient &rclCR); - void set (float fMin, float fMax, unsigned short usCt, TStyle tS, bool bOG); + void set (float fMin, float fMax, unsigned short usCt, TStyle tS, bool bOG); void setRange (float fMin, float fMax) { set(fMin, fMax, _usCtColors, _tStyle, _bOutsideGrayed); } void getRange (float &rfMin, float &rfMax) const { rfMin = _fMin; rfMax = _fMax; } unsigned short getCountColors (void) const { return _usCtColors; } @@ -305,9 +305,9 @@ protected: TColorModel _tColorModel; TStyle _tStyle; float _fMin, _fMax; - unsigned short _usCtColors; + unsigned short _usCtColors; bool _bOutsideGrayed; - ColorModel _clTotal, _clTop, _clBottom; + ColorModel _clTotal, _clTop, _clBottom; void rebuild (void); void setColorModel (void); @@ -330,7 +330,7 @@ public: bool addMax (const std::string &rclName); bool remove (unsigned long ulPos); void removeFirst (void); - void removeLast (void); + void removeLast (void); Color getColor (unsigned long ulPos) const; uint32_t getPackedColor (unsigned long ulPos) const; @@ -426,10 +426,10 @@ inline Color ColorGradient::getColor (float fVal) const else return _clColFld2.getColor(fVal); } - else + else return _clColFld1.getColor(fVal); } - + default: case FLOW: { @@ -451,10 +451,10 @@ inline unsigned short ColorGradient::getColorIndex (float fVal) const else return (unsigned short)(_clColFld1.getCountColors() + _clColFld2.getColorIndex(fVal)); } - else + else return _clColFld1.getColorIndex(fVal); } - + default: case FLOW: { @@ -464,7 +464,7 @@ inline unsigned short ColorGradient::getColorIndex (float fVal) const } inline const ColorModel& ColorGradient::getColorModel (void) const -{ +{ if ( _tStyle == ZERO_BASED ) { if ( _fMax <= 0.0f ) @@ -482,4 +482,4 @@ inline const ColorModel& ColorGradient::getColorModel (void) const } // namespace App -#endif // APP_COLORMODEL_H +#endif // APP_COLORMODEL_H diff --git a/src/App/ComplexGeoData.h b/src/App/ComplexGeoData.h index 479fd0a572..6244096900 100644 --- a/src/App/ComplexGeoData.h +++ b/src/App/ComplexGeoData.h @@ -58,7 +58,7 @@ public: class AppExport ComplexGeoData: public Base::Persistence, public Base::Handled { TYPESYSTEM_HEADER(); - + public: struct Line {uint32_t I1; uint32_t I2;}; struct Facet {uint32_t I1; uint32_t I2; uint32_t I3;}; @@ -109,11 +109,11 @@ public: * using the setTransform() method. */ void setPlacement(const Base::Placement& rclPlacement); - /** Return the current transformation as placement using + /** Return the current transformation as placement using * getTransform(). */ Base::Placement getPlacement() const; - /** Override the current transformation with the new one. + /** Override the current transformation with the new one. * This method has to be handled by the child classes. * the actual placement and matrix is not part of this class. */ @@ -201,7 +201,7 @@ protected: /// from local to inside inline Base::Vector3f transformToInside(const Base::Vector3d& vec) const { - Base::Matrix4D tmpM(getTransform()); + Base::Matrix4D tmpM(getTransform()); tmpM.inverse(); Base::Vector3d tmp = tmpM * vec; return Base::Vector3f((float)tmp.x,(float)tmp.y,(float)tmp.z); diff --git a/src/App/ComplexGeoDataPyImp.cpp b/src/App/ComplexGeoDataPyImp.cpp index 79de406cc5..a89e02b29d 100644 --- a/src/App/ComplexGeoDataPyImp.cpp +++ b/src/App/ComplexGeoDataPyImp.cpp @@ -141,5 +141,5 @@ PyObject *ComplexGeoDataPy::getCustomAttributes(const char* /*attr*/) const int ComplexGeoDataPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 69988cb034..e985aa1b47 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -26,7 +26,7 @@ \ingroup APP \brief The Base class of the FreeCAD Document -This is (besides the App::Application class) the most important class in FreeCAD. +This (besides the App::Application class) is the most important class in FreeCAD. It contains all the data of the opened, saved, or newly created FreeCAD Document. The App::Document manages the Undo and Redo mechanism and the linking of documents. @@ -189,7 +189,7 @@ struct DocumentP std::map VertexObjectList; std::map vertexMap; #endif //USE_OLD_DAG - std::multimap > _RecomputeLog; DocumentP() { @@ -199,7 +199,7 @@ struct DocumentP // Set some random offset to reduce likelihood of ID collision when // copying shape from other document. It is probably better to randomize // on each object ID. - lastObjectId = _RDIST(_RGEN); + lastObjectId = _RDIST(_RGEN); activeObject = 0; activeUndoTransaction = 0; iTransactionMode = 0; @@ -1047,7 +1047,7 @@ bool Document::redo(int id) void Document::addOrRemovePropertyOfObject(TransactionalObject* obj, Property *prop, bool add) { - if (!prop || !obj || !obj->isAttachedToDocument()) + if (!prop || !obj || !obj->isAttachedToDocument()) return; if(d->iUndoMode && !isPerformingTransaction() && !d->activeUndoTransaction) { if(!testStatus(Restoring) || testStatus(Importing)) { @@ -1128,9 +1128,9 @@ int Document::_openTransaction(const char* name, int id) auto &app = GetApplication(); auto activeDoc = app.getActiveDocument(); - if(activeDoc && - activeDoc!=this && - !activeDoc->hasPendingTransaction()) + if(activeDoc && + activeDoc!=this && + !activeDoc->hasPendingTransaction()) { std::string aname("-> "); aname += d->activeUndoTransaction->Name; @@ -1165,11 +1165,11 @@ void Document::_checkTransaction(DocumentObject* pcDelObj, const Property *What, if(What && What->testStatus(Property::NoModify)) ignore = true; if(FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) { - if(What) - FC_LOG((ignore?"ignore":"auto") << " transaction (" - << line << ") '" << What->getFullName()); + if(What) + FC_LOG((ignore?"ignore":"auto") << " transaction (" + << line << ") '" << What->getFullName()); else - FC_LOG((ignore?"ignore":"auto") <<" transaction (" + FC_LOG((ignore?"ignore":"auto") <<" transaction (" << line << ") '" << name << "' in " << getName()); } if(!ignore) @@ -1254,7 +1254,7 @@ void Document::abortTransaction() { FC_WARN("Cannot abort transaction while transacting"); return; } - if (d->activeUndoTransaction) + if (d->activeUndoTransaction) GetApplication().closeActiveTransaction(true,d->activeUndoTransaction->getID()); } @@ -1620,7 +1620,7 @@ Document::Document(const char *name) ADD_PROPERTY_TYPE(License,(license.c_str()),0,Prop_None,"License string of the Item"); ADD_PROPERTY_TYPE(LicenseURL,(licenseUrl.c_str()),0,Prop_None,"URL to the license text/contract"); - ADD_PROPERTY_TYPE(ShowHidden,(false), 0,PropertyType(Prop_None), + ADD_PROPERTY_TYPE(ShowHidden,(false), 0,PropertyType(Prop_None), "Whether to show hidden object items in the tree view"); // this creates and sets 'TransientDir' in onChanged() @@ -1883,7 +1883,7 @@ void Document::writeObjects(const std::vector& obj, for(auto o : obj) { const auto &outList = o->getOutList(DocumentObject::OutListNoHidden | DocumentObject::OutListNoXLinked); - writer.Stream() << writer.ind() + writer.Stream() << writer.ind() << "<" FC_ELEMENT_OBJECT_DEPS " " FC_ATTR_DEP_OBJ_NAME "=\"" << o->getNameInDocument() << "\" " FC_ATTR_DEP_COUNT "=\"" << outList.size(); if(outList.empty()) { @@ -1923,7 +1923,7 @@ void Document::writeObjects(const std::vector& obj, if ((*it)->testStatus(ObjectStatus::Error)) { writer.Stream() << "Invalid=\"1\" "; auto desc = getErrorDescription(*it); - if(desc) + if(desc) writer.Stream() << "Error=\"" << Property::encodeAttribute(desc) << "\" "; } writer.Stream() << "/>" << endl; @@ -1956,9 +1956,9 @@ struct DepInfo { int canLoadPartial = 0; }; -static void _loadDeps(const std::string &name, - std::unordered_map &objs, - const std::unordered_map &deps) +static void _loadDeps(const std::string &name, + std::unordered_map &objs, + const std::unordered_map &deps) { auto it = deps.find(name); if(it == deps.end()) { @@ -2098,7 +2098,7 @@ Document::readObjects(Base::XMLReader& reader) } if (reader.hasAttribute("Invalid")) { obj->setStatus(ObjectStatus::Error, reader.getAttributeAsInteger("Invalid") != 0); - if(obj->isError() && reader.hasAttribute("Error")) + if(obj->isError() && reader.hasAttribute("Error")) d->addRecomputeLog(reader.getAttribute("Error"),obj); } } @@ -2777,7 +2777,7 @@ void Document::afterRestore(bool checkPartial) { setStatus(Document::Restoring, false); } -bool Document::afterRestore(const std::vector &objArray, bool checkPartial) +bool Document::afterRestore(const std::vector &objArray, bool checkPartial) { checkPartial = checkPartial && testStatus(Document::PartialDoc); if(checkPartial && d->touchedObjs.size()) @@ -2797,7 +2797,7 @@ bool Document::afterRestore(const std::vector &objArray, bool try { prop->afterRestore(); } catch (const Base::Exception& e) { - FC_ERR("Failed to restore " << obj->getFullName() + FC_ERR("Failed to restore " << obj->getFullName() << '.' << prop->getName() << ": " << e.what()); } } @@ -2864,7 +2864,7 @@ bool Document::afterRestore(const std::vector &objArray, bool if(checkPartial && d->touchedObjs.size()) { // partial document touched, signal full reload return false; - } else if(!d->touchedObjs.count(obj)) + } else if(!d->touchedObjs.count(obj)) obj->purgeTouched(); signalFinishRestoreObject(*obj); @@ -2955,9 +2955,9 @@ int Document::countObjects(void) const return static_cast(d->objectArray.size()); } -void Document::getLinksTo(std::set &links, +void Document::getLinksTo(std::set &links, const DocumentObject *obj, int options, int maxCount, - const std::vector &objs) const + const std::vector &objs) const { std::map > linkMap; @@ -2968,7 +2968,7 @@ void Document::getLinksTo(std::set &links, linked = o->getLinkedObject(false); else { auto ext = o->getExtensionByType(true); - if(ext) + if(ext) linked = ext->getTrueLinkedObject(false,0,0,true); else linked = o->getLinkedObject(false); @@ -3052,8 +3052,8 @@ std::vector Document::getInList(const DocumentObject* me) // external object. // static void _buildDependencyList(const std::vector &objectArray, - int options, std::vector *depObjs, - DependencyList *depList, std::map *objectMap, + int options, std::vector *depObjs, + DependencyList *depList, std::map *objectMap, bool *touchCheck = 0) { std::map > outLists; @@ -3132,7 +3132,7 @@ std::vector Document::getDependencyList( std::map > components; boost::strong_components(depList,boost::make_iterator_property_map( c.begin(),boost::get(boost::vertex_index,depList),c[0])); - for(size_t i=0;i Document::getDependentDocuments(bool sort) { } std::vector Document::getDependentDocuments( - std::vector pending, bool sort) + std::vector pending, bool sort) { DependencyList depList; std::map docMap; @@ -3409,7 +3409,7 @@ int Document::recompute(const std::vector &objs, bool forc #else //ifdef USE_OLD_DAG -int Document::recompute(const std::vector &objs, bool force, bool *hasError, int options) +int Document::recompute(const std::vector &objs, bool force, bool *hasError, int options) { if (d->undoing || d->rollback) { if (FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) @@ -3419,7 +3419,7 @@ int Document::recompute(const std::vector &objs, bool forc int objectCount = 0; if (testStatus(Document::PartialDoc)) { - if(mustExecute()) + if(mustExecute()) FC_WARN("Please reload partial document '" << Label.getValue() << "' for recomputation."); return 0; } @@ -3445,7 +3445,7 @@ int Document::recompute(const std::vector &objs, bool forc #if 0 ////////////////////////////////////////////////////////////////////////// - // FIXME Comment by Realthunder: + // FIXME Comment by Realthunder: // the topologicalSrot() below cannot handle partial recompute, haven't got // time to figure out the code yet, simply use back boost::topological_sort // for now, that is, rely on getDependencyList() to do the sorting. The @@ -3515,12 +3515,12 @@ int Document::recompute(const std::vector &objs, bool forc inObjIt->enforceRecompute(); } } - // check if all objects are recomputed but still thouched + // check if all objects are recomputed but still thouched for (size_t i=0;isetStatus(ObjectStatus::Recompute2,false); if(!filter.count(obj) && obj->isTouched()) { - if(passes>0) + if(passes>0) FC_ERR(obj->getFullName() << " still touched after recompute"); else{ FC_LOG(obj->getFullName() << " still touched after recompute"); @@ -3808,7 +3808,7 @@ bool Document::recomputeFeature(DocumentObject* Feat, bool recursive) return false; } -DocumentObject * Document::addObject(const char* sType, const char* pObjectName, +DocumentObject * Document::addObject(const char* sType, const char* pObjectName, bool isNew, const char* viewType, bool isPartial) { Base::BaseClass* base = static_cast(Base::Type::createInstanceByName(sType,true)); @@ -4331,7 +4331,7 @@ std::vector Document::copyObject( return result; } -std::vector +std::vector Document::importLinks(const std::vector &objArray) { std::set links; @@ -4395,7 +4395,7 @@ Document::importLinks(const std::vector &objArray) // properties, e.g. a link sub referring to some sub object of an xlink, If // that sub object is imported with a different name, and xlink is changed // before this link sub, it will break. - for(auto &v : propMap) + for(auto &v : propMap) v.first->Paste(*v.second); return objs; @@ -4422,13 +4422,13 @@ DocumentObject* Document::moveObject(DocumentObject* obj, bool recursive) } std::vector deps; - if(recursive) + if(recursive) deps = getDependencyList({obj},DepNoXLinked|DepSort); else deps.push_back(obj); auto objs = copyObject(deps,false); - if(objs.empty()) + if(objs.empty()) return 0; // Some object may delete its children if deleted, so we collect the IDs // or all depending objects for safety reason. diff --git a/src/App/Document.h b/src/App/Document.h index 4b5e727c4a..33084d221f 100644 --- a/src/App/Document.h +++ b/src/App/Document.h @@ -193,7 +193,7 @@ public: bool saveAs(const char* file); bool saveCopy(const char* file) const; /// Restore the document from the file in Property Path - void restore (const char *filename=0, + void restore (const char *filename=0, bool delaySignal=false, const std::set &objNames={}); void afterRestore(bool checkPartial=false); bool afterRestore(const std::vector &, bool checkPartial=false); @@ -209,7 +209,7 @@ public: * * @param objs: input list of objects. Only objects belonging to this document will * be checked for external links. And all found external linked object will be imported - * to this document. Link type properties of those input objects will be automatically + * to this document. Link type properties of those input objects will be automatically * reassigned to the imported objects. Note that the link properties of other objects * in the document but not included in the input list, will not be affected even if they * point to some object beining imported. To import all objects, simply pass in all objects @@ -228,7 +228,7 @@ public: /// Get program version the project file was created with const char* getProgramVersion() const; /** Returned filename - * + * * For saved document, this will be the content stored in property * 'Filename'. For unsaved temporary file, this will be the content of * property 'TransientDir'. @@ -252,7 +252,7 @@ public: * @param viewType override object's view provider name * @param isPartial indicate if this object is meant to be partially loaded */ - DocumentObject *addObject(const char* sType, const char* pObjectName=0, + DocumentObject *addObject(const char* sType, const char* pObjectName=0, bool isNew=true, const char *viewType=0, bool isPartial=false); /** Add an array of features of the given types and names. * Unicode names are set through the Label property. @@ -356,7 +356,7 @@ public: //@} - /** @name methods for the UNDO REDO and Transaction handling + /** @name methods for the UNDO REDO and Transaction handling * * Introduce a new concept of transaction ID. Each transaction must be * unique inside the document. Multiple transactions from different @@ -447,13 +447,13 @@ public: /// Raise exception on cycles DepNoCycle = 4, }; - /** Get a complete list of all objects the given objects depend on. + /** Get a complete list of all objects the given objects depend on. * * This function is defined as static because it accepts objects from * different documents, and the returned list will contain dependent * objects from all relevant documents * - * @param objs: input objects to query for dependency. + * @param objs: input objects to query for dependency. * @param options: See DependencyOption */ static std::vector getDependencyList( @@ -482,7 +482,7 @@ public: * @param objs: optional objects to search for, if empty, then all objects * of this document are searched. */ - void getLinksTo(std::set &links, + void getLinksTo(std::set &links, const DocumentObject *obj, int options, int maxCount=0, const std::vector &objs = {}) const; diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 8b599356e7..b30a9d70a3 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -183,14 +183,14 @@ public: */ //@{ /** Set sub-element visibility - * + * * For performance reason, \c element must not contain any further * sub-elements, i.e. there should be no '.' inside \c element. * * @return -1 if element visibility is not supported, 0 if element is not * found, 1 if success */ - virtual int setElementVisible(const char *element, bool visible); + virtual int setElementVisible(const char *element, bool visible); /** Get sub-element visibility * @@ -246,7 +246,7 @@ public: * @param inList [in, out]: optional pointer to a vector holding the output * objects, with the furthest linking object ordered last. */ - void getInListEx(std::set &inSet, + void getInListEx(std::set &inSet, bool recursive, std::vector *inList=0) const; /** Return a set of all objects linking to this object, including possible external parent objects * @param recursive [in]: whether to obtain recursive in list @@ -334,10 +334,10 @@ public: * include the transformation applied by the final object reference in \c * subname. For Part::Feature, the transformation is applied to the * TopoShape inside \c pyObj before returning. - * + * * @param transform: if false, then it will not apply the object's own * transformation to \c mat, which lets you override the object's placement - * (and possibly scale). + * (and possibly scale). * * @param depth: depth limitation as hint for cyclic link detection * @@ -345,7 +345,7 @@ public: * then it shall return itself. If subname is invalid, then it shall return * zero. */ - virtual DocumentObject *getSubObject(const char *subname, PyObject **pyObj=0, + virtual DocumentObject *getSubObject(const char *subname, PyObject **pyObj=0, Base::Matrix4D *mat=0, bool transform=true, int depth=0) const; /// Return a list of objects referenced by a given subname including this object @@ -380,13 +380,13 @@ public: std::vector > getParents(int depth=0) const; /** Return the linked object with optional transformation - * + * * @param recurse: If false, return the immediate linked object, or else * recursively call this function to return the final linked object. * * @param mat: If non zero, it is used as the current transformation matrix * on input. And output as the accumulated transformation till the final - * linked object. + * linked object. * * @param transform: if false, then it will not accumulate the object's own * placement into \c mat, which lets you override the object's placement. @@ -394,7 +394,7 @@ public: * @return Return the linked object. This function must return itself if the * it is not a link or the link is invalid. */ - virtual DocumentObject *getLinkedObject(bool recurse=true, + virtual DocumentObject *getLinkedObject(bool recurse=true, Base::Matrix4D *mat=0, bool transform=false, int depth=0) const; /* Return true to cause PropertyView to show linked object's property */ @@ -441,10 +441,10 @@ public: short attr=0, bool ro=false, bool hidden=false) override; /** Resolve the last document object referenced in the subname - * + * * @param subname: dot separated subname * @param parent: return the direct parent of the object - * @param childName: return child name to be passed to is/setElementVisible() + * @param childName: return child name to be passed to is/setElementVisible() * @param subElement: return non-object sub-element name if found. The * pointer is guaranteed to be within the buffer pointed to by 'subname' * @@ -452,7 +452,7 @@ public: * @return Returns the last referenced document object in the subname. If no * such object in subname, return pObject. */ - App::DocumentObject *resolve(const char *subname, App::DocumentObject **parent=0, + App::DocumentObject *resolve(const char *subname, App::DocumentObject **parent=0, std::string *childName=0, const char **subElement=0, PyObject **pyObj=0, Base::Matrix4D *mat=0, bool transform=true, int depth=0) const; @@ -500,7 +500,7 @@ public: * * The common parent 'Group' is removed. */ - App::DocumentObject *resolveRelativeLink(std::string &subname, + App::DocumentObject *resolveRelativeLink(std::string &subname, App::DocumentObject *&link, std::string &linkSub) const; /** Called to adjust link properties to avoid cyclic links @@ -533,7 +533,7 @@ public: /** Allow object to redirect a subname path * * @param ss: input as the current subname path from \a topParent leading - * just before this object, i.e. ends at the parent of this object. This + * just before this object, i.e. ends at the parent of this object. This * function should append its own name to this path, or redirect the * subname to other place. * @param topParent: top parent of this subname path @@ -541,7 +541,7 @@ public: * * This function is called by tree view to generate a subname path when an * item is selected in the tree. Document object can use this function to - * redirect the selection to some other objects. + * redirect the selection to some other objects. */ virtual bool redirectSubName(std::ostringstream &ss, DocumentObject *topParent, DocumentObject *child) const; @@ -628,7 +628,7 @@ private: // unique identifier (among a document) of this object. long _Id; - + private: // Back pointer to all the fathers in a DAG of the document // this is used by the document (via friend) to have a effective DAG handling diff --git a/src/App/DocumentObjectExtension.cpp b/src/App/DocumentObjectExtension.cpp index d1f6e10b0e..7af443a575 100644 --- a/src/App/DocumentObjectExtension.cpp +++ b/src/App/DocumentObjectExtension.cpp @@ -35,7 +35,7 @@ using namespace App; EXTENSION_PROPERTY_SOURCE(App::DocumentObjectExtension, App::Extension) -DocumentObjectExtension::DocumentObjectExtension() +DocumentObjectExtension::DocumentObjectExtension() { initExtensionType(App::DocumentObjectExtension::getExtensionClassTypeId()); } @@ -46,7 +46,7 @@ DocumentObjectExtension::~DocumentObjectExtension() } short int DocumentObjectExtension::extensionMustExecute(void) { - + return 0; } @@ -64,15 +64,15 @@ void DocumentObjectExtension::onExtendedDocumentRestored() { } void DocumentObjectExtension::onExtendedSetupObject() { - + } void DocumentObjectExtension::onExtendedUnsetupObject() { - + } PyObject* DocumentObjectExtension::getExtensionPyObject(void) { - + if (ExtensionPythonObject.is(Py::_None())){ // ref counter is set to 1 ExtensionPythonObject = Py::Object(new DocumentObjectExtensionPy(this),true); @@ -82,17 +82,17 @@ PyObject* DocumentObjectExtension::getExtensionPyObject(void) { const DocumentObject* DocumentObjectExtension::getExtendedObject() const { - assert(getExtendedContainer()->isDerivedFrom(DocumentObject::getClassTypeId())); + assert(getExtendedContainer()->isDerivedFrom(DocumentObject::getClassTypeId())); return static_cast(getExtendedContainer()); } DocumentObject* DocumentObjectExtension::getExtendedObject() { - assert(getExtendedContainer()->isDerivedFrom(DocumentObject::getClassTypeId())); + assert(getExtendedContainer()->isDerivedFrom(DocumentObject::getClassTypeId())); return static_cast(getExtendedContainer()); } -bool DocumentObjectExtension::extensionGetSubObject(DocumentObject *&, +bool DocumentObjectExtension::extensionGetSubObject(DocumentObject *&, const char *, PyObject **, Base::Matrix4D *, bool, int) const { return false; diff --git a/src/App/DocumentObjectExtension.h b/src/App/DocumentObjectExtension.h index cb7c8297ec..66b2d5af96 100644 --- a/src/App/DocumentObjectExtension.h +++ b/src/App/DocumentObjectExtension.h @@ -28,10 +28,10 @@ #include "DocumentObject.h" namespace App { - + /** * @brief Extension with special document object calls - * + * */ class AppExport DocumentObjectExtension : public App::Extension { @@ -47,12 +47,12 @@ public: App::DocumentObject* getExtendedObject(); const App::DocumentObject* getExtendedObject() const; - + //override if execution is necessary virtual short extensionMustExecute(void); virtual App::DocumentObjectExecReturn *extensionExecute(void); - - + + /// get called after setting the document virtual void onExtendedSettingDocument(); /// get called after a document has been fully restored @@ -63,8 +63,8 @@ public: virtual void onExtendedUnsetupObject(); virtual PyObject* getExtensionPyObject(void) override; - - /// returns the type name of the ViewProviderExtension which is automatically attached + + /// returns the type name of the ViewProviderExtension which is automatically attached /// to the viewprovider object when it is initiated virtual const char* getViewProviderExtensionName(void) const {return "";} @@ -73,7 +73,7 @@ public: * * @return Return turn if handled, the sub object is returned in \c ret */ - virtual bool extensionGetSubObject( DocumentObject *&ret, const char *subname, + virtual bool extensionGetSubObject( DocumentObject *&ret, const char *subname, PyObject **pyObj, Base::Matrix4D *mat, bool transform, int depth) const; /** Get name references of all sub objects diff --git a/src/App/DocumentObjectFileIncluded.cpp b/src/App/DocumentObjectFileIncluded.cpp index cba1508e8b..a7e0516141 100644 --- a/src/App/DocumentObjectFileIncluded.cpp +++ b/src/App/DocumentObjectFileIncluded.cpp @@ -34,7 +34,7 @@ using namespace App; PROPERTY_SOURCE(App::DocumentObjectFileIncluded, App::DocumentObject) -DocumentObjectFileIncluded::DocumentObjectFileIncluded() +DocumentObjectFileIncluded::DocumentObjectFileIncluded() { ADD_PROPERTY_TYPE(File,(0),"",(App::PropertyType)(Prop_None),"File to include into Project File"); } diff --git a/src/App/DocumentObjectFileIncluded.h b/src/App/DocumentObjectFileIncluded.h index da2f014965..2c5d4a037a 100644 --- a/src/App/DocumentObjectFileIncluded.h +++ b/src/App/DocumentObjectFileIncluded.h @@ -41,12 +41,12 @@ public: DocumentObjectFileIncluded(void); virtual ~DocumentObjectFileIncluded(); - + /// returns the type name of the ViewProvider virtual const char* getViewProviderName(void) const { return "Gui::ViewProviderDocumentObject"; } - + /// Properties PropertyFileIncluded File; diff --git a/src/App/DocumentObjectGroup.cpp b/src/App/DocumentObjectGroup.cpp index ec94fcd8df..deb985984a 100644 --- a/src/App/DocumentObjectGroup.cpp +++ b/src/App/DocumentObjectGroup.cpp @@ -58,7 +58,7 @@ PyObject *DocumentObjectGroup::getPyObject() // Python feature --------------------------------------------------------- namespace App { - + /// @cond DOXERR PROPERTY_SOURCE_TEMPLATE(App::DocumentObjectGroupPython, App::DocumentObjectGroup) template<> const char* App::DocumentObjectGroupPython::getViewProviderName(void) const { diff --git a/src/App/DocumentObjectGroup.h b/src/App/DocumentObjectGroup.h index 5a74078892..c52b0146db 100644 --- a/src/App/DocumentObjectGroup.h +++ b/src/App/DocumentObjectGroup.h @@ -33,21 +33,21 @@ namespace App { - + class AppExport DocumentObjectGroup : public DocumentObject, public GroupExtension { - + PROPERTY_HEADER_WITH_EXTENSIONS(App::DocumentObjectGroup); - + public: /// Constructor DocumentObjectGroup(void); virtual ~DocumentObjectGroup(); - + /// returns the type name of the ViewProvider virtual const char* getViewProviderName(void) const override{ return "Gui::ViewProviderDocumentObjectGroup"; } - + virtual PyObject *getPyObject(void) override; }; diff --git a/src/App/DocumentObjectPy.xml b/src/App/DocumentObjectPy.xml index 03e993d874..bc1493fc6c 100644 --- a/src/App/DocumentObjectPy.xml +++ b/src/App/DocumentObjectPy.xml @@ -65,6 +65,20 @@ recompute(recursive=False): Recomputes this object + + + Returns the status of the object as string. +If the object is invalid its error description will be returned. +If the object is valid but touched then 'Touched' will be returned, +'Valid' otherwise. + + + + + + Returns True if the object is valid, False otherwise + + diff --git a/src/App/DocumentObjectPyImp.cpp b/src/App/DocumentObjectPyImp.cpp index ac5ec8db08..618968d42f 100644 --- a/src/App/DocumentObjectPyImp.cpp +++ b/src/App/DocumentObjectPyImp.cpp @@ -397,6 +397,34 @@ PyObject* DocumentObjectPy::recompute(PyObject *args) } } +PyObject* DocumentObjectPy::isValid(PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return nullptr; + + try { + bool ok = getDocumentObjectPtr()->isValid(); + return Py_BuildValue("O", (ok ? Py_True : Py_False)); + } + catch (const Base::Exception& e) { + throw Py::RuntimeError(e.what()); + } +} + +PyObject* DocumentObjectPy::getStatusString(PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return nullptr; + + try { + Py::String text(getDocumentObjectPtr()->getStatusString()); + return Py::new_reference_to(text); + } + catch (const Base::Exception& e) { + throw Py::RuntimeError(e.what()); + } +} + PyObject* DocumentObjectPy::getSubObject(PyObject *args, PyObject *keywds) { PyObject *obj; diff --git a/src/App/DocumentObserver.cpp b/src/App/DocumentObserver.cpp index 5c4f5a9d1a..f17c59a4a9 100644 --- a/src/App/DocumentObserver.cpp +++ b/src/App/DocumentObserver.cpp @@ -249,7 +249,7 @@ const std::string &DocumentObjectT::getPropertyName() const { std::string DocumentObjectT::getPropertyPython() const { std::stringstream str; - str << "FreeCAD.getDocument('" << document + str << "FreeCAD.getDocument('" << document << "').getObject('" << object << "')"; if(property.size()) @@ -364,7 +364,7 @@ std::string SubObjectT::getOldElementName(int *index) const { if(!obj) return std::string(); GeoFeature::resolveElement(obj,subname.c_str(),element); - if(!index) + if(!index) return std::move(element.second); std::size_t pos = element.second.find_first_of("0123456789"); if(pos == std::string::npos) diff --git a/src/App/DocumentObserverPython.h b/src/App/DocumentObserverPython.h index 9b94bb5b82..c1ee595cf1 100644 --- a/src/App/DocumentObserverPython.h +++ b/src/App/DocumentObserverPython.h @@ -111,13 +111,13 @@ private: void slotBeforeAddingDynamicExtension(const App::ExtensionContainer&, std::string extension); /** Called when an object gets a dynamic extension added*/ void slotAddedDynamicExtension(const App::ExtensionContainer&, std::string extension); - + private: Py::Object inst; static std::vector _instances; - typedef struct { + typedef struct PythonObject { boost::signals2::scoped_connection slot; Py::Object py; PyObject* ptr() { diff --git a/src/App/DocumentPyImp.cpp b/src/App/DocumentPyImp.cpp index 6e991a8304..fc5fba2526 100644 --- a/src/App/DocumentPyImp.cpp +++ b/src/App/DocumentPyImp.cpp @@ -91,8 +91,8 @@ PyObject* DocumentPy::saveAs(PyObject * args) PyObject* DocumentPy::saveCopy(PyObject * args) { char* fn; - if (!PyArg_ParseTuple(args, "s", &fn)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s", &fn)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { getDocumentPtr()->saveCopy(fn); @@ -127,8 +127,8 @@ PyObject* DocumentPy::load(PyObject * args) PyObject* DocumentPy::restore(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception const char* filename = getDocumentPtr()->FileName.getValue(); if (!filename || *filename == '\0') { PyErr_Format(PyExc_ValueError, "Object attribute 'FileName' is not set"); @@ -151,8 +151,8 @@ PyObject* DocumentPy::restore(PyObject * args) PyObject* DocumentPy::mergeProject(PyObject * args) { char* filename; - if (!PyArg_ParseTuple(args, "s", &filename)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s", &filename)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { Base::FileInfo fi(filename); @@ -167,8 +167,8 @@ PyObject* DocumentPy::mergeProject(PyObject * args) PyObject* DocumentPy::exportGraphviz(PyObject * args) { char* fn=0; - if (!PyArg_ParseTuple(args, "|s",&fn)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "|s",&fn)) // convert args: Python->C + return NULL; // NULL triggers exception if (fn) { Base::FileInfo fi(fn); Base::ofstream str(fi); @@ -194,9 +194,9 @@ PyObject* DocumentPy::addObject(PyObject *args, PyObject *kwd) PyObject* view=0; PyObject *attach=Py_False; static char *kwlist[] = {"type","name","objProxy","viewProxy","attach","viewType",NULL}; - if (!PyArg_ParseTupleAndKeywords(args,kwd,"s|sOOOs", + if (!PyArg_ParseTupleAndKeywords(args,kwd,"s|sOOOs", kwlist, &sType,&sName,&obj,&view,&attach,&sViewType)) - return NULL; + return NULL; DocumentObject *pcFtr = 0; @@ -300,7 +300,7 @@ PyObject* DocumentPy::copyObject(PyObject *args) bool single = false; if (PySequence_Check(obj)) { Py::Sequence seq(obj); - for (size_t i=0;igetPyObject(); Py::Tuple tuple(ret.size()); - for (size_t i=0;igetPyObject(),true)); return Py::new_reference_to(tuple); } PY_CATCH @@ -339,7 +339,7 @@ PyObject* DocumentPy::importLinks(PyObject *args) std::vector objs; if (PySequence_Check(obj)) { Py::Sequence seq(obj); - for (size_t i=0;i(obj)->getDocumentObjectPtr()); } - + if (objs.empty()) objs = getDocumentPtr()->getObjects(); @@ -366,7 +366,7 @@ PyObject* DocumentPy::importLinks(PyObject *args) auto ret = getDocumentPtr()->importLinks(objs); Py::Tuple tuple(ret.size()); - for (size_t i=0;igetPyObject(),true)); return Py::new_reference_to(tuple); } PY_CATCH @@ -420,21 +420,21 @@ PyObject* DocumentPy::openTransaction(PyObject *args) } getDocumentPtr()->openTransaction(cmd.c_str()); - Py_Return; + Py_Return; } PyObject* DocumentPy::abortTransaction(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception getDocumentPtr()->abortTransaction(); Py_Return; } PyObject* DocumentPy::commitTransaction(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception getDocumentPtr()->commitTransaction(); Py_Return; } @@ -445,8 +445,8 @@ Py::Boolean DocumentPy::getHasPendingTransaction() const { PyObject* DocumentPy::undo(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception if (getDocumentPtr()->getAvailableUndos()) getDocumentPtr()->undo(); Py_Return; @@ -454,8 +454,8 @@ PyObject* DocumentPy::undo(PyObject * args) PyObject* DocumentPy::redo(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception if (getDocumentPtr()->getAvailableRedos()) getDocumentPtr()->redo(); Py_Return; @@ -463,8 +463,8 @@ PyObject* DocumentPy::redo(PyObject * args) PyObject* DocumentPy::clearUndos(PyObject * args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception getDocumentPtr()->clearUndos(); Py_Return; } @@ -487,7 +487,7 @@ PyObject* DocumentPy::recompute(PyObject * args) } Py::Sequence seq(pyobjs); - for (size_t i=0;iC + if (!PyArg_ParseTuple(args, "s",&sName)) { // convert args: Python->C if (!PyArg_ParseTuple(args, "l", &id)) - return NULL; // NULL triggers exception + return NULL; // NULL triggers exception } DocumentObject *pcFtr = sName?getDocumentPtr()->getObject(sName):getDocumentPtr()->getObjectByID(id); @@ -531,8 +531,8 @@ PyObject* DocumentPy::getObject(PyObject *args) PyObject* DocumentPy::getObjectsByLabel(PyObject *args) { char *sName; - if (!PyArg_ParseTuple(args, "s",&sName)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s",&sName)) // convert args: Python->C + return NULL; // NULL triggers exception Py::List list; std::string name = sName; @@ -575,7 +575,7 @@ PyObject* DocumentPy::findObjects(PyObject *args, PyObject *kwds) } Py_ssize_t index=0; - PyObject* list = PyList_New((Py_ssize_t)res.size()); + PyObject* list = PyList_New((Py_ssize_t)res.size()); for (std::vector::const_iterator It = res.begin();It != res.end();++It, index++) PyList_SetItem(list, index, (*It)->getPyObject()); return list; @@ -591,9 +591,9 @@ Py::Object DocumentPy::getActiveObject(void) const PyObject* DocumentPy::supportedTypes(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C return NULL; // NULL triggers exception - + std::vector ary; Base::Type::getAllDerivedFrom(App::DocumentObject::getClassTypeId(), ary); Py::List res; @@ -602,7 +602,7 @@ PyObject* DocumentPy::supportedTypes(PyObject *args) return Py::new_reference_to(res); } -Py::List DocumentPy::getObjects(void) const +Py::List DocumentPy::getObjects(void) const { std::vector objs = getDocumentPtr()->getObjects(); Py::List res; @@ -733,7 +733,7 @@ PyObject* DocumentPy::getTempFileName(PyObject *args) throw Py::TypeError(error); } - // search for a temp file name in the document transient directory + // search for a temp file name in the document transient directory Base::FileInfo fileName(Base::FileInfo::getTempFileName (string.c_str(),getDocumentPtr()->TransientDir.getValue())); // delete the created file, we need only the name... @@ -785,7 +785,7 @@ int DocumentPy::setCustomAttributes(const char* attr, PyObject *) if (obj) { std::stringstream str; - str << "'Document' object attribute '" << attr + str << "'Document' object attribute '" << attr << "' must not be set this way" << std::ends; PyErr_SetString(PyExc_RuntimeError, str.str().c_str()); return -1; @@ -815,7 +815,7 @@ PyObject* DocumentPy::getLinksTo(PyObject *args) getDocumentPtr()->getLinksTo(links,obj,options,count); Py::Tuple ret(links.size()); int i=0; - for (auto o : links) + for (auto o : links) ret.setItem(i++,Py::Object(o->getPyObject(),true)); return Py::new_reference_to(ret); } PY_CATCH diff --git a/src/App/DynamicProperty.cpp b/src/App/DynamicProperty.cpp index ec545d86eb..9b78d578e5 100644 --- a/src/App/DynamicProperty.cpp +++ b/src/App/DynamicProperty.cpp @@ -85,7 +85,7 @@ std::vector DynamicProperty::getDynamicPropertyNames() const std::vector names; auto &index = props.get<0>(); names.reserve(index.size()); - for(auto &v : index) + for(auto &v : index) names.push_back(v.name); return names; } @@ -146,7 +146,7 @@ const char* DynamicProperty::getPropertyDocumentation(const char *name) const return 0; } -Property* DynamicProperty::addDynamicProperty(PropertyContainer &pc, const char* type, +Property* DynamicProperty::addDynamicProperty(PropertyContainer &pc, const char* type, const char* name, const char* group, const char* doc, short attr, bool ro, bool hidden) { Base::BaseClass* base = static_cast(Base::Type::createInstanceByName(type,true)); @@ -246,7 +246,7 @@ std::string DynamicProperty::getUniquePropertyName(PropertyContainer &pc, const } } -void DynamicProperty::save(const Property *prop, Base::Writer &writer) const +void DynamicProperty::save(const Property *prop, Base::Writer &writer) const { auto &index = props.get<1>(); auto it = index.find(const_cast(prop)); @@ -259,8 +259,8 @@ void DynamicProperty::save(const Property *prop, Base::Writer &writer) const } } -Property *DynamicProperty::restore(PropertyContainer &pc, - const char *PropName, const char *TypeName, Base::XMLReader &reader) +Property *DynamicProperty::restore(PropertyContainer &pc, + const char *PropName, const char *TypeName, Base::XMLReader &reader) { if (!reader.hasAttribute("group")) return 0; diff --git a/src/App/ExpressionParser.h b/src/App/ExpressionParser.h index cbfb369034..ce1d4c2200 100644 --- a/src/App/ExpressionParser.h +++ b/src/App/ExpressionParser.h @@ -1,6 +1,6 @@ /**************************************************************************** * Copyright (c) 2015 Eivind Kvedalen * - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -127,8 +127,8 @@ protected: class AppExport ConstantExpression : public NumberExpression { TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: - ConstantExpression(const App::DocumentObject *_owner = 0, - const char *_name = "", + ConstantExpression(const App::DocumentObject *_owner = 0, + const char *_name = "", const Base::Quantity &_quantity = Base::Quantity()); std::string getName() const { return name; } @@ -287,7 +287,7 @@ public: LAST, }; - FunctionExpression(const App::DocumentObject *_owner = 0, Function _f = NONE, + FunctionExpression(const App::DocumentObject *_owner = 0, Function _f = NONE, std::string &&name = std::string(), std::vector _args = std::vector()); virtual ~FunctionExpression(); @@ -352,10 +352,10 @@ protected: virtual void _updateLabelReference(App::DocumentObject *, const std::string &, const char *) override; virtual bool _updateElementReference(App::DocumentObject *,bool,ExpressionVisitor &) override; virtual bool _relabeledDocument(const std::string &, const std::string &, ExpressionVisitor &) override; - virtual bool _renameObjectIdentifier(const std::map &, + virtual bool _renameObjectIdentifier(const std::map &, const ObjectIdentifier &, ExpressionVisitor &) override; - virtual void _collectReplacement(std::map &, - const App::DocumentObject *parent, App::DocumentObject *oldObj, + virtual void _collectReplacement(std::map &, + const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const override; virtual void _moveCells(const CellAddress &, int, int, ExpressionVisitor &) override; virtual void _offsetCells(int, int, ExpressionVisitor &) override; @@ -435,7 +435,7 @@ protected: virtual void _toString(std::ostream &ss, bool persistent, int indent) const override; virtual Py::Object _getPyValue() const override; virtual void _getDeps(ExpressionDeps &) const override; - virtual bool _renameObjectIdentifier(const std::map &, + virtual bool _renameObjectIdentifier(const std::map &, const ObjectIdentifier &, ExpressionVisitor &) override; virtual void _moveCells(const CellAddress &, int, int, ExpressionVisitor &) override; virtual void _offsetCells(int, int, ExpressionVisitor &) override; diff --git a/src/App/ExpressionParser.l b/src/App/ExpressionParser.l index 709723527f..d293e46309 100644 --- a/src/App/ExpressionParser.l +++ b/src/App/ExpressionParser.l @@ -1,8 +1,28 @@ %{ -/* Lexer for the FreeCAD Expression language */ -/* (c) 2010 Jürgen Riegel LGPL */ -/* (c) 2015 Eivind Kvedalen LGPL */ +/*************************************************************************** + * Copyright (c) 2010 Jürgen Riegel * + * Copyright (c) 2015 Eivind Kvedalen * + * * + * 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 * + * * + ***************************************************************************/ +/* Lexer for the FreeCAD Expression language */ /* This disables inclusion of unistd.h, which is not available under Visual C++ * on Win32. The C++ scanner uses STL streams instead. */ @@ -28,7 +48,7 @@ extern int column; /* the manual says "somewhat more optimized" */ %option batch -%option never-interactive +%option never-interactive /* no support for include files is planned */ %option noyywrap nounput @@ -211,7 +231,7 @@ EXPO [eE][-+]?[0-9]+ "yd" COUNTCHARS; yylval.quantity.scaler = Quantity::Yard; yylval.quantity.unitStr = yytext; return UNIT; // yard "mi" COUNTCHARS; yylval.quantity.scaler = Quantity::Mile; yylval.quantity.unitStr = yytext; return UNIT; // mile -"mph" COUNTCHARS; yylval.quantity.scaler = Quantity::MilePerHour; yylval.quantity.unitStr = yytext; return UNIT; // mile per hour +"mph" COUNTCHARS; yylval.quantity.scaler = Quantity::MilePerHour; yylval.quantity.unitStr = yytext; return UNIT; // mile per hour "sqft" COUNTCHARS; yylval.quantity.scaler = Quantity::SquareFoot; yylval.quantity.unitStr = yytext; return UNIT; // square foot "cft" COUNTCHARS; yylval.quantity.scaler = Quantity::CubicFoot; yylval.quantity.unitStr = yytext; return UNIT; // cubic foot @@ -343,7 +363,7 @@ $[A-Za-z]{1,2}{DIGIT}+ COUNTCHARS; yylval.string = yytext; return CELLADDR std::map::const_iterator j = registered_functions.find(s); if (j != registered_functions.end()) yylval.func.first = j->second; - else + else { yylval.func.first = FunctionExpression::NONE; yylval.func.second = std::move(s); } return FUNC; } diff --git a/src/App/ExpressionParser.sh b/src/App/ExpressionParser.sh index 339497c5f7..ba14525792 100755 --- a/src/App/ExpressionParser.sh +++ b/src/App/ExpressionParser.sh @@ -1,2 +1,3 @@ +# Description for bash script flex -olex.ExpressionParser.c < ExpressionParser.l bison -oExpressionParser.tab.c ExpressionParser.y diff --git a/src/App/ExpressionParser.y b/src/App/ExpressionParser.y index 9914833893..e49d9a34e5 100644 --- a/src/App/ExpressionParser.y +++ b/src/App/ExpressionParser.y @@ -1,9 +1,30 @@ -/* Parser for the FreeCAD Units language */ -/* (c) 2010 Jürgen Riegel LGPL */ -/* (c) 2015 Eivind Kvedalen LGPL */ +/*************************************************************************** + * Copyright (c) 2010 Jürgen Riegel * + * Copyright (c) 2015 Eivind Kvedalen * + * * + * 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 * + * * + ***************************************************************************/ +/* Parser for the FreeCAD Units language */ /* Represents the many different ways we can access our data */ + %{ #define YYSTYPE App::ExpressionParser::semantic_type diff --git a/src/App/Extension.cpp b/src/App/Extension.cpp index fe55f97ca9..18e21d5f1e 100644 --- a/src/App/Extension.cpp +++ b/src/App/Extension.cpp @@ -34,9 +34,9 @@ #include #include #include - + /* We do not use a standard property macro for type initiation. The reason is that we have the first - * PropertyData in the extension chain, there is no parent property data. + * PropertyData in the extension chain, there is no parent property data. */ EXTENSION_TYPESYSTEM_SOURCE_P(App::Extension) const App::PropertyData * App::Extension::extensionGetPropertyDataPtr(void){return &propertyData;} @@ -45,15 +45,15 @@ App::PropertyData App::Extension::propertyData; void App::Extension::init(void){ assert(Extension::classTypeId == Base::Type::badType() && "don't init() twice!"); - - /* Set up entry in the type system. */ - Extension::classTypeId = Base::Type::createType(Base::Type::badType(), "App::Extension", - Extension::create); + + /* Set up entry in the type system. */ + Extension::classTypeId = Base::Type::createType(Base::Type::badType(), "App::Extension", + Extension::create); } using namespace App; -Extension::Extension() +Extension::Extension() { } @@ -82,14 +82,14 @@ void Extension::initExtension(ExtensionContainer* obj) { if (m_extensionType.isBad()) throw Base::RuntimeError("Extension: Extension type not set"); - + //all properties are initialised without PropertyContainer father. Now that we know it we can //finally finish the property initialisation std::vector list; extensionGetPropertyData().getPropertyList(this, list); for(Property* prop : list) prop->setContainer(obj); - + m_base = obj; m_base->registerExtension( m_extensionType, this ); } @@ -106,10 +106,10 @@ PyObject* Extension::getExtensionPyObject(void) { } std::string Extension::name() const { - + if (m_extensionType.isBad()) throw Base::RuntimeError("Extension::name: Extension type not set"); - + std::string temp(m_extensionType.getName()); std::string::size_type pos = temp.find_last_of(':'); @@ -122,48 +122,48 @@ std::string Extension::name() const { Property* Extension::extensionGetPropertyByName(const char* name) const { - + return extensionGetPropertyData().getPropertyByName(this, name); } short int Extension::extensionGetPropertyType(const Property* prop) const { - + return extensionGetPropertyData().getType(this, prop); } short int Extension::extensionGetPropertyType(const char* name) const { - + return extensionGetPropertyData().getType(this, name); } const char* Extension::extensionGetPropertyName(const Property* prop) const { - + return extensionGetPropertyData().getName(this,prop); } const char* Extension::extensionGetPropertyGroup(const Property* prop) const { - + return extensionGetPropertyData().getGroup(this,prop); } const char* Extension::extensionGetPropertyGroup(const char* name) const { - + return extensionGetPropertyData().getGroup(this,name); } const char* Extension::extensionGetPropertyDocumentation(const Property* prop) const { - + return extensionGetPropertyData().getDocumentation(this, prop); } const char* Extension::extensionGetPropertyDocumentation(const char* name) const { - + return extensionGetPropertyData().getDocumentation(this, name); } void Extension::extensionGetPropertyList(std::vector< Property* >& List) const { - + extensionGetPropertyData().getPropertyList(this, List); } @@ -172,13 +172,13 @@ void Extension::extensionGetPropertyMap(std::map< std::string, Property* >& Map) extensionGetPropertyData().getPropertyMap(this, Map); } -void Extension::initExtensionSubclass(Base::Type& toInit, const char* ClassName, const char* ParentName, +void Extension::initExtensionSubclass(Base::Type& toInit, const char* ClassName, const char* ParentName, Base::Type::instantiationMethod method) { // don't init twice! assert(toInit == Base::Type::badType()); // get the parent class - Base::Type parentType(Base::Type::fromName(ParentName)); + Base::Type parentType(Base::Type::fromName(ParentName)); // forgot init parent! assert(parentType != Base::Type::badType() ); diff --git a/src/App/Extension.h b/src/App/Extension.h index 24de83eace..cf60e0094b 100644 --- a/src/App/Extension.h +++ b/src/App/Extension.h @@ -31,7 +31,7 @@ #include namespace App { - + class ExtensionContainer; /// define Extension types @@ -53,7 +53,7 @@ public: \ static void *create(void);\ private: \ static Base::Type classTypeId - + /// define to implement a subclass of Base::BaseClass #define EXTENSION_TYPESYSTEM_SOURCE_P(_class_) \ Base::Type _class_::getExtensionClassTypeId(void) { return _class_::classTypeId; } \ @@ -122,105 +122,105 @@ template<> void _class_::init(void){\ initExtensionSubclass(_class_::classTypeId, #_class_ , #_parentclass_, &(_class_::create) ); \ _class_::propertyData.parentPropertyData = _parentclass_::extensionGetPropertyDataPtr();\ } - + /** * @brief Base class for all extension that can be added to a DocumentObject - * - * For general documentation on why extension system exists and how to use it see the ExtensionContainer - * documentation. Following is a description howto create custom extensions. - * - * Extensions are like every other FreeCAD object and based on properties. All information storage - * and persistence should be achieved by use of those. Additional any number of methods can be + * + * For general documentation on why extension system exists and how to use it see the ExtensionContainer + * documentation. Following is a description howto create custom extensions. + * + * Extensions are like every other FreeCAD object and based on properties. All information storage + * and persistence should be achieved by use of those. Additional any number of methods can be * added to provide functionality around the properties. There are 3 small difference to normal objects: * 1. They must be derived from Extension class * 2. Properties must be handled with special extension macros * 3. Extensions must be initialised - * This works as simple as + * This works as simple as * @code * class MyExtension : public Extension { * EXTENSION_PROPERTY_HEADER(MyExtension); * PropertyInt MyProp; * virtual bool overridableMethod(DocumentObject* obj) {}; * }; - * + * * EXTENSION_PROPERTY_SOURCE(App::MyExtension, App::Extension) * MyExtension::MyExtension() { - * - * EXTENSION_ADD_PROPERTY(MyProp, (0)) * + * + * EXTENSION_ADD_PROPERTY(MyProp, (0)) * * initExtension(MyExtension::getExtensionClassTypeId()); * } * typedef ExtensionPythonT MyExtensionPython; - * @endcode - * - * The special python extension type created above is important, as only those python extensions - * can be added to an object from python. It does not work to add the c++ version directly there. - * - * Note that every method of the extension becomes part of the extended object when added from c++. + * @endcode + * + * The special python extension type created above is important, as only those python extensions + * can be added to an object from python. It does not work to add the c++ version directly there. + * + * Note that every method of the extension becomes part of the extended object when added from c++. * This means one should carefully design the API and make only necessary methods public or protected. * Every internal method should be private. - * - * The automatic availability of methods in the class does not hold for the python interface, only - * for c++ classes. This is like every where else in FreeCAD, there is no automatic creation of python - * API from c++ classes. Hence the extension creator must also create a custom python object of its - * extension, which works exactly like the normal FreeCAD python object workflow. There is nothing - * special at all for extension python objects, the normal xml + imp.cpp approach is used. It must - * only be taken care that the objects father is the correct extension base class. Of course also + * + * The automatic availability of methods in the class does not hold for the python interface, only + * for c++ classes. This is like every where else in FreeCAD, there is no automatic creation of python + * API from c++ classes. Hence the extension creator must also create a custom python object of its + * extension, which works exactly like the normal FreeCAD python object workflow. There is nothing + * special at all for extension python objects, the normal xml + imp.cpp approach is used. It must + * only be taken care that the objects father is the correct extension base class. Of course also * make sure your extension returns the correct python object in its "getPyObject" call. - * Every method you create in the extensions python will be later added to an extended object. This - * happens automatically for both, c++ and python extension, if "getPyObject" returns the correct + * Every method you create in the extensions python will be later added to an extended object. This + * happens automatically for both, c++ and python extension, if "getPyObject" returns the correct * python object. No extra work needs to be done. - * - * A special case that needs to be handled for extensions is the possibility of overridden methods. - * Often it is desired to customise extension behaviour by allowing the user to override methods - * provided by the extension. On c++ side this is trivial, such methods are simply marked as "virtual" + * + * A special case that needs to be handled for extensions is the possibility of overridden methods. + * Often it is desired to customise extension behaviour by allowing the user to override methods + * provided by the extension. On c++ side this is trivial, such methods are simply marked as "virtual" * and can than be overridden in any derived class. This is more involved for the python interface and - * here special care needs to be taken. - * - * As already seen above one needs to create a special ExtensionPythonT<> object for extension from - * python. This is done exactly for the purpose of allowing to have overridable methods. The - * ExtensionPythonT wrapper adds a proxy property which holds a PyObject which itself will contain - * the implementations for the overridden methods. This design is equal to the ObjectPythonT<> design - * of normal document objects. - * As this wrapper inherits the c++ extension class it can also override the virtual functions the - * user designed to be overridden. What it should do at a call of the virtual method is to check if - * this method is implemented in the proxy object and if so call it, and if not call the normal + * here special care needs to be taken. + * + * As already seen above one needs to create a special ExtensionPythonT<> object for extension from + * python. This is done exactly for the purpose of allowing to have overridable methods. The + * ExtensionPythonT wrapper adds a proxy property which holds a PyObject which itself will contain + * the implementations for the overridden methods. This design is equal to the ObjectPythonT<> design + * of normal document objects. + * As this wrapper inherits the c++ extension class it can also override the virtual functions the + * user designed to be overridden. What it should do at a call of the virtual method is to check if + * this method is implemented in the proxy object and if so call it, and if not call the normal * c++ version. It is the extensions creators responsibility to implement this check and call behaviour * for every overridable method. - * This is done by creating a custom wrapper just like ExtensionPythonT<> and overriding all virtual + * This is done by creating a custom wrapper just like ExtensionPythonT<> and overriding all virtual * methods. * @code * template class MyExtensionPythonT : public ExtensionT { * public: - * + * * MyExtensionPythonT() {} * virtual ~MyExtensionPythonT() {} * * virtual bool overridableMethod(DocumentObject* obj) override { * Py::Object pyobj = Py::asObject(obj->getPyObject()); * EXTENSION_PROXY_ONEARG(allowObject, pyobj); - * + * * if(result.isNone()) * ExtensionT::allowObject(obj); - * + * * if(result.isBoolean()) * return result.isTrue(); - * + * * return false; * }; * }; * @endcode - * @Note As seen in the code there are multiple helper macros to ease the repetitive work of querying + * @Note As seen in the code there are multiple helper macros to ease the repetitive work of querying * and calling methods of the proxy object. See the macro documentation for how to use them. - * - * To ensure that your wrapper is used when a extension is created from python the extension type must + * + * To ensure that your wrapper is used when a extension is created from python the extension type must * be exposed as follows: * @code * typedef ExtensionPythonT> MyExtensionPython; * @endcode - * - * This boilerplate is absolutely necessary to allow overridable methods in python and it is the + * + * This boilerplate is absolutely necessary to allow overridable methods in python and it is the * extension creator's responsibility to ensure full implementation. - * + * */ class AppExport Extension { @@ -235,18 +235,18 @@ public: virtual ~Extension(); virtual void initExtension(App::ExtensionContainer* obj); - + App::ExtensionContainer* getExtendedContainer() {return m_base;} const App::ExtensionContainer* getExtendedContainer() const {return m_base;} - + //get extension name without namespace std::string name() const; - + bool isPythonExtension() {return m_isPythonExtension;} - + virtual PyObject* getExtensionPyObject(void); - - + + /** @name Access properties */ //@{ /// find a property by its name @@ -271,36 +271,36 @@ public: /// get the Group of a named Property virtual const char* extensionGetPropertyDocumentation(const char *name) const; //@} - + /** @name Persistence */ //@{ virtual void extensionSave(Base::Writer&) const {} virtual void extensionRestore(Base::XMLReader&) {} //@} - + /** @name TypeHandling */ //@{ bool extensionIsDerivedFrom(const Base::Type type) const {return getExtensionTypeId().isDerivedFrom(type);} protected: - static void initExtensionSubclass(Base::Type &toInit,const char* ClassName, const char *ParentName, + static void initExtensionSubclass(Base::Type &toInit,const char* ClassName, const char *ParentName, Base::Type::instantiationMethod method=0); //@} virtual void extensionOnChanged(const Property* p) {(void)(p);} - + friend class App::ExtensionContainer; -protected: +protected: void initExtensionType(Base::Type type); bool m_isPythonExtension = false; Py::Object ExtensionPythonObject; - + private: Base::Type m_extensionType; App::ExtensionContainer* m_base = nullptr; }; -// Property define +// Property define #define _EXTENSION_ADD_PROPERTY(_name, _prop_, _defaultval_) \ do { \ this->_prop_.setValue _defaultval_;\ @@ -319,7 +319,7 @@ private: #define EXTENSION_ADD_PROPERTY_TYPE(_prop_, _defaultval_, _group_,_type_,_Docu_) \ _EXTENSION_ADD_PROPERTY_TYPE(#_prop_, _prop_, _defaultval_, _group_,_type_,_Docu_) - + /** * Generic Python extension class which allows every extension derived @@ -332,11 +332,11 @@ class ExtensionPythonT : public ExtensionT public: typedef ExtensionT Inherited; - + ExtensionPythonT() { ExtensionT::m_isPythonExtension = true; ExtensionT::initExtensionType(ExtensionPythonT::getExtensionClassTypeId()); - + EXTENSION_ADD_PROPERTY(ExtensionProxy,(Py::Object())); } virtual ~ExtensionPythonT() { @@ -358,16 +358,16 @@ typedef ExtensionPythonT ExtensionPython; if (feature.hasAttr(std::string("function"))) {\ if (feature.hasAttr("__object__")) {\ Py::Callable method(feature.getAttr(std::string("function"))); - - - + + + #define EXTENSION_PROXY_SECOND(function)\ result = method.apply(args);\ }\ else {\ Py::Callable method(feature.getAttr(std::string("function"))); - + #define EXTENSION_PROXY_THIRD()\ result = method.apply(args);\ }\ @@ -378,7 +378,7 @@ typedef ExtensionPythonT ExtensionPython; Base::PyException e;\ e.ReportException();\ } - + #define EXTENSION_PROXY_NOARG(function)\ EXTENSION_PROXY_FIRST(function) \ Py::Tuple args;\ @@ -401,13 +401,13 @@ typedef ExtensionPythonT ExtensionPython; virtual void function() override {\ EXTENSION_PROXY_NOARGS(function)\ }; - + #define EXTENSION_PYTHON_OVERRIDE_OBJECT_NOARGS(function)\ virtual PyObject* function() override {\ EXTENSION_PROXY_NOARGS(function)\ return res.ptr();\ }; - + } //App #endif // APP_EXTENSION_H diff --git a/src/App/ExtensionContainer.h b/src/App/ExtensionContainer.h index cc7de2946e..ec44365462 100644 --- a/src/App/ExtensionContainer.h +++ b/src/App/ExtensionContainer.h @@ -79,7 +79,7 @@ namespace App { * special macros. * 2. The extensions need to be initialised in the constructor * - * Here a working example: + * Here is a working example: * @code * class AppExport Part : public App::DocumentObject, public App::FirstExtension, public App::SecondExtension { * PROPERTY_HEADER_WITH_EXTENSIONS(App::Part); @@ -195,7 +195,7 @@ private: #define PROPERTY_HEADER_WITH_EXTENSIONS(_class_) \ PROPERTY_HEADER_WITH_OVERRIDE(_class) -/// We make sur that the PropertyData of the container is not connected to the one of the extension +/// We make sure that the PropertyData of the container is not connected to the one of the extension #define PROPERTY_SOURCE_WITH_EXTENSIONS(_class_, _parentclass_) \ PROPERTY_SOURCE(_class_, _parentclass_) diff --git a/src/App/FeaturePython.cpp b/src/App/FeaturePython.cpp index d44583e9b6..5739c9fbaa 100644 --- a/src/App/FeaturePython.cpp +++ b/src/App/FeaturePython.cpp @@ -38,7 +38,7 @@ using namespace App; -FeaturePythonImp::FeaturePythonImp(App::DocumentObject* o) +FeaturePythonImp::FeaturePythonImp(App::DocumentObject* o) : object(o), has__object__(false) { } @@ -223,7 +223,7 @@ void FeaturePythonImp::onDocumentRestored() } } -bool FeaturePythonImp::getSubObject(DocumentObject *&ret, const char *subname, +bool FeaturePythonImp::getSubObject(DocumentObject *&ret, const char *subname, PyObject **pyObj, Base::Matrix4D *_mat, bool transform, int depth) const { FC_PY_CALL_CHECK(getSubObject); @@ -251,13 +251,13 @@ bool FeaturePythonImp::getSubObject(DocumentObject *&ret, const char *subname, throw Py::TypeError("getSubObject expects return type of tuple"); Py::Sequence seq(res); if(seq.length() < 2 || - (!seq.getItem(0).isNone() && + (!seq.getItem(0).isNone() && !PyObject_TypeCheck(seq.getItem(0).ptr(),&DocumentObjectPy::Type)) || !PyObject_TypeCheck(seq.getItem(1).ptr(),&Base::MatrixPy::Type)) { throw Py::TypeError("getSubObject expects return type of (obj,matrix,pyobj)"); } - if(_mat) + if(_mat) *_mat = *static_cast(seq.getItem(1).ptr())->getMatrixPtr(); if(pyObj) { if(seq.length()>2) @@ -296,7 +296,7 @@ bool FeaturePythonImp::getSubObjects(std::vector &ret, int reason) if(!res.isSequence()) throw Py::TypeError("getSubObjects expects return type of tuple"); Py::Sequence seq(res); - for(size_t i=0;i &ret, int reason) } } -bool FeaturePythonImp::getLinkedObject(DocumentObject *&ret, bool recurse, +bool FeaturePythonImp::getLinkedObject(DocumentObject *&ret, bool recurse, Base::Matrix4D *_mat, bool transform, int depth) const { FC_PY_CALL_CHECK(getLinkedObject); @@ -339,13 +339,13 @@ bool FeaturePythonImp::getLinkedObject(DocumentObject *&ret, bool recurse, throw Py::TypeError("getLinkedObject expects return type of (object,matrix)"); Py::Sequence seq(res); if(seq.length() != 2 || - (!seq.getItem(0).isNone() && + (!seq.getItem(0).isNone() && !PyObject_TypeCheck(seq.getItem(0).ptr(),&DocumentObjectPy::Type)) || !PyObject_TypeCheck(seq.getItem(1).ptr(),&Base::MatrixPy::Type)) { throw Py::TypeError("getLinkedObject expects return type of (object,matrix)"); } - if(_mat) + if(_mat) *_mat = *static_cast(seq.getItem(1).ptr())->getMatrixPtr(); if(seq.getItem(0).isNone()) ret = object; @@ -520,7 +520,7 @@ int FeaturePythonImp::canLoadPartial() const { FeaturePythonImp::ValueT FeaturePythonImp::redirectSubName(std::ostringstream &ss, App::DocumentObject *topParent, - App::DocumentObject *child) const + App::DocumentObject *child) const { _FC_PY_CALL_CHECK(redirectSubName,return(NotImplemented)); Base::PyGILStateLocker lock; diff --git a/src/App/FeaturePythonPyImp.h b/src/App/FeaturePythonPyImp.h index 5d0717ccce..1b1393ed3f 100644 --- a/src/App/FeaturePythonPyImp.h +++ b/src/App/FeaturePythonPyImp.h @@ -30,6 +30,8 @@ #if defined(__clang__) # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wmissing-field-initializers" +#elif defined(__GNUC__) || defined(__GNUG__) +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif #define PYTHON_TYPE_DEF(_class_, _subclass_) \ @@ -144,6 +146,8 @@ private: #if defined(__clang__) # pragma clang diagnostic pop +#elif defined(__GNUC__) || defined(__GNUG__) +# pragma GCC diagnostic pop #endif #endif // APP_FEATUREPYTHONPYIMP_H diff --git a/src/App/FeatureTest.cpp b/src/App/FeatureTest.cpp index 8631b19cf2..6827aaeee4 100644 --- a/src/App/FeatureTest.cpp +++ b/src/App/FeatureTest.cpp @@ -77,7 +77,7 @@ FeatureTest::FeatureTest() ADD_PROPERTY(IntegerList,(4711) ); ADD_PROPERTY(FloatList ,(47.11f) ); - + ADD_PROPERTY(Link ,(0)); ADD_PROPERTY(LinkSub ,(0)); ADD_PROPERTY(LinkList ,(0)); @@ -87,7 +87,7 @@ FeatureTest::FeatureTest() ADD_PROPERTY(VectorList,(3.0,2.0,1.0)); ADD_PROPERTY(Matrix ,(Base::Matrix4D(1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0))); ADD_PROPERTY(Placement ,(Base::Placement())); - + // properties for recompute testing static const char* group = "Feature Test"; ADD_PROPERTY_TYPE(Source1 ,(0),group,Prop_None,"Source for testing links"); @@ -96,7 +96,7 @@ FeatureTest::FeatureTest() ADD_PROPERTY_TYPE(ExecResult ,("empty"),group,Prop_None,"Result of the execution"); ADD_PROPERTY_TYPE(ExceptionType ,(0),group,Prop_None,"The type of exception the execution method throws"); ADD_PROPERTY_TYPE(ExecCount ,(0),group,Prop_None,"Number of executions"); - + // properties with types ADD_PROPERTY_TYPE(TypeHidden ,(4711),group,Prop_Hidden,"An example property which has the type 'Hidden'" ); ADD_PROPERTY_TYPE(TypeReadOnly,(4711),group,Prop_ReadOnly ,"An example property which has the type 'ReadOnly'" ); @@ -104,8 +104,8 @@ FeatureTest::FeatureTest() ADD_PROPERTY_TYPE(TypeTransient,(4711),group,Prop_Transient ,"An example property which has the type 'Transient'" ); ADD_PROPERTY_TYPE(TypeNoRecompute,(4711),group,Prop_NoRecompute,"An example property which has the type 'NoRecompute'"); ADD_PROPERTY_TYPE(TypeAll ,(4711),group,(App::PropertyType) (Prop_Output|Prop_ReadOnly |Prop_Hidden ), - "An example property which has the types 'Output', 'ReadOnly' and 'Hidden'"); - + "An example property which has the types 'Output', 'ReadOnly', and 'Hidden'"); + ADD_PROPERTY(QuantityLength,(1.0)); QuantityLength.setUnit(Base::Unit::Length); ADD_PROPERTY(QuantityOther,(5.0)); @@ -167,11 +167,11 @@ doc.recompute() case 1: throw "Test Exception"; case 2: throw Base::RuntimeError("FeatureTestException::execute(): Testexception"); #if 0 // only allow these error types on purpose - case 3: *i=0;printf("%i",*i);break; // seg-fault - case 4: t = nullptr; break; // seg-fault - case 5: j=0; printf("%i",1/j); break; // int division by zero - case 6: f=0.0; printf("%f",1/f); break; // float division by zero - case 7: s = malloc(3600000000ul); free(s); break; // out-of-memory + case 3: *i=0;printf("%i",*i);break; // seg-fault + case 4: t = nullptr; break; // seg-fault + case 5: j=0; printf("%i",1/j); break; // int division by zero + case 6: f=0.0; printf("%f",1/f); break; // float division by zero + case 7: s = malloc(3600000000ul); free(s); break; // out-of-memory #else default: (void)i; (void)j; (void)f; (void)s; (void)t; break; #endif diff --git a/src/App/FeatureTest.h b/src/App/FeatureTest.h index 27b1634b00..c193fe049b 100644 --- a/src/App/FeatureTest.h +++ b/src/App/FeatureTest.h @@ -66,7 +66,7 @@ public: App::PropertyEnumeration Enum; App::PropertyIntegerConstraint ConstraintInt; App::PropertyFloatConstraint ConstraintFloat; - + // Standard Properties (PrppertyStandard.h) App::PropertyIntegerList IntegerList; App::PropertyFloatList FloatList; @@ -90,7 +90,7 @@ public: App::PropertyString ExecResult; App::PropertyInteger ExceptionType; App::PropertyInteger ExecCount; - + App::PropertyInteger TypeHidden; App::PropertyInteger TypeReadOnly; App::PropertyInteger TypeOutput; diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py index 6f6868567d..c5f5a16670 100644 --- a/src/App/FreeCADInit.py +++ b/src/App/FreeCADInit.py @@ -1,12 +1,5 @@ -# FreeCAD init module -# (c) 2001 Jürgen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** -#* Copyright (c) 2002 Jürgen Riegel * +#* Copyright (c) 2001,2002 Jürgen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -28,6 +21,11 @@ #* * #***************************************************************************/ +# FreeCAD init module +# +# Gathering all the information to start FreeCAD. +# This is the second of of three init scripts. +# The third one runs when the gui is up, # imports the one and only import FreeCAD @@ -45,6 +43,42 @@ def removeFromPath(module_name): else: Wrn(module_name + " not found in sys.path\n") +def setupSearchPaths(PathExtension): + # DLL resolution in Python 3.8 on Windows has changed + import sys, os + if sys.platform == 'win32' and hasattr(os, "add_dll_directory"): + if "FREECAD_LIBPACK_BIN" in os.environ: + os.add_dll_directory(os.environ["FREECAD_LIBPACK_BIN"]) + for path in PathExtension: + os.add_dll_directory(path) + + PathEnvironment = PathExtension.pop(0) + os.pathsep + for path in PathExtension: + try: + PathEnvironment += path + os.pathsep + except UnicodeDecodeError: + Wrn('Filter invalid module path: u{}\n'.format(repr(path))) + + # new paths must be prepended to avoid to load a wrong version of a library + try: + os.environ["PATH"] = PathEnvironment + os.environ["PATH"] + except UnicodeDecodeError: + # See #0002238. FIXME: check again once ported to Python 3.x + Log('UnicodeDecodeError was raised when concatenating unicode string with PATH. Try to remove non-ascii paths...\n') + path = os.environ["PATH"].split(os.pathsep) + cleanpath=[] + for i in path: + if test_ascii(i): + cleanpath.append(i) + os.environ["PATH"] = PathEnvironment + os.pathsep.join(cleanpath) + Log('done\n') + except UnicodeEncodeError: + Log('UnicodeEncodeError was raised when concatenating unicode string with PATH. Try to replace non-ascii chars...\n') + os.environ["PATH"] = PathEnvironment.encode(errors='replace') + os.environ["PATH"] + Log('done\n') + except KeyError: + os.environ["PATH"] = PathEnvironment + FreeCAD._importFromFreeCAD = removeFromPath @@ -125,8 +159,8 @@ def InitApplications(): # from FreeCAD.Module import package FreeCAD.__path__ = [ModDir] + libpaths + [HomeMod] - # also add these directories to the sys.path to - # not change the old behaviour. once we have moved to + # also add these directories to the sys.path to + # not change the old behaviour. once we have moved to # proper python modules this can eventuelly be removed. sys.path = [ModDir] + libpaths + [ExtDir] + sys.path @@ -138,9 +172,12 @@ def InitApplications(): if (os.path.exists(InstallFile)): try: # XXX: This looks scary securitywise... - - with open(InstallFile) as f: - exec(f.read()) + if sys.version_info.major < 3: + with open(InstallFile) as f: + exec(f.read()) + else: + with open(file=InstallFile, encoding="utf-8") as f: + exec(f.read()) except Exception as inst: Log('Init: Initializing ' + Dir + '... failed\n') Log('-'*100+'\n') @@ -185,32 +222,7 @@ def InitApplications(): Log("Using "+ModDir+" as module path!\n") # In certain cases the PathExtension list can contain invalid strings. We concatenate them to a single string # but check that the output is a valid string - PathEnvironment = PathExtension.pop(0) + os.pathsep - for path in PathExtension: - try: - PathEnvironment += path + os.pathsep - except UnicodeDecodeError: - Wrn('Filter invalid module path: u{}\n'.format(repr(path))) - - # new paths must be prepended to avoid to load a wrong version of a library - try: - os.environ["PATH"] = PathEnvironment + os.environ["PATH"] - except UnicodeDecodeError: - # See #0002238. FIXME: check again once ported to Python 3.x - Log('UnicodeDecodeError was raised when concatenating unicode string with PATH. Try to remove non-ascii paths...\n') - path = os.environ["PATH"].split(os.pathsep) - cleanpath=[] - for i in path: - if test_ascii(i): - cleanpath.append(i) - os.environ["PATH"] = PathEnvironment + os.pathsep.join(cleanpath) - Log('done\n') - except UnicodeEncodeError: - Log('UnicodeEncodeError was raised when concatenating unicode string with PATH. Try to replace non-ascii chars...\n') - os.environ["PATH"] = PathEnvironment.encode(errors='replace') + os.environ["PATH"] - Log('done\n') - except KeyError: - os.environ["PATH"] = PathEnvironment + setupSearchPaths(PathExtension) path = os.environ["PATH"].split(os.pathsep) Log("System path after init:\n") for i in path: @@ -255,7 +267,7 @@ if sys.version_info.major < 3: class FCADLogger(object): '''Convenient class for tagged logging. - + Example usage: >>> logger = FreeCAD.Logger('MyModule') >>> logger.info('log test {}',1) @@ -774,7 +786,7 @@ App.Units.AngularSecond = App.Units.Quantity().AngularSecond App.Units.Length = App.Units.Unit(1) App.Units.Area = App.Units.Unit(2) App.Units.Volume = App.Units.Unit(3) -App.Units.Mass = App.Units.Unit(0,1) +App.Units.Mass = App.Units.Unit(0,1) # (length, weight, time, current, temperature, amount of substance, luminous intensity, angle) # Angle @@ -783,13 +795,13 @@ App.Units.AngleOfFriction = App.Units.Unit(0,0,0,0,0,0,0,1) App.Units.Density = App.Units.Unit(-3,1) -App.Units.TimeSpan = App.Units.Unit(0,0,1) +App.Units.TimeSpan = App.Units.Unit(0,0,1) App.Units.Frequency = App.Units.Unit(0,0,-1) -App.Units.Velocity = App.Units.Unit(1,0,-1) -App.Units.Acceleration = App.Units.Unit(1,0,-2) -App.Units.Temperature = App.Units.Unit(0,0,0,0,1) +App.Units.Velocity = App.Units.Unit(1,0,-1) +App.Units.Acceleration = App.Units.Unit(1,0,-2) +App.Units.Temperature = App.Units.Unit(0,0,0,0,1) -App.Units.ElectricCurrent = App.Units.Unit(0,0,0,1) +App.Units.ElectricCurrent = App.Units.Unit(0,0,0,1) App.Units.ElectricPotential = App.Units.Unit(2,1,-3,-1) App.Units.ElectricCharge = App.Units.Unit(0,0,1,1) App.Units.MagneticFluxDensity = App.Units.Unit(0,1,-2,-1) @@ -809,9 +821,9 @@ App.Units.UltimateTensileStrength = App.Units.Unit(-1,1,-2) App.Units.YieldStrength = App.Units.Unit(-1,1,-2) App.Units.YoungsModulus = App.Units.Unit(-1,1,-2) -App.Units.Force = App.Units.Unit(1,1,-2) -App.Units.Work = App.Units.Unit(2,1,-2) -App.Units.Power = App.Units.Unit(2,1,-3) +App.Units.Force = App.Units.Unit(1,1,-2) +App.Units.Work = App.Units.Unit(2,1,-2) +App.Units.Power = App.Units.Unit(2,1,-3) App.Units.SpecificEnergy = App.Units.Unit(2,0,-2) App.Units.ThermalConductivity = App.Units.Unit(1,1,-3,0,-1) diff --git a/src/App/FreeCADTest.py b/src/App/FreeCADTest.py index d76e05402a..e74c5dd559 100644 --- a/src/App/FreeCADTest.py +++ b/src/App/FreeCADTest.py @@ -1,10 +1,3 @@ -# FreeCAD test module -# (c) 2002 Jürgen Riegel -# -# Testing the function of the base system and run -# (if existing) the test function of the modules -# - #*************************************************************************** #* Copyright (c) 2002 Jürgen Riegel * #* * @@ -28,6 +21,12 @@ #* * #***************************************************************************/ +# FreeCAD test module +# +# Testing the function of the base system and run +# (if existing) the test function of the modules + + Log ("FreeCAD test running...\n\n") diff --git a/src/App/Link.cpp b/src/App/Link.cpp index 6702bb4734..de37eeef2d 100644 --- a/src/App/Link.cpp +++ b/src/App/Link.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -55,9 +55,9 @@ LinkBaseExtension::LinkBaseExtension(void) :myOwner(0),enableLabelCache(false),hasOldSubElement(false) { initExtensionType(LinkBaseExtension::getExtensionClassTypeId()); - EXTENSION_ADD_PROPERTY_TYPE(_LinkTouched, (false), " Link", + EXTENSION_ADD_PROPERTY_TYPE(_LinkTouched, (false), " Link", PropertyType(Prop_Hidden|Prop_NoPersist),0); - EXTENSION_ADD_PROPERTY_TYPE(_ChildCache, (), " Link", + EXTENSION_ADD_PROPERTY_TYPE(_ChildCache, (), " Link", PropertyType(Prop_Hidden|Prop_NoPersist|Prop_ReadOnly),0); _ChildCache.setScope(LinkScope::Global); props.resize(PropMax,0); @@ -87,7 +87,7 @@ const LinkBaseExtension::PropInfoMap &LinkBaseExtension::getPropertyInfoMap() co static PropInfoMap PropsMap; if(PropsMap.empty()) { const auto &infos = getPropertyInfo(); - for(const auto &info : infos) + for(const auto &info : infos) PropsMap[info.name] = info; } return PropsMap; @@ -116,12 +116,12 @@ void LinkBaseExtension::setProperty(int idx, Property *prop) { props[idx]->setStatus(Property::LockDynamic,false); props[idx] = 0; } - if(!prop) + if(!prop) return; if(!prop->isDerivedFrom(infos[idx].type)) { std::ostringstream str; - str << "App::LinkBaseExtension: expected property type '" << - infos[idx].type.getName() << "', instead of '" << + str << "App::LinkBaseExtension: expected property type '" << + infos[idx].type.getName() << "', instead of '" << prop->getClassTypeId().getName() << "'"; LINK_THROW(Base::TypeError,str.str().c_str()); } @@ -166,13 +166,13 @@ void LinkBaseExtension::setProperty(int idx, Property *prop) { if(FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_TRACE)) { const char *propName; - if(!prop) + if(!prop) propName = ""; else if(prop->getContainer()) propName = prop->getName(); - else + else propName = extensionGetPropertyName(prop); - if(!propName) + if(!propName) propName = "?"; FC_TRACE("set property " << infos[idx].name << ": " << propName); } @@ -303,7 +303,7 @@ int LinkBaseExtension::_getElementCountValue() const { } bool LinkBaseExtension::extensionHasChildElement() const { - if(_getElementListValue().size() + if(_getElementListValue().size() || (_getElementCountValue() && _getShowElementValue())) return true; DocumentObject *linked = getTrueLinkedObject(false); @@ -318,7 +318,7 @@ int LinkBaseExtension::extensionSetElementVisible(const char *element, bool visi int index = _getShowElementValue()?getElementIndex(element):getArrayIndex(element); if(index>=0) { auto propElementVis = getVisibilityListProperty(); - if(!propElementVis || !element || !element[0]) + if(!propElementVis || !element || !element[0]) return -1; if(propElementVis->getSize()<=index) { if(visible) return 1; @@ -381,7 +381,7 @@ DocumentObject *LinkBaseExtension::getLink(int depth) const{ } int LinkBaseExtension::getArrayIndex(const char *subname, const char **psubname) { - if(!subname || Data::ComplexGeoData::isMappedElement(subname)) + if(!subname || Data::ComplexGeoData::isMappedElement(subname)) return -1; const char *dot = strchr(subname,'.'); if(!dot) dot= subname+strlen(subname); @@ -401,7 +401,7 @@ int LinkBaseExtension::getArrayIndex(const char *subname, const char **psubname) } int LinkBaseExtension::getElementIndex(const char *subname, const char **psubname) const { - if(!subname || Data::ComplexGeoData::isMappedElement(subname)) + if(!subname || Data::ComplexGeoData::isMappedElement(subname)) return -1; int idx = -1; const char *dot = strchr(subname,'.'); @@ -414,7 +414,7 @@ int LinkBaseExtension::getElementIndex(const char *subname, const char **psubnam if(_getElementCountProperty()) { if(idx>=_getElementCountValue()) return -1; - }else if(idx>=(int)_getElementListValue().size()) + }else if(idx>=(int)_getElementListValue().size()) return -1; }else if(!_getShowElementValue() && _getElementCountValue()) { // If elements are collapsed, we check first for LinkElement naming @@ -579,8 +579,8 @@ bool LinkBaseExtension::extensionGetSubObjects(std::vector &ret, in return true; } -bool LinkBaseExtension::extensionGetSubObject(DocumentObject *&ret, const char *subname, - PyObject **pyObj, Base::Matrix4D *mat, bool transform, int depth) const +bool LinkBaseExtension::extensionGetSubObject(DocumentObject *&ret, const char *subname, + PyObject **pyObj, Base::Matrix4D *mat, bool transform, int depth) const { ret = 0; auto obj = getContainer(); @@ -605,8 +605,8 @@ bool LinkBaseExtension::extensionGetSubObject(DocumentObject *&ret, const char * _mat = *mat; } - if(pyObj && !_getElementCountValue() - && _getElementListValue().empty() && mySubElements.size()<=1) + if(pyObj && !_getElementCountValue() + && _getElementListValue().empty() && mySubElements.size()<=1) { // Scale will be included here if(getScaleProperty() || getScaleVectorProperty()) { @@ -659,7 +659,7 @@ bool LinkBaseExtension::extensionGetSubObject(DocumentObject *&ret, const char * } auto linked = getTrueLinkedObject(false,mat,depth); - if(!linked || linked==obj) + if(!linked || linked==obj) return true; Base::Matrix4D matNext; @@ -692,13 +692,13 @@ bool LinkBaseExtension::extensionGetSubObject(DocumentObject *&ret, const char * return true; } -void LinkBaseExtension::checkGeoElementMap(const App::DocumentObject *obj, +void LinkBaseExtension::checkGeoElementMap(const App::DocumentObject *obj, const App::DocumentObject *linked, PyObject **pyObj, const char *postfix) const { if(!pyObj || !*pyObj || (!postfix && obj->getDocument()==linked->getDocument()) || !PyObject_TypeCheck(*pyObj, &Data::ComplexGeoDataPy::Type)) return; - + // auto geoData = static_cast(*pyObj)->getComplexGeoDataPtr(); // geoData->reTagElementMap(obj->getID(),obj->getDocument()->Hasher,postfix); } @@ -708,14 +708,14 @@ void LinkBaseExtension::onExtendedUnsetupObject() { return; auto objs = getElementListValue(); getElementListProperty()->setValue(); - for(auto obj : objs) + for(auto obj : objs) detachElement(obj); } DocumentObject *LinkBaseExtension::getTrueLinkedObject( bool recurse, Base::Matrix4D *mat, int depth, bool noElement) const { - if(noElement && extensionIsDerivedFrom(LinkElement::getExtensionClassTypeId()) + if(noElement && extensionIsDerivedFrom(LinkElement::getExtensionClassTypeId()) && !static_cast(this)->canDelete()) { return 0; @@ -736,10 +736,10 @@ DocumentObject *LinkBaseExtension::getTrueLinkedObject( return ret; } -bool LinkBaseExtension::extensionGetLinkedObject(DocumentObject *&ret, +bool LinkBaseExtension::extensionGetLinkedObject(DocumentObject *&ret, bool recurse, Base::Matrix4D *mat, bool transform, int depth) const { - if(mat) + if(mat) *mat *= getTransform(transform); ret = 0; if(!_getElementCountValue()) @@ -822,7 +822,7 @@ void LinkBaseExtension::updateGroup() { auto group = ext->getExtendedObject(); auto &conn = plainGroupConns[group]; if(!conn.connected()) { - FC_LOG("new group connection " << getExtendedObject()->getFullName() + FC_LOG("new group connection " << getExtendedObject()->getFullName() << " -> " << group->getFullName()); conn = group->signalChanged.connect( boost::bind(&LinkBaseExtension::slotChangedPlainGroup,this,bp::_1,bp::_2)); @@ -836,7 +836,7 @@ void LinkBaseExtension::updateGroup() { groupSet.insert(child); auto &conn = plainGroupConns[child]; if(!conn.connected()) { - FC_LOG("new group connection " << getExtendedObject()->getFullName() + FC_LOG("new group connection " << getExtendedObject()->getFullName() << " -> " << child->getFullName()); conn = child->signalChanged.connect( boost::bind(&LinkBaseExtension::slotChangedPlainGroup,this,bp::_1,bp::_2)); @@ -885,7 +885,7 @@ void LinkBaseExtension::update(App::DocumentObject *parent, const Property *prop } } }else if(prop == _getShowElementProperty()) { - if(_getShowElementValue()) + if(_getShowElementValue()) update(parent,_getElementCountProperty()); else { auto objs = getElementListValue(); @@ -1001,7 +1001,7 @@ void LinkBaseExtension::update(App::DocumentObject *parent, const Property *prop obj->Scale.setValue(1); objs.push_back(obj); } - if(getPlacementListProperty()) + if(getPlacementListProperty()) getPlacementListProperty()->setSize(0); if(getScaleListProperty()) getScaleListProperty()->setSize(0); @@ -1074,9 +1074,9 @@ void LinkBaseExtension::update(App::DocumentObject *parent, const Property *prop } } syncElementList(); - if(_getShowElementValue() - && _getElementCountProperty() - && getElementListProperty() + if(_getShowElementValue() + && _getElementCountProperty() + && getElementListProperty() && getElementCountValue()!=getElementListProperty()->getSize()) { getElementCountProperty()->setValue( @@ -1121,8 +1121,8 @@ void LinkBaseExtension::cacheChildLabel(int enable) const { } bool LinkBaseExtension::linkTransform() const { - if(!getLinkTransformProperty() && - !getLinkPlacementProperty() && + if(!getLinkTransformProperty() && + !getLinkPlacementProperty() && !getPlacementProperty()) return true; return getLinkTransformValue(); @@ -1138,7 +1138,7 @@ void LinkBaseExtension::syncElementList() { auto elements = getElementListValue(); for(size_t i=0;i(elements[i]); - if(!element || (element->myOwner && element->myOwner!=ownerID)) + if(!element || (element->myOwner && element->myOwner!=ownerID)) continue; element->myOwner = ownerID; @@ -1175,12 +1175,12 @@ void LinkBaseExtension::onExtendedDocumentRestored() { // SubElements was stored as a PropertyStringList. It is now migrated to be // stored inside PropertyXLink. auto xlink = freecad_dynamic_cast(getLinkedObjectProperty()); - if(!xlink) + if(!xlink) FC_ERR("Failed to restore SubElements for " << parent->getFullName()); else if(!xlink->getValue()) FC_ERR("Discard SubElements of " << parent->getFullName() << " due to null link"); else if(xlink->getSubValues().size() > 1) - FC_ERR("Failed to restore SubElements for " << parent->getFullName() + FC_ERR("Failed to restore SubElements for " << parent->getFullName() << " due to conflict subnames"); else if(xlink->getSubValues().empty()) { auto subs = xlink->getSubValues(); @@ -1227,8 +1227,8 @@ void LinkBaseExtension::_handleChangedPropertyName( } } -void LinkBaseExtension::setLink(int index, DocumentObject *obj, - const char *subname, const std::vector &subElements) +void LinkBaseExtension::setLink(int index, DocumentObject *obj, + const char *subname, const std::vector &subElements) { auto parent = getContainer(); if(!parent) @@ -1316,7 +1316,7 @@ void LinkBaseExtension::setLink(int index, DocumentObject *obj, auto objs = getElementListValue(); getElementListProperty()->setValue(); - for(auto obj : objs) + for(auto obj : objs) detachElement(obj); return; } diff --git a/src/App/Link.h b/src/App/Link.h index dff79717e0..143c44f573 100644 --- a/src/App/Link.h +++ b/src/App/Link.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -54,7 +54,7 @@ namespace App { -class AppExport LinkBaseExtension : public App::DocumentObjectExtension +class AppExport LinkBaseExtension : public App::DocumentObjectExtension { EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(App::LinkExtension); typedef App::DocumentObjectExtension inherited; @@ -239,7 +239,7 @@ public: bool linkTransform() const; - const char *getSubName() const { + const char *getSubName() const { parseSubName(); return mySubName.size()?mySubName.c_str():0; } @@ -249,12 +249,12 @@ public: return mySubElements; } - bool extensionGetSubObject(DocumentObject *&ret, const char *subname, + bool extensionGetSubObject(DocumentObject *&ret, const char *subname, PyObject **pyObj=0, Base::Matrix4D *mat=0, bool transform=false, int depth=0) const override; bool extensionGetSubObjects(std::vector&ret, int reason) const override; - bool extensionGetLinkedObject(DocumentObject *&ret, + bool extensionGetLinkedObject(DocumentObject *&ret, bool recurse, Base::Matrix4D *mat, bool transform, int depth) const override; virtual App::DocumentObjectExecReturn *extensionExecute(void) override; @@ -293,13 +293,13 @@ public: void cacheChildLabel(int enable=-1) const; protected: - void _handleChangedPropertyName(Base::XMLReader &reader, + void _handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName); void parseSubName() const; void update(App::DocumentObject *parent, const Property *prop); void syncElementList(); void detachElement(App::DocumentObject *obj); - void checkGeoElementMap(const App::DocumentObject *obj, + void checkGeoElementMap(const App::DocumentObject *obj, const App::DocumentObject *linked, PyObject **pyObj, const char *postfix) const; void updateGroup(); void slotChangedPlainGroup(const App::DocumentObject &, const App::Property &); @@ -310,7 +310,7 @@ protected: mutable std::vector mySubElements; mutable std::string mySubName; - std::unordered_map plainGroupConns; long myOwner; @@ -336,10 +336,10 @@ public: LinkExtension(); virtual ~LinkExtension(); - /** \name Helpers for defining extended parameter + /** \name Helpers for defining extended parameter * - * extended parameter definition - * (Name, Type, Property_Type, Default, Document, Property_Name, + * extended parameter definition + * (Name, Type, Property_Type, Default, Document, Property_Name, * Derived_Property_Type, App_Property_Type, Group) * * This helper simply reuses Name as Property_Name, Property_Type as @@ -422,7 +422,7 @@ public: #define LINK_PROP_DEFINE(_1,_2,_param) LINK_ETYPE(_param) LINK_ENAME(_param); #define LINK_PROPS_DEFINE(_seq) BOOST_PP_SEQ_FOR_EACH(LINK_PROP_DEFINE,_,_seq) - + // defines the actual properties LINK_PROPS_DEFINE(LINK_PARAMS_EXT) @@ -467,7 +467,7 @@ public: inherited::onDocumentRestored(); } - void handleChangedPropertyName(Base::XMLReader &reader, + void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override { _handleChangedPropertyName(reader,TypeName,PropName); @@ -508,7 +508,7 @@ public: bool canDelete() const; - void handleChangedPropertyName(Base::XMLReader &reader, + void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override { _handleChangedPropertyName(reader,TypeName,PropName); diff --git a/src/App/LinkBaseExtensionPyImp.cpp b/src/App/LinkBaseExtensionPyImp.cpp index 90f44f3e46..be38bc2fc5 100644 --- a/src/App/LinkBaseExtensionPyImp.cpp +++ b/src/App/LinkBaseExtensionPyImp.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -43,8 +43,8 @@ std::string LinkBaseExtensionPy::representation(void) const typedef std::map > PropTmpMap; typedef std::map PropMap; -static bool getProperty(PropTmpMap &props, const LinkBaseExtension::PropInfoMap &infoMap, - const PropMap &propMap, PyObject *key, PyObject *value) +static bool getProperty(PropTmpMap &props, const LinkBaseExtension::PropInfoMap &infoMap, + const PropMap &propMap, PyObject *key, PyObject *value) { std::ostringstream str; @@ -69,7 +69,7 @@ static bool getProperty(PropTmpMap &props, const LinkBaseExtension::PropInfoMap } const char *valStr = 0; - if(key == value) + if(key == value) valStr = keyStr; else if (value!=Py_None) { #if PY_MAJOR_VERSION < 3 @@ -86,7 +86,7 @@ static bool getProperty(PropTmpMap &props, const LinkBaseExtension::PropInfoMap valStr = PyUnicode_AsUTF8(value); #endif } - + App::Property *prop = 0; auto &info = it->second; if(valStr) { @@ -98,8 +98,8 @@ static bool getProperty(PropTmpMap &props, const LinkBaseExtension::PropInfoMap } prop = pIt->second; if(!prop->isDerivedFrom(info.type)) { - str << "expect property '" << keyStr << "(" << valStr - << ") to be derived from '" << info.type.getName() + str << "expect property '" << keyStr << "(" << valStr + << ") to be derived from '" << info.type.getName() << "', instead of '" << prop->getTypeId().getName() << "'"; PyErr_SetString(PyExc_TypeError, str.str().c_str()); } @@ -132,7 +132,7 @@ PyObject* LinkBaseExtensionPy::configLinkProperty(PyObject *args, PyObject *keyw return 0; } } - for(auto &v : props) + for(auto &v : props) ext->setProperty(v.second.first,v.second.second); Py_Return; } @@ -182,7 +182,7 @@ PyObject* LinkBaseExtensionPy::getLinkPropertyInfo(PyObject *args) Py::Tuple ret(infos.size()); int i=0; for(const auto &info : infos) { - ret.setItem(i++,Py::TupleN(Py::String(info.name), + ret.setItem(i++,Py::TupleN(Py::String(info.name), Py::String(info.type.getName()),Py::String(info.doc))); } return Py::new_reference_to(ret); @@ -258,7 +258,7 @@ PyObject* LinkBaseExtensionPy::setLink(PyObject *_args) }else if(PySequence_Check(pcObj)) { ext->setLink(-1,0); Py::Sequence seq(pcObj); - for(size_t i=0;i ObjectIdentifier::getStringList() const ObjectIdentifier ObjectIdentifier::relativeTo(const ObjectIdentifier &other) const { - ObjectIdentifier result(owner); + ObjectIdentifier result(other.getOwner()); ResolveResults thisresult(*this); ResolveResults otherresult(other); diff --git a/src/App/ObjectIdentifier.h b/src/App/ObjectIdentifier.h index 83f000ee6d..f47d7808b7 100644 --- a/src/App/ObjectIdentifier.h +++ b/src/App/ObjectIdentifier.h @@ -82,11 +82,11 @@ public: // Constructor String(const std::string & s = "", bool _isRealString = false, bool _forceIdentifier = false) - : str(s), isString(_isRealString), forceIdentifier(_forceIdentifier) + : str(s), isString(_isRealString), forceIdentifier(_forceIdentifier) { } String(std::string &&s, bool _isRealString = false, bool _forceIdentifier = false) - : str(std::move(s)), isString(_isRealString), forceIdentifier(_forceIdentifier) + : str(std::move(s)), isString(_isRealString), forceIdentifier(_forceIdentifier) { } FC_DEFAULT_CTORS(String) { @@ -125,7 +125,7 @@ public: bool operator>(const String & other) const { return str > other.str; } - void checkImport(const App::DocumentObject *owner, + void checkImport(const App::DocumentObject *owner, const App::DocumentObject *obj=0, String *objName=0); private: @@ -164,9 +164,9 @@ public: return *this; } - Component(const String &_name = String(), typeEnum _type=SIMPLE, + Component(const String &_name = String(), typeEnum _type=SIMPLE, int begin=INT_MAX, int end=INT_MAX, int step=1); - Component(String &&_name, typeEnum _type=SIMPLE, + Component(String &&_name, typeEnum _type=SIMPLE, int begin=INT_MAX, int end=INT_MAX, int step=1); static Component SimpleComponent(const char * _component); @@ -224,16 +224,16 @@ public: }; - static Component SimpleComponent(const char * _component) + static Component SimpleComponent(const char * _component) {return Component::SimpleComponent(_component);} - static Component SimpleComponent(const String & _component) + static Component SimpleComponent(const String & _component) {return Component::SimpleComponent(_component);} - static Component SimpleComponent(String &&_component) + static Component SimpleComponent(String &&_component) {return Component::SimpleComponent(std::move(_component));} - static Component ArrayComponent(int _index) + static Component ArrayComponent(int _index) {return Component::ArrayComponent(_index); } static Component RangeComponent(int _begin, int _end = INT_MAX, int _step=1) @@ -245,7 +245,7 @@ public: static Component MapComponent(String &&_key) {return Component::MapComponent(_key);} - ObjectIdentifier(const App::PropertyContainer * _owner = 0, + ObjectIdentifier(const App::PropertyContainer * _owner = 0, const std::string & property = std::string(), int index=INT_MAX); ObjectIdentifier(const App::PropertyContainer * _owner, bool localProperty); @@ -272,13 +272,13 @@ public: App::DocumentObject *getOwner() const { return owner; } // Components - void addComponent(const Component &c) { + void addComponent(const Component &c) { components.push_back(c); _cache.clear(); } // Components - void addComponent(Component &&c) { + void addComponent(Component &&c) { components.push_back(std::move(c)); _cache.clear(); } @@ -320,10 +320,10 @@ public: String getDocumentName() const; - void setDocumentObjectName(String &&name, bool force = false, + void setDocumentObjectName(String &&name, bool force = false, String &&subname = String(), bool checkImport=false); - void setDocumentObjectName(const App::DocumentObject *obj, bool force = false, + void setDocumentObjectName(const App::DocumentObject *obj, bool force = false, String &&subname = String(), bool checkImport=false); bool hasDocumentObjectName(bool forced=false) const; @@ -347,7 +347,7 @@ public: App::Document *getDocument(String name = String(), bool *ambiguous=0) const; App::DocumentObject *getDocumentObject() const; - + std::vector getStringList() const; App::ObjectIdentifier relativeTo(const App::ObjectIdentifier & other) const; @@ -417,7 +417,7 @@ protected: friend struct ResolveResults; - App::Property *resolveProperty(const App::DocumentObject *obj, + App::Property *resolveProperty(const App::DocumentObject *obj, const char *propertyName, App::DocumentObject *&sobj,int &ptype) const; void getSubPathStr(std::ostream &ss, const ResolveResults &result, bool toPython=false) const; @@ -462,7 +462,7 @@ Py::Object AppExport pyObjectFromAny(const App::any &value); namespace std { -template<> +template<> struct hash { typedef App::ObjectIdentifier argument_type; typedef std::size_t result_type; diff --git a/src/App/Origin.cpp b/src/App/Origin.cpp index 5fba5dff06..ef3bab4073 100644 --- a/src/App/Origin.cpp +++ b/src/App/Origin.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2015 Stefan Tr�ger * + * Copyright (c) 2015 Stefan Tröger * * Copyright (c) 2015 Alexander Golubev (Fat-Zer) * * * * This file is part of the FreeCAD CAx development system. * diff --git a/src/App/OriginGroupExtension.cpp b/src/App/OriginGroupExtension.cpp index 08e34d9eac..0e25dd9ba4 100644 --- a/src/App/OriginGroupExtension.cpp +++ b/src/App/OriginGroupExtension.cpp @@ -67,12 +67,12 @@ App::Origin *OriginGroupExtension::getOrigin () const { } bool OriginGroupExtension::extensionGetSubObject(DocumentObject *&ret, const char *subname, - PyObject **pyObj, Base::Matrix4D *mat, bool transform, int depth) const + PyObject **pyObj, Base::Matrix4D *mat, bool transform, int depth) const { App::DocumentObject *originObj = Origin.getValue (); const char *dot; - if(originObj && originObj->getNameInDocument() && - subname && (dot=strchr(subname,'.'))) + if(originObj && originObj->getNameInDocument() && + subname && (dot=strchr(subname,'.'))) { bool found; if(subname[0] == '$') @@ -80,7 +80,7 @@ bool OriginGroupExtension::extensionGetSubObject(DocumentObject *&ret, const cha else found = std::string(subname,dot)==originObj->getNameInDocument(); if(found) { - if(mat && transform) + if(mat && transform) *mat *= const_cast(this)->placement().getValue().toMatrix(); ret = originObj->getSubObject(dot+1,pyObj,mat,true,depth+1); return true; @@ -93,9 +93,9 @@ App::DocumentObject *OriginGroupExtension::getGroupOfObject (const DocumentObjec if(!obj) return nullptr; - + bool isOriginFeature = obj->isDerivedFrom(App::OriginFeature::getClassTypeId()); - + auto list = obj->getInList(); for (auto o : list) { if(o->hasExtension(App::OriginGroupExtension::getExtensionClassTypeId())) @@ -178,13 +178,13 @@ void OriginGroupExtension::relinkToOrigin(App::DocumentObject* obj) obj->getPropertyList(list); for(App::Property* prop : list) { if(prop->getTypeId().isDerivedFrom(App::PropertyLink::getClassTypeId())) { - + auto p = static_cast(prop); if(!p->getValue() || !p->getValue()->isDerivedFrom(App::OriginFeature::getClassTypeId())) continue; - + p->setValue(getOrigin()->getOriginFeature(static_cast(p->getValue())->Role.getValue())); - } + } else if(prop->getTypeId().isDerivedFrom(App::PropertyLinkList::getClassTypeId())) { auto p = static_cast(prop); auto vec = p->getValues(); @@ -205,7 +205,7 @@ void OriginGroupExtension::relinkToOrigin(App::DocumentObject* obj) auto p = static_cast(prop); if(!p->getValue() || !p->getValue()->isDerivedFrom(App::OriginFeature::getClassTypeId())) continue; - + std::vector subValues = p->getSubValues(); p->setValue(getOrigin()->getOriginFeature(static_cast(p->getValue())->Role.getValue()), subValues); } diff --git a/src/App/OriginGroupExtension.h b/src/App/OriginGroupExtension.h index d99b5c1a66..aad7e11547 100644 --- a/src/App/OriginGroupExtension.h +++ b/src/App/OriginGroupExtension.h @@ -35,7 +35,7 @@ class Origin; class AppExport OriginGroupExtension : public App::GeoFeatureGroupExtension { EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(App::OriginGroupExtension); - + public: OriginGroupExtension (); virtual ~OriginGroupExtension (); @@ -48,22 +48,22 @@ public: return "Gui::ViewProviderOriginGroup"; } - /** + /** * Returns the origin group which contains this object. - * In case this object is not part of any geoFeatureGroup 0 is returned. + * In case this object is not part of any geoFeatureGroup, 0 is returned. * @param obj the object to search for */ static DocumentObject* getGroupOfObject (const DocumentObject* obj); /// Returns true on changing OriginFeature set virtual short extensionMustExecute () override; - + /// Origin linked to the group PropertyLink Origin; - - //changes all links of obj to a origin to point to this groupes origin + + // changes all links of obj to a origin to point to this groups origin void relinkToOrigin(App::DocumentObject* obj); - + virtual std::vector addObjects(std::vector obj) override; virtual bool hasObject(const DocumentObject* obj, bool recursive = false) const override; diff --git a/src/App/OriginGroupExtensionPyImp.cpp b/src/App/OriginGroupExtensionPyImp.cpp index 6d7a1de1ec..2e19512a50 100644 --- a/src/App/OriginGroupExtensionPyImp.cpp +++ b/src/App/OriginGroupExtensionPyImp.cpp @@ -50,7 +50,7 @@ PyObject *OriginGroupExtensionPy::getCustomAttributes(const char* /*attr*/) cons int OriginGroupExtensionPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/App/Part.cpp b/src/App/Part.cpp index b0fbc3c350..f66a32d0fc 100644 --- a/src/App/Part.cpp +++ b/src/App/Part.cpp @@ -68,9 +68,9 @@ Part::~Part(void) } App::Part *Part::getPartOfObject (const DocumentObject* obj) { - - //as a Part is a geofeaturegroup it must directly link to all objects it contains, even - //if they are in additional groups etc. + + // as a Part is a geofeaturegroup it must directly link to all + // objects it contains, even if they are in additional groups etc. auto list = obj->getInList(); for (auto obj : list) { if(obj->isDerivedFrom(App::Part::getClassTypeId())) diff --git a/src/App/Part.h b/src/App/Part.h index c4d7bc5ad6..bd509d898a 100644 --- a/src/App/Part.h +++ b/src/App/Part.h @@ -44,7 +44,7 @@ public: PropertyString Type; /** @name base properties of all Assembly Items - * This properties corospond mostly to the meta information + * These properties correspond mostly to the meta information * in the App::Document class */ //@{ @@ -86,7 +86,7 @@ public: /** * Returns the part which contains this object. - * In case this object is not belongs to any Part 0 is returned. + * In case this object does not belong to any Part, 0 is returned. * @param obj the object to search for */ static App::Part* getPartOfObject (const DocumentObject* obj); diff --git a/src/App/PartPyImp.cpp b/src/App/PartPyImp.cpp index ca79f68c98..a05ccded17 100644 --- a/src/App/PartPyImp.cpp +++ b/src/App/PartPyImp.cpp @@ -49,7 +49,6 @@ PyObject *PartPy::getCustomAttributes(const char* /*attr*/) const int PartPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } - diff --git a/src/App/Path.h b/src/App/Path.h index 6628cbc5e5..716d921d43 100644 --- a/src/App/Path.h +++ b/src/App/Path.h @@ -34,7 +34,7 @@ namespace App /** Base class of all geometric document objects. */ -class AppExport Path +class AppExport Path { protected: std::vector _PathVector; diff --git a/src/App/Placement.h b/src/App/Placement.h index 378d917ce3..e7ae37dcea 100644 --- a/src/App/Placement.h +++ b/src/App/Placement.h @@ -21,14 +21,12 @@ ***************************************************************************/ - - #ifndef _AppPlacement_h_ #define _AppPlacement_h_ #include -#include "FeaturePython.h" +#include "FeaturePython.h" #include "GeoFeature.h" #include "PropertyGeo.h" @@ -59,7 +57,7 @@ public: /// Constructor Placement(void); virtual ~Placement(); - + /// returns the type name of the ViewProvider virtual const char* getViewProviderName(void) const { return "Gui::ViewProviderPlacement"; @@ -67,7 +65,7 @@ public: }; -typedef App::FeaturePythonT PlacementPython; +typedef App::FeaturePythonT PlacementPython; @@ -76,4 +74,4 @@ typedef App::FeaturePythonT PlacementPython; -#endif +#endif diff --git a/src/App/PreCompiled.h b/src/App/PreCompiled.h index 4a2596c297..ef5fe98b67 100644 --- a/src/App/PreCompiled.h +++ b/src/App/PreCompiled.h @@ -39,8 +39,10 @@ #ifdef FC_OS_WIN32 #define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX #endif +#endif #ifdef _PreComp_ @@ -61,7 +63,7 @@ #include #include -// STL +// STL #include #include #include diff --git a/src/App/Property.cpp b/src/App/Property.cpp index 201404b497..b0ab46c021 100644 --- a/src/App/Property.cpp +++ b/src/App/Property.cpp @@ -228,7 +228,7 @@ void Property::verifyPath(const ObjectIdentifier &p) const p.verify(*this); } -Property *Property::Copy(void) const +Property *Property::Copy(void) const { // have to be reimplemented by a subclass! assert(0); @@ -242,7 +242,7 @@ void Property::Paste(const Property& /*from*/) } void Property::setStatusValue(unsigned long status) { - static const unsigned long mask = + static const unsigned long mask = (1<listSize) + if(idx<-1 || idx>listSize) throw Base::ValueError("index out of bound"); if(idx==-1 || idx==listSize) { idx = listSize; diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h index f204babbd1..bb03473cec 100644 --- a/src/App/PropertyContainer.h +++ b/src/App/PropertyContainer.h @@ -43,7 +43,7 @@ class PropertyContainer; class DocumentObject; class Extension; -enum PropertyType +enum PropertyType { Prop_None = 0, /*!< No special property type */ Prop_ReadOnly = 1, /*!< Property is read-only in the editor */ @@ -67,16 +67,16 @@ struct AppExport PropertyData :Name(name),Group(group),Docu(doc),Offset(offset),Type(type) {} }; - - //purpose of this struct is to be constructible from all acceptable container types and to - //be able to return the offset to a property from the accepted containers. This allows to use - //one function implementation for multiple container types without losing all type safety by + + //purpose of this struct is to be constructible from all acceptable container types and to + //be able to return the offset to a property from the accepted containers. This allows to use + //one function implementation for multiple container types without losing all type safety by //accepting void* struct OffsetBase { OffsetBase(const App::PropertyContainer* container) : m_container(container) {} OffsetBase(const App::Extension* container) : m_container(container) {} - + short int getOffsetTo(const App::Property* prop) const { auto *pt = (const char*)prop; auto *base = (const char *)m_container; @@ -85,7 +85,7 @@ struct AppExport PropertyData return (short) (pt-base); }; char* getOffset() const {return (char*) m_container;} - + private: const void* m_container; }; @@ -115,10 +115,10 @@ struct AppExport PropertyData const PropertyData* parentPropertyData; void addProperty(OffsetBase offsetBase,const char* PropName, Property *Prop, const char* PropertyGroup= 0, PropertyType = Prop_None, const char* PropertyDocu= 0 ); - + const PropertySpec *findProperty(OffsetBase offsetBase,const char* PropName) const; const PropertySpec *findProperty(OffsetBase offsetBase,const Property* prop) const; - + const char* getName (OffsetBase offsetBase,const Property* prop) const; short getType (OffsetBase offsetBase,const Property* prop) const; short getType (OffsetBase offsetBase,const char* name) const; @@ -227,15 +227,15 @@ public: friend class DynamicProperty; -protected: +protected: /// get called by the container when a property has changed virtual void onChanged(const Property* /*prop*/){} /// get called before the value is changed virtual void onBeforeChange(const Property* /*prop*/){} //void hasChanged(Property* prop); - static const PropertyData * getPropertyDataPtr(void); - virtual const PropertyData& getPropertyData(void) const; + static const PropertyData * getPropertyDataPtr(void); + virtual const PropertyData& getPropertyData(void) const; virtual void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName); virtual void handleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, Property * prop); @@ -248,12 +248,12 @@ private: protected: DynamicProperty dynamicProps; -private: +private: std::string _propertyPrefix; - static PropertyData propertyData; + static PropertyData propertyData; }; -/// Property define +/// Property define #define _ADD_PROPERTY(_name,_prop_, _defaultval_) \ do { \ this->_prop_.setValue _defaultval_;\ @@ -281,7 +281,7 @@ protected: \ static const App::PropertyData * getPropertyDataPtr(void); \ virtual const App::PropertyData &getPropertyData(void) const; \ private: \ - static App::PropertyData propertyData + static App::PropertyData propertyData /// Like PROPERTY_HEADER, but with overridden methods declared as such #define PROPERTY_HEADER_WITH_OVERRIDE(_class_) \ @@ -290,8 +290,8 @@ protected: \ static const App::PropertyData * getPropertyDataPtr(void); \ virtual const App::PropertyData &getPropertyData(void) const override; \ private: \ - static App::PropertyData propertyData -/// + static App::PropertyData propertyData +/// #define PROPERTY_SOURCE(_class_, _parentclass_) \ TYPESYSTEM_SOURCE_P(_class_)\ const App::PropertyData * _class_::getPropertyDataPtr(void){return &propertyData;} \ diff --git a/src/App/PropertyContainerPyImp.cpp b/src/App/PropertyContainerPyImp.cpp index 2f09ab3562..98132fac1e 100644 --- a/src/App/PropertyContainerPyImp.cpp +++ b/src/App/PropertyContainerPyImp.cpp @@ -1,4 +1,3 @@ - /*************************************************************************** * Copyright (c) 2007 Jürgen Riegel * * * @@ -295,7 +294,7 @@ PyObject* PropertyContainerPy::getPropertyStatus(PyObject *args) break; } } - if(!found) + if(!found) ret.append(Py::Int((long)i)); } } @@ -396,7 +395,7 @@ PyObject* PropertyContainerPy::dumpPropertyContent(PyObject *args, PyObject *kwd } catch (...) { PyErr_SetString(PyExc_IOError, "Unable parse content into binary representation"); - return NULL; + return NULL; } //build the byte array with correct size @@ -508,7 +507,7 @@ PyObject *PropertyContainerPy::getCustomAttributes(const char* attr) const } return dict; } else if(Base::streq(attr,"Shape") - && getPropertyContainerPtr()->isDerivedFrom(App::DocumentObject::getClassTypeId())) + && getPropertyContainerPtr()->isDerivedFrom(App::DocumentObject::getClassTypeId())) { // Special treatment of Shape property static PyObject *_getShape = 0; @@ -527,7 +526,7 @@ PyObject *PropertyContainerPy::getCustomAttributes(const char* attr) const Py::Tuple args(1); args.setItem(0,Py::Object(const_cast(this))); auto res = PyObject_CallObject(_getShape, args.ptr()); - if(!res) + if(!res) PyErr_Clear(); else { Py::Object pyres(res,true); diff --git a/src/App/PropertyLinks.cpp b/src/App/PropertyLinks.cpp index 1ad3572c52..c151d2b4eb 100644 --- a/src/App/PropertyLinks.cpp +++ b/src/App/PropertyLinks.cpp @@ -87,7 +87,7 @@ void PropertyLinkBase::hasSetValue() { void PropertyLinkBase::unregisterElementReference() { } -void PropertyLinkBase::unregisterLabelReferences() +void PropertyLinkBase::unregisterLabelReferences() { for(auto &label : _LabelRefs) { auto it = _LabelMap.find(label); @@ -131,7 +131,7 @@ void PropertyLinkBase::checkLabelReferences(const std::vector &subs } } -std::string PropertyLinkBase::updateLabelReference(const App::DocumentObject *parent, +std::string PropertyLinkBase::updateLabelReference(const App::DocumentObject *parent, const char *subname, App::DocumentObject *obj, const std::string &ref, const char *newLabel) { if(!obj || !obj->getNameInDocument() || !parent || !parent->getNameInDocument()) @@ -153,8 +153,8 @@ std::string PropertyLinkBase::updateLabelReference(const App::DocumentObject *pa return std::string(); } -std::vector > > -PropertyLinkBase::updateLabelReferences(App::DocumentObject *obj, const char *newLabel) +std::vector > > +PropertyLinkBase::updateLabelReferences(App::DocumentObject *obj, const char *newLabel) { std::vector > > ret; if(!obj || !obj->getNameInDocument()) @@ -222,7 +222,7 @@ public: char v2; }; -void PropertyLinkBase::restoreLabelReference(const DocumentObject *obj, +void PropertyLinkBase::restoreLabelReference(const DocumentObject *obj, std::string &subname, ShadowSub *shadow) { std::ostringstream ss; @@ -236,7 +236,7 @@ void PropertyLinkBase::restoreLabelReference(const DocumentObject *obj, StringGuard guard(dot-1); sobj = obj->getSubObject(subname.c_str()); if(!sobj) { - FC_ERR("Failed to restore label reference " << obj->getFullName() + FC_ERR("Failed to restore label reference " << obj->getFullName() << '.' << ss.str()); return; } @@ -252,15 +252,15 @@ void PropertyLinkBase::restoreLabelReference(const DocumentObject *obj, size_t count = sub-subname.c_str(); const auto &newSub = ss.str(); - if(shadow && shadow->second.size()>=count) + if(shadow && shadow->second.size()>=count) shadow->second = newSub + (shadow->second.c_str()+count); - if(shadow && shadow->first.size()>=count) + if(shadow && shadow->first.size()>=count) shadow->first = newSub + (shadow->first.c_str()+count); subname = newSub + sub; } -bool PropertyLinkBase::_updateElementReference(DocumentObject *feature, - App::DocumentObject *obj, std::string &sub, ShadowSub &shadow, +bool PropertyLinkBase::_updateElementReference(DocumentObject *feature, + App::DocumentObject *obj, std::string &sub, ShadowSub &shadow, bool reverse, bool notify) { (void)feature; @@ -271,8 +271,8 @@ bool PropertyLinkBase::_updateElementReference(DocumentObject *feature, return false; } -std::pair -PropertyLinkBase::tryReplaceLink(const PropertyContainer *owner, DocumentObject *obj, +std::pair +PropertyLinkBase::tryReplaceLink(const PropertyContainer *owner, DocumentObject *obj, const DocumentObject *parent, DocumentObject *oldObj, DocumentObject *newObj, const char *subname) { std::pair res; @@ -283,7 +283,7 @@ PropertyLinkBase::tryReplaceLink(const PropertyContainer *owner, DocumentObject // Do not throw on sub object error yet. It's better to let // recompute find out the error and point out the affected objects // to user. -#if 0 +#if 0 if(subname && subname[0] && !newObj->getSubObject(subname)) { FC_THROWM(Base::RuntimeError, "Sub-object '" << newObj->getFullName() @@ -309,7 +309,7 @@ PropertyLinkBase::tryReplaceLink(const PropertyContainer *owner, DocumentObject sub[pos] = 0; auto sobj = obj->getSubObject(sub.c_str()); sub[pos] = c; - if(!sobj) + if(!sobj) break; if(sobj == oldObj) { if(prev == parent) { @@ -339,8 +339,8 @@ PropertyLinkBase::tryReplaceLink(const PropertyContainer *owner, DocumentObject } std::pair > -PropertyLinkBase::tryReplaceLinkSubs(const PropertyContainer *owner, - DocumentObject *obj, const DocumentObject *parent, DocumentObject *oldObj, +PropertyLinkBase::tryReplaceLinkSubs(const PropertyContainer *owner, + DocumentObject *obj, const DocumentObject *parent, DocumentObject *oldObj, DocumentObject *newObj, const std::vector &subs) { std::pair > res; @@ -406,10 +406,10 @@ void PropertyLink::resetLink() { //in case this property gets dynamically removed #ifndef USE_OLD_DAG // maintain the back link in the DocumentObject class if it is from a document object - if (_pcScope!=LinkScope::Hidden && - _pcLink && - getContainer() && - getContainer()->isDerivedFrom(App::DocumentObject::getClassTypeId())) + if (_pcScope!=LinkScope::Hidden && + _pcLink && + getContainer() && + getContainer()->isDerivedFrom(App::DocumentObject::getClassTypeId())) { App::DocumentObject* parent = static_cast(getContainer()); // before accessing internals make sure the object is not about to be destroyed @@ -536,7 +536,7 @@ void PropertyLink::Paste(const Property &from) setValue(static_cast(from)._pcLink); } -void PropertyLink::getLinks(std::vector &objs, +void PropertyLink::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { (void)newStyle; @@ -588,12 +588,12 @@ PropertyLinkList::PropertyLinkList() PropertyLinkList::~PropertyLinkList() { //in case this property gety dynamically removed -#ifndef USE_OLD_DAG +#ifndef USE_OLD_DAG //maintain the back link in the DocumentObject class - if (_pcScope!=LinkScope::Hidden && - !_lValueList.empty() && - getContainer() && - getContainer()->isDerivedFrom(App::DocumentObject::getClassTypeId())) + if (_pcScope!=LinkScope::Hidden && + !_lValueList.empty() && + getContainer() && + getContainer()->isDerivedFrom(App::DocumentObject::getClassTypeId())) { App::DocumentObject* parent = static_cast(getContainer()); // before accessing internals make sure the object is not about to be destroyed @@ -643,13 +643,13 @@ void PropertyLinkList::set1Value(int idx, DocumentObject* const &value) { _nameMap.clear(); -#ifndef USE_OLD_DAG +#ifndef USE_OLD_DAG if (getContainer() && getContainer()->isDerivedFrom(App::DocumentObject::getClassTypeId())) { App::DocumentObject* parent = static_cast(getContainer()); // before accessing internals make sure the object is not about to be destroyed // otherwise the backlink contains dangling pointers if (!parent->testStatus(ObjectStatus::Destroy) && _pcScope!=LinkScope::Hidden) { - if(obj) + if(obj) obj->_removeBackLink(static_cast(getContainer())); if(value) value->_addBackLink(static_cast(getContainer())); @@ -715,13 +715,18 @@ PyObject *PropertyLinkList::getPyObject(void) return Py::new_reference_to(sequence); } -DocumentObject *PropertyLinkList::getPyValue(PyObject *item) const { - if (!PyObject_TypeCheck(item, &(DocumentObjectPy::Type))) { - std::string error = std::string("type must be 'DocumentObject' or list of 'DocumentObject', not "); - error += item->ob_type->tp_name; - throw Base::TypeError(error); +DocumentObject *PropertyLinkList::getPyValue(PyObject *item) const +{ + if (item == Py_None) { + return nullptr; } - return static_cast(item)->getDocumentObjectPtr(); + else if (PyObject_TypeCheck(item, &(DocumentObjectPy::Type))) { + return static_cast(item)->getDocumentObjectPtr(); + } + + std::string error = std::string("type must be 'DocumentObject', list of 'DocumentObject', or NoneType, not "); + error += item->ob_type->tp_name; + throw Base::TypeError(error); } void PropertyLinkList::Save(Base::Writer &writer) const @@ -771,7 +776,7 @@ void PropertyLinkList::Restore(Base::XMLReader &reader) if (child) values.push_back(child); else if (reader.isVerbose()) - FC_WARN("Lost link to " << (document?document->getName():"") << " " << name + FC_WARN("Lost link to " << (document?document->getName():"") << " " << name << " while loading, maybe an object was not loaded correctly"); } @@ -838,7 +843,7 @@ DocumentObject *PropertyLinkList::find(const std::string &name, int *pindex) con _nameMap.clear(); for(int i=0;i<(int)_lValueList.size();++i) { auto obj = _lValueList[i]; - if(obj && obj->getNameInDocument()) + if(obj && obj->getNameInDocument()) _nameMap[obj->getNameInDocument()] = i; } } @@ -849,7 +854,7 @@ DocumentObject *PropertyLinkList::find(const std::string &name, int *pindex) con return _lValueList[it->second]; } -void PropertyLinkList::getLinks(std::vector &objs, +void PropertyLinkList::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { (void)subs; @@ -919,13 +924,13 @@ PropertyLinkSub::~PropertyLinkSub() #endif } -void PropertyLinkSub::setValue(App::DocumentObject * lValue, +void PropertyLinkSub::setValue(App::DocumentObject * lValue, const std::vector &SubList, std::vector &&shadows) { setValue(lValue,std::vector(SubList),std::move(shadows)); } -void PropertyLinkSub::setValue(App::DocumentObject * lValue, +void PropertyLinkSub::setValue(App::DocumentObject * lValue, std::vector &&subs, std::vector &&shadows) { auto parent = Base::freecad_dynamic_cast(getContainer()); @@ -972,9 +977,9 @@ static inline const std::string &getSubNameWithStyle(const std::string &subName, const PropertyLinkBase::ShadowSub &shadow, bool newStyle) { if(!newStyle) { - if(shadow.second.size()) + if(shadow.second.size()) return shadow.second; - }else if(shadow.first.size()) + }else if(shadow.first.size()) return shadow.first; return subName; } @@ -1031,7 +1036,7 @@ void PropertyLinkSub::setPyObject(PyObject *value) Py::Sequence seq(value); if(seq.size() == 0) setValue(NULL); - else if(seq.size()!=2) + else if(seq.size()!=2) throw Base::ValueError("Expect input sequence of size 2"); else if (PyObject_TypeCheck(seq[0].ptr(), &(DocumentObjectPy::Type))) { DocumentObjectPy *pcObj = (DocumentObjectPy*)seq[0].ptr(); @@ -1075,7 +1080,7 @@ void PropertyLinkSub::setPyObject(PyObject *value) } } -static bool updateLinkReference(App::PropertyLinkBase *prop, +static bool updateLinkReference(App::PropertyLinkBase *prop, App::DocumentObject *feature, bool reverse, bool notify, App::DocumentObject *link, std::vector &subs, std::vector &mapped, std::vector &shadows) @@ -1104,7 +1109,7 @@ static bool updateLinkReference(App::PropertyLinkBase *prop, subs[idx] = shadows[idx].first; } mapped.clear(); - if(owner && feature) + if(owner && feature) owner->onUpdateElementReference(prop); return true; } @@ -1158,7 +1163,7 @@ std::string PropertyLinkBase::importSubName(Base::XMLReader &reader, const char } const char *PropertyLinkBase::exportSubName(std::string &output, - const App::DocumentObject *obj, const char *sub, bool first_obj) + const App::DocumentObject *obj, const char *sub, bool first_obj) { std::ostringstream str; const char *res = sub; @@ -1193,7 +1198,7 @@ const char *PropertyLinkBase::exportSubName(std::string &output, str << doc->getName() << '#'; sub = hash+1; } - }else if(!obj || !obj->getNameInDocument()) + }else if(!obj || !obj->getNameInDocument()) return res; for(const char *dot=strchr(sub,'.');dot;sub=dot+1,dot=strchr(sub,'.')) { @@ -1243,10 +1248,10 @@ App::DocumentObject *PropertyLinkBase::tryImport(const App::Document *doc, return const_cast(obj); } -std::string PropertyLinkBase::tryImportSubName(const App::DocumentObject *obj, const char *_subname, +std::string PropertyLinkBase::tryImportSubName(const App::DocumentObject *obj, const char *_subname, const App::Document *doc, const std::map &nameMap) { - if(!doc || !obj || !obj->getNameInDocument()) + if(!doc || !obj || !obj->getNameInDocument()) return std::string(); std::ostringstream ss; @@ -1271,7 +1276,7 @@ std::string PropertyLinkBase::tryImportSubName(const App::DocumentObject *obj, c if(it == nameMap.end()) continue; auto imported = doc->getObject(it->second.c_str()); - if(!imported) + if(!imported) FC_THROWM(RuntimeError, "Failed to find imported object " << it->second); ss.write(sub,next-sub); if(next[0] == '$') @@ -1301,7 +1306,7 @@ void PropertyLinkSub::Save (Base::Writer &writer) const // returns 0 if (_pcLinkSub && _pcLinkSub->getNameInDocument()) internal_name = _pcLinkSub->getExportName(); - writer.Stream() << writer.ind() << "" << std::endl; writer.incInd(); @@ -1356,7 +1361,7 @@ void PropertyLinkSub::Restore(Base::XMLReader &reader) pcObject = document ? document->getObject(name.c_str()) : 0; if (!pcObject) { if (reader.isVerbose()) { - FC_WARN("Lost link to " << name + FC_WARN("Lost link to " << name << " while loading, maybe an object was not loaded correctly"); } } @@ -1371,7 +1376,7 @@ void PropertyLinkSub::Restore(Base::XMLReader &reader) reader.readElement("Sub"); shadows[i].second = importSubName(reader,reader.getAttribute("value"),restoreLabel); if(reader.hasAttribute(ATTR_SHADOWED) && !IGNORE_SHADOW) { - values[i] = shadows[i].first = + values[i] = shadows[i].first = importSubName(reader,reader.getAttribute(ATTR_SHADOWED),restoreLabel); } else { values[i] = shadows[i].second; @@ -1429,7 +1434,7 @@ Property *PropertyLinkSub::CopyOnImportExternal( auto subs = updateLinkSubs(_pcLinkSub,_cSubList, &tryImportSubName,owner->getDocument(),nameMap); auto linked = tryImport(owner->getDocument(),_pcLinkSub,nameMap); - if(subs.empty() && linked==_pcLinkSub) + if(subs.empty() && linked==_pcLinkSub) return 0; PropertyLinkSub *p= new PropertyLinkSub(); @@ -1441,8 +1446,8 @@ Property *PropertyLinkSub::CopyOnImportExternal( return p; } -Property *PropertyLinkSub::CopyOnLabelChange(App::DocumentObject *obj, - const std::string &ref, const char *newLabel) const +Property *PropertyLinkSub::CopyOnLabelChange(App::DocumentObject *obj, + const std::string &ref, const char *newLabel) const { auto owner = dynamic_cast(getContainer()); if(!owner || !owner->getDocument()) @@ -1451,7 +1456,7 @@ Property *PropertyLinkSub::CopyOnLabelChange(App::DocumentObject *obj, return 0; auto subs = updateLinkSubs(_pcLinkSub,_cSubList,&updateLabelReference,obj,ref,newLabel); - if(subs.empty()) + if(subs.empty()) return 0; PropertyLinkSub *p= new PropertyLinkSub(); @@ -1489,7 +1494,7 @@ void PropertyLinkSub::Paste(const Property &from) setValue(link._pcLinkSub, link._cSubList); } -void PropertyLinkSub::getLinks(std::vector &objs, +void PropertyLinkSub::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { if(all||_pcScope!=LinkScope::Hidden) { @@ -1516,9 +1521,9 @@ static App::DocumentObject *adjustLinkSubs(App::PropertyLinkBase *prop, size_t pos = sub.find('.'); for(;pos!=std::string::npos;pos=sub.find('.',pos+1)) { auto sobj = link->getSubObject(sub.substr(0,pos+1).c_str()); - if(!sobj || - (!prop->testFlag(PropertyLinkBase::LinkAllowExternal) && - sobj->getDocument()!=link->getDocument())) + if(!sobj || + (!prop->testFlag(PropertyLinkBase::LinkAllowExternal) && + sobj->getDocument()!=link->getDocument())) { pos = std::string::npos; break; @@ -1531,7 +1536,7 @@ static App::DocumentObject *adjustLinkSubs(App::PropertyLinkBase *prop, (*links)[sobj].push_back(sub.substr(pos+1)); else sub = sub.substr(pos+1); - }else if(links) + }else if(links) (*links)[sobj].push_back(sub.substr(pos+1)); else if(sobj == newLink) sub = sub.substr(pos+1); @@ -1630,7 +1635,7 @@ void PropertyLinkSubList::setValue(DocumentObject* lValue,const char* SubName) } } #endif - + if (lValue) { aboutToSetValue(); _lValueList.resize(1); @@ -1661,7 +1666,7 @@ void PropertyLinkSubList::setValues(const std::vector& lValue,c throw Base::ValueError("PropertyLinkSubList::setValues: size of subelements list != size of objects list"); #ifndef USE_OLD_DAG - //maintain backlinks. + //maintain backlinks. if(parent) { // before accessing internals make sure the object is not about to be destroyed // otherwise the backlink contains dangling pointers @@ -1715,9 +1720,9 @@ void PropertyLinkSubList::setValues(std::vector&& lValue, } if (lValue.size() != lSubNames.size()) throw Base::ValueError("PropertyLinkSubList::setValues: size of subelements list != size of objects list"); - + #ifndef USE_OLD_DAG - //maintain backlinks. + //maintain backlinks. if(parent) { // before accessing internals make sure the object is not about to be destroyed // otherwise the backlink contains dangling pointers @@ -1759,7 +1764,7 @@ void PropertyLinkSubList::setValue(DocumentObject* lValue, const std::vectorgetDocument()!=lValue->getDocument()) throw Base::ValueError("PropertyLinkSubList does not support external object"); } -#ifndef USE_OLD_DAG +#ifndef USE_OLD_DAG //maintain backlinks. if(parent) { // before accessing internals make sure the object is not about to be destroyed @@ -1815,7 +1820,7 @@ const string PropertyLinkSubList::getPyReprString() const strm << "("; App::DocumentObject* obj = this->_lValueList[i]; if (obj) { - strm << "App.getDocument('" << obj->getDocument()->getName() + strm << "App.getDocument('" << obj->getDocument()->getName() << "').getObject('" << obj->getNameInDocument() << "')"; } else { strm << "None"; @@ -1970,7 +1975,7 @@ void PropertyLinkSubList::setPyObject(PyObject *value) return; }catch(...) {} - static const char *errMsg = + static const char *errMsg = "Expects sequence of items of type DocObj, (DocObj,SubName), or (DocObj, (SubName,...))"; if (!PyTuple_Check(value) && !PyList_Check(value)) @@ -2048,7 +2053,7 @@ void PropertyLinkSubList::updateElementReference(DocumentObject *feature, bool r if(_updateElementReference(feature,obj,sub,_ShadowSubList[i++],reverse,notify&&!touched)) touched = true; } - if(!touched) + if(!touched) return; std::vector mapped; @@ -2062,7 +2067,7 @@ void PropertyLinkSubList::updateElementReference(DocumentObject *feature, bool r } } _mapped.swap(mapped); - if(owner && feature) + if(owner && feature) owner->onUpdateElementReference(this); if(notify) hasSetValue(); @@ -2157,7 +2162,7 @@ void PropertyLinkSubList::Restore(Base::XMLReader &reader) SubNames.push_back(shadow.first); }else{ SubNames.push_back(shadow.second); - if(reader.hasAttribute(ATTR_SHADOW) && !IGNORE_SHADOW) + if(reader.hasAttribute(ATTR_SHADOW) && !IGNORE_SHADOW) shadow.first = importSubName(reader,reader.getAttribute(ATTR_SHADOW),restoreLabel); } if(reader.hasAttribute(ATTR_MAPPED)) @@ -2210,7 +2215,7 @@ Property *PropertyLinkSubList::CopyOnImportExternal( subs.push_back(sub); } } - if(values.empty()) + if(values.empty()) return 0; std::unique_ptr p(new PropertyLinkSubList); p->_lValueList = std::move(values); @@ -2218,8 +2223,8 @@ Property *PropertyLinkSubList::CopyOnImportExternal( return p.release(); } -Property *PropertyLinkSubList::CopyOnLabelChange(App::DocumentObject *obj, - const std::string &ref, const char *newLabel) const +Property *PropertyLinkSubList::CopyOnLabelChange(App::DocumentObject *obj, + const std::string &ref, const char *newLabel) const { auto owner = dynamic_cast(getContainer()); if(!owner || !owner->getDocument()) @@ -2252,7 +2257,7 @@ Property *PropertyLinkSubList::CopyOnLabelChange(App::DocumentObject *obj, subs.push_back(sub); } } - if(values.empty()) + if(values.empty()) return 0; std::unique_ptr p(new PropertyLinkSubList); p->_lValueList = std::move(values); @@ -2317,7 +2322,7 @@ Property *PropertyLinkSubList::CopyOnLinkReplace(const App::DocumentObject *pare } } } - if(values.empty()) + if(values.empty()) return 0; std::unique_ptr p(new PropertyLinkSubList); p->_lValueList = std::move(values); @@ -2358,7 +2363,7 @@ std::vector PropertyLinkSubList::getSubValues(bool newStyle) const return ret; } -void PropertyLinkSubList::getLinks(std::vector &objs, +void PropertyLinkSubList::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { if(all||_pcScope!=LinkScope::Hidden) { @@ -2391,7 +2396,7 @@ void PropertyLinkSubList::breakLink(App::DocumentObject *obj, bool clear) { int i=-1; for(auto o : _lValueList) { ++i; - if(o==obj) + if(o==obj) continue; values.push_back(o); subs.push_back(_lSubList[i]); @@ -2442,12 +2447,12 @@ bool PropertyLinkSubList::adjustLink(const std::set &inLis // Because of possible symbolic links, multiple entry may refer to the same // file. We used to rely on QFileInfo::canonicalFilePath to resolve it, but // has now been changed to simply use the absoluteFilePath(), and rely on user -// to be aware of possible duplicated file location. The reason being that +// to be aware of possible duplicated file location. The reason being that // some user (especially Linux user) use symlink to organize file tree. typedef std::map DocInfoMap; DocInfoMap _DocInfoMap; -class App::DocInfo : +class App::DocInfo : public std::enable_shared_from_this { public: @@ -2463,7 +2468,7 @@ public: std::set links; static std::string getDocPath( - const char *filename, App::Document *pDoc, bool relative, QString *fullPath = 0) + const char *filename, App::Document *pDoc, bool relative, QString *fullPath = 0) { bool absolute; // The path could be an URI, in that case @@ -2488,7 +2493,7 @@ public: const char *docPath = pDoc->getFileName(); if(!docPath || *docPath==0) throw Base::RuntimeError("Owner document not saved"); - + QDir docDir(QFileInfo(QString::fromUtf8(docPath)).absoluteDir()); if(!absolute) { path = QDir::cleanPath(docDir.absoluteFilePath(path)); @@ -2502,8 +2507,8 @@ public: return std::string(path.toUtf8().constData()); } - static DocInfoPtr get(const char *filename, - App::Document *pDoc,PropertyXLink *l, const char *objName) + static DocInfoPtr get(const char *filename, + App::Document *pDoc,PropertyXLink *l, const char *objName) { QString path; l->filePath = getDocPath(filename,pDoc,true,&path); @@ -2516,10 +2521,10 @@ public: info = it->second; if(!info->pcDoc) { QString fullpath(info->getFullPath()); - if(fullpath.size() && + if(fullpath.size() && App::GetApplication().addPendingDocument( fullpath.toUtf8().constData(),objName, - l->testFlag(PropertyLinkBase::LinkAllowPartial))==0) + l->testFlag(PropertyLinkBase::LinkAllowPartial))==0) { for(App::Document *doc : App::GetApplication().getDocuments()) { if(getFullPath(doc->getFileName()) == fullpath) { @@ -2637,8 +2642,8 @@ public: continue; } auto obj = doc->getObject(link->objectName.c_str()); - if(!obj) - FC_WARN("object '" << link->objectName << "' not found in document '" + if(!obj) + FC_WARN("object '" << link->objectName << "' not found in document '" << doc->getName() << "'"); else link->restoreLink(obj); @@ -2648,8 +2653,8 @@ public: v.first->aboutToSetValue(); for(auto link : v.second) { auto obj = doc->getObject(link->objectName.c_str()); - if(!obj) - FC_WARN("object '" << link->objectName << "' not found in document '" + if(!obj) + FC_WARN("object '" << link->objectName << "' not found in document '" << doc->getName() << "'"); else link->restoreLink(obj); @@ -2800,14 +2805,14 @@ public: else link->breakLink(obj,clear); } - for(auto link : parentLinks) + for(auto link : parentLinks) link->breakLink(obj,clear); } } }; -void PropertyLinkBase::breakLinks(App::DocumentObject *link, - const std::vector &objs, bool clear) +void PropertyLinkBase::breakLinks(App::DocumentObject *link, + const std::vector &objs, bool clear) { std::vector props; for(auto obj : objs) { @@ -2873,7 +2878,7 @@ void PropertyXLink::hasSetValue() { PropertyLinkBase::hasSetValue(); } -void PropertyXLink::setSubName(const char *subname) +void PropertyXLink::setSubName(const char *subname) { std::vector subs; if(subname && subname[0]) @@ -2883,12 +2888,12 @@ void PropertyXLink::setSubName(const char *subname) hasSetValue(); } -void PropertyXLink::setSubValues(std::vector &&subs, +void PropertyXLink::setSubValues(std::vector &&subs, std::vector &&shadows) { _SubList = std::move(subs); _ShadowSubList.clear(); - if(shadows.size() == _SubList.size()) + if(shadows.size() == _SubList.size()) _ShadowSubList = std::move(shadows); else updateElementReference(0); @@ -2911,7 +2916,7 @@ void PropertyXLink::restoreLink(App::DocumentObject *lValue) { assert(!_pcLink && lValue && docInfo); auto owner = dynamic_cast(getContainer()); - if(!owner || !owner->getNameInDocument()) + if(!owner || !owner->getNameInDocument()) throw Base::RuntimeError("invalid container"); bool touched = owner->isTouched(); @@ -2927,17 +2932,17 @@ void PropertyXLink::restoreLink(App::DocumentObject *lValue) { hasSetValue(); setFlag(LinkRestoring,false); - if(!touched && - owner->isTouched() && - docInfo && - docInfo->pcDoc && + if(!touched && + owner->isTouched() && + docInfo && + docInfo->pcDoc && stamp==docInfo->pcDoc->LastModifiedDate.getValue()) { owner->purgeTouched(); } } -void PropertyXLink::setValue(App::DocumentObject *lValue, +void PropertyXLink::setValue(App::DocumentObject *lValue, std::vector &&subs, std::vector &&shadows) { if(_pcLink==lValue && _SubList==subs) @@ -2949,7 +2954,7 @@ void PropertyXLink::setValue(App::DocumentObject *lValue, } auto owner = dynamic_cast(getContainer()); - if(!owner || !owner->getNameInDocument()) + if(!owner || !owner->getNameInDocument()) throw Base::RuntimeError("invalid container"); if(lValue == owner) @@ -2965,7 +2970,7 @@ void PropertyXLink::setValue(App::DocumentObject *lValue, if(!docInfo || lValue->getDocument()!=docInfo->pcDoc) { const char *filename = lValue->getDocument()->getFileName(); - if(!filename || *filename==0) + if(!filename || *filename==0) throw Base::RuntimeError("Linked document not saved"); FC_LOG("xlink set to new document " << lValue->getDocument()->getName()); info = DocInfo::get(filename,owner->getDocument(),this,name); @@ -2998,7 +3003,7 @@ void PropertyXLink::setValue(App::DocumentObject *lValue, hasSetValue(); } -void PropertyXLink::setValue(std::string &&filename, std::string &&name, +void PropertyXLink::setValue(std::string &&filename, std::string &&name, std::vector &&subs, std::vector &&shadows) { if(name.empty()) { @@ -3006,7 +3011,7 @@ void PropertyXLink::setValue(std::string &&filename, std::string &&name, return; } auto owner = dynamic_cast(getContainer()); - if(!owner || !owner->getNameInDocument()) + if(!owner || !owner->getNameInDocument()) throw Base::RuntimeError("invalid container"); DocumentObject *pObject=0; @@ -3014,7 +3019,7 @@ void PropertyXLink::setValue(std::string &&filename, std::string &&name, if(filename.size()) { owner->getDocument()->signalLinkXsetValue(filename); info = DocInfo::get(filename.c_str(),owner->getDocument(),this,name.c_str()); - if(info->pcDoc) + if(info->pcDoc) pObject = info->pcDoc->getObject(name.c_str()); }else pObject = owner->getDocument()->getObject(name.c_str()); @@ -3026,7 +3031,7 @@ void PropertyXLink::setValue(std::string &&filename, std::string &&name, setFlag(LinkDetached,false); aboutToSetValue(); #ifndef USE_OLD_DAG - if (_pcLink && !owner->testStatus(ObjectStatus::Destroy) && _pcScope!=LinkScope::Hidden) + if (_pcLink && !owner->testStatus(ObjectStatus::Destroy) && _pcScope!=LinkScope::Hidden) _pcLink->_removeBackLink(owner); #endif _pcLink = 0; @@ -3064,7 +3069,7 @@ const char *PropertyXLink::getObjectName() const { bool PropertyXLink::upgrade(Base::XMLReader &reader, const char *typeName) { if(strcmp(typeName,App::PropertyLinkGlobal::getClassTypeId().getName())==0 || strcmp(typeName,App::PropertyLink::getClassTypeId().getName())==0 || - strcmp(typeName,App::PropertyLinkChild::getClassTypeId().getName())==0) + strcmp(typeName,App::PropertyLinkChild::getClassTypeId().getName())==0) { PropertyLink::Restore(reader); return true; @@ -3090,8 +3095,8 @@ int PropertyXLink::checkRestore(std::string *msg) const { return 0; } if(!_pcLink) { - if(testFlag(LinkAllowPartial) && - (!docInfo->pcDoc || + if(testFlag(LinkAllowPartial) && + (!docInfo->pcDoc || docInfo->pcDoc->testStatus(App::Document::PartialDoc))) { return 0; @@ -3113,7 +3118,7 @@ int PropertyXLink::checkRestore(std::string *msg) const { if(msg) { std::ostringstream ss; - ss << "Time stamp changed on link " + ss << "Time stamp changed on link " << _pcLink->getFullName(); *msg = ss.str(); } @@ -3156,7 +3161,7 @@ void PropertyXLink::Save (Base::Writer &writer) const { auto exporting = owner->isExporting(); if(_pcLink && exporting && _pcLink->isExporting()) { - // this means, we are exporting the owner and the linked object together. + // this means, we are exporting the owner and the linked object together. // Lets save the export name writer.Stream() << writer.ind() << "getExportName(); }else { @@ -3166,7 +3171,7 @@ void PropertyXLink::Save (Base::Writer &writer) const { // Here means we are exporting the owner but not exporting the // linked object. Try to use absolute file path for easy transition // into document at different directory - if(docInfo) + if(docInfo) _path = docInfo->filePath(); else { auto pDoc = owner->getDocument(); @@ -3176,13 +3181,13 @@ void PropertyXLink::Save (Base::Writer &writer) const { _path = DocInfo::getDocPath(filePath.c_str(),pDoc,false); else _path = docPath; - }else + }else FC_WARN("PropertyXLink export without saving the document"); } if(_path.size()) path = _path.c_str(); } - writer.Stream() << writer.ind() + writer.Stream() << writer.ind() << "pcDoc?docInfo->pcDoc->LastModifiedDate.getValue():"") << "\" name=\"" << objectName; @@ -3252,11 +3257,11 @@ void PropertyXLink::Restore(Base::XMLReader &reader) stampAttr = reader.getAttribute("stamp"); if(reader.hasAttribute("file")) file = reader.getAttribute("file"); - setFlag(LinkAllowPartial, - reader.hasAttribute("partial") && + setFlag(LinkAllowPartial, + reader.hasAttribute("partial") && reader.getAttributeAsInteger("partial")); std::string name; - if(file.empty()) + if(file.empty()) name = reader.getName(reader.getAttribute("name")); else name = reader.getAttribute("name"); @@ -3301,8 +3306,8 @@ void PropertyXLink::Restore(Base::XMLReader &reader) for (int i = 0; i < count; i++) { reader.readElement("Sub"); shadows[i].second = importSubName(reader,reader.getAttribute("value"),restoreLabel); - if(reader.hasAttribute(ATTR_SHADOWED) && !IGNORE_SHADOW) - subs[i] = shadows[i].first = + if(reader.hasAttribute(ATTR_SHADOWED) && !IGNORE_SHADOW) + subs[i] = shadows[i].first = importSubName(reader,reader.getAttribute(ATTR_SHADOWED),restoreLabel); else { subs[i] = shadows[i].second; @@ -3339,7 +3344,7 @@ Property *PropertyXLink::CopyOnImportExternal( auto subs = updateLinkSubs(_pcLink,_SubList, &tryImportSubName,owner->getDocument(),nameMap); auto linked = tryImport(owner->getDocument(),_pcLink,nameMap); - if(subs.empty() && linked==_pcLink) + if(subs.empty() && linked==_pcLink) return 0; std::unique_ptr p(new PropertyXLink); @@ -3351,29 +3356,29 @@ Property *PropertyXLink::CopyOnLinkReplace(const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const { auto res = tryReplaceLinkSubs(getContainer(),_pcLink,parent,oldObj,newObj,_SubList); - if(!res.first) + if(!res.first) return 0; std::unique_ptr p(new PropertyXLink); copyTo(*p,res.first,&res.second); return p.release(); } -Property *PropertyXLink::CopyOnLabelChange(App::DocumentObject *obj, - const std::string &ref, const char *newLabel) const +Property *PropertyXLink::CopyOnLabelChange(App::DocumentObject *obj, + const std::string &ref, const char *newLabel) const { auto owner = dynamic_cast(getContainer()); if(!owner || !owner->getDocument() || !_pcLink || !_pcLink->getNameInDocument()) return 0; auto subs = updateLinkSubs(_pcLink,_SubList,&updateLabelReference,obj,ref,newLabel); - if(subs.empty()) + if(subs.empty()) return 0; std::unique_ptr p(new PropertyXLink); copyTo(*p,_pcLink,&subs); return p.release(); } -void PropertyXLink::copyTo(PropertyXLink &other, - DocumentObject *linked, std::vector *subs) const +void PropertyXLink::copyTo(PropertyXLink &other, + DocumentObject *linked, std::vector *subs) const { if(!linked) linked = _pcLink; @@ -3441,7 +3446,7 @@ bool PropertyXLink::hasXLink(const App::Document *doc) { } bool PropertyXLink::hasXLink( - const std::vector &objs, std::vector *unsaved) + const std::vector &objs, std::vector *unsaved) { std::set docs; bool ret = false; @@ -3463,7 +3468,7 @@ void PropertyXLink::restoreDocument(const App::Document &doc) { DocInfo::restoreDocument(doc); } -std::map > +std::map > PropertyXLink::getDocumentOutList(App::Document *doc) { std::map > ret; for(auto &v : _DocInfoMap) { @@ -3480,7 +3485,7 @@ PropertyXLink::getDocumentOutList(App::Document *doc) { return ret; } -std::map > +std::map > PropertyXLink::getDocumentInList(App::Document *doc) { std::map > ret; for(auto &v : _DocInfoMap) { @@ -3524,7 +3529,7 @@ PyObject *PropertyXLink::getPyObject(void) void PropertyXLink::setPyObject(PyObject *value) { if(PySequence_Check(value)) { Py::Sequence seq(value); - if(seq.size()!=2) + if(seq.size()!=2) throw Base::ValueError("Expect input sequence of size 2"); std::vector subs; Py::Object pyObj(seq[0].ptr()); @@ -3541,7 +3546,7 @@ void PropertyXLink::setPyObject(PyObject *value) { } else if (pySub.isSequence()) { Py::Sequence seq(pySub); subs.reserve(seq.size()); - for(size_t i=0;i &objs, +void PropertyXLink::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { if((all||_pcScope!=LinkScope::Hidden) && _pcLink && _pcLink->getNameInDocument()) { @@ -3583,7 +3588,7 @@ bool PropertyXLink::adjustLink(const std::set &inList) { if(!_pcLink || !_pcLink->getNameInDocument() || !inList.count(_pcLink)) return false; auto subs = _SubList; - auto link = adjustLinkSubs(this,inList,_pcLink,subs); + auto link = adjustLinkSubs(this,inList,_pcLink,subs); if(link) { setValue(link,std::move(subs)); return true; @@ -3618,7 +3623,7 @@ void PropertyXLink::setAllowPartial(bool enable) { auto owner = dynamic_cast(getContainer()); if(!owner) return; - if(!App::GetApplication().isRestoring() && + if(!App::GetApplication().isRestoring() && !owner->getDocument()->isPerformingTransaction() && !_pcLink && docInfo && filePath.size() && objectName.size() && (!docInfo->pcDoc || docInfo->pcDoc->testStatus(Document::PartialDoc))) @@ -3647,7 +3652,7 @@ PropertyXLinkSub::~PropertyXLinkSub() { bool PropertyXLinkSub::upgrade(Base::XMLReader &reader, const char *typeName) { if(strcmp(typeName, PropertyLinkSubGlobal::getClassTypeId().getName())==0 || strcmp(typeName, PropertyLinkSub::getClassTypeId().getName())==0 || - strcmp(typeName, PropertyLinkSubChild::getClassTypeId().getName())==0) + strcmp(typeName, PropertyLinkSubChild::getClassTypeId().getName())==0) { App::PropertyLinkSub linkProp; linkProp.setContainer(getContainer()); @@ -3712,7 +3717,7 @@ void PropertyXLinkSubList::setValue(DocumentObject* lValue,const char* SubName) } void PropertyXLinkSubList::setValues( - const std::vector& lValue, + const std::vector& lValue, const std::vector& lSubNames) { #define CHECK_SUB_SIZE(_l,_r) do{\ @@ -3736,7 +3741,7 @@ void PropertyXLinkSubList::setValues(const std::vector& lValue, CHECK_SUB_SIZE(lValue,lSubNames); std::map > values; int i=0; - for(auto &obj : lValue) + for(auto &obj : lValue) values[obj].push_back(lSubNames[i++]); setValues(std::move(values)); } @@ -3752,19 +3757,19 @@ void PropertyXLinkSubList::setSubListValues(const std::vector > &values) + const std::map > &values) { setValues(std::map >(values)); } void PropertyXLinkSubList::setValues( - std::map > &&values) + std::map > &&values) { for(auto &v : values) { if(!v.first || !v.first->getNameInDocument()) FC_THROWM(Base::ValueError,"invalid document object"); } - + atomic_change guard(*this); for(auto it=_Links.begin(),itNext=it;it!=_Links.end();it=itNext) { @@ -3785,18 +3790,18 @@ void PropertyXLinkSubList::setValues( guard.tryInvoke(); } -void PropertyXLinkSubList::addValue(App::DocumentObject *obj, - const std::vector &subs, bool reset) +void PropertyXLinkSubList::addValue(App::DocumentObject *obj, + const std::vector &subs, bool reset) { addValue(obj,std::vector(subs),reset); } -void PropertyXLinkSubList::addValue(App::DocumentObject *obj, +void PropertyXLinkSubList::addValue(App::DocumentObject *obj, std::vector &&subs, bool reset) { if(!obj || !obj->getNameInDocument()) FC_THROWM(Base::ValueError,"invalid document object"); - + for(auto &l : _Links) { if(l.getValue() == obj) { auto s = l.getSubValues(); @@ -3836,7 +3841,7 @@ void PropertyXLinkSubList::setValues(const std::vector &values) void PropertyXLinkSubList::set1Value(int idx, DocumentObject *value, - const std::vector &SubList) + const std::vector &SubList) { if(idx < -1 || idx > getSize()) throw Base::RuntimeError("index out of bound"); @@ -3869,7 +3874,7 @@ const string PropertyXLinkSubList::getPyReprString() const auto obj = link.getValue(); if(!obj || !obj->getNameInDocument()) continue; - ss << "(App.getDocument('" << obj->getDocument()->getName() + ss << "(App.getDocument('" << obj->getDocument()->getName() << "').getObject('" << obj->getNameInDocument() << "'), ("; const auto &subs = link.getSubValues(); if(subs.empty()) @@ -3946,7 +3951,7 @@ void PropertyXLinkSubList::setPyObject(PyObject *value) Py::Sequence seq(value); std::map > values; try { - for(size_t i=0;i copy; auto it = _Links.begin(); @@ -4110,8 +4115,8 @@ Property *PropertyXLinkSubList::CopyOnLinkReplace(const App::DocumentObject *par copied->copyTo(p->_Links.back()); copied = &p->_Links.back(); for(++it;it!=_Links.end();++it) { - if((it->getValue()==newObj||it->getValue()==oldObj) - && copied->getValue()==newObj) + if((it->getValue()==newObj||it->getValue()==oldObj) + && copied->getValue()==newObj) { // merge subnames in case new object already exists for(auto &sub : it->getSubValues()) { @@ -4178,7 +4183,7 @@ std::vector PropertyXLinkSubList::getSubValues(App::DocumentObject return {}; } -void PropertyXLinkSubList::getLinks(std::vector &objs, +void PropertyXLinkSubList::getLinks(std::vector &objs, bool all, std::vector *subs, bool newStyle) const { if(all||_pcScope!=LinkScope::Hidden) { @@ -4280,7 +4285,7 @@ int PropertyXLinkSubList::checkRestore(std::string *msg) const { bool PropertyXLinkSubList::upgrade(Base::XMLReader &reader, const char *typeName) { if(strcmp(typeName, PropertyLinkListGlobal::getClassTypeId().getName())==0 || strcmp(typeName, PropertyLinkList::getClassTypeId().getName())==0 || - strcmp(typeName, PropertyLinkListChild::getClassTypeId().getName())==0) + strcmp(typeName, PropertyLinkListChild::getClassTypeId().getName())==0) { PropertyLinkList linkProp; linkProp.setContainer(getContainer()); @@ -4289,7 +4294,7 @@ bool PropertyXLinkSubList::upgrade(Base::XMLReader &reader, const char *typeName return true; } else if (strcmp(typeName, PropertyLinkSubListGlobal::getClassTypeId().getName())==0 || strcmp(typeName, PropertyLinkSubList::getClassTypeId().getName())==0 || - strcmp(typeName, PropertyLinkSubListChild::getClassTypeId().getName())==0) + strcmp(typeName, PropertyLinkSubListChild::getClassTypeId().getName())==0) { PropertyLinkSubList linkProp; linkProp.setContainer(getContainer()); @@ -4361,7 +4366,7 @@ PyObject *PropertyXLinkList::getPyObject(void) auto obj = link.getValue(); if(!obj || !obj->getNameInDocument()) continue; - if(link.hasSubName()) + if(link.hasSubName()) return PropertyXLinkSubList::getPyObject(); } @@ -4492,12 +4497,12 @@ void PropertyXLinkContainer::Save (Base::Writer &writer) const { for(auto &v : docSet) { writer.Stream() << writer.ind() << "getName() - << "\" label=\"" << encodeAttribute(v.first->Label.getValue()) + << "name=\"" << v.first->getName() + << "\" label=\"" << encodeAttribute(v.first->Label.getValue()) << "\" index=\"" << v.second << "\"/>" << std::endl; } - for(auto &v : _XLinks) + for(auto &v : _XLinks) v.second->Save(writer); writer.decInd(); @@ -4551,7 +4556,7 @@ bool PropertyXLinkContainer::isLinkedToDocument(const App::Document &doc) const auto iter = _XLinks.lower_bound(doc.getName()); if(iter != _XLinks.end()) { size_t len = strlen(doc.getName()); - return iter->first.size()>len + return iter->first.size()>len && iter->first[len] == '#' && boost::starts_with(iter->first,doc.getName()); } @@ -4622,7 +4627,7 @@ void PropertyXLinkContainer::clearDeps() { _LinkRestored = false; } -void PropertyXLinkContainer::getLinks(std::vector &objs, +void PropertyXLinkContainer::getLinks(std::vector &objs, bool, std::vector * /*subs*/, bool /*newStyle*/) const { objs.insert(objs.end(),_Deps.begin(),_Deps.end()); diff --git a/src/App/PropertyLinks.h b/src/App/PropertyLinks.h index c291abf9d1..6d5bf6e83c 100644 --- a/src/App/PropertyLinks.h +++ b/src/App/PropertyLinks.h @@ -52,7 +52,7 @@ class PropertyXLink; /** * @brief Defines different scopes for which a link can be valid * The scopes defined in this enum describe the different possibilities of where a link can point to. - * Local: links are valid only within the same GeoFeatureGroup as the linkowner is in or in none. + * Local: links are valid only within the same GeoFeatureGroup as the linkowner is in or in none. * Child: links are valid within the same or any sub GeoFeatureGroup * Global: all possible links are valid * Hidden: links are not included in dependency calculation @@ -67,34 +67,34 @@ enum class LinkScope { /** * @brief Enables scope handling for links * This class is a base for all link properties and enables them to handle scopes of the linked objects. - * The possible scopes are defined by LinkScope enum class. The default value is Local. + * The possible scopes are defined by LinkScope enum class. The default value is Local. * The scope of a property is not saved in the document. It is a value that needs to be fixed when - * the object holding the property is loaded. That is possible with two methods: + * the object holding the property is loaded. That is possible with two methods: * 1. Set the scope value in the constructor of the link property * 2. Use setScope to change the scope in the constructor of the link property - * - * The second option is only available in c++, not in python, as setscope is not exposed. It would + * + * The second option is only available in c++, not in python, as setscope is not exposed. It would * not make sense to expose it there, as restoring python objects does not call the constructor again. - * Hence in python the only way to create a LinkProperty with different scope than local is to use a - * specialized property for that. In c++ existing properties can simply be changed via setScope in the - * objects constructor. + * Hence in python the only way to create a LinkProperty with different scope than local is to use a + * specialized property for that. In c++ existing properties can simply be changed via setScope in the + * objects constructor. */ class AppExport ScopedLink { - + public: /** * @brief Set the links scope - * Allows to define what kind of links are allowed. Only in the Local GeoFeatureGroup, in this and + * Allows to define what kind of links are allowed. Only in the Local GeoFeatureGroup, in this and * all Childs or to all objects within the Glocal scope. */ - void setScope(LinkScope scope) {_pcScope = scope;}; + void setScope(LinkScope scope) {_pcScope = scope;}; /** * @brief Get the links scope - * Retrieve what kind of links are allowed. Only in the Local GeoFeatureGroup, in this and + * Retrieve what kind of links are allowed. Only in the Local GeoFeatureGroup, in this and * all Childs or to all objects within the Glocal scope. */ LinkScope getScope() {return _pcScope;}; - + protected: LinkScope _pcScope = LinkScope::Local; }; @@ -122,7 +122,7 @@ public: * @sa _updateElementReference() */ virtual void updateElementReference(App::DocumentObject *feature, - bool reverse=false, bool notify=false) + bool reverse=false, bool notify=false) { (void)feature; (void)reverse; @@ -178,9 +178,9 @@ public: * this LinkScope. If false, then return only if the LinkScope * is not hidden. * @param sub: if given, then return subname references. - * @param newStyle: whether to return new or old style subname reference + * @param newStyle: whether to return new or old style subname reference */ - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const = 0; /** Called to reset this link property @@ -203,8 +203,8 @@ public: */ virtual bool adjustLink(const std::set &inList) = 0; - /** Return a copy of the property if the link replacement affects this property - * + /** Return a copy of the property if the link replacement affects this property + * * @param owner: the parent object whose link property is to be replace. * Note that The parent may not be the container of this * property. Link sub property can use this opportunity to @@ -218,7 +218,7 @@ public: virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const = 0; - /** Return a copy of the property if any changes caused by importing external linked object + /** Return a copy of the property if any changes caused by importing external linked object * * @param nameMap: a map from the original external object name to the * imported new object name @@ -241,7 +241,7 @@ public: * @return Returns a copy of the property if its link reference is affected. * The copy will later be assgiend to this property by calling its Paste(). */ - virtual Property *CopyOnLabelChange(App::DocumentObject *obj, + virtual Property *CopyOnLabelChange(App::DocumentObject *obj, const std::string &ref, const char *newLabel) const { (void)obj; @@ -266,8 +266,8 @@ public: } /// Helper function to return a map of linked object and its subname references - void getLinkedElements(std::map > &elements, - bool newStyle=true, bool all=true) const + void getLinkedElements(std::map > &elements, + bool newStyle=true, bool all=true) const { std::vector ret; std::vector subs; @@ -279,8 +279,8 @@ public: } /// Helper function to return a map of linked object and its subname references - std::map > - linkedElements(bool newStyle=true, bool all=true) const + std::map > + linkedElements(bool newStyle=true, bool all=true) const { std::map > ret; getLinkedElements(ret,newStyle,all); @@ -320,8 +320,8 @@ public: * and correct any link sub reference. */ static std::pair tryReplaceLink( - const App::PropertyContainer *owner, App::DocumentObject *obj, - const App::DocumentObject *parent, App::DocumentObject *oldObj, + const App::PropertyContainer *owner, App::DocumentObject *obj, + const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj, const char *sub=0); /** Helper function to check and replace a link with multiple subname references @@ -340,9 +340,9 @@ public: */ static std::pair > tryReplaceLinkSubs( const App::PropertyContainer *owner, - App::DocumentObject *obj, - const App::DocumentObject *parent, - App::DocumentObject *oldObj, + App::DocumentObject *obj, + const App::DocumentObject *parent, + App::DocumentObject *oldObj, App::DocumentObject *newObj, const std::vector &subs); @@ -367,11 +367,11 @@ public: * geometry element reference change due to geometry model changes. */ bool _updateElementReference(App::DocumentObject *feature, - App::DocumentObject *obj, std::string &sub, ShadowSub &shadow, + App::DocumentObject *obj, std::string &sub, ShadowSub &shadow, bool reverse, bool notify=false); /** Helper function to register geometry element reference - * + * * @param obj: the linked object * @param sub: the subname reference * @param shadow: a pair of new and old style element references to be updated. @@ -406,9 +406,9 @@ public: * the API CopyOnImportExternal(). This function helps to rewrite subname * reference to point to the correct sub objects that are imported. */ - static std::string tryImportSubName(const App::DocumentObject *obj, const char *sub, - const App::Document *doc, const std::map &nameMap); - + static std::string tryImportSubName(const App::DocumentObject *obj, const char *sub, + const App::Document *doc, const std::map &nameMap); + /** Helper function for link import operation * * @param doc: owner document of the imported objects @@ -446,7 +446,7 @@ public: * restoreLabelReference() can be used together to restore the reference * during import. */ - static const char *exportSubName(std::string &output, + static const char *exportSubName(std::string &output, const App::DocumentObject *obj, const char *subname, bool first_obj=false); /** Helper function to import a subname reference @@ -504,7 +504,7 @@ public: * * @param obj: the object that owns the label * @param newLabel: the new label - * + * * @return return a map from the affected property to a copy of it with * updated subname references */ @@ -562,11 +562,11 @@ private: }; /** The general Link Property - * Main Purpose of this property is to Link Objects and Features in a document. Like all links this - * property is scope aware, meaning it does define which objects are allowed to be linked depending + * Main Purpose of this property is to Link Objects and Features in a document. Like all links this + * property is scope aware, meaning it does define which objects are allowed to be linked depending * of the GeoFeatureGroup where it is in. Default is Local. - * - * @note Links that are invalid in respect to the scope of this property is set to are not rejected. + * + * @note Links that are invalid in respect to the scope of this property is set to are not rejected. * They are only detected to be invalid and prevent the feature from recomputing. */ class AppExport PropertyLink : public PropertyLinkBase @@ -622,7 +622,7 @@ public: virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyLinkItem"; } - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; @@ -672,7 +672,7 @@ public: } }; -class AppExport PropertyLinkList : +class AppExport PropertyLinkList : public PropertyListsT, PropertyLinkListBase> { TYPESYSTEM_HEADER_WITH_OVERRIDE(); @@ -712,7 +712,7 @@ public: virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyLinkListItem"; } - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; @@ -765,7 +765,7 @@ public: /** the Link Property with sub elements * This property links an object and a defined sequence of * sub elements. These subelements (like Edges of a Shape) - * are stored as names, which can be resolved by the + * are stored as names, which can be resolved by the * ComplexGeoDataType interface to concrete sub objects. */ class AppExport PropertyLinkSub : public PropertyLinkBase @@ -799,7 +799,7 @@ public: */ App::DocumentObject * getValue(void) const; - /// return the list of sub elements + /// return the list of sub elements const std::vector& getSubValues(void) const; /// return the list of sub elements with mapped names @@ -809,7 +809,7 @@ public: std::vector getSubValues(bool newStyle) const; - /// return the list of sub elements starts with a special string + /// return the list of sub elements starts with a special string std::vector getSubValuesStartsWith(const char*, bool newStyle=false) const; /** Returns the link type checked @@ -835,10 +835,10 @@ public: virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyLinkItem"; } - /// Return a copy of the property if any changes caused by importing external object + /// Return a copy of the property if any changes caused by importing external object virtual Property *CopyOnImportExternal(const std::map &nameMap) const override; - virtual Property *CopyOnLabelChange(App::DocumentObject *obj, + virtual Property *CopyOnLabelChange(App::DocumentObject *obj, const std::string &ref, const char *newLabel) const override; virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, @@ -853,7 +853,7 @@ public: virtual bool referenceChanged() const override; - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; @@ -980,10 +980,10 @@ public: virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyLinkListItem"; } - /// Return a copy of the property if any changes caused by importing external object + /// Return a copy of the property if any changes caused by importing external object virtual Property *CopyOnImportExternal(const std::map &nameMap) const override; - virtual Property *CopyOnLabelChange(App::DocumentObject *obj, + virtual Property *CopyOnLabelChange(App::DocumentObject *obj, const std::string &ref, const char *newLabel) const override; virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, @@ -996,7 +996,7 @@ public: virtual bool referenceChanged() const override; - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; @@ -1065,7 +1065,7 @@ public: void setValue(App::DocumentObject *,std::vector &&SubList, std::vector &&ShadowSubList = {}); - void setValue(App::DocumentObject *,const std::vector &SubList, + void setValue(App::DocumentObject *,const std::vector &SubList, std::vector &&ShadowSubList={}); void setSubValues(std::vector &&SubList, @@ -1073,7 +1073,7 @@ public: const char *getSubName(bool newStyle=true) const; void setSubName(const char *subname); - + bool hasSubName() const {return !_SubList.empty();} App::Document *getDocument() const; @@ -1088,10 +1088,10 @@ public: virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; - /// Return a copy of the property if any changes caused by importing external object + /// Return a copy of the property if any changes caused by importing external object virtual Property *CopyOnImportExternal(const std::map &nameMap) const override; - virtual Property *CopyOnLabelChange(App::DocumentObject *obj, + virtual Property *CopyOnLabelChange(App::DocumentObject *obj, const std::string &ref, const char *newLabel) const override; virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, @@ -1114,7 +1114,7 @@ public: virtual bool referenceChanged() const override; - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual bool adjustLink(const std::set &inList) override; @@ -1260,7 +1260,7 @@ public: virtual Property *CopyOnImportExternal(const std::map &nameMap) const override; - virtual Property *CopyOnLabelChange(App::DocumentObject *obj, + virtual Property *CopyOnLabelChange(App::DocumentObject *obj, const std::string &ref, const char *newLabel) const override; virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, @@ -1273,7 +1273,7 @@ public: virtual bool referenceChanged() const override; - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; @@ -1327,9 +1327,9 @@ public: virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; virtual void breakLink(App::DocumentObject *obj, bool clear) override; - virtual void getLinks(std::vector &objs, + virtual void getLinks(std::vector &objs, bool all=false, std::vector *subs=0, bool newStyle=true) const override; - + bool isLinkedToDocument(const App::Document &doc) const; protected: diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index cd2321c3f3..ac036a7aee 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -100,18 +100,18 @@ PyObject *PropertyInteger::getPyObject(void) } void PropertyInteger::setPyObject(PyObject *value) -{ +{ #if PY_MAJOR_VERSION < 3 if (PyInt_Check(value)) { aboutToSetValue(); _lValue = PyInt_AsLong(value); -#else +#else if (PyLong_Check(value)) { aboutToSetValue(); _lValue = PyLong_AsLong(value); #endif hasSetValue(); - } + } else { std::string error = std::string("type must be int, not "); error += value->ob_type->tp_name; @@ -744,7 +744,7 @@ long PropertyIntegerList::getPyValue(PyObject *item) const { if (PyInt_Check(item)) return PyInt_AsLong(item); #else - if (PyLong_Check(item)) + if (PyLong_Check(item)) return PyLong_AsLong(item); #endif std::string error = std::string("type in list must be int, not "); @@ -768,13 +768,13 @@ void PropertyIntegerList::Restore(Base::XMLReader &reader) reader.readElement("IntegerList"); // get the value of my Attribute int count = reader.getAttributeAsInteger("count"); - + std::vector values(count); for(int i = 0; i < count; i++) { reader.readElement("I"); values[i] = reader.getAttributeAsInteger("v"); } - + reader.readEndElement("IntegerList"); //assignment @@ -854,9 +854,9 @@ PyObject *PropertyIntegerSet::getPyObject(void) } void PropertyIntegerSet::setPyObject(PyObject *value) -{ +{ if (PySequence_Check(value)) { - + Py_ssize_t nSize = PySequence_Length(value); std::set values; @@ -912,13 +912,13 @@ void PropertyIntegerSet::Restore(Base::XMLReader &reader) reader.readElement("IntegerSet"); // get the value of my Attribute int count = reader.getAttributeAsInteger("count"); - + std::set values; for(int i = 0; i < count; i++) { reader.readElement("I"); values.insert(reader.getAttributeAsInteger("v")); } - + reader.readEndElement("IntegerSet"); //assignment @@ -1103,7 +1103,7 @@ const PropertyFloatConstraint::Constraints* PropertyFloatConstraint::getConstra } void PropertyFloatConstraint::setPyObject(PyObject *value) -{ +{ if (PyFloat_Check(value)) { double temp = PyFloat_AsDouble(value); if (_ConstStruct) { @@ -1112,7 +1112,7 @@ void PropertyFloatConstraint::setPyObject(PyObject *value) else if (temp < _ConstStruct->LowerBound) temp = _ConstStruct->LowerBound; } - + aboutToSetValue(); _dValue = temp; hasSetValue(); @@ -1130,7 +1130,7 @@ void PropertyFloatConstraint::setPyObject(PyObject *value) else if (temp < _ConstStruct->LowerBound) temp = _ConstStruct->LowerBound; } - + aboutToSetValue(); _dValue = temp; hasSetValue(); @@ -1261,7 +1261,7 @@ void PropertyFloatList::Save (Base::Writer &writer) const writer.Stream() << writer.ind() <<"" << endl ; } else { - writer.Stream() << writer.ind() << "" << std::endl; } } @@ -1366,8 +1366,8 @@ void PropertyString::setValue(const char* newLabel) if(obj && obj->getNameInDocument() && this==&obj->Label && (!obj->getDocument()->testStatus(App::Document::Restoring)|| - obj->getDocument()->testStatus(App::Document::Importing)) && - !obj->getDocument()->isPerformingTransaction()) + obj->getDocument()->testStatus(App::Document::Importing)) && + !obj->getDocument()->isPerformingTransaction()) { // allow object to control label change @@ -1420,7 +1420,7 @@ void PropertyString::setValue(const char* newLabel) break; } if(*c == 0 && std::find(objectLabels.begin(), objectLabels.end(), - obj->getNameInDocument())==objectLabels.end()) + obj->getNameInDocument())==objectLabels.end()) { label = obj->getNameInDocument(); changed = true; @@ -1441,7 +1441,7 @@ void PropertyString::setValue(const char* newLabel) // importing (which also counts as restoring), it is possible the // new object changes its label. However, we cannot update label // references here, because object restoring is not based on - // dependency order. It can only be done in afterRestore(). + // dependency order. It can only be done in afterRestore(). // // See PropertyLinkBase::restoreLabelReference() for more details. propChanges = PropertyLinkBase::updateLabelReferences(obj,newLabel); @@ -1514,7 +1514,7 @@ void PropertyString::Save (Base::Writer &writer) const auto obj = dynamic_cast(getContainer()); writer.Stream() << writer.ind() << "getNameInDocument() && + if(obj && obj->getNameInDocument() && obj->isExporting() && &obj->Label==this) { if(obj->allowDuplicateLabel()) @@ -1809,7 +1809,7 @@ std::string PropertyStringList::getPyValue(PyObject *item) const unsigned int PropertyStringList::getMemSize (void) const { size_t size=0; - for(int i = 0;i(size); } @@ -1838,7 +1838,7 @@ void PropertyStringList::Restore(Base::XMLReader &reader) reader.readElement("String"); values[i] = reader.getAttribute("value"); } - + reader.readEndElement("StringList"); // assignment @@ -1899,7 +1899,7 @@ void PropertyMap::setValues(const std::map& map) -const std::string& PropertyMap::operator[] (const std::string& key) const +const std::string& PropertyMap::operator[] (const std::string& key) const { static std::string empty; std::map::const_iterator it = _lValueList.find(key); @@ -1907,7 +1907,7 @@ const std::string& PropertyMap::operator[] (const std::string& key) const return it->second; else return empty; -} +} PyObject *PropertyMap::getPyObject(void) @@ -1979,7 +1979,7 @@ void PropertyMap::setPyObject(PyObject *value) throw Base::TypeError(error); } } - + setValues(values); } else { @@ -2024,7 +2024,7 @@ void PropertyMap::Restore(Base::XMLReader &reader) reader.readElement("Item"); values[reader.getAttribute("key")] = reader.getAttribute("value"); } - + reader.readEndElement("Map"); // assignment @@ -2325,7 +2325,7 @@ void PropertyColor::setValue(float r, float g, float b, float a) hasSetValue(); } -const Color& PropertyColor::getValue(void) const +const Color& PropertyColor::getValue(void) const { return _cCol; } @@ -2404,7 +2404,7 @@ void PropertyColor::setPyObject(PyObject *value) void PropertyColor::Save (Base::Writer &writer) const { - writer.Stream() << writer.ind() << "" << endl; } @@ -2484,7 +2484,7 @@ Color PropertyColorList::getPyValue(PyObject *item) const { void PropertyColorList::Save (Base::Writer &writer) const { if (!writer.isForceXML()) { - writer.Stream() << writer.ind() << "" << std::endl; } } @@ -2567,7 +2567,7 @@ void PropertyMaterial::setValue(const Material &mat) hasSetValue(); } -const Material& PropertyMaterial::getValue(void) const +const Material& PropertyMaterial::getValue(void) const { return _cMat; } @@ -2633,13 +2633,14 @@ void PropertyMaterial::setPyObject(PyObject *value) void PropertyMaterial::Save (Base::Writer &writer) const { - writer.Stream() << writer.ind() << "" << endl; + << "\" shininess=\"" << _cMat.shininess + << "\" transparency=\"" << _cMat.transparency + << "\"/>" << endl; } void PropertyMaterial::Restore(Base::XMLReader &reader) @@ -2724,7 +2725,7 @@ Material PropertyMaterialList::getPyValue(PyObject *value) const { void PropertyMaterialList::Save(Base::Writer &writer) const { if (!writer.isForceXML()) { - writer.Stream() << writer.ind() << "" << std::endl; } } diff --git a/src/App/PropertyStandard.h b/src/App/PropertyStandard.h index c9a4da3021..73e539e5cb 100644 --- a/src/App/PropertyStandard.h +++ b/src/App/PropertyStandard.h @@ -58,7 +58,7 @@ public: PropertyInteger(); virtual ~PropertyInteger(); - /** Sets the property + /** Sets the property */ void setValue(long); @@ -86,22 +86,22 @@ protected: }; /** Path properties - * This properties handling file system paths. + * Properties handling file system paths. */ class AppExport PropertyPath: public Property { TYPESYSTEM_HEADER(); public: - + PropertyPath(); virtual ~PropertyPath(); - /** Sets the property + /** Sets the property */ void setValue(const boost::filesystem::path &); - - /** Sets the property + + /** Sets the property */ void setValue(const char *); @@ -110,16 +110,16 @@ public: boost::filesystem::path getValue(void) const; virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyPathItem"; } - + virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); - + virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const; protected: @@ -137,11 +137,11 @@ public: /// Obvious constructor PropertyEnumeration(const Enumeration &e); - + /// destructor virtual ~PropertyEnumeration(); - /// Enumeration methods + /// Enumeration methods /*! * These all function as per documentation in Enumeration */ @@ -153,17 +153,17 @@ public: * \endcode */ void setEnums(const char** plEnums); - + /** setting the enumaration string as vector of strings * This makes the enumeration custom. */ void setEnums(const std::vector &Enums); - + /** set the enum by a string * is slower than setValue(long). Use long if possible */ void setValue(const char* value); - + /** set directly the enum value * In DEBUG checks for boundaries. * Is faster than using setValue(const char*). @@ -199,8 +199,8 @@ public: //@} const char* getEditorName(void) const { return _editorTypeName.c_str(); } - void setEditorName(const char* name) { _editorTypeName = name; } - + void setEditorName(const char* name) { _editorTypeName = name; } + virtual PyObject * getPyObject(void); virtual void setPyObject(PyObject *); @@ -219,7 +219,7 @@ private: }; /** Constraint integer properties - * This property fulfills the need of a constraint integer. It holds basically a + * This property fulfills the need of a constraint integer. It holds basically a * state (integer) and a struct of boundaries. If the boundaries * is not set it acts basically like an IntegerProperty and does no checking. * The constraints struct can be created on the heap or build in. @@ -231,11 +231,11 @@ class AppExport PropertyIntegerConstraint: public PropertyInteger public: /// Standard constructor PropertyIntegerConstraint(); - + /// destructor virtual ~PropertyIntegerConstraint(); - /// Constraint methods + /// Constraint methods //@{ /// the boundary struct struct Constraints { @@ -269,7 +269,7 @@ public: bool candelete; }; /** setting the boundaries - * This sets the constraint struct. It can be dynamically + * This sets the constraint struct. It can be dynamically * allocated or set as a static in the class the property * belongs to: * \code @@ -300,13 +300,13 @@ class AppExport PropertyPercent: public PropertyIntegerConstraint public: /// Standard constructor PropertyPercent(); - + /// destructor virtual ~PropertyPercent(); }; /** Integer list properties - * + * */ class AppExport PropertyIntegerList: public PropertyListsT { @@ -330,10 +330,10 @@ public: { return "Gui::PropertyEditor::PropertyIntegerListItem"; } virtual PyObject *getPyObject(void) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; - + virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; virtual unsigned int getMemSize (void) const override; @@ -343,7 +343,7 @@ protected: }; /** Integer list properties - * + * */ class AppExport PropertyIntegerSet: public Property { @@ -363,11 +363,11 @@ public: */ virtual ~PropertyIntegerSet(); - /** Sets the property + /** Sets the property */ void setValue(long); void setValue(void){;} - + void addValue (long value){_lValueSet.insert(value);} void setValues (const std::set& values); @@ -375,10 +375,10 @@ public: virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); - + virtual Property *Copy(void) const; virtual void Paste(const Property &from); virtual unsigned int getMemSize (void) const; @@ -388,7 +388,7 @@ private: }; -/** implements a key/value list as property +/** implements a key/value list as property * The key ought to be ASCII the Value should be treated as UTF8 to be saved. */ class AppExport PropertyMap: public Property @@ -396,13 +396,13 @@ class AppExport PropertyMap: public Property TYPESYSTEM_HEADER(); public: - + /** * A constructor. * A more elaborate description of the constructor. */ PropertyMap(); - + /** * A destructor. * A more elaborate description of the destructor. @@ -410,33 +410,33 @@ public: virtual ~PropertyMap(); virtual int getSize(void) const; - - /** Sets the property + + /** Sets the property */ void setValue(void){} void setValue(const std::string& key,const std::string& value); void setValues(const std::map&); - + /// index operator const std::string& operator[] (const std::string& key) const ; - + void set1Value (const std::string& key, const std::string& value){_lValueList.operator[] (key) = value;} - + const std::map &getValues(void) const{return _lValueList;} - + //virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyStringListItem"; } - + virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); - + virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const; - + private: std::map _lValueList; @@ -446,7 +446,7 @@ private: /** Float properties * This is the father of all properties handling floats. - * Use this type only in rare cases. Mostly you want to + * Use this type only in rare cases. Mostly you want to * use the more specialized types like e.g. PropertyLength. * These properties also fulfill the needs of the unit system. * See PropertyUnits.h for all properties with units. @@ -470,20 +470,20 @@ public: void setValue(double lValue); double getValue(void) const; - + virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyFloatItem"; } - + virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); - + virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const{return sizeof(double);} - + void setPathValue(const App::ObjectIdentifier &path, const boost::any &value); const boost::any getPathValue(const App::ObjectIdentifier &path) const; @@ -507,15 +507,15 @@ public: * Construct with explicit Values */ PropertyFloatConstraint(void); - + /** * A destructor. * A more elaborate description of the destructor. */ virtual ~PropertyFloatConstraint(); - - /// Constraint methods + + /// Constraint methods //@{ /// the boundary struct struct Constraints { @@ -549,9 +549,9 @@ public: bool candelete; }; /** setting the boundaries - * This sets the constraint struct. It can be dynamcly + * This sets the constraint struct. It can be dynamically * allocated or set as an static in the class the property - * blongs to: + * belongs to: * \code * const Constraints percent = {0.0,100.0,1.0} * \endcode @@ -598,24 +598,24 @@ public: * A more elaborate description of the constructor. */ PropertyFloatList(); - + /** * A destructor. * A more elaborate description of the destructor. */ virtual ~PropertyFloatList(); - + virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyFloatListItem"; } virtual PyObject *getPyObject(void) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; - + virtual void SaveDocFile (Base::Writer &writer) const override; virtual void RestoreDocFile(Base::Reader &reader) override; - + virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; virtual unsigned int getMemSize (void) const override; @@ -639,7 +639,7 @@ public: * A more elaborate description of the constructor. */ PropertyString(void); - + /** * A destructor. * A more elaborate description of the destructor. @@ -652,11 +652,11 @@ public: const std::string& getStrValue(void) const { return _cValue; } bool isEmpty(void){return _cValue.empty();} - + virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyStringItem"; } virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); @@ -672,7 +672,7 @@ protected: }; /** UUID properties - * This property handles unique identifieers + * This property handles unique identifieers */ class AppExport PropertyUUID: public Property { @@ -685,7 +685,7 @@ public: * A more elaborate description of the constructor. */ PropertyUUID(void); - + /** * A destructor. * A more elaborate description of the destructor. @@ -698,11 +698,11 @@ public: void setValue(const std::string &sString); const std::string& getValueStr(void) const; const Base::Uuid& getValue(void) const; - + //virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyStringItem"; } virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); @@ -734,13 +734,13 @@ class AppExport PropertyStringList: public PropertyListsT typedef PropertyListsT inherited; public: - + /** * A constructor. * A more elaborate description of the constructor. */ PropertyStringList(); - + /** * A destructor. * A more elaborate description of the destructor. @@ -749,20 +749,20 @@ public: void setValues(const std::list&); using inherited::setValues; - + virtual const char* getEditorName(void) const override { return "Gui::PropertyEditor::PropertyStringListItem"; } - + virtual PyObject *getPyObject(void) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; - + virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; - + virtual unsigned int getMemSize (void) const override; - + protected: std::string getPyValue(PyObject *item) const override; }; @@ -781,29 +781,29 @@ public: * A more elaborate description of the constructor. */ PropertyBool(void); - + /** * A destructor. * A more elaborate description of the destructor. */ virtual ~PropertyBool(); - + void setValue(bool lValue); bool getValue(void) const; - + virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyBoolItem"; } - + virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const{return sizeof(bool);} - + void setPathValue(const App::ObjectIdentifier &path, const boost::any &value); const boost::any getPathValue(const App::ObjectIdentifier &path) const; @@ -812,7 +812,7 @@ private: }; /** Bool list properties - * + * */ class AppExport PropertyBoolList : public PropertyListsT > { @@ -825,10 +825,10 @@ public: virtual PyObject *getPyObject(void) override; virtual void setPyObject(PyObject *) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; - + virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; virtual unsigned int getMemSize (void) const override; @@ -851,14 +851,14 @@ public: * A more elaborate description of the constructor. */ PropertyColor(); - + /** * A destructor. * A more elaborate description of the destructor. */ virtual ~PropertyColor(); - /** Sets the property + /** Sets the property */ void setValue(const Color &col); void setValue(float r, float g, float b, float a=0.0f); @@ -869,18 +869,18 @@ public: const Color &getValue(void) const; virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyColorItem"; } - + virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); - + virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const{return sizeof(Color);} - + private: Color _cCol; @@ -891,7 +891,7 @@ class AppExport PropertyColorList: public PropertyListsT TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: - + /** * A constructor. * A more elaborate description of the constructor. @@ -905,13 +905,13 @@ public: virtual ~PropertyColorList(); virtual PyObject *getPyObject(void) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; - + virtual void SaveDocFile (Base::Writer &writer) const override; virtual void RestoreDocFile(Base::Reader &reader) override; - + virtual Property *Copy(void) const override; virtual void Paste(const Property &from) override; virtual unsigned int getMemSize (void) const override; @@ -928,7 +928,7 @@ class AppExport PropertyMaterial : public Property TYPESYSTEM_HEADER(); public: - + /** * A constructor. * A more elaborate description of the constructor. @@ -940,8 +940,8 @@ public: * A more elaborate description of the destructor. */ virtual ~PropertyMaterial(); - - /** Sets the property + + /** Sets the property */ void setValue(const Material &mat); void setAmbientColor(const Color& col); @@ -950,14 +950,14 @@ public: void setEmissiveColor(const Color& col); void setShininess(float); void setTransparency(float); - + /** This method returns a string representation of the property */ const Material &getValue(void) const; virtual PyObject *getPyObject(void); virtual void setPyObject(PyObject *); - + virtual void Save (Base::Writer &writer) const; virtual void Restore(Base::XMLReader &reader); @@ -965,9 +965,9 @@ public: virtual Property *Copy(void) const; virtual void Paste(const Property &from); - + virtual unsigned int getMemSize (void) const{return sizeof(_cMat);} - + private: Material _cMat; }; @@ -1022,7 +1022,7 @@ class AppExport PropertyPersistentObject: public PropertyString { public: virtual PyObject *getPyObject(void) override; virtual void setValue(const char* type) override; - + virtual void Save (Base::Writer &writer) const override; virtual void Restore(Base::XMLReader &reader) override; diff --git a/src/App/PropertyUnits.h b/src/App/PropertyUnits.h index 4a5643c7d0..5421c13acc 100644 --- a/src/App/PropertyUnits.h +++ b/src/App/PropertyUnits.h @@ -45,7 +45,7 @@ namespace App { /** Float with Unit property - * This is a property for float with a predefined Unit associated . + * This is a property for float with a predefined Unit associated. */ class AppExport PropertyQuantity : public PropertyFloat { @@ -77,7 +77,7 @@ protected: }; /** Float with Unit property - * This is a property for float with a predefined Unit associated . + * This is a property for float with a predefined Unit associated. */ class AppExport PropertyQuantityConstraint : public PropertyQuantity { @@ -87,16 +87,16 @@ public: PropertyQuantityConstraint(void):_ConstStruct(0){} virtual ~PropertyQuantityConstraint(){} - /// Constraint methods + /// Constraint methods //@{ /// the boundary struct struct Constraints { double LowerBound, UpperBound, StepSize; }; /** setting the boundaries - * This sets the constraint struct. It can be dynamically + * This sets the constraint struct. It can be dynamically * allocated or set as an static in the class the property - * blongs to: + * belongs to: * \code * const Constraints percent = {0.0,100.0,1.0} * \endcode @@ -167,7 +167,7 @@ public: * property. On the Gui it has a quantity like RAD. */ class AppExport PropertyAngle: public PropertyQuantityConstraint -{ +{ TYPESYSTEM_HEADER(); public: PropertyAngle(void); diff --git a/src/Base/BaseClass.cpp b/src/Base/BaseClass.cpp index c769666958..e24ac78c5d 100644 --- a/src/Base/BaseClass.cpp +++ b/src/Base/BaseClass.cpp @@ -34,8 +34,8 @@ using namespace Base; Type BaseClass::classTypeId = Base::Type::badType(); - - + + //************************************************************************** // Construction/Destruction @@ -63,26 +63,26 @@ BaseClass::~BaseClass() void BaseClass::init(void) { assert(BaseClass::classTypeId == Type::badType() && "don't init() twice!"); - /* Make sure superclass gets initialized before subclass. */ + /* Make sure superclass gets initialized before subclass. */ /*assert(strcmp(#_parentclass_), "inherited"));*/ - /*Type parentType(Type::fromName(#_parentclass_));*/ + /*Type parentType(Type::fromName(#_parentclass_));*/ /*assert(parentType != Type::badType() && "you forgot init() on parentclass!");*/ - /* Set up entry in the type system. */ - BaseClass::classTypeId = - Type::createType(Type::badType(), - "Base::BaseClass", - BaseClass::create); + /* Set up entry in the type system. */ + BaseClass::classTypeId = + Type::createType(Type::badType(), + "Base::BaseClass", + BaseClass::create); } -Type BaseClass::getClassTypeId(void) +Type BaseClass::getClassTypeId(void) { - return BaseClass::classTypeId; + return BaseClass::classTypeId; } -Type BaseClass::getTypeId(void) const +Type BaseClass::getTypeId(void) const { - return BaseClass::classTypeId; + return BaseClass::classTypeId; } @@ -92,7 +92,7 @@ void BaseClass::initSubclass(Base::Type &toInit,const char* ClassName, const cha // don't init twice! assert(toInit == Base::Type::badType()); // get the parent class - Base::Type parentType(Base::Type::fromName(ParentName)); + Base::Type parentType(Base::Type::fromName(ParentName)); // forgot init parent! assert(parentType != Base::Type::badType() ); @@ -101,12 +101,12 @@ void BaseClass::initSubclass(Base::Type &toInit,const char* ClassName, const cha } /** - * This method returns the Python wrapper for a C++ object. It's in the responsibility of + * This method returns the Python wrapper for a C++ object. It's in the responsibility of * the programmer to do the correct reference counting. Basically there are two ways how * to implement that: Either always return a new Python object then reference counting is * not a matter or return always the same Python object then the reference counter must be * incremented by one. However, it's absolutely forbidden to return always the same Python - * object without incrementing the reference counter. + * object without incrementing the reference counter. * * The default implementation returns 'None'. */ diff --git a/src/Base/BaseClassPyImp.cpp b/src/Base/BaseClassPyImp.cpp index c15992621f..d1c8324c21 100644 --- a/src/Base/BaseClassPyImp.cpp +++ b/src/Base/BaseClassPyImp.cpp @@ -41,7 +41,7 @@ std::string BaseClassPy::representation(void) const PyObject* BaseClassPy::isDerivedFrom(PyObject *args) { char *name; - if (!PyArg_ParseTuple(args, "s", &name)) // convert args: Python->C + if (!PyArg_ParseTuple(args, "s", &name)) // convert args: Python->C return NULL; // NULL triggers exception Base::Type type = Base::Type::fromName(name); @@ -51,9 +51,9 @@ PyObject* BaseClassPy::isDerivedFrom(PyObject *args) PyObject* BaseClassPy::getAllDerivedFrom(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C return NULL; // NULL triggers exception - + std::vector ary; Base::Type::getAllDerivedFrom(getBaseClassPtr()->getTypeId(), ary); Py::List res; @@ -87,7 +87,7 @@ PyObject *BaseClassPy::getCustomAttributes(const char* /*attr*/) const int BaseClassPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Base/BoundBox.h b/src/Base/BoundBox.h index c11fb61124..c59e2c8cf5 100644 --- a/src/Base/BoundBox.h +++ b/src/Base/BoundBox.h @@ -67,13 +67,13 @@ public: /** Builds box from an array of points. */ inline BoundBox3 (const Vector3<_Precision> *pclVect, unsigned long ulCt); - /** Defines a bounding box around the center \a rcCnt with the + /** Defines a bounding box around the center \a rcCnt with the * distances \a fDistance in each coordinate. */ BoundBox3 (const Vector3<_Precision> &rcCnt, _Precision fDistance); ~BoundBox3 (); - /// Assignment operator + /// Assignment operator inline BoundBox3<_Precision>& operator = (const BoundBox3<_Precision> &rcBound); /** Methods for intersection, cuttíng and union of bounding boxes */ @@ -127,8 +127,8 @@ public: * Returns the corner point \a usPoint. * 0: front,bottom,left 1: front,bottom,right * 2: front,top,right 3: front,top,left - * 4: back,bottom,left 5: back,bottom,right - * 6: back,top,right 7: back,top,left + * 4: back,bottom,left 5: back,bottom,right + * 6: back,top,right 7: back,top,left */ inline Vector3<_Precision> CalcPoint (unsigned short usPoint) const; /** Returns the plane of the given side. */ @@ -137,7 +137,7 @@ public: * 0. edge P0-P1 1. edge P1-P2 2. edge P2-P3 * 3. edge P3-P0 4. edge P4-P5 5. edge P5-P6 * 6. edge P6-P7 7. edge P7-P4 8. edge P0-P4 - * 9. edge P1-P5 10. edge P2-P6 11. edge P3-P7 + * 9. edge P1-P5 10. edge P2-P6 11. edge P3-P7 */ bool CalcEdge (unsigned short usEdge, Vector3<_Precision>& rcP0, Vector3<_Precision>& rcP1) const; /** Intersection point of an inner search ray with the bounding box, built of @@ -145,7 +145,7 @@ public: * bounding box. */ bool IntersectionPoint (const Vector3<_Precision> &rcVct, const Vector3<_Precision> &rcVctDir, Vector3<_Precision>& cVctRes, _Precision epsilon) const; - /** Checks for intersection with line incl. search tolerance. */ + /** Checks for intersection with line incl. search tolerance. */ bool IsCutLine ( const Vector3<_Precision>& rcBase, const Vector3<_Precision>& rcDir, _Precision fTolerance = 0.0f) const; /** Checks if this plane specified by (point,normal) cuts this box. * @note It's up to the client programmer to make sure that this bounding box is valid. @@ -154,7 +154,7 @@ public: /** Computes the intersection points of line and bounding box. */ bool IntersectWithLine (const Vector3<_Precision>& rcBase, const Vector3<_Precision>& rcDir, Vector3<_Precision>& rcP0, Vector3<_Precision>& rcP1) const; /** Computes the intersection point of line and a plane of the bounding box. */ - bool IntersectPlaneWithLine (unsigned short usSide, const Vector3<_Precision>& rcBase, const Vector3<_Precision>& rcDir, + bool IntersectPlaneWithLine (unsigned short usSide, const Vector3<_Precision>& rcBase, const Vector3<_Precision>& rcDir, Vector3<_Precision>& rcP0) const; /** Returns the side of the bounding box the ray exits. */ typename BoundBox3<_Precision>::SIDE GetSideFromRay (const Vector3<_Precision> &rclPt, const Vector3<_Precision> &rclDir) const; @@ -162,7 +162,7 @@ public: typename BoundBox3<_Precision>::SIDE GetSideFromRay (const Vector3<_Precision> &rclPt, const Vector3<_Precision> &rclDir, Vector3<_Precision>& rcInt) const; /** - * Searches for the closest point of the bounding box. + * Searches for the closest point of the bounding box. */ Vector3<_Precision> ClosestPoint (const Vector3<_Precision> &rclPt) const; /** Projects the box onto a plane and returns a 2D box. */ @@ -181,9 +181,9 @@ public: void SetVoid (void); /** Enlarges the box with factor \a fLen. */ - inline void Enlarge (_Precision fLen); + inline void Enlarge (_Precision fLen); /** Shrinks the box with factor \a fLen. */ - inline void Shrink (_Precision fLen); + inline void Shrink (_Precision fLen); /** Calculates expansion in x-direction. */ inline _Precision LengthX (void) const; @@ -254,11 +254,11 @@ inline BoundBox3<_Precision>::BoundBox3 (const Vector3<_Precision> *pclVect, uns template inline BoundBox3<_Precision>::BoundBox3 (const Vector3<_Precision> &rcVector, _Precision fDistance) { - MinX = rcVector.x - fDistance; + MinX = rcVector.x - fDistance; MaxX = rcVector.x + fDistance; - MinY = rcVector.y - fDistance; + MinY = rcVector.y - fDistance; MaxY = rcVector.y + fDistance; - MinZ = rcVector.z - fDistance; + MinZ = rcVector.z - fDistance; MaxZ = rcVector.z + fDistance; } @@ -608,7 +608,7 @@ inline bool BoundBox3<_Precision>::IntersectionPoint (const Vector3<_Precision> // test sides for (i = 0; (i < 6) && (!rc); i++) { rc = IntersectPlaneWithLine(i, rcVct, rcVctDir, cVctRes); - if (!cCmpBound.IsInBox(cVctRes)) + if (!cCmpBound.IsInBox(cVctRes)) rc = false; if (rc == true) { // does intersection point lie in desired direction @@ -738,7 +738,7 @@ inline bool BoundBox3<_Precision>::IntersectWithLine (const Vector3<_Precision> } } - return false; + return false; } template @@ -836,7 +836,7 @@ inline Vector3<_Precision> BoundBox3<_Precision>::ClosestPoint (const Vector3<_P _Precision fDist = (clTemp - rclPt).Length(); if (fDist < fMinDist) { fMinDist = fDist; - clRet = clTemp; + clRet = clTemp; } } diff --git a/src/Base/BoundBoxPyImp.cpp b/src/Base/BoundBoxPyImp.cpp index b5730e3596..f3da07ceb9 100644 --- a/src/Base/BoundBoxPyImp.cpp +++ b/src/Base/BoundBoxPyImp.cpp @@ -52,7 +52,7 @@ std::string BoundBoxPy::representation(void) const PyObject *BoundBoxPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of BoundBoxPy and the Twin object + // create a new instance of BoundBoxPy and the Twin object return new BoundBoxPy(new BoundBox3d); } @@ -585,7 +585,7 @@ PyObject *BoundBoxPy::getCustomAttributes(const char* /*attr*/) const int BoundBoxPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Base/Builder3D.cpp b/src/Base/Builder3D.cpp index 879a9bbe34..ed2c70993c 100644 --- a/src/Base/Builder3D.cpp +++ b/src/Base/Builder3D.cpp @@ -69,8 +69,8 @@ Builder3D::~Builder3D() /** * Starts the definition of point set with the given point size and color. - * If possible don't make too many startPoints() and endPoints() calls. - * Try to put all points in one set. + * If possible don't make too many startPoints() and endPoints() calls. + * Try to put all points in one set. * @see endPoints() * @param pointSize the point size in pixel that are displayed. * @param color_r red part of the point color (0.0 - 1.0). @@ -146,7 +146,7 @@ void Builder3D::addSinglePoint(const Base::Vector3f &vec, short pointSize, float /** - * Add a Text with a given position to the 3D set. The origin is the + * Add a Text with a given position to the 3D set. The origin is the * lower leftmost corner. * @param pos_x,pos_y,pos_z origin of the text * @param text the text to display. @@ -159,8 +159,8 @@ void Builder3D::addText(float pos_x, float pos_y , float pos_z,const char * text // addSinglePoint() not between startXXX() and endXXX() allowed assert( bStartEndOpen == false ); - result << "Separator { " - << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " + result << "Separator { " + << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " << "Transform { translation " << pos_x << " "<< pos_y << " "<< pos_z << "} " << "Text2 { string \" " << text << "\" " << "} " << "} "; @@ -193,12 +193,12 @@ void Builder3D::addSingleLine(Vector3f pt1, Vector3f pt2, short lineSize, float //strcat(lp, buf); result << "Separator { " - << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " + << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " << "DrawStyle { lineWidth " << lineSize << " linePattern " << lp << " } " << "Coordinate3 { " << "point [ " << pt1.x << " " << pt1.y << " " << pt1.z << "," - << pt2.x << " " << pt2.y << " " << pt2.z + << pt2.x << " " << pt2.y << " " << pt2.z << "] " << "} " << "LineSet { } " @@ -224,12 +224,12 @@ void Builder3D::addSingleArrow(Vector3f pt1, Vector3f pt2, short lineSize, float float a = Vector3f(0.0f, 1.0f, 0.0f).GetAngle(dir); result << "Separator { " - << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " + << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " << "DrawStyle { lineWidth " << lineSize << "} " << "Coordinate3 { " << "point [ " << pt1.x << " " << pt1.y << " " << pt1.z << "," - << pt2s.x << " " << pt2s.y << " " << pt2s.z + << pt2s.x << " " << pt2s.y << " " << pt2s.z << "] " << "} " << "LineSet { } " @@ -254,7 +254,7 @@ void Builder3D::addSingleTriangle(Vector3f pt0, Vector3f pt1, Vector3f pt2, bool } result << "Separator { " - << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " + << "Material { diffuseColor " << color_r << " "<< color_g << " "<< color_b << "} " << "DrawStyle { lineWidth " << lineSize << "} " << "Coordinate3 { " << "point [ " @@ -293,15 +293,15 @@ void Builder3D::addTransformation(const Base::Vector3f& translation, const Base: /** * Save the resulting inventor 3D representation to the Console().Log() facility. - * In DEBUG mode the Gui (if running) will trigger on that and show the representation in - * the active Viewer/Document. It shows only one representation on time. If you need to + * In DEBUG mode the Gui (if running) will trigger on that and show the representation in + * the active Viewer/Document. It shows only one representation on time. If you need to * show more then one representation use saveToFile() instead. * @see saveToFile() */ void Builder3D::saveToLog(void) { result << "} "; - // Note: The string can become very long, so that ConsoleSingelton::Log() will internally + // Note: The string can become very long, so that ConsoleSingelton::Log() will internally // truncate the string which causes Inventor to fail to interpret the truncated string. // So, we send the string directly to the observer that handles the Inventor stuff. //Console().Log("Vdbg: %s \n",result.str().c_str()); @@ -323,7 +323,7 @@ void Builder3D::saveToFile(const char* FileName) { result << "} "; std::ofstream file(FileName); - if(!file) + if(!file) throw FileException("Builder3D::saveToFile(): Can not open file..."); file << "#Inventor V2.1 ascii " << std::endl; @@ -456,8 +456,8 @@ void InventorBuilder::addPolygonOffset(float factor, float units, const char* st /** * Starts the definition of point set. - * If possible don't make too many beginPoints() and endPoints() calls. - * Try to put all points in one set. + * If possible don't make too many beginPoints() and endPoints() calls. + * Try to put all points in one set. * @see startPoints() * @see endPoints() */ @@ -528,7 +528,7 @@ void InventorBuilder::addLineSet() /** - * Add a Text with a given position to the 3D set. The origin is the + * Add a Text with a given position to the 3D set. The origin is the * lower leftmost corner. * @param pos_x,pos_y,pos_z origin of the text * @param text the text to display. @@ -651,9 +651,9 @@ void InventorBuilder::addLineSet(const std::vector& points, short line result << "2"; for (size_t i=1; i& control result << " Separator { " << std::endl << " Coordinate3 { " << std::endl << " point [ "; - for (std::vector::const_iterator it = + for (std::vector::const_iterator it = controlPoints.begin(); it != controlPoints.end(); ++it) { if (it != controlPoints.begin()) result << "," << std::endl << " "; @@ -914,10 +914,10 @@ void InventorBuilder::addTransformation(const Matrix4D& transform) void InventorBuilder::addTransformation(const Vector3f& translation, const Vector3f& rotationaxis, float fAngle) { result << Base::blanks(indent) << "Transform {" << std::endl; - result << Base::blanks(indent) << " translation " + result << Base::blanks(indent) << " translation " << translation.x << " " << translation.y << " " << translation.z << std::endl; - result << Base::blanks(indent) << " rotation " - << rotationaxis.x << " " << rotationaxis.y << " " << rotationaxis.z + result << Base::blanks(indent) << " rotation " + << rotationaxis.x << " " << rotationaxis.y << " " << rotationaxis.z << " " << fAngle << std::endl; result << Base::blanks(indent) << "}" << std::endl; } diff --git a/src/Base/Builder3D.h b/src/Base/Builder3D.h index 39f936db08..239f56e5a2 100644 --- a/src/Base/Builder3D.h +++ b/src/Base/Builder3D.h @@ -39,10 +39,10 @@ class Matrix4D; * when you program or debug an algorithm. Builder3D was made for this specific purpose. * This class allows you to easily build up a 3D representation of some mathematical and * algorithm internals. You can save this representation to a file and view it in an - * Inventor viewer, or send it to the log. In the case of using the log and a debug + * Inventor viewer, or send it to the log. In the case of using the log and a debug * FreeCAD the representation will be loaded into the active viewer. * \par - * The workflow goes as follows: Create the a Builder3D object and call the methods + * The workflow goes as follows: Create the a Builder3D object and call the methods * to insert the graphical elements. After that call either saveToLog() or saveToFile(). * \par * Usage: @@ -74,7 +74,7 @@ public: void addPoint(float x, float y, float z); /// add a vector to a point set void addPoint(const Vector3f &vec); - /// ends the points set operation + /// ends the points set operation void endPoints(void); /// add a singular point (without startPoints() & endPoints() ) void addSinglePoint(float x, float y, float z, short pointSize=2, float color_r=1.0,float color_g=1.0,float color_b=1.0); @@ -306,7 +306,7 @@ public: /** @name Bounding Box handling */ //@{ - void addBoundingBox(const Vector3f& pt1, const Vector3f& pt2, short lineWidth=2, + void addBoundingBox(const Vector3f& pt1, const Vector3f& pt2, short lineWidth=2, float color_r=1.0,float color_g=1.0,float color_b=1.0); //@} diff --git a/src/Base/Console.cpp b/src/Base/Console.cpp index bd7fcfde09..ee8fd5d884 100644 --- a/src/Base/Console.cpp +++ b/src/Base/Console.cpp @@ -728,7 +728,7 @@ PyObject *ConsoleSingleton::sPySetStatus(PyObject * /*self*/, PyObject *args) Py_INCREF(Py_None); return Py_None; - } + } else { Py_Error(Base::BaseExceptionFreeCADError,"Unknown Console Type"); } diff --git a/src/Base/Console.h b/src/Base/Console.h index 4ec5cf5b0a..650b621004 100644 --- a/src/Base/Console.h +++ b/src/Base/Console.h @@ -137,7 +137,7 @@ * * // print file and line number, default 0, if set to 2 then print python * // source from current call frame. - * FC_LOG_INSTANCE.print_src = 1; + * FC_LOG_INSTANCE.print_src = 1; * * FC_LOG_INSTANCE.print_tag = false; // do not print tag, default true * FC_LOG_INSTANCE.add_eol = false; // do not add eol @@ -486,7 +486,7 @@ namespace Base { :bErr(true),bMsg(true),bLog(true),bWrn(true){}; virtual ~ILogger() = 0; - /** Used to send a Log message at the given level. + /** Used to send a Log message at the given level. */ virtual void SendLog(const std::string& msg, LogStyle level) = 0; @@ -527,13 +527,13 @@ namespace Base { /// Prints a log Message virtual void Log ( const char * pMsg, ... ); - // observer processing + // observer processing void NotifyMessage(const char *sMsg); void NotifyWarning(const char *sMsg); void NotifyError (const char *sMsg); void NotifyLog (const char *sMsg); - /// Delivers a time/date string + /// Delivers a time/date string const char* Time(void); /// Attaches an Observer to FCConsole void AttachObserver(ILogger *pcObserver); diff --git a/src/Base/CoordinateSystemPyImp.cpp b/src/Base/CoordinateSystemPyImp.cpp index 18255183ee..40f86666b0 100644 --- a/src/Base/CoordinateSystemPyImp.cpp +++ b/src/Base/CoordinateSystemPyImp.cpp @@ -40,7 +40,7 @@ std::string CoordinateSystemPy::representation(void) const PyObject *CoordinateSystemPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of CoordinateSystemPy and the Twin object + // create a new instance of CoordinateSystemPy and the Twin object return new CoordinateSystemPy(new CoordinateSystem); } @@ -181,5 +181,5 @@ PyObject *CoordinateSystemPy::getCustomAttributes(const char* /*attr*/) const int CoordinateSystemPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Base/Exception.cpp b/src/Base/Exception.cpp index 7b108a79cd..2fca2a0de4 100644 --- a/src/Base/Exception.cpp +++ b/src/Base/Exception.cpp @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * diff --git a/src/Base/Exception.h b/src/Base/Exception.h index 0266e0ba65..7fd38ce75a 100644 --- a/src/Base/Exception.h +++ b/src/Base/Exception.h @@ -111,11 +111,11 @@ public: inline std::string getFunction() const; inline bool getTranslatable() const; inline bool getReported() const { return _isReported; } - + /// setter methods for including debug information /// intended to use via macro for autofilling of debugging information inline void setDebugInformation(const std::string & file, const int line, const std::string & function); - + inline void setTranslatable(bool translatable); inline void setReported(bool reported) { _isReported = reported; } @@ -261,7 +261,7 @@ protected: FileInfo file; // necessary for what() legacy behaviour as it returns a buffer that // can not be of a temporary object to be destroyed at end of what() - std::string _sErrMsgAndFileName; + std::string _sErrMsgAndFileName; }; /** @@ -664,10 +664,10 @@ public: /* The RestoreError can be used to try to do a best recovery effort when an error during restoring * occurs. The best recovery effort may be to ignore the element altogether or to insert a placeholder * depending on where the actual element being restored is used. - * - * For example, if it is part of an array (e.g. PropertyList) and the order in the array is relevant, it + * + * For example, if it is part of an array (e.g. PropertyList) and the order in the array is relevant, it * is better to have a placeholder than to fail to restore the whole array. - */ + */ class BaseExport RestoreError : public Exception { public: diff --git a/src/Base/ExceptionFactory.cpp b/src/Base/ExceptionFactory.cpp index b5f67966e6..5f1f416dee 100644 --- a/src/Base/ExceptionFactory.cpp +++ b/src/Base/ExceptionFactory.cpp @@ -46,7 +46,7 @@ void ExceptionFactory::Destruct (void) void ExceptionFactory::raiseException (PyObject * pydict) const { std::string classname; - + Py::Dict edict(pydict); if (edict.hasKey("sclassname")) { classname = static_cast(Py::String(edict.getItem("sclassname"))); diff --git a/src/Base/ExceptionFactory.h b/src/Base/ExceptionFactory.h index 6b5cc310ba..ebf9c0766b 100644 --- a/src/Base/ExceptionFactory.h +++ b/src/Base/ExceptionFactory.h @@ -53,12 +53,12 @@ class BaseExport ExceptionFactory : public Factory public: static ExceptionFactory& Instance(void); static void Destruct (void); - + void raiseException(PyObject * pydict) const; - + private: static ExceptionFactory* _pcSingleton; - + ExceptionFactory(){} ~ExceptionFactory(){} }; @@ -73,9 +73,9 @@ public: { ExceptionFactory::Instance().AddProducer(typeid(CLASS).name(), this); } - + virtual ~ExceptionProducer (){} - + void raiseException(PyObject * pydict) const { CLASS c; diff --git a/src/Base/Factory.cpp b/src/Base/Factory.cpp index 8ab03fd990..b3c8acf08c 100644 --- a/src/Base/Factory.cpp +++ b/src/Base/Factory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * diff --git a/src/Base/Factory.h b/src/Base/Factory.h index 34aa3ec2f0..06b51322cc 100644 --- a/src/Base/Factory.h +++ b/src/Base/Factory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * @@ -46,9 +46,9 @@ public: }; - + /** Base class of all factories - * This class has the purpose to produce at runtime instances + * This class has the purpose to produce at runtime instances * of classes not known at compile time. It holds a map of so called * producers which are able to produce an instance of a special class. * Producer can be registered at runtime through e.g. application modules @@ -69,7 +69,7 @@ protected: std::map _mpcProducers; /// construction Factory (void){} - /// destruction + /// destruction virtual ~Factory (); }; @@ -100,7 +100,7 @@ inline ScriptFactorySingleton& ScriptFactory(void) // -------------------------------------------------------------------- /** Script Factory - * This class produce Scripts. + * This class produce Scripts. * @see Factory */ class BaseExport ScriptProducer: public AbstractProducer @@ -116,7 +116,7 @@ public: /// Produce an instance virtual void* Produce (void) const - { + { return (void*)mScript; } diff --git a/src/Base/FileInfo.cpp b/src/Base/FileInfo.cpp index 2f13e54b90..881dc8ae1f 100644 --- a/src/Base/FileInfo.cpp +++ b/src/Base/FileInfo.cpp @@ -150,14 +150,14 @@ std::string FileInfo::getTempFileName(const char* FileName, const char* Path) wchar_t buf[MAX_PATH + 2]; // Path where the file is located - std::wstring path; + std::wstring path; if (Path) path = ConvertToWideString(std::string(Path)); else path = ConvertToWideString(getTempPath()); - // File name in the path - std::wstring file; + // File name in the path + std::wstring file; if (FileName) file = ConvertToWideString(std::string(FileName)); else @@ -178,7 +178,7 @@ std::string FileInfo::getTempFileName(const char* FileName, const char* Path) else buf = getTempPath(); - // File name in the path + // File name in the path if (FileName) { buf += "/"; buf += FileName; @@ -251,10 +251,10 @@ std::string FileInfo::fileNamePure () const { std::string temp = fileName(); std::string::size_type pos = temp.find_last_of('.'); - + if (pos != std::string::npos) return temp.substr(0,pos); - else + else return temp; } diff --git a/src/Base/FileInfo.h b/src/Base/FileInfo.h index 76a620bf68..763218bad9 100644 --- a/src/Base/FileInfo.h +++ b/src/Base/FileInfo.h @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * @@ -104,7 +104,7 @@ public: bool isFile () const; /// Checks if it is a directory (not a file) bool isDir () const; - /// The size of the file + /// The size of the file unsigned int size () const; /// Returns the time when the file was last modified. TimeInfo lastModified() const; @@ -118,7 +118,7 @@ public: bool createDirectory( void ) const; /// Get a list of the directory content std::vector getDirectoryContent(void) const; - /// Delete an empty directory + /// Delete an empty directory bool deleteDirectory(void) const; /// Delete a directory and all its content. bool deleteDirectoryRecursive(void) const; diff --git a/src/Base/FileTemplate.h b/src/Base/FileTemplate.h index 04cac112ca..42b90a19fa 100644 --- a/src/Base/FileTemplate.h +++ b/src/Base/FileTemplate.h @@ -41,13 +41,13 @@ namespace Base * Base::Console().Log("Stage: %d",i); * \endcode * \par - * nother blablablablablablablablablabl: + * another blablablablablablablablablabl: * Text before the list * - list item 1 * - sub item 1 * - sub sub item 1 * - sub sub item 2 - * . + * . * The dot above ends the sub sub item list. * More text for the first sub item * . @@ -70,7 +70,7 @@ namespace Base *
  • mouse double click event * *
  • keyboard events - *
      + *
        *
      1. key down event *
      2. key up event *
      @@ -89,16 +89,16 @@ public: int testMe(int a,const char *s); - /** + /** * An enum. * More detailed enum description. */ - enum TEnum { - TVal1, /**< enum value TVal1. */ - TVal2, /**< enum value TVal2. */ - TVal3 /**< enum value TVal3. */ - } + enum TEnum { + TVal1, /**< enum value TVal1. */ + TVal2, /**< enum value TVal2. */ + TVal3 /**< enum value TVal3. */ + } *enumPtr, /**< enum pointer. Details. */ enumVar; /**< enum variable. Details. */ @@ -121,12 +121,12 @@ public: //@} - /** + /** * a public variable. * Details. */ int publicVar; - + /** * a function variable. * Details. diff --git a/src/Base/FutureWatcherProgress.h b/src/Base/FutureWatcherProgress.h index d0aaf467ff..d3a4bf2121 100644 --- a/src/Base/FutureWatcherProgress.h +++ b/src/Base/FutureWatcherProgress.h @@ -47,4 +47,4 @@ private: }; } -#endif // BASE_FUTUREWATCHER_H +#endif // BASE_FUTUREWATCHER_H diff --git a/src/Base/InputSource.cpp b/src/Base/InputSource.cpp index e0a44173a6..107cf0e52b 100644 --- a/src/Base/InputSource.cpp +++ b/src/Base/InputSource.cpp @@ -54,7 +54,7 @@ using namespace std; // --------------------------------------------------------------------------- // StdInputStream: Constructors and Destructor // --------------------------------------------------------------------------- -StdInputStream::StdInputStream( std::istream& Stream, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager ) +StdInputStream::StdInputStream( std::istream& Stream, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager ) : stream(Stream), fMemoryManager(manager) { state.flags |= QTextCodec::IgnoreHeader; @@ -82,7 +82,7 @@ unsigned int StdInputStream::readBytes( XMLByte* const toFill, const unsigned i // Read up to the maximum bytes requested. We return the number // actually read. // - + stream.read((char *)toFill,maxToRead); XMLSize_t len = stream.gcount(); @@ -116,7 +116,7 @@ XMLSize_t StdInputStream::readBytes( XMLByte* const toFill, const XMLSize_t max // Read up to the maximum bytes requested. We return the number // actually read. // - + stream.read((char *)toFill,maxToRead); XMLSize_t len = stream.gcount(); diff --git a/src/Base/InputSource.h b/src/Base/InputSource.h index ca70a3ac47..8178a130fe 100644 --- a/src/Base/InputSource.h +++ b/src/Base/InputSource.h @@ -65,7 +65,7 @@ private : // Unimplemented constructors and operators // ----------------------------------------------------------------------- StdInputStream(const StdInputStream&); - StdInputStream& operator=(const StdInputStream&); + StdInputStream& operator=(const StdInputStream&); // ----------------------------------------------------------------------- // Private data members diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp index 974171e585..b4642fb89b 100644 --- a/src/Base/Interpreter.cpp +++ b/src/Base/Interpreter.cpp @@ -121,7 +121,7 @@ void PyException::raiseException() { std::string exceptionname; if (_exceptionType == Base::BaseExceptionFreeCADAbort) - edict.setItem("sclassname", + edict.setItem("sclassname", Py::String(typeid(Base::AbortException).name())); if (_isReported) edict.setItem("breported", Py::True()); @@ -159,7 +159,7 @@ void PyException::setPyException() const SystemExitException::SystemExitException() { - // Set exception message and code based upon the pthon sys.exit() code and/or message + // Set exception message and code based upon the python sys.exit() code and/or message // based upon the following sys.exit() call semantics. // // Invocation | _exitCode | _sErrMsg @@ -544,15 +544,8 @@ void InterpreterSingleton::addType(PyTypeObject* Type,PyObject* Module, const ch void InterpreterSingleton::addPythonPath(const char* Path) { PyGILStateLocker locker; - PyObject *list = PySys_GetObject("path"); -#if PY_MAJOR_VERSION >= 3 - PyObject *path = PyUnicode_FromString(Path); -#else - PyObject *path = PyString_FromString(Path); -#endif - PyList_Append(list, path); - Py_DECREF(path); - PySys_SetObject("path", list); + Py::List list(PySys_GetObject("path")); + list.append(Py::String(Path)); } const char* InterpreterSingleton::init(int argc,char *argv[]) diff --git a/src/Base/Interpreter.h b/src/Base/Interpreter.h index 70e0a9513a..66cbe49eed 100644 --- a/src/Base/Interpreter.h +++ b/src/Base/Interpreter.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * @@ -102,7 +102,7 @@ public: ~PyException() throw(); void raiseException(); - + /// this method determines if the original exception /// can be reconstructed or not, if yes throws the reconstructed version /// if not, throws a generic PyException. @@ -178,7 +178,7 @@ private: /** * If a thread holds the global interpreter lock (GIL) but runs a long operation * in C where it doesn't need to hold the GIL it can release it temporarily. Or - * if the thread has to run code in the main thread where Python code may be + * if the thread has to run code in the main thread where Python code may be * executed it must release the GIL to avoid a deadlock. In either case the thread * must hold the GIL when instantiating an object of PyGILStateRelease. * As PyGILStateLocker it's best to create an instance of PyGILStateRelease on the @@ -204,7 +204,7 @@ private: /** The Interpreter class - * This class manage the python interpreter and hold a lot + * This class manage the python interpreter and hold a lot * helper functions for handling python stuff */ class BaseExport InterpreterSingleton @@ -234,7 +234,7 @@ public: PyObject* runMethodObject(PyObject *pobject, const char *method); /// runs a python method with arbitrary params void runMethod(PyObject *pobject, const char *method, - const char *resfmt=0, void *cresult=0, + const char *resfmt=0, void *cresult=0, const char *argfmt="()", ... ); //@} @@ -252,11 +252,11 @@ public: /** @name Cleanup */ //@{ - /** Register a cleanup function to be called by finalize(). The cleanup function will be called with no - * arguments and should return no value. At most 32 cleanup functions can be registered. When the registration - * is successful 0 is returned; on failure -1 is returned. The cleanup function registered last is called - * first. Each cleanup function will be called at most once. Since Python's internal finalization will have - * completed before the cleanup function, no Python APIs should be called by \a func. + /** Register a cleanup function to be called by finalize(). The cleanup function will be called with no + * arguments and should return no value. At most 32 cleanup functions can be registered. When the registration + * is successful 0 is returned; on failure -1 is returned. The cleanup function registered last is called + * first. Each cleanup function will be called at most once. Since Python's internal finalization will have + * completed before the cleanup function, no Python APIs should be called by \a func. */ int cleanup(void (*func)(void)); /** This calls the registered cleanup functions. @see cleanup() for more details. */ @@ -322,14 +322,14 @@ private: /** Access to the InterpreterSingleton object - * This method is used to gain access to the one and only instance of + * This method is used to gain access to the one and only instance of * the InterpreterSingleton class. - */ + */ inline InterpreterSingleton &Interpreter(void) { return InterpreterSingleton::Instance(); } -} //namespace Base +} //namespace Base #endif // BASE_INTERPRETER_H diff --git a/src/Base/Matrix.cpp b/src/Base/Matrix.cpp index c8a009c9c1..7f6c89a5a4 100644 --- a/src/Base/Matrix.cpp +++ b/src/Base/Matrix.cpp @@ -39,7 +39,7 @@ Matrix4D::Matrix4D (void) setToUnity(); } -Matrix4D::Matrix4D (float a11, float a12, float a13, float a14, +Matrix4D::Matrix4D (float a11, float a12, float a13, float a14, float a21, float a22, float a23, float a24, float a31, float a32, float a33, float a34, float a41, float a42, float a43, float a44 ) @@ -62,7 +62,7 @@ Matrix4D::Matrix4D (float a11, float a12, float a13, float a14, dMtrx4D[3][3] = static_cast(a44); } -Matrix4D::Matrix4D (double a11, double a12, double a13, double a14, +Matrix4D::Matrix4D (double a11, double a12, double a13, double a14, double a21, double a22, double a23, double a24, double a31, double a32, double a33, double a34, double a41, double a42, double a43, double a44 ) @@ -269,7 +269,7 @@ void Matrix4D::rotLine(const Vector3f& rclBase, const Vector3f& rclDir, float fA /** * If this matrix describes a rotation around an arbitrary axis with a translation (in axis direction) * then the base point of the axis, its direction, the rotation angle and the translation part get calculated. - * In this case the return value is set to true, if this matrix doesn't describe a rotation false is returned. + * In this case the return value is set to true, if this matrix doesn't describe a rotation false is returned. * * The translation vector can be calculated with \a fTranslation * \a rclDir, whereas the length of \a rclDir * is normalized to 1. @@ -451,7 +451,7 @@ void Matrix4D::inverse (void) for (iz = 0 ;iz < 3; iz++) for (is = 0 ;is < 3; is++) clInvRotMat.dMtrx4D[iz][is] = dMtrx4D[is][iz]; - + /**** inv(M) = inv(Mtrl * Mrot) = inv(Mrot) * inv(Mtrl) ****/ (*this) = clInvRotMat * clInvTrlMat; } @@ -572,11 +572,11 @@ void Matrix4D::inverseOrthogonal(void) void Matrix4D::inverseGauss (void) { - double matrix [16]; + double matrix [16]; double inversematrix [16] = { 1 ,0 ,0 ,0 , 0 ,1 ,0 ,0 , 0 ,0 ,1 ,0 , - 0 ,0 ,0 ,1 }; + 0 ,0 ,0 ,1 }; getGLMatrix(matrix); // Matrix_invert(matrix, inversematrix); @@ -657,7 +657,7 @@ std::string Matrix4D::toString(void) const for (int j = 0; j < 4; j++) str << dMtrx4D[i][j] << " "; } - + return str.str(); } @@ -671,7 +671,7 @@ void Matrix4D::fromString(const std::string &str) { for (int j = 0; j < 4; j++) input >> dMtrx4D[i][j]; - } + } } // Analyse the a transformation Matrix and describe the transformation @@ -693,7 +693,7 @@ std::string Matrix4D::analyse(void) const { text = "Projection"; } - else //translation and affine + else //translation and affine { if (dMtrx4D[0][1] == 0.0 && dMtrx4D[0][2] == 0.0 && dMtrx4D[1][0] == 0.0 && dMtrx4D[1][2] == 0.0 && diff --git a/src/Base/Matrix.h b/src/Base/Matrix.h index 3002cd03f9..dd2bbe2e13 100644 --- a/src/Base/Matrix.h +++ b/src/Base/Matrix.h @@ -49,12 +49,12 @@ public: Matrix4D(void); /// Construction - Matrix4D (float a11, float a12, float a13, float a14, + Matrix4D (float a11, float a12, float a13, float a14, float a21, float a22, float a23, float a24, float a31, float a32, float a33, float a34, float a41, float a42, float a43, float a44 ); /// Construction - Matrix4D (double a11, double a12, double a13, double a14, + Matrix4D (double a11, double a12, double a13, double a14, double a21, double a22, double a23, double a24, double a31, double a32, double a33, double a34, double a41, double a42, double a43, double a44 ); @@ -80,7 +80,7 @@ public: inline Matrix4D& operator = (const Matrix4D& rclMtrx); /// Matrix multiplication inline Matrix4D operator * (const Matrix4D& rclMtrx) const; - /// Multiplication matrix with vector + /// Multiplication matrix with vector inline Vector3f operator * (const Vector3f& rclVct) const; inline Vector3d operator * (const Vector3d& rclVct) const; inline void multVec(const Vector3d & src, Vector3d & dst) const; @@ -172,7 +172,7 @@ public: std::string toString(void) const; /// read the 16 double of the matrix from a string void fromString (const std::string &str); - + private: double dMtrx4D[4][4]; }; @@ -240,12 +240,12 @@ inline Matrix4D& Matrix4D::operator *= (const Matrix4D& rclMtrx) for (is = 0; is < 4; is++) { clMat.dMtrx4D[iz][is] = 0; for (ie = 0; ie < 4; ie++) - clMat.dMtrx4D[iz][is] += dMtrx4D[iz][ie] * + clMat.dMtrx4D[iz][is] += dMtrx4D[iz][ie] * rclMtrx.dMtrx4D[ie][is]; } (*this) = clMat; - + return *this; } @@ -258,7 +258,7 @@ inline Matrix4D Matrix4D::operator * (const Matrix4D& rclMtrx) const for (is = 0; is < 4; is++) { clMat.dMtrx4D[iz][is] = 0; for (ie = 0; ie < 4; ie++) - clMat.dMtrx4D[iz][is] += dMtrx4D[iz][ie] * + clMat.dMtrx4D[iz][is] += dMtrx4D[iz][ie] * rclMtrx.dMtrx4D[ie][is]; } @@ -274,7 +274,7 @@ inline Matrix4D& Matrix4D::operator= (const Matrix4D& rclMtrx) dMtrx4D[iz][is] = rclMtrx.dMtrx4D[iz][is]; } } - + return *this; } @@ -370,6 +370,6 @@ inline const double* Matrix4D::operator[] (unsigned short usNdx) const } // namespace Base -#endif // BASE_MATRIX_H +#endif // BASE_MATRIX_H diff --git a/src/Base/MatrixPyImp.cpp b/src/Base/MatrixPyImp.cpp index 6c18dfe0ca..65b6364e79 100644 --- a/src/Base/MatrixPyImp.cpp +++ b/src/Base/MatrixPyImp.cpp @@ -54,7 +54,7 @@ std::string MatrixPy::representation(void) const PyObject *MatrixPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of MatrixPy and the Twin object + // create a new instance of MatrixPy and the Twin object return new MatrixPy(new Matrix4D); } @@ -239,13 +239,13 @@ PyObject* MatrixPy::move(PyObject * args) vec.y = y; vec.z = z; } - else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", + else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", &PyTuple_Type, &pcVecObj)) { vec = getVectorFromTuple(pcVecObj); // clears the error from the first PyArg_ParseTuple()6 PyErr_Clear(); } - else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", + else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", &(Base::VectorPy::Type), &pcVecObj)) { Base::VectorPy *pcObject = static_cast(pcVecObj); Base::Vector3d* val = pcObject->getVectorPtr(); @@ -275,7 +275,7 @@ PyObject* MatrixPy::scale(PyObject * args) vec.y = y; vec.z = z; } - else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", + else if (PyArg_ParseTuple(args, "O!:three floats or a vector is needed", &PyTuple_Type, &pcVecObj)) { vec = getVectorFromTuple(pcVecObj); // clears the error from the first PyArg_ParseTuple()6 @@ -829,7 +829,7 @@ PyObject *MatrixPy::getCustomAttributes(const char* /*attr*/) const int MatrixPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } PyObject * MatrixPy::number_divide_handler (PyObject* /*self*/, PyObject* /*other*/) diff --git a/src/Base/MemDebug.cpp b/src/Base/MemDebug.cpp index 56bd072c30..993d9d2080 100644 --- a/src/Base/MemDebug.cpp +++ b/src/Base/MemDebug.cpp @@ -10,16 +10,15 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2006 * ***************************************************************************/ /** \defgroup MemDebug Memory debugging @@ -60,12 +59,12 @@ using namespace Base; /** Memory debugging class * This class is an interface to the Windows CRT debugging - * facility. If the define MemDebugOn in the src/FCConfig.h is - * set the class gets instantiated globally and tracks all memory allocations on the heap. + * facility. If the define MemDebugOn in the src/FCConfig.h is + * set the class gets instantiated globally and tracks all memory allocations on the heap. * The result gets written in the MemLog.txt in the active directory. * \par - * NOTE: you must not instantiate this class! - * + * NOTE: you must not instantiate this class! + * * * \author Juergen Riegel */ @@ -88,7 +87,7 @@ protected: //@} }; -// the one and only MemDebug instance. +// the one and only MemDebug instance. #ifdef MemDebugOn MemDebug cSingelton; #endif @@ -116,12 +115,12 @@ MemDebug::MemDebug() _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR ); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE ); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR ); - + // Set the debug heap to report memory leaks when the process terminates, // and to keep freed blocks in the linked list. SET_CRT_DEBUG_FIELD( _CRTDBG_LEAK_CHECK_DF | _CRTDBG_DELAY_FREE_MEM_DF ); - // Open a log file for the hook functions to use + // Open a log file for the hook functions to use if ( logFile != NULL ) throw "Base::MemDebug::MemDebug():38: Don't call the constructor by your self!"; #if (_MSC_VER >= 1400) @@ -212,8 +211,8 @@ int __cdecl MemDebug::sAllocHook( if( nBlockUse !=4 ) return(7); - - fprintf( logFile, + + fprintf( logFile, "%s (#%7d) %12Iu byte (%s) in %s line %d", operation[nAllocType],lRequest, nSize, blockType[nBlockUse],szFileName, nLine); if ( pvData != NULL ) diff --git a/src/Base/Observer.h b/src/Base/Observer.h index cf3e6ceb95..9e1c6f6935 100644 --- a/src/Base/Observer.h +++ b/src/Base/Observer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,12 +10,12 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * @@ -44,7 +44,7 @@ template class Subject; /** Observer class * Implementation of the well known Observer Design Pattern. * The observed object, which inherit FCSubject, will call all - * its observers in case of changes. A observer class has to + * its observers in case of changes. A observer class has to * Attach itself to the observed object. * @see FCSubject */ @@ -85,7 +85,7 @@ public: /** * This method can be reimplemented from the concrete Observer - * and returns the name of the observer. Needed to use the Get + * and returns the name of the observer. Needed to use the Get * Method of the Subject. */ virtual const char *Name(void){return 0L;} @@ -94,7 +94,7 @@ public: /** Subject class * Implementation of the well known Observer Design Pattern. * The observed object, which inherit FCSubject, will call all - * its observers in case of changes. A observer class has to + * its observers in case of changes. A observer class has to * Attach itself to the observed object. * @see FCObserver */ @@ -105,8 +105,8 @@ public: typedef Observer<_MessageType> ObserverType; typedef _MessageType MessageType; - typedef Subject<_MessageType> SubjectType; - + typedef Subject<_MessageType> SubjectType; + /** * A constructor. * No special function so far. @@ -127,7 +127,7 @@ public: } /** Attach an Observer - * Attach an Observer to the list of Observers which get + * Attach an Observer to the list of Observers which get * called when Notify is called. * @param ToObserv A pointer to a concrete Observer * @see Notify @@ -146,7 +146,7 @@ public: } /** Detach an Observer - * Detach an Observer from the list of Observers which get + * Detach an Observer from the list of Observers which get * called when Notify is called. * @param ToObserv A pointer to a concrete Observer * @see Notify @@ -166,7 +166,7 @@ public: /** Notify all Observers * Send a message to all Observers attached to this subject. - * The Message depends on the implementation of a concrete + * The Message depends on the implementation of a concrete * Oberserver and Subject. * @see Notify */ @@ -205,7 +205,7 @@ public: return 0L; } - /** Clears the list of all registered observers. + /** Clears the list of all registered observers. * @note Using this function in your code may be an indication of design problems. */ void ClearObserver() diff --git a/src/Base/Parameter.h b/src/Base/Parameter.h index 0929be5b63..7f6bd93855 100644 --- a/src/Base/Parameter.h +++ b/src/Base/Parameter.h @@ -21,7 +21,7 @@ * * ***************************************************************************/ - /** + /** * \file Parameter.h * \brief The classes defined here are used to interface with the XML-based * FreeCAD config files: user.cfg and system.cfg files. It can parse, get, diff --git a/src/Base/ParameterPy.cpp b/src/Base/ParameterPy.cpp index bed02daf7a..d5d95519da 100644 --- a/src/Base/ParameterPy.cpp +++ b/src/Base/ParameterPy.cpp @@ -341,7 +341,7 @@ Py::Object ParameterGrpPy::setInt(const Py::Tuple& args) throw Py::Exception(); _cParamGrp->SetInt(pstr,Int); - return Py::None(); + return Py::None(); } Py::Object ParameterGrpPy::getInt(const Py::Tuple& args) @@ -420,7 +420,7 @@ Py::Object ParameterGrpPy::setFloat(const Py::Tuple& args) throw Py::Exception(); _cParamGrp->SetFloat(pstr,Float); - return Py::None(); + return Py::None(); } Py::Object ParameterGrpPy::getFloat(const Py::Tuple& args) @@ -456,7 +456,7 @@ Py::Object ParameterGrpPy::setString(const Py::Tuple& args) throw Py::Exception(); _cParamGrp->SetASCII(pstr,str); - return Py::None(); + return Py::None(); } Py::Object ParameterGrpPy::getString(const Py::Tuple& args) diff --git a/src/Base/Persistence.cpp b/src/Base/Persistence.cpp index 9829ebbbcb..7122cc394b 100644 --- a/src/Base/Persistence.cpp +++ b/src/Base/Persistence.cpp @@ -101,7 +101,7 @@ std::string Persistence::encodeAttribute(const std::string& str) void Persistence::dumpToStream(std::ostream& stream, int compression) { - //we need to close the zipstream to get a good result, the only way to do this is to delete the ZipWriter. + //we need to close the zipstream to get a good result, the only way to do this is to delete the ZipWriter. //Hence the scope... { //create the writer diff --git a/src/Base/PersistencePyImp.cpp b/src/Base/PersistencePyImp.cpp index ab3755da5a..9cfd3b799b 100644 --- a/src/Base/PersistencePyImp.cpp +++ b/src/Base/PersistencePyImp.cpp @@ -149,6 +149,6 @@ PyObject *PersistencePy::getCustomAttributes(const char*) const int PersistencePy::setCustomAttributes(const char*,PyObject*) { - return 0; + return 0; } diff --git a/src/Base/Placement.h b/src/Base/Placement.h index 268e296f22..39b6920252 100644 --- a/src/Base/Placement.h +++ b/src/Base/Placement.h @@ -89,6 +89,6 @@ protected: } // namespace Base -#endif // BASE_PLACEMENT_H +#endif // BASE_PLACEMENT_H diff --git a/src/Base/PlacementPyImp.cpp b/src/Base/PlacementPyImp.cpp index 0a0d431b17..bdf8789d67 100644 --- a/src/Base/PlacementPyImp.cpp +++ b/src/Base/PlacementPyImp.cpp @@ -54,7 +54,7 @@ std::string PlacementPy::representation(void) const PyObject *PlacementPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of PlacementPy and the Twin object + // create a new instance of PlacementPy and the Twin object return new PlacementPy(new Placement); } @@ -340,7 +340,7 @@ PyObject *PlacementPy::getCustomAttributes(const char* attr) const int PlacementPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } PyObject* PlacementPy::number_multiply_handler(PyObject *self, PyObject *other) diff --git a/src/Base/PreCompiled.h b/src/Base/PreCompiled.h index 8de6fe3b9c..ddef76cb84 100644 --- a/src/Base/PreCompiled.h +++ b/src/Base/PreCompiled.h @@ -46,14 +46,16 @@ #ifdef FC_OS_WIN32 #include #define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX +#endif #include #include #include #include #endif -// STL +// STL #include #include #include diff --git a/src/Base/PyExport.cpp b/src/Base/PyExport.cpp index 55c161b9f1..ee5c2633c0 100644 --- a/src/Base/PyExport.cpp +++ b/src/Base/PyExport.cpp @@ -1,12 +1,5 @@ -/** \file PyExport.cpp - * \brief implementation of the python export facility - * \author $Author: wmayer $ - * \version $Revision: 2.2 $ - * \date $Date: 2006/01/24 14:26:42 $ - */ - /*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -17,17 +10,23 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * ***************************************************************************/ +/** \file PyExport.cpp + * \brief implementation of the python export facility + * \author $Author: wmayer $ + * \version $Revision: 2.2 $ + * \date $Date: 2006/01/24 14:26:42 $ + */ #include "PreCompiled.h" @@ -38,4 +37,4 @@ #include "PyExport.h" #include "PyObjectBase.h" -using namespace Base; +using namespace Base; diff --git a/src/Base/PyObjectBase.cpp b/src/Base/PyObjectBase.cpp index 02952e14da..a5967c60ac 100644 --- a/src/Base/PyObjectBase.cpp +++ b/src/Base/PyObjectBase.cpp @@ -53,7 +53,7 @@ PyObjectBase::PyObjectBase(void* p,PyTypeObject *T) } /// destructor -PyObjectBase::~PyObjectBase() +PyObjectBase::~PyObjectBase() { PyGILStateLocker lock; #ifdef FC_LOGPYOBJECTS @@ -66,8 +66,8 @@ PyObjectBase::~PyObjectBase() * PyObjectBase Type -- Every class, even the abstract one should have a Type ------------------------------*/ -/** \brief - * To prevent subclasses of PyTypeObject to be subclassed in Python we should remove +/** \brief + * To prevent subclasses of PyTypeObject to be subclassed in Python we should remove * the Py_TPFLAGS_BASETYPE flag. For example, the classes App::VectorPy and App::MatrixPy * have removed this flag and its Python proxies App.Vector and App.Matrix cannot be subclassed. * In case we want to allow to derive from subclasses of PyTypeObject in Python @@ -272,8 +272,8 @@ int PyObjectBase::__setattro(PyObject *obj, PyObject *attro, PyObject *value) PyObject *PyObjectBase::_getattr(const char *attr) { if (streq(attr, "__class__")) { - // Note: We must return the type object here, - // so that our own types feel as really Python objects + // Note: We must return the type object here, + // so that our own types feel as really Python objects Py_INCREF(Py_TYPE(this)); return (PyObject *)(Py_TYPE(this)); } diff --git a/src/Base/PyObjectBase.h b/src/Base/PyObjectBase.h index 324348dbe0..890ddf2a01 100644 --- a/src/Base/PyObjectBase.h +++ b/src/Base/PyObjectBase.h @@ -60,8 +60,8 @@ /** Python static class macro for definition - * sets up a static function entry in a class inheriting - * from PyObjectBase. Its a pure convenience macro. You can also do + * sets up a static function entry in a class inheriting + * from PyObjectBase. It's a pure convenience macro. You can also do * it by hand if you want. It looks like that: * \code * static PyObject* X (PyObject *self,PyObject *args,PyObject *kwd); @@ -80,7 +80,7 @@ * \code * PyObject* CLASS::SFUNC (PyObject *self,PyObject *args,PyObject *kwd) * \endcode - * see PYFUNCDEF_S for details + * see PYFUNCDEF_S for details * @param CLASS is the class in which the macro take place. * @param SFUNC is the object method get implemented * @see PYFUNCDEF_S @@ -89,7 +89,7 @@ #define PYFUNCIMP_S(CLASS,SFUNC) PyObject* CLASS::SFUNC (PyObject *self,PyObject *args,PyObject *kwd) -/** Macro for initialization function of Python modules. +/** Macro for initialization function of Python modules. */ #if PY_MAJOR_VERSION >= 3 # define PyMOD_INIT_FUNC(name) PyMODINIT_FUNC PyInit_##name(void) @@ -128,7 +128,7 @@ inline int streq(const char *A, const char *B) // define "streq" inline void Assert(int expr, char *msg) // C++ assert { - if (!expr) + if (!expr) { fprintf(stderr, "%s\n", msg); exit(-1); @@ -174,7 +174,7 @@ namespace Base /** The PyObjectBase class, exports the class as a python type * PyObjectBase is the base class for all C++ classes which - * need to get exported into the python namespace. This class is + * need to get exported into the python namespace. This class is * very important because nearly all important classes in FreeCAD * are visible in python for macro recording and automation purpose. * The class App::Document is a good expample for an exported class. @@ -191,9 +191,9 @@ namespace Base * @see Py_Return * @see Py_Error * @see Py_Try - * @see Py_Assert + * @see Py_Assert */ -class BaseExport PyObjectBase : public PyObject +class BaseExport PyObjectBase : public PyObject { /** Py_Header struct from python.h. * Every PyObjectBase object is also a python object. So you can use @@ -217,7 +217,7 @@ protected: _pcTwinPointer = ptr; } -public: +public: /** Constructor * Sets the Type of the object (for inheritance) and decrease the * the reference count of the PyObject. @@ -228,7 +228,7 @@ public: { delete ((PyObjectBase *) P); } /// incref method wrapper (see python extending manual) PyObjectBase* IncRef(void) {Py_INCREF(this);return this;} - /// decref method wrapper (see python extending manual) + /// decref method wrapper (see python extending manual) PyObjectBase* DecRef(void) {Py_DECREF(this);return this;} /** GetAttribute implementation @@ -237,7 +237,7 @@ public: * this method. * You have to call the method of the base class. * Note: if you reimplement _gettattr() in a inheriting class you - * need to call the method of the base class! Otherwise even the + * need to call the method of the base class! Otherwise even the * methods of the object will disappear! */ virtual PyObject *_getattr(const char *attr); @@ -251,7 +251,7 @@ public: * You have to call the method of the base class. */ virtual int _setattr(const char *attro, PyObject *value); // _setattr method - /// static wrapper for pythons _setattro(). // This should be the entry in Type. + /// static wrapper for pythons _setattro(). // This should be the entry in Type. static int __setattro(PyObject *PyObj, PyObject *attro, PyObject *value); /** _repr method @@ -292,7 +292,7 @@ public: return ((PyObjectBase*) self)->PyInit(args, kwd); } - void setInvalid() { + void setInvalid() { // first bit is not set, i.e. invalid StatusBits.reset(Valid); clearAttributes(); @@ -353,7 +353,7 @@ private: /** Python dynamic class macro for definition - * sets up a static/dynamic function entry in a class inheriting + * sets up a static/dynamic function entry in a class inheriting * from PyObjectBase. Its a pure convenience macro. You can also do * it by hand if you want. It looks like that: * \code @@ -362,7 +362,7 @@ private: * {return ((FCPyParametrGrp*)self)->PyGetGrp(args);}; * \endcode * first the method is defined which have the functionality then the - * static wrapper is used to provide a callback for python. The call + * static wrapper is used to provide a callback for python. The call * is simply mapped to the method. * @param CLASS is the class in which the macro take place. * @param DFUNC is the object method get defined and called @@ -397,7 +397,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){ * PyMethodDef DocTypeStdPy::Methods[] = { * {"AddFeature", (PyCFunction) sAddFeature, Py_NEWARGS}, * {"RemoveFeature", (PyCFunction) sRemoveFeature, Py_NEWARGS}, - * {NULL, NULL} + * {NULL, NULL} * }; * \endcode * instead of: @@ -405,10 +405,10 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){ * PyMethodDef DocTypeStdPy::Methods[] = { * PYMETHODEDEF(AddFeature) * PYMETHODEDEF(RemoveFeature) - * {NULL, NULL} + * {NULL, NULL} * }; * \endcode - * see PYFUNCDEF_D for details + * see PYFUNCDEF_D for details * @param FUNC is the object method get defined * @see PYFUNCDEF_D * @see PyObjectBase @@ -429,9 +429,9 @@ BaseExport extern PyObject* BaseExceptionFreeCADAbort; * PYFUNCIMP_D(DocTypeStdPy,AddFeature) * { * char *pstr; - * if (!PyArg_ParseTuple(args, "s", &pstr)) // convert args: Python->C - * return NULL; // NULL triggers exception - * + * if (!PyArg_ParseTuple(args, "s", &pstr)) // convert args: Python->C + * return NULL; // NULL triggers exception + * * try { * Feature *pcFtr = _pcDocTypeStd->AddFeature(pstr); * }catch(...) \ @@ -445,20 +445,20 @@ BaseExport extern PyObject* BaseExceptionFreeCADAbort; * PYFUNCIMP_D(DocTypeStdPy,AddFeature) * { * char *pstr; - * if (!PyArg_ParseTuple(args, "s", &pstr)) // convert args: Python->C - * return NULL; // NULL triggers exception - * + * if (!PyArg_ParseTuple(args, "s", &pstr)) // convert args: Python->C + * return NULL; // NULL triggers exception + * * PY_TRY { * Feature *pcFtr = _pcDocTypeStd->AddFeature(pstr); * }PY_CATCH; * } * \endcode - * this catch maps all of the FreeCAD standard exception to a clear output for the + * this catch maps all of the FreeCAD standard exception to a clear output for the * Python exception. * @see PYMETHODEDEF * @see PyObjectBase */ -#define PY_TRY try +#define PY_TRY try #define __PY_CATCH(R) \ catch(Base::AbortException &e) \ @@ -487,8 +487,8 @@ BaseExport extern PyObject* BaseExceptionFreeCADAbort; _Py_Error(R,Base::BaseExceptionFreeCADError,e); \ } \ -#ifndef DONT_CATCH_CXX_EXCEPTIONS -/// see docu of PY_TRY +#ifndef DONT_CATCH_CXX_EXCEPTIONS +/// see docu of PY_TRY # define _PY_CATCH(R) \ __PY_CATCH(R) \ catch(...) \ @@ -497,13 +497,13 @@ BaseExport extern PyObject* BaseExceptionFreeCADAbort; } #else -/// see docu of PY_TRY +/// see docu of PY_TRY # define _PY_CATCH(R) __PY_CATCH(R) #endif // DONT_CATCH_CXX_EXCEPTIONS #define PY_CATCH _PY_CATCH(return(NULL)) -/** Python helper class +/** Python helper class * This class encapsulate the Decoding of UTF8 to a python object. * Including exception handling. */ diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index cf221c562c..578359bc78 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -386,7 +386,7 @@ Quantity Quantity::Gon (360.0/400.0 ,Unit(0,0,0,0,0,0,0,1)); // g // === Parser & Scanner stuff =============================================== -// include the Scanner and the Parser for the Quantitys +// include the Scanner and the Parser for the 'Quantity's Quantity QuantResult; @@ -396,20 +396,20 @@ double num_change(char* yytext,char dez_delim,char grp_delim) double ret_val; char temp[40]; int i = 0; - for (char* c=yytext;*c!='\0';c++){ + for (char* c=yytext;*c!='\0';c++){ // skip group delimiter if (*c==grp_delim) continue; // check for a dez delimiter other then dot if (*c==dez_delim && dez_delim !='.') temp[i++] = '.'; else - temp[i++] = *c; + temp[i++] = *c; // check buffer overflow if (i>39) return 0.0; } temp[i] = '\0'; - - ret_val = atof( temp ); + + ret_val = atof( temp ); return ret_val; } diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h index 487d8ad0f4..d5c661c766 100644 --- a/src/Base/Quantity.h +++ b/src/Base/Quantity.h @@ -55,7 +55,7 @@ struct BaseExport QuantityFormat { int precision; int denominator; - // Default denominator of minimum fractional inch. Only used in certain + // Default denominator of minimum fractional inch. Only used in certain // schemas. static int defaultDenominator; // i.e 8 for 1/8" diff --git a/src/Base/QuantityLexer.c b/src/Base/QuantityLexer.c index 1fe5732c5a..4e28a775e3 100644 --- a/src/Base/QuantityLexer.c +++ b/src/Base/QuantityLexer.c @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2013 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 * + * * + ***************************************************************************/ + #line 1 "QuantityLexer.c" #line 3 "QuantityLexer.c" @@ -34,7 +56,7 @@ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. + * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 @@ -51,7 +73,7 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; @@ -162,10 +184,10 @@ extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) - + /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ @@ -659,7 +681,7 @@ char *yytext; */ #include #endif - + #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif @@ -708,7 +730,7 @@ extern int yywrap ( void ); #endif #ifndef YY_NO_UNPUT - + #endif #ifndef yytext_ptr @@ -835,7 +857,7 @@ YY_DECL yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; - + if ( !(yy_init) ) { (yy_init) = 1; @@ -1058,7 +1080,7 @@ yylval = Quantity::Gram; return UNIT; // gram case 28: YY_RULE_SETUP #line 74 "QuantityParser.l" -yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) +yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) YY_BREAK case 29: YY_RULE_SETUP @@ -1078,7 +1100,7 @@ yylval = Quantity::Minute; return UNIT; // minute case 32: YY_RULE_SETUP #line 79 "QuantityParser.l" -yylval = Quantity::Hour; return UNIT; // hour +yylval = Quantity::Hour; return UNIT; // hour YY_BREAK case 33: YY_RULE_SETUP @@ -1198,7 +1220,7 @@ yylval = Quantity::Pound; return UNIT; // pound case 56: YY_RULE_SETUP #line 110 "QuantityParser.l" -yylval = Quantity::Pound; return UNIT; // pound +yylval = Quantity::Pound; return UNIT; // pound YY_BREAK case 57: YY_RULE_SETUP @@ -1513,12 +1535,12 @@ yylval = Quantity::MegaElectronVolt; return UNIT; case 119: YY_RULE_SETUP #line 190 "QuantityParser.l" -yylval = Quantity::Calorie; return UNIT; // 1 cal = 4.1868 J +yylval = Quantity::Calorie; return UNIT; // 1 cal = 4.1868 J YY_BREAK case 120: YY_RULE_SETUP #line 191 "QuantityParser.l" -yylval = Quantity::KiloCalorie; return UNIT; +yylval = Quantity::KiloCalorie; return UNIT; YY_BREAK case 121: YY_RULE_SETUP @@ -1553,12 +1575,12 @@ yylval = Quantity::AngMinute; return UNIT; // minute(Angular) case 127: YY_RULE_SETUP #line 199 "QuantityParser.l" -yylval = Quantity::AngSecond; return UNIT; // second(Angular) +yylval = Quantity::AngSecond; return UNIT; // second(Angular) YY_BREAK case 128: YY_RULE_SETUP #line 200 "QuantityParser.l" -yylval = Quantity::AngSecond; return UNIT; // second(Angular) +yylval = Quantity::AngSecond; return UNIT; // second(Angular) YY_BREAK case 129: YY_RULE_SETUP @@ -1970,7 +1992,7 @@ static int yy_get_next_buffer (void) { yy_state_type yy_current_state; char *yy_cp; - + yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) @@ -2034,7 +2056,7 @@ static int yy_get_next_buffer (void) { int c; - + *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) @@ -2101,12 +2123,12 @@ static int yy_get_next_buffer (void) /** Immediately switch to a different input stream. * @param input_file A readable stream. - * + * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { - + if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = @@ -2119,11 +2141,11 @@ static int yy_get_next_buffer (void) /** Switch to a different input buffer. * @param new_buffer The new input buffer. - * + * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { - + /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); @@ -2163,13 +2185,13 @@ static void yy_load_buffer_state (void) /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * + * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; - + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -2192,11 +2214,11 @@ static void yy_load_buffer_state (void) /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() - * + * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { - + if ( ! b ) return; @@ -2217,7 +2239,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - + yy_flush_buffer( b ); b->yy_input_file = file; @@ -2233,13 +2255,13 @@ static void yy_load_buffer_state (void) } b->yy_is_interactive = 0; - + errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * + * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { @@ -2268,7 +2290,7 @@ static void yy_load_buffer_state (void) * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. - * + * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { @@ -2298,7 +2320,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. - * + * */ void yypop_buffer_state (void) { @@ -2322,7 +2344,7 @@ void yypop_buffer_state (void) static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; - + if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this @@ -2365,13 +2387,13 @@ static void yyensure_buffer_stack (void) /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer - * + * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; - + if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) @@ -2400,14 +2422,14 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan - * + * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - + return yy_scan_bytes( yystr, (int) strlen(yystr) ); } @@ -2415,7 +2437,7 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * + * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) @@ -2424,7 +2446,7 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) char *buf; yy_size_t n; int i; - + /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); @@ -2478,16 +2500,16 @@ static void yynoreturn yy_fatal_error (const char* msg ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. - * + * */ int yyget_lineno (void) { - + return yylineno; } /** Get the input stream. - * + * */ FILE *yyget_in (void) { @@ -2495,7 +2517,7 @@ FILE *yyget_in (void) } /** Get the output stream. - * + * */ FILE *yyget_out (void) { @@ -2503,7 +2525,7 @@ FILE *yyget_out (void) } /** Get the length of the current token. - * + * */ int yyget_leng (void) { @@ -2511,7 +2533,7 @@ int yyget_leng (void) } /** Get the current token. - * + * */ char *yyget_text (void) @@ -2521,18 +2543,18 @@ char *yyget_text (void) /** Set the current line number. * @param _line_number line number - * + * */ void yyset_lineno (int _line_number ) { - + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. - * + * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) @@ -2586,7 +2608,7 @@ static int yy_init_globals (void) /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { - + /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); @@ -2612,7 +2634,7 @@ int yylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n ) { - + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; @@ -2637,7 +2659,7 @@ void *yyalloc (yy_size_t size ) void *yyrealloc (void * ptr, yy_size_t size ) { - + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter diff --git a/src/Base/QuantityParser.l b/src/Base/QuantityParser.l index 25af9ac232..67d835b194 100644 --- a/src/Base/QuantityParser.l +++ b/src/Base/QuantityParser.l @@ -1,6 +1,25 @@ %{ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel * + * * + * 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 * + * * + ***************************************************************************/ + /* Lexer for the FreeCAD Units language */ -/* (c) 2013 Juergen Riegel LGPL */ /* use this file to generate the file 'QuantityLexer.c' using the program flex * the command for this operation is: @@ -20,11 +39,11 @@ /* the manual says "somewhat more optimized" */ %option batch -%option never-interactive +%option never-interactive /* no support for include files is planned */ -%option noyywrap nounput +%option noyywrap nounput DIGIT [0-9] ID [a-z][a-z0-9]* @@ -71,12 +90,12 @@ CGRP '\,'[0-9][0-9][0-9] "\xC2\xB5g" yylval = Quantity::MicroGram; return UNIT; // micro gram "mg" yylval = Quantity::MilliGram; return UNIT; // milli gram "g" yylval = Quantity::Gram; return UNIT; // gram -"kg" yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) +"kg" yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass) "t" yylval = Quantity::Ton; return UNIT; // Metric Tonne "s" yylval = Quantity::Second; return UNIT; // second (internal standard time) "min" yylval = Quantity::Minute; return UNIT; // minute -"h" yylval = Quantity::Hour; return UNIT; // hour +"h" yylval = Quantity::Hour; return UNIT; // hour "A" yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current) "mA" yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere @@ -107,7 +126,7 @@ CGRP '\,'[0-9][0-9][0-9] "cft" yylval = Quantity::CubicFoot; return UNIT; // cubic foot "lb" yylval = Quantity::Pound; return UNIT; // pound -"lbm" yylval = Quantity::Pound; return UNIT; // pound +"lbm" yylval = Quantity::Pound; return UNIT; // pound "oz" yylval = Quantity::Ounce; return UNIT; // ounce "st" yylval = Quantity::Stone; return UNIT; // Stone "cwt" yylval = Quantity::Hundredweights; return UNIT; // hundredweights @@ -187,8 +206,8 @@ CGRP '\,'[0-9][0-9][0-9] "eV" yylval = Quantity::ElectronVolt; return UNIT; // 1 eV = 1.602176634e-19 J "keV" yylval = Quantity::KiloElectronVolt; return UNIT; "MeV" yylval = Quantity::MegaElectronVolt; return UNIT; -"cal" yylval = Quantity::Calorie; return UNIT; // 1 cal = 4.1868 J -"kcal" yylval = Quantity::KiloCalorie; return UNIT; +"cal" yylval = Quantity::Calorie; return UNIT; // 1 cal = 4.1868 J +"kcal" yylval = Quantity::KiloCalorie; return UNIT; "\xC2\xB0" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) "deg" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle) @@ -196,8 +215,8 @@ CGRP '\,'[0-9][0-9][0-9] "gon" yylval = Quantity::Gon; return UNIT; // gon "M" yylval = Quantity::AngMinute; return UNIT; // minute(Angular) "\xE2\x80\xB2" yylval = Quantity::AngMinute; return UNIT; // minute(Angular) -"AS" yylval = Quantity::AngSecond; return UNIT; // second(Angular) -"\xE2\x80\xB3" yylval = Quantity::AngSecond; return UNIT; // second(Angular) +"AS" yylval = Quantity::AngSecond; return UNIT; // second(Angular) +"\xE2\x80\xB3" yylval = Quantity::AngSecond; return UNIT; // second(Angular) "1" yylval = Quantity(1.0); return ONE; {DIGIT}+"."?{DIGIT}*{EXPO}? { yylval = Quantity(num_change(yytext,'.',','));return NUM; } @@ -208,7 +227,7 @@ CGRP '\,'[0-9][0-9][0-9] "pi" {yylval = Quantity(M_PI) ; return NUM;} // constant pi "e" {yylval = Quantity(M_E) ; return NUM;} // constant e - + "acos" return ACOS; "asin" return ASIN; "atan" return ATAN; diff --git a/src/Base/QuantityParser.y b/src/Base/QuantityParser.y index 4fd781547d..906b9cab6f 100644 --- a/src/Base/QuantityParser.y +++ b/src/Base/QuantityParser.y @@ -1,6 +1,24 @@ -/* Parser for the FreeCAD Units language */ -/* (c) 2013 Juergen Riegel LGPL */ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel * + * * + * 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 * + * * + ***************************************************************************/ +//* Parser for the FreeCAD Units language */ /* Represents the many different ways we can access our data */ %{ diff --git a/src/Base/QuantityPyImp.cpp b/src/Base/QuantityPyImp.cpp index cf3079f6ed..60266fd737 100644 --- a/src/Base/QuantityPyImp.cpp +++ b/src/Base/QuantityPyImp.cpp @@ -39,7 +39,7 @@ std::string QuantityPy::representation(void) const #if 0 //ret.precision(getQuantityPtr()->getFormat().precision); //ret.setf(std::ios::fixed, std::ios::floatfield); - ret << getQuantityPtr()->getValue() << " "; + ret << getQuantityPtr()->getValue() << " "; ret << getQuantityPtr()->getUnit().getString().toUtf8().constData(); #else double val= getQuantityPtr()->getValue(); @@ -76,7 +76,7 @@ PyObject* QuantityPy::toStr(PyObject* args) PyObject *QuantityPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of QuantityPy and the Twin object + // create a new instance of QuantityPy and the Twin object return new QuantityPy(new Quantity); } @@ -331,7 +331,7 @@ static Quantity &pyToQuantity(Quantity &q, PyObject *pyobj) { else if (PyLong_Check(pyobj)) q = Quantity(PyLong_AsLong(pyobj)); else { - PyErr_Format(PyExc_TypeError,"Cannot convert %s to Quantity",Py_TYPE(pyobj)->tp_name); + PyErr_Format(PyExc_TypeError,"Cannot convert %s to Quantity",Py_TYPE(pyobj)->tp_name); throw Py::Exception(); } return q; @@ -471,7 +471,7 @@ PyObject * QuantityPy::number_power_handler (PyObject *self, PyObject *other, Py Base::Quantity *a = static_cast(self) ->getQuantityPtr(); Base::Quantity *b = static_cast(other)->getQuantityPtr(); Base::Quantity q(a->pow(*b)); // to prevent memory leak in case of exception - + return new QuantityPy(new Quantity(q)); } else if (PyFloat_Check(other)) { @@ -695,7 +695,7 @@ PyObject *QuantityPy::getCustomAttributes(const char* attr) const int QuantityPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } PyObject * QuantityPy::number_invert_handler (PyObject* /*self*/) diff --git a/src/Base/Reader.cpp b/src/Base/Reader.cpp index 6fa9e3733e..92b094b509 100644 --- a/src/Base/Reader.cpp +++ b/src/Base/Reader.cpp @@ -264,8 +264,8 @@ int Base::XMLReader::level() const { void Base::XMLReader::readEndElement(const char* ElementName, int level) { // if we are already at the end of the current element - if (ReadType == EndElement - && ElementName + if (ReadType == EndElement + && ElementName && LocalName == ElementName && (level<0 || level==Level)) { @@ -281,8 +281,8 @@ void Base::XMLReader::readEndElement(const char* ElementName, int level) ok = read(); if (!ok) break; if (ReadType == EndDocument) break; - } while (ReadType != EndElement - || (ElementName + } while (ReadType != EndElement + || (ElementName && (LocalName != ElementName || (level>=0 && level!=Level)))); } diff --git a/src/Base/Rotation.cpp b/src/Base/Rotation.cpp index 4d4971a6c3..ed7d5aaa23 100644 --- a/src/Base/Rotation.cpp +++ b/src/Base/Rotation.cpp @@ -124,7 +124,7 @@ void Rotation::evaluateVector() if ((this->quat[3] > -1.0) && (this->quat[3] < 1.0)) { double rfAngle = acos(this->quat[3]) * 2.0; double scale = sin(rfAngle / 2.0); - // Get a normalized vector + // Get a normalized vector double l = this->_axis.Length(); if (l < Base::Vector3d::epsilon()) l = 1; this->_axis.x = this->quat[0] * l / scale; @@ -274,7 +274,7 @@ void Rotation::setValue(const Vector3d & rotateFrom, const Vector3d & rotateTo) Vector3d u(rotateFrom); u.Normalize(); Vector3d v(rotateTo); v.Normalize(); - // The vector from x to is the rotation axis because it's the normal of the plane defined by (0,u,v) + // The vector from x to is the rotation axis because it's the normal of the plane defined by (0,u,v) const double dot = u * v; Vector3d w = u % v; const double wlen = w.Length(); diff --git a/src/Base/RotationPyImp.cpp b/src/Base/RotationPyImp.cpp index c67567884c..7a8988aeb8 100644 --- a/src/Base/RotationPyImp.cpp +++ b/src/Base/RotationPyImp.cpp @@ -55,7 +55,7 @@ std::string RotationPy::representation(void) const PyObject *RotationPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of RotationPy and the Twin object + // create a new instance of RotationPy and the Twin object return new RotationPy(new Rotation); } diff --git a/src/Base/Sequencer.h b/src/Base/Sequencer.h index e5aab10666..00978c2fa5 100644 --- a/src/Base/Sequencer.h +++ b/src/Base/Sequencer.h @@ -67,10 +67,10 @@ class SequencerLauncher; * at a time. But note, that only the first instance has an effect. Any further * sequencer instance doesn't influence the total number of iteration steps. This * is simply because it's impossible to get the exact number of iteration steps - * for nested instances and thus we have either too few steps estimated then the + * for nested instances and thus we have either too few steps estimated then the * sequencer may indicate 100% but the algorithm still running or we have too many * steps estimated so that the an algorithm may stop long before the sequencer - * reaches 100%. + * reaches 100%. * * \code * try { diff --git a/src/Base/Stream.h b/src/Base/Stream.h index dcb6addcda..c779cb25a7 100644 --- a/src/Base/Stream.h +++ b/src/Base/Stream.h @@ -48,13 +48,13 @@ class BaseExport Stream { public: enum ByteOrder { BigEndian, LittleEndian }; - + ByteOrder byteOrder() const; void setByteOrder(ByteOrder); protected: Stream(); - virtual ~Stream(); + virtual ~Stream(); bool _swap; }; @@ -171,9 +171,9 @@ protected: virtual std::streamsize showmanyc(); virtual pos_type seekoff(std::streambuf::off_type off, std::ios_base::seekdir way, - std::ios_base::openmode which = + std::ios_base::openmode which = std::ios::in | std::ios::out); - virtual pos_type seekpos(std::streambuf::pos_type pos, + virtual pos_type seekpos(std::streambuf::pos_type pos, std::ios_base::openmode which = std::ios::in | std::ios::out); @@ -292,9 +292,9 @@ protected: virtual std::streamsize showmanyc(); virtual pos_type seekoff(std::streambuf::off_type off, std::ios_base::seekdir way, - std::ios_base::openmode which = + std::ios_base::openmode which = std::ios::in | std::ios::out); - virtual pos_type seekpos(std::streambuf::pos_type pos, + virtual pos_type seekpos(std::streambuf::pos_type pos, std::ios_base::openmode which = std::ios::in | std::ios::out); @@ -340,7 +340,7 @@ public: class ifstream : public std::ifstream { public: - ifstream(const FileInfo& fi, ios_base::openmode mode = + ifstream(const FileInfo& fi, ios_base::openmode mode = std::ios::in) #ifdef _MSC_VER : std::ifstream(fi.toStdWString().c_str(), mode) diff --git a/src/Base/Swap.h b/src/Base/Swap.h index 3a5db0f646..aff92bb1d7 100644 --- a/src/Base/Swap.h +++ b/src/Base/Swap.h @@ -24,8 +24,8 @@ #ifndef BASE_SWAP_H #define BASE_SWAP_H -#define LOW_ENDIAN (unsigned short) 0x4949 -#define HIGH_ENDIAN (unsigned short) 0x4D4D +#define LOW_ENDIAN (unsigned short) 0x4949 +#define HIGH_ENDIAN (unsigned short) 0x4D4D namespace Base { @@ -35,7 +35,7 @@ namespace Base { * dependent on the architecture. */ -/** Returns machine type (low endian, high endian ) */ +/** Returns machine type (low endian, high endian) */ unsigned short SwapOrder (void); void SwapVar (char&); @@ -61,4 +61,4 @@ void SwapEndian(T& v) } // namespace Base -#endif // BASE_SWAP_H +#endif // BASE_SWAP_H diff --git a/src/Base/TimeInfo.h b/src/Base/TimeInfo.h index 1b35abc85c..8c0d9ca1c3 100644 --- a/src/Base/TimeInfo.h +++ b/src/Base/TimeInfo.h @@ -63,10 +63,10 @@ public: void setCurrent(void); void setTime_t (uint64_t seconds); - uint64_t getSeconds(void) const; - unsigned short getMiliseconds(void) const; + uint64_t getSeconds(void) const; + unsigned short getMiliseconds(void) const; - //void operator = (const TimeInfo &time); + //void operator = (const TimeInfo &time); bool operator == (const TimeInfo &time) const; bool operator != (const TimeInfo &time) const; @@ -98,7 +98,7 @@ protected: inline unsigned short TimeInfo::getMiliseconds(void) const { return timebuffer.millitm; - } + } inline bool TimeInfo::operator != (const TimeInfo &time) const @@ -107,7 +107,7 @@ TimeInfo::operator != (const TimeInfo &time) const } //inline void -//TimeInfo::operator = (const TimeInfo &time) +//TimeInfo::operator = (const TimeInfo &time) //{ //timebuffer = time.timebuffer; //} diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 1decb4517d..1dfabd1ba2 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -248,7 +248,7 @@ template class BitsetLocker { public: - BitsetLocker(T& flags, std::size_t flag, bool value = true) + BitsetLocker(T& flags, std::size_t flag, bool value = true) : flags(flags), flag(flag) { oldValue = flags.test(flag); flags.set(flag,value); } ~BitsetLocker() diff --git a/src/Base/Tools2D.cpp b/src/Base/Tools2D.cpp index b62aeb4a18..4ef8768f58 100644 --- a/src/Base/Tools2D.cpp +++ b/src/Base/Tools2D.cpp @@ -36,9 +36,9 @@ using namespace Base; double Vector2d::GetAngle (const Vector2d &rclVect) const { double fDivid, fNum; - + fDivid = Length() * rclVect.Length(); - + if ((fDivid < -1e-10) || (fDivid > 1e-10)) { fNum = (*this * rclVect) / fDivid; @@ -60,7 +60,7 @@ void Vector2d::ProjectToLine (const Vector2d &rclPt, const Vector2d &rclLine) double t1 = (rclPt * rclLine) / l; Vector2d clNormal = rclLine; clNormal.Normalize(); - clNormal.Scale(t1); + clNormal.Scale(t1); *this = clNormal; } @@ -72,33 +72,33 @@ bool BoundBox2d::Intersect(const Line2d &rclLine) const Line2d clThisLine; Vector2d clVct; - // first line + // first line clThisLine.clV1.x = MinX; clThisLine.clV1.y = MinY; clThisLine.clV2.x = MaxX; clThisLine.clV2.y = MinY; - if (clThisLine.IntersectAndContain (rclLine, clVct)) + if (clThisLine.IntersectAndContain (rclLine, clVct)) return true; // second line clThisLine.clV1 = clThisLine.clV2; clThisLine.clV2.x = MaxX; clThisLine.clV2.y = MaxY; - if (clThisLine.IntersectAndContain (rclLine, clVct)) + if (clThisLine.IntersectAndContain (rclLine, clVct)) return true; // third line clThisLine.clV1 = clThisLine.clV2; clThisLine.clV2.x = MinX; clThisLine.clV2.y = MaxY; - if (clThisLine.IntersectAndContain (rclLine, clVct)) + if (clThisLine.IntersectAndContain (rclLine, clVct)) return true; // fourth line clThisLine.clV1 = clThisLine.clV2; clThisLine.clV2.x = MinX; clThisLine.clV2.y = MinY; - if (clThisLine.IntersectAndContain (rclLine, clVct)) + if (clThisLine.IntersectAndContain (rclLine, clVct)) return true; return false; @@ -131,7 +131,7 @@ bool BoundBox2d::Intersect(const Polygon2d &rclPoly) const { unsigned long i; Line2d clLine; - + // points contained in boundbox for (i = 0; i < rclPoly.GetCtVectors(); i++) if (Contains (rclPoly[i])) @@ -143,7 +143,7 @@ bool BoundBox2d::Intersect(const Polygon2d &rclPoly) const rclPoly.Contains (Vector2d (MaxX, MaxY)) || rclPoly.Contains (Vector2d (MinX, MaxY))) return true; /***** RETURN INTERSECTION *********/ - + // test intersections of bound-lines if (rclPoly.GetCtVectors() < 3) return false; for (i = 0; i < rclPoly.GetCtVectors(); i++) @@ -181,7 +181,7 @@ BoundBox2d Line2d::CalcBoundBox (void) const bool Line2d::Intersect (const Line2d& rclLine, Vector2d &rclV) const { double m1, m2, b1, b2; - + // calc coefficients if (fabs (clV2.x - clV1.x) > 1e-10) m1 = (clV2.y - clV1.y) / (clV2.x - clV1.x); @@ -193,7 +193,7 @@ bool Line2d::Intersect (const Line2d& rclLine, Vector2d &rclV) const m2 = FLOAT_MAX; if (m1 == m2) /****** RETURN ERR (parallel lines) *************/ return false; - + b1 = clV1.y - m1 * clV1.x; b2 = rclLine.clV1.y - m2 * rclLine.clV1.x; @@ -214,7 +214,7 @@ bool Line2d::Intersect (const Line2d& rclLine, Vector2d &rclV) const rclV.x = (b2 - b1) / (m1 - m2); rclV.y = m1 * rclV.x + b1; } - + return true; /*** RETURN true (intersection) **********/ } @@ -269,7 +269,7 @@ BoundBox2d Polygon2d::CalcBoundBox (void) const clBB.MaxX = std::max (clBB.MaxX, _aclVct[i].x); clBB.MaxY = std::max (clBB.MaxY, _aclVct[i].y); } - return clBB; + return clBB; } static short _CalcTorsion (double *pfLine, double fX, double fY) @@ -309,7 +309,7 @@ static short _CalcTorsion (double *pfLine, double fX, double fY) bool Polygon2d::Contains (const Vector2d &rclV) const { - // Ermittelt mit dem Verfahren der Windungszahl, ob ein Punkt innerhalb + // Ermittelt mit dem Verfahren der Windungszahl, ob ein Punkt innerhalb // eines Polygonzugs enthalten ist. // Summe aller Windungszahlen gibt an, ob ja oder nein. double pfTmp[4]; @@ -379,7 +379,7 @@ void Polygon2d::Intersect (const Polygon2d &rclPolygon, std::list &rc { clTrimPt2 = At((i + 1) % ulTrimCt); Line2d clToTrimLine(At(i), clTrimPt2); - + Vector2d clV; if (clLine.IntersectAndContain(clToTrimLine, clV) == true) { @@ -407,7 +407,7 @@ void Polygon2d::Intersect (const Polygon2d &rclPolygon, std::list &rc clResultPolygon.Add(clPtIS); bInner = true; } - } + } if (bInner == true) // add line end point if inside clResultPolygon.Add(clPt1); @@ -417,7 +417,7 @@ void Polygon2d::Intersect (const Polygon2d &rclPolygon, std::list &rc if (bInner == true) clResultPolygon.Add(clPt1); } - } + } // add last segment if (clResultPolygon.GetCtVectors() > 0) @@ -450,7 +450,7 @@ bool Polygon2d::Intersect (const Polygon2d &other) const { if (line.IntersectAndContain(line2, v)) return true; } - } + } return false; } diff --git a/src/Base/Tools2D.h b/src/Base/Tools2D.h index 2fd39a9c7b..cb228d10fe 100644 --- a/src/Base/Tools2D.h +++ b/src/Base/Tools2D.h @@ -100,7 +100,7 @@ class BaseExport BoundBox2d { public: double MinX, MinY, MaxX, MaxY; - + inline BoundBox2d (void); inline BoundBox2d (const BoundBox2d &rclBB); inline BoundBox2d (double fX1, double fY1, double fX2, double fY2); @@ -110,7 +110,7 @@ public: // operators inline BoundBox2d& operator= (const BoundBox2d& rclBB); inline bool operator== (const BoundBox2d& rclBB) const; - + // methods inline double Width(void) const; inline double Height(void) const; @@ -176,7 +176,7 @@ public: inline Vector2d& operator[] (size_t ulNdx) const; inline Vector2d& At (size_t ulNdx) const; inline bool Delete (size_t ulNdx); - inline void DeleteAll (void); + inline void DeleteAll (void); // misc BoundBox2d CalcBoundBox (void) const; diff --git a/src/Base/Translate.h b/src/Base/Translate.h index 08959c14ab..c77a7b28c0 100644 --- a/src/Base/Translate.h +++ b/src/Base/Translate.h @@ -19,7 +19,7 @@ * Fifth Floor, Boston, MA 02110-1301, USA * * * ***************************************************************************/ - + #ifndef BASE_TRANSLATE_H #define BASE_TRANSLATE_H @@ -42,6 +42,6 @@ private: Py::Object trNoop(const Py::Tuple& args); }; -} // namespace Base +} // namespace Base #endif // BASE_TRANSLATE_H diff --git a/src/Base/Type.cpp b/src/Base/Type.cpp index 858216691c..bd39e5cb35 100644 --- a/src/Base/Type.cpp +++ b/src/Base/Type.cpp @@ -37,7 +37,7 @@ using namespace Base; using namespace std; -struct Base::TypeData +struct Base::TypeData { TypeData(const char *theName, const Type type = Type::badType(), @@ -176,7 +176,7 @@ void Type::destruct(void) Type Type::fromName(const char *name) { std::map::const_iterator pos; - + pos = typemap.find(name); if (pos != typemap.end()) return typedata[pos->second]->type; @@ -204,7 +204,7 @@ const Type Type::getParent(void) const bool Type::isDerivedFrom(const Type type) const { - + Type temp(*this); do { if (temp == type) diff --git a/src/Base/Type.h b/src/Base/Type.h index 2f151fe317..866cdd3694 100644 --- a/src/Base/Type.h +++ b/src/Base/Type.h @@ -106,7 +106,7 @@ public: unsigned int getKey(void) const; bool isBad(void) const; - void operator = (const Type type); + void operator = (const Type type); bool operator == (const Type type) const; bool operator != (const Type type) const; @@ -150,7 +150,7 @@ Type::operator != (const Type type) const } inline void -Type::operator = (const Type type) +Type::operator = (const Type type) { this->index = type.getKey(); } diff --git a/src/Base/TypePyImp.cpp b/src/Base/TypePyImp.cpp index 9cec3ce344..cf3d5fb975 100644 --- a/src/Base/TypePyImp.cpp +++ b/src/Base/TypePyImp.cpp @@ -228,5 +228,5 @@ PyObject *TypePy::getCustomAttributes(const char* /*attr*/) const int TypePy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index bbf1f18010..2967116dda 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -146,7 +146,7 @@ Unit Unit::pow(signed char exp) const bool Unit::isEmpty(void)const { - return (this->Sig.Length == 0) + return (this->Sig.Length == 0) && (this->Sig.Mass == 0) && (this->Sig.Time == 0) && (this->Sig.ElectricCurrent == 0) @@ -158,7 +158,7 @@ bool Unit::isEmpty(void)const bool Unit::operator ==(const Unit& that) const { - return (this->Sig.Length == that.Sig.Length) + return (this->Sig.Length == that.Sig.Length) && (this->Sig.Mass == that.Sig.Mass) && (this->Sig.Time == that.Sig.Time) && (this->Sig.ElectricCurrent == that.Sig.ElectricCurrent) diff --git a/src/Base/Unit.h b/src/Base/Unit.h index d0ea6818c8..182d4d1a3c 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -83,11 +83,11 @@ public: Unit pow(signed char exp)const; //@} /// get the unit signature - const UnitSignature & getSignature(void)const {return Sig;} + const UnitSignature & getSignature(void)const {return Sig;} bool isEmpty(void)const; - + QString getString(void) const; - /// get the type as an string such as "Area", "Length" or "Pressure". + /// get the type as an string such as "Area", "Length" or "Pressure". QString getTypeString(void) const; /** Predefined Unit types. */ @@ -100,7 +100,7 @@ public: /// Angle static Unit Angle; static Unit AngleOfFriction; - + static Unit Density; static Unit Area; diff --git a/src/Base/UnitPyImp.cpp b/src/Base/UnitPyImp.cpp index 49fed19bb5..cd1f9e1fd1 100644 --- a/src/Base/UnitPyImp.cpp +++ b/src/Base/UnitPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2013 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" @@ -15,7 +36,7 @@ std::string UnitPy::representation(void) const { const UnitSignature & Sig = getUnitPtr()->getSignature(); std::stringstream ret; - ret << "Unit: "; + ret << "Unit: "; ret << getUnitPtr()->getString().toUtf8().constData() << " ("; ret << Sig.Length << ","; ret << Sig.Mass << ","; @@ -24,7 +45,7 @@ std::string UnitPy::representation(void) const ret << Sig.ThermodynamicTemperature << ","; ret << Sig.AmountOfSubstance << ","; ret << Sig.LuminousIntensity << ","; - ret << Sig.Angle << ")"; + ret << Sig.Angle << ")"; std::string type = getUnitPtr()->getTypeString().toUtf8().constData(); if (! type.empty()) ret << " [" << type << "]"; @@ -34,7 +55,7 @@ std::string UnitPy::representation(void) const PyObject *UnitPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of UnitPy and the Twin object + // create a new instance of UnitPy and the Twin object return new UnitPy(new Unit); } @@ -152,7 +173,7 @@ PyObject* UnitPy::number_multiply_handler(PyObject *self, PyObject *other) if (PyObject_TypeCheck(other, &(UnitPy::Type))) { Base::Unit *a = static_cast(self) ->getUnitPtr(); Base::Unit *b = static_cast(other)->getUnitPtr(); - + return new UnitPy(new Unit( (*a) * (*b) ) ); } else { @@ -221,7 +242,7 @@ PyObject *UnitPy::getCustomAttributes(const char* /*attr*/) const int UnitPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } PyObject * UnitPy::number_divide_handler (PyObject* /*self*/, PyObject* /*other*/) diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index fa573b006b..f87b2f03a9 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -57,7 +57,7 @@ using namespace Base; //{ // // check limits // assert(t<9); -// // returns +// // returns // return QString::fromLatin1(QuantityNames[t]); //} // === static attributes ================================================ diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 6d4c5d86fe..a6e4e1a21a 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -38,7 +38,7 @@ typedef std::unique_ptr UnitsSchemaPtr; /** * The UnitsApi */ -class BaseExport UnitsApi +class BaseExport UnitsApi { public: @@ -50,7 +50,7 @@ public: /** set Schema * set the UnitsSchema of the Application * this a represented by a class of type UnitSchema which - * defines a set of standard units for that schema and rules + * defines a set of standard units for that schema and rules * for representative strings. */ static void setSchema(UnitSystem s); @@ -73,7 +73,7 @@ public: // set the number of decimals static void setDecimals(int); - // fet the number of decimals + // get the number of decimals static int getDecimals(); /// set the application defaults //static void setDefaults(void); diff --git a/src/Base/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index 3d75f66e0b..e1a5fd1708 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -32,7 +32,7 @@ /// Here the FreeCAD includes sorted by Base,App,Gui...... #include "UnitsApi.h" #include "Quantity.h" -#include "QuantityPy.h" +#include "QuantityPy.h" @@ -57,13 +57,13 @@ PyMethodDef UnitsApi::Methods[] = { // " That means if no unit is issued the user prefs are in \n" // " charge. If one unit is used the user prefs get ignored\n" // " type can be: \n" - // " Length \n" - // " Area \n" - // " Volume \n" - // " Angle \n" + // " Length \n" + // " Area \n" + // " Volume \n" + // " Angle \n" // " TimeSpan \n" // " Velocity \n" - // " Acceleration \n" + // " Acceleration \n" // " Mass \n" // " Temperature \n" diff --git a/src/Base/UnitsSchema.h b/src/Base/UnitsSchema.h index 61477b699d..09a07d2626 100644 --- a/src/Base/UnitsSchema.h +++ b/src/Base/UnitsSchema.h @@ -48,10 +48,10 @@ enum class UnitSystem { /** The UnitSchema class - * The subclasses of this class define the stuff for a - * certain units schema. + * The subclasses of this class define the stuff for a + * certain units schema. */ -class UnitsSchema +class UnitsSchema { public: virtual ~UnitsSchema(){} diff --git a/src/Base/UnitsSchemaImperial1.cpp b/src/Base/UnitsSchemaImperial1.cpp index 235979561f..127a89c2ef 100644 --- a/src/Base/UnitsSchemaImperial1.cpp +++ b/src/Base/UnitsSchemaImperial1.cpp @@ -349,7 +349,7 @@ QString UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, d factor = 28316846.592; } else if (unit == Unit::Mass) { - unitString = QString::fromLatin1("lb"); //always lbs. + unitString = QString::fromLatin1("lb"); //always lbs. factor = 0.45359237; } else if (unit == Unit::Pressure) { diff --git a/src/Base/UnitsSchemaImperial1.h b/src/Base/UnitsSchemaImperial1.h index e95224e96f..664e160b25 100644 --- a/src/Base/UnitsSchemaImperial1.h +++ b/src/Base/UnitsSchemaImperial1.h @@ -30,7 +30,7 @@ #include "UnitsSchema.h" namespace Base { - + /** The schema class for the imperial unit system * Here are the definitions for the imperial unit system. @@ -69,7 +69,7 @@ public: }; /** The schema class for Civil Engineering in the imperial unit system - * All measurements in ft, ft^2, ft^3, ft/sec. + * All measurements in ft, ft^2, ft^3, ft/sec. * Pressure is in psi. */ class UnitsSchemaImperialCivil: public UnitsSchema diff --git a/src/Base/UnitsSchemaInternal.h b/src/Base/UnitsSchemaInternal.h index 9dafb2ec10..1998452ed9 100644 --- a/src/Base/UnitsSchemaInternal.h +++ b/src/Base/UnitsSchemaInternal.h @@ -30,7 +30,7 @@ #include "UnitsSchema.h" namespace Base { - + /** The standard units schema * Here is defined what internal (base) units FreeCAD uses. diff --git a/src/Base/UnitsSchemaMKS.h b/src/Base/UnitsSchemaMKS.h index c5606312af..4cff9d16e5 100644 --- a/src/Base/UnitsSchemaMKS.h +++ b/src/Base/UnitsSchemaMKS.h @@ -30,7 +30,7 @@ #include "UnitsSchema.h" namespace Base { - + /** * The UnitSchema class diff --git a/src/Base/Uuid.cpp b/src/Base/Uuid.cpp index 633b3b1916..8e4a525f29 100644 --- a/src/Base/Uuid.cpp +++ b/src/Base/Uuid.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2008 * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -74,19 +74,19 @@ std::string Uuid::createUuid(void) return Uuid; } -void Uuid::setValue(const char* sString) -{ - if (sString) { - QUuid uuid(QString::fromLatin1(sString)); - if (uuid.isNull()) - throw std::runtime_error("invalid uuid"); - // remove curly braces - QString id = uuid.toString(); - id = id.mid(1); - id.chop(1); - _uuid = (const char*)id.toLatin1(); - } -} +void Uuid::setValue(const char* sString) +{ + if (sString) { + QUuid uuid(QString::fromLatin1(sString)); + if (uuid.isNull()) + throw std::runtime_error("invalid uuid"); + // remove curly braces + QString id = uuid.toString(); + id = id.mid(1); + id.chop(1); + _uuid = (const char*)id.toLatin1(); + } +} void Uuid::setValue(const std::string &sString) { diff --git a/src/Base/Uuid.h b/src/Base/Uuid.h index 3ec4e9af97..e8b8c01729 100644 --- a/src/Base/Uuid.h +++ b/src/Base/Uuid.h @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2008 * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Base/Vector3D.cpp b/src/Base/Vector3D.cpp index a0c67d690d..aca56bb940 100644 --- a/src/Base/Vector3D.cpp +++ b/src/Base/Vector3D.cpp @@ -193,7 +193,7 @@ Vector3<_Precision> Vector3<_Precision>::Cross(const Vector3<_Precision>& rcVct) } template -bool Vector3<_Precision>::IsOnLineSegment (const Vector3<_Precision>& startVct, const Vector3<_Precision>& endVct) const +bool Vector3<_Precision>::IsOnLineSegment (const Vector3<_Precision>& startVct, const Vector3<_Precision>& endVct) const { Vector3<_Precision> vectorAB = endVct - startVct; Vector3<_Precision> vectorAC = *this - startVct; diff --git a/src/Base/VectorPyImp.cpp b/src/Base/VectorPyImp.cpp index 778e9907f4..e8333a7104 100644 --- a/src/Base/VectorPyImp.cpp +++ b/src/Base/VectorPyImp.cpp @@ -55,7 +55,7 @@ std::string VectorPy::representation(void) const PyObject *VectorPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { - // create a new instance of VectorPy and the Twin object + // create a new instance of VectorPy and the Twin object return new VectorPy(new Vector3d); } @@ -330,7 +330,7 @@ PyObject* VectorPy::negative(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; - + VectorPy::PointerType this_ptr = reinterpret_cast(_pcTwinPointer); Base::Vector3d v = -(*this_ptr); return new VectorPy(v); diff --git a/src/Base/Writer.cpp b/src/Base/Writer.cpp index 4a0508fcbe..753e4b5b31 100644 --- a/src/Base/Writer.cpp +++ b/src/Base/Writer.cpp @@ -170,7 +170,7 @@ std::string Writer::addFile(const char* Name,const Base::Persistence *Object) FileEntry temp; temp.FileName = getUniqueFileName(Name); temp.Object = Object; - + FileList.push_back(temp); FileNames.push_back( temp.FileName ); @@ -240,7 +240,7 @@ void Writer::decInd(void) // ---------------------------------------------------------------------------- -ZipWriter::ZipWriter(const char* FileName) +ZipWriter::ZipWriter(const char* FileName) : ZipStream(FileName) { #ifdef _MSC_VER @@ -252,7 +252,7 @@ ZipWriter::ZipWriter(const char* FileName) ZipStream.setf(ios::fixed,ios::floatfield); } -ZipWriter::ZipWriter(std::ostream& os) +ZipWriter::ZipWriter(std::ostream& os) : ZipStream(os) { #ifdef _MSC_VER diff --git a/src/Base/Writer.h b/src/Base/Writer.h index 4cc8fdf568..bbf29619cd 100644 --- a/src/Base/Writer.h +++ b/src/Base/Writer.h @@ -26,8 +26,8 @@ #include #include -#include -#include +#include +#include #include #ifdef _MSC_VER @@ -48,7 +48,7 @@ namespace Base class Persistence; -/** The Writer class +/** The Writer class * This is an important helper class for the store and retrieval system * of persistent objects in FreeCAD. * \see Base::Persistence @@ -137,9 +137,9 @@ protected: }; -/** The ZipWriter class +/** The ZipWriter class * This is an important helper class implementation for the store and retrieval system - * of persistent objects in FreeCAD. + * of persistent objects in FreeCAD. * \see Base::Persistence * \author Juergen Riegel */ @@ -162,9 +162,9 @@ private: zipios::ZipOutputStream ZipStream; }; -/** The StringWriter class +/** The StringWriter class * This is an important helper class implementation for the store and retrieval system - * of objects in FreeCAD. + * of objects in FreeCAD. * \see Base::Persistence * \author Juergen Riegel */ @@ -195,7 +195,7 @@ public: virtual void writeFiles(void); virtual std::ostream &Stream(void){return FileStream;} - void close() {FileStream.close();} + void close() {FileStream.close();} /*! This method can be re-implemented in sub-classes to avoid to write out certain objects. The default implementation diff --git a/src/Base/XMLTools.h b/src/Base/XMLTools.h index 6294b19fe6..4fb347f8d2 100644 --- a/src/Base/XMLTools.h +++ b/src/Base/XMLTools.h @@ -80,7 +80,7 @@ inline StrX::StrX(const XMLCh* const toTranscode) // WideCharToMultiByte(CP_UTF8,0,toTranscode,-1,fLocaleForm) //#else // fUnicodeForm = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(toTranscode); -//#endif +//#endif } inline StrX::~StrX() @@ -183,7 +183,7 @@ class XStr public : /// Constructors and Destructor XStr(const char* const toTranscode); - /// + /// ~XStr(); @@ -204,7 +204,7 @@ inline XStr::XStr(const char* const toTranscode) // WideCharToMultiByte() //#else fUnicodeForm = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(toTranscode); -//#endif +//#endif } inline XStr::~XStr() diff --git a/src/Base/core-base.dox b/src/Base/core-base.dox index 5726c8760f..05a78de886 100644 --- a/src/Base/core-base.dox +++ b/src/Base/core-base.dox @@ -1,7 +1,7 @@ /** \defgroup BASE Base * \ingroup CORE \brief Basic structures used by other FreeCAD components - + The Base module includes most of the basic functions of FreeCAD, such as: - Console services: printing different kinds of messages to the FreeCAD report view or the terminal - Python interpreter: handles the execution of Python code in FreeCAD diff --git a/src/CXX/Python2/Objects.hxx b/src/CXX/Python2/Objects.hxx index 8351728247..664205dd81 100644 --- a/src/CXX/Python2/Objects.hxx +++ b/src/CXX/Python2/Objects.hxx @@ -54,7 +54,7 @@ namespace Py { - typedef size_t sequence_index_type; // type of an index into a sequence + typedef Py_ssize_t sequence_index_type; // type of an index into a sequence // Forward declarations class Object; @@ -1126,7 +1126,7 @@ namespace Py { protected: SeqBase& s; // the sequence - size_t offset; // item number + sequence_index_type offset; // item number T the_item; // lvalue public: @@ -1316,7 +1316,7 @@ namespace Py { public: // STL definitions - typedef size_t size_type; + typedef Py_ssize_t size_type; typedef seqref reference; typedef T const_reference; typedef seqref* pointer; @@ -2099,7 +2099,7 @@ namespace Py } else { - return std::string( PyString_AsString( ptr() ), static_cast( PyString_Size( ptr() ) ) ); + return std::string( PyString_AsString( ptr() ), static_cast( PyString_Size( ptr() ) ) ); } } @@ -2305,7 +2305,7 @@ namespace Py } // New tuple of a given size - explicit Tuple (sequence_index_type size = 0) + explicit Tuple (size_type size=0) { set(PyTuple_New (size), true); validate (); @@ -2363,7 +2363,7 @@ namespace Py { public: TupleN() - : Tuple( (sequence_index_type)0 ) + : Tuple( (size_type)0 ) { } @@ -2487,11 +2487,11 @@ namespace Py validate(); } // Creation at a fixed size - List (sequence_index_type size = 0) + List (size_type size=0) { set(PyList_New (size), true); validate(); - for (sequence_index_type i=0; i < size; i++) + for (size_type i=0; i < size; i++) { if(PyList_SetItem (ptr(), i, new_reference_to(Py::_None())) == -1) { @@ -2503,7 +2503,7 @@ namespace Py // List from a sequence List (const Sequence& s): Sequence() { - sequence_index_type n = s.length(); + size_type n = s.length(); set(PyList_New (n), true); validate(); for (sequence_index_type i=0; i < n; i++) @@ -2773,7 +2773,7 @@ namespace Py // If you assume that Python mapping is a hash_map... // hash_map::value_type is not assignable, but // (*it).second = data must be a valid expression - typedef size_t size_type; + typedef Py_ssize_t size_type; typedef Object key_type; typedef mapref data_type; typedef std::pair< const T, T > value_type; diff --git a/src/CXX/Python3/Objects.hxx b/src/CXX/Python3/Objects.hxx index e5b341a012..dd4b46c779 100644 --- a/src/CXX/Python3/Objects.hxx +++ b/src/CXX/Python3/Objects.hxx @@ -54,7 +54,8 @@ namespace Py { - typedef size_t sequence_index_type; // type of an index into a sequence + typedef Py_ssize_t sequence_index_type; // type of an index into a sequence + Py_ssize_t numeric_limits_max(); // Forward declarations class Object; @@ -1095,7 +1096,7 @@ namespace Py { protected: SeqBase &s; // the sequence - size_t offset; // item number + sequence_index_type offset; // item number T the_item; // lvalue public: @@ -1289,7 +1290,7 @@ namespace Py { public: // STL definitions - typedef size_t size_type; + typedef Py_ssize_t size_type; typedef seqref reference; typedef T const_reference; typedef seqref *pointer; @@ -1298,7 +1299,16 @@ namespace Py virtual size_type max_size() const { - return std::string::npos; // ? + // Hint: Upstream version returns std::string::npos that is the maximum + // value of a size_t. But when assigned to a ssize_t it will become -1. + // Now Python provides 'sys.maxsize' that is the maximum value of a ssize_t + // and thus this method should return the same value. + // This can be done with 'std::numeric_limits::max()' but due + // to a name collision with a macro on Windows we cannot directly call it + // here. + // So, a workaround is to implement the helper function 'numeric_limits_max'. + //return std::string::npos; // ? + return numeric_limits_max(); } virtual size_type capacity() const @@ -1822,7 +1832,7 @@ namespace Py // Assignment from C string Byte &operator=( const std::string &v ) { - set( PyBytes_FromStringAndSize( const_cast( v.c_str() ),1 ), true ); + set( PyBytes_FromStringAndSize( const_cast( v.c_str() ), 1 ), true ); return *this; } @@ -1869,13 +1879,13 @@ namespace Py } Bytes( const std::string &v ) - : SeqBase( PyBytes_FromStringAndSize( const_cast( v.data() ), static_cast( v.length() ) ), true ) + : SeqBase( PyBytes_FromStringAndSize( const_cast( v.data() ), v.length() ), true ) { validate(); } Bytes( const std::string &v, Py_ssize_t vsize ) - : SeqBase( PyBytes_FromStringAndSize( const_cast( v.data() ), static_cast( vsize ) ), true ) + : SeqBase( PyBytes_FromStringAndSize( const_cast( v.data() ), vsize ), true ) { validate(); } @@ -1908,7 +1918,7 @@ namespace Py // Assignment from C string Bytes &operator=( const std::string &v ) { - set( PyBytes_FromStringAndSize( const_cast( v.data() ), static_cast( v.length() ) ), true ); + set( PyBytes_FromStringAndSize( const_cast( v.data() ), v.length() ), true ); return *this; } @@ -1917,7 +1927,7 @@ namespace Py // Queries virtual size_type size() const { - return static_cast( PyBytes_Size( ptr() ) ); + return PyBytes_Size( ptr() ); } operator std::string() const @@ -1927,7 +1937,7 @@ namespace Py std::string as_std_string() const { - return std::string( PyBytes_AsString( ptr() ), static_cast( PyBytes_Size( ptr() ) ) ); + return std::string( PyBytes_AsString( ptr() ), static_cast( PyBytes_Size( ptr() ) ) ); } }; @@ -2112,7 +2122,7 @@ namespace Py String &operator=( const unicodestring &v ) { - set( PyUnicode_FromUnicode( const_cast( v.data() ), static_cast( v.length() ) ), true ); + set( PyUnicode_FromUnicode( const_cast( v.data() ), v.length() ), true ); return *this; } @@ -2125,12 +2135,12 @@ namespace Py // Queries virtual size_type size() const { - return static_cast( PyUnicode_GET_SIZE( ptr() ) ); + return PyUnicode_GET_SIZE( ptr() ); } unicodestring as_unicodestring() const { - return unicodestring( PyUnicode_AS_UNICODE( ptr() ), static_cast( PyUnicode_GET_SIZE( ptr() ) ) ); + return unicodestring( PyUnicode_AS_UNICODE( ptr() ), PyUnicode_GET_SIZE( ptr() ) ); } operator std::string() const @@ -2179,7 +2189,7 @@ namespace Py } // New tuple of a given size - explicit Tuple( sequence_index_type size = 0 ) + explicit Tuple( size_type size=0 ) { set( PyTuple_New( size ), true ); validate(); @@ -2198,7 +2208,7 @@ namespace Py set( PyTuple_New( limit ), true ); validate(); - + for( sequence_index_type i=0; i < limit; i++ ) { if( PyTuple_SetItem( ptr(), i, new_reference_to( s[i] ) ) == -1 ) @@ -2237,7 +2247,7 @@ namespace Py { public: TupleN() - : Tuple( (sequence_index_type)0 ) + : Tuple( (size_type)0 ) { } @@ -2362,7 +2372,7 @@ namespace Py validate(); } // Creation at a fixed size - List( sequence_index_type size = 0 ) + List( size_type size = 0 ) { set( PyList_New( size ), true ); validate(); @@ -2379,7 +2389,7 @@ namespace Py List( const Sequence &s ) : Sequence() { - sequence_index_type n =( int )s.length(); + size_type n = s.length(); set( PyList_New( n ), true ); validate(); for( sequence_index_type i=0; i < n; i++ ) @@ -2659,7 +2669,7 @@ namespace Py // If you assume that Python mapping is a hash_map... // hash_map::value_type is not assignable, but //( *it ).second = data must be a valid expression - typedef size_t size_type; + typedef Py_ssize_t size_type; typedef Object key_type; typedef mapref data_type; typedef std::pair< const T, T > value_type; diff --git a/src/CXX/Python3/cxxsupport.cxx b/src/CXX/Python3/cxxsupport.cxx index 442d932b2b..aff1b04b69 100644 --- a/src/CXX/Python3/cxxsupport.cxx +++ b/src/CXX/Python3/cxxsupport.cxx @@ -36,9 +36,15 @@ //----------------------------------------------------------------------------- #include "CXX/Objects.hxx" +#include namespace Py { +Py_ssize_t numeric_limits_max() +{ + return std::numeric_limits::max(); +} + Py_UNICODE unicode_null_string[1] = { 0 }; Type Object::type() const diff --git a/src/FCConfig.h b/src/FCConfig.h index ac1c29e012..aeb476b061 100644 --- a/src/FCConfig.h +++ b/src/FCConfig.h @@ -170,6 +170,17 @@ typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #endif +/* avoid to redefine the HAVE_* in Coin's inttypes.h file */ +#define COIN_CONFIGURE_BUILD +/* The header file. */ +#define HAVE_INTTYPES_H 1 +/* The header file. */ +#define HAVE_STDINT_H 1 +/* The header file. */ +#define HAVE_SYS_TYPES_H 1 +/* The header file. */ +#define HAVE_STDDEF_H 1 + #endif diff --git a/src/Gui/Action.cpp b/src/Gui/Action.cpp index f388e9ee91..cbc94c304a 100644 --- a/src/Gui/Action.cpp +++ b/src/Gui/Action.cpp @@ -101,7 +101,7 @@ void Action::addTo(QWidget *w) /** * Activates the command. */ -void Action::onActivated () +void Action::onActivated () { _pcCmd->invoke(0,Command::TriggerAction); } @@ -112,7 +112,7 @@ void Action::onActivated () void Action::onToggled(bool b) { _pcCmd->invoke( b ? 1 : 0 , Command::TriggerAction); -} +} void Action::setCheckable(bool b) { @@ -132,7 +132,7 @@ void Action::setCheckable(bool b) void Action::setChecked(bool b, bool no_signal) { bool blocked; - if(no_signal) + if(no_signal) blocked = _action->blockSignals(true); _action->setChecked(b); if(no_signal) @@ -147,12 +147,12 @@ bool Action::isChecked() const /** * Sets whether the action is enabled. */ -void Action::setEnabled(bool b) +void Action::setEnabled(bool b) { _action->setEnabled(b); } -void Action::setVisible(bool b) +void Action::setVisible(bool b) { _action->setVisible(b); } @@ -201,7 +201,7 @@ void Action::setToolTip(const QString & s) { _action->setToolTip(s); } - + QString Action::toolTip() const { return _action->toolTip(); @@ -219,7 +219,7 @@ QString Action::whatsThis() const void Action::setMenuRole(QAction::MenuRole menuRole) { - _action->setMenuRole(menuRole); + _action->setMenuRole(menuRole); } // -------------------------------------------------------------------- @@ -247,7 +247,7 @@ ActionGroup::~ActionGroup() void ActionGroup::addTo(QWidget *w) { // When adding an action that has defined a menu then shortcuts - // of the menu actions don't work. To make this working we must + // of the menu actions don't work. To make this working we must // set the menu explicitly. This means calling QAction::setMenu() // and adding this action to the widget doesn't work. if (_dropDown) { @@ -268,7 +268,7 @@ void ActionGroup::addTo(QWidget *w) //tb->addActions(_group->actions()); } else { - w->addActions(_group->actions()); // no drop-down + w->addActions(_group->actions()); // no drop-down } } else { @@ -343,7 +343,7 @@ void ActionGroup::setCheckedAction(int i) /** * Activates the command. */ -void ActionGroup::onActivated () +void ActionGroup::onActivated () { _pcCmd->invoke(this->property("defaultAction").toInt(), Command::TriggerAction); } @@ -351,12 +351,12 @@ void ActionGroup::onActivated () void ActionGroup::onToggled(bool) { onActivated(); -} +} /** * Activates the command. */ -void ActionGroup::onActivated (QAction* a) +void ActionGroup::onActivated (QAction* a) { int index = _group->actions().indexOf(a); @@ -383,7 +383,7 @@ void ActionGroup::onActivated (QAction* a) _pcCmd->invoke(index, Command::TriggerChildAction); } -void ActionGroup::onHovered (QAction *a) +void ActionGroup::onHovered (QAction *a) { Gui::ToolTip::showText(QCursor::pos(), a->toolTip()); } @@ -416,7 +416,7 @@ private: WorkbenchComboBox::WorkbenchComboBox(WorkbenchGroup* wb, QWidget* parent) : QComboBox(parent), group(wb) { connect(this, SIGNAL(activated(int)), this, SLOT(onActivated(int))); - connect(getMainWindow(), SIGNAL(workbenchActivated(const QString&)), + connect(getMainWindow(), SIGNAL(workbenchActivated(const QString&)), this, SLOT(onWorkbenchActivated(const QString&))); } @@ -702,7 +702,7 @@ void RecentFilesAction::appendFile(const QString& filename) /** * Set the list of recent files. For each item an action object is - * created and added to this action group. + * created and added to this action group. */ void RecentFilesAction::setFiles(const QStringList& files) { @@ -1135,7 +1135,7 @@ void DockWidgetAction::addTo ( QWidget * w ) _action->setMenu(_menu); connect(_menu, SIGNAL(aboutToShow()), getMainWindow(), SLOT(onDockWindowMenuAboutToShow())); } - + w->addAction(_action); } @@ -1158,7 +1158,7 @@ void ToolBarAction::addTo ( QWidget * w ) _action->setMenu(_menu); connect(_menu, SIGNAL(aboutToShow()), getMainWindow(), SLOT(onToolBarMenuAboutToShow())); } - + w->addAction(_action); } diff --git a/src/Gui/Action.h b/src/Gui/Action.h index 5429db732a..cd7d0ad3a8 100644 --- a/src/Gui/Action.h +++ b/src/Gui/Action.h @@ -28,12 +28,12 @@ #include #include -namespace Gui +namespace Gui { class Command; /** - * The Action class is the link between Qt's QAction class and FreeCAD's + * The Action class is the link between Qt's QAction class and FreeCAD's * command classes (@ref Command). So, it is possible to have all actions * (from toolbars, menus, ...) implemented in classes instead of many slot * methods in the class @ref MainWindow. @@ -70,11 +70,13 @@ public: void setWhatsThis (const QString &); QString whatsThis() const; void setMenuRole(QAction::MenuRole menuRole); - QAction *action() {return _action;}; + QAction *action() const { + return _action; + } public Q_SLOTS: virtual void onActivated (); - virtual void onToggled (bool); + virtual void onToggled (bool); protected: QAction* _action; @@ -84,7 +86,7 @@ protected: // -------------------------------------------------------------------- /** - * The ActionGroup class is the link between Qt's QActionGroup class and + * The ActionGroup class is the link between Qt's QActionGroup class and * FreeCAD's command classes (@ref Command). Compared to Action with an * ActionGroup it is possible to implement a single command with a group * of toggable actions where e.g. one is set exclusive. @@ -161,7 +163,7 @@ class GuiExport WorkbenchGroup : public ActionGroup Q_OBJECT public: - /** + /** * Creates an action for the command \a pcCmd to load the workbench \a name * when it gets activated. */ @@ -184,7 +186,7 @@ private: // -------------------------------------------------------------------- /** - * The RecentFilesAction class holds a menu listed with the recent files. + * The RecentFilesAction class holds a menu listed with the recent files. * @author Werner Mayer */ class GuiExport RecentFilesAction : public ActionGroup @@ -207,7 +209,7 @@ private: private: int visibleItems; /**< Number of visible items */ - int maximumItems; /**< Number of maximum items */ + int maximumItems; /**< Number of maximum items */ }; // -------------------------------------------------------------------- @@ -245,7 +247,7 @@ private: // -------------------------------------------------------------------- /** - * The UndoAction class reimplements a special behaviour to make a menu + * The UndoAction class reimplements a special behaviour to make a menu * appearing when the button with the arrow is clicked. * @author Werner Mayer */ @@ -270,7 +272,7 @@ private: // -------------------------------------------------------------------- /** - * The RedoAction class reimplements a special behaviour to make a menu + * The RedoAction class reimplements a special behaviour to make a menu * appearing when the button with the arrow is clicked. * @author Werner Mayer */ diff --git a/src/Gui/ActiveObjectList.cpp b/src/Gui/ActiveObjectList.cpp index e4ed5b4c2b..aff4d1b06b 100644 --- a/src/Gui/ActiveObjectList.cpp +++ b/src/Gui/ActiveObjectList.cpp @@ -109,7 +109,7 @@ Gui::ActiveObjectList::ObjectInfo Gui::ActiveObjectList::getObjectInfo(App::Docu return info; } -bool Gui::ActiveObjectList::hasObject(App::DocumentObject *obj, +bool Gui::ActiveObjectList::hasObject(App::DocumentObject *obj, const char *name, const char *subname) const { auto it = _ObjectMap.find(name); @@ -119,7 +119,7 @@ bool Gui::ActiveObjectList::hasObject(App::DocumentObject *obj, return info.obj==it->second.obj && info.subname==it->second.subname; } -void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name, +void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name, const char *subname, const Gui::HighlightMode& mode) { auto it = _ObjectMap.find(name); @@ -132,8 +132,8 @@ void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name auto info = getObjectInfo(obj,subname); if(!info.obj) { FC_ERR("Cannot set active object " - << obj->getFullName() << '.' << (subname?subname:"") - << " in document '" << _Doc->getDocument()->getName() + << obj->getFullName() << '.' << (subname?subname:"") + << " in document '" << _Doc->getDocument()->getName() << "'. Not found in current selection"); return; } @@ -142,7 +142,7 @@ void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name setHighlight(info,mode,true); } -bool Gui::ActiveObjectList::hasObject(const char*name)const +bool Gui::ActiveObjectList::hasObject(const char*name)const { return _ObjectMap.find(name) != _ObjectMap.end(); } diff --git a/src/Gui/ActiveObjectList.h b/src/Gui/ActiveObjectList.h index d33f3e240d..2f43fbffee 100644 --- a/src/Gui/ActiveObjectList.h +++ b/src/Gui/ActiveObjectList.h @@ -44,7 +44,7 @@ namespace Gui * @see Gui::MDIViewer * @author Jürgen Riegel */ - class GuiExport ActiveObjectList + class GuiExport ActiveObjectList { public: ActiveObjectList(Document *doc) @@ -85,4 +85,4 @@ namespace Gui static const char PDBODYKEY[] = "pdbody"; static const char PARTKEY[] = "part"; -#endif +#endif diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 5757a328f7..0f24076cb5 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -675,7 +675,7 @@ void Application::importFrom(const char* FileName, const char* DocName, const ch if (doc) { pendingCommand = doc->hasPendingCommand(); if (!pendingCommand) - doc->openCommand("Import"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Import")); } if (DocName) { @@ -1089,7 +1089,7 @@ Gui::MDIView* Application::editViewOfNode(SoNode *node) const void Application::setEditDocument(Gui::Document *doc) { if(doc == d->editDocument) return; - if(!doc) + if(!doc) d->editDocument = 0; for(auto &v : d->documents) v.second->_resetEdit(); @@ -1901,10 +1901,23 @@ void Application::runApplication(void) #if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL); #endif + + // Automatic scaling for legacy apps (disable once all parts of GUI are aware of HiDpi) #if QT_VERSION >= 0x050600 - //Enable automatic scaling based on pixel density of display (added in Qt 5.6) - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + ParameterGrp::handle hDPI = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/HighDPI"); + bool disableDpiScaling = hDPI->GetBool("DisableDpiScaling", false); + if (disableDpiScaling) { +#ifdef FC_OS_WIN32 + SetProcessDPIAware(); // call before the main event loop #endif + QApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + } + else { + // Enable automatic scaling based on pixel density of display (added in Qt 5.6) + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + } +#endif // QT_VERSION >= 0x050600 + #if QT_VERSION >= 0x050100 //Enable support for highres images (added in Qt 5.1, but off by default) QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); @@ -2504,7 +2517,7 @@ App::Document *Application::reopen(App::Document *doc) { WaitCursor wc; wc.setIgnoreEvents(WaitCursor::NoEvents); - if(doc->testStatus(App::Document::PartialDoc) + if(doc->testStatus(App::Document::PartialDoc) || doc->testStatus(App::Document::PartialRestore)) { App::GetApplication().openDocument(name.c_str()); diff --git a/src/Gui/ApplicationPy.cpp b/src/Gui/ApplicationPy.cpp index e81b89f648..c1e6ed3e2f 100644 --- a/src/Gui/ApplicationPy.cpp +++ b/src/Gui/ApplicationPy.cpp @@ -198,7 +198,7 @@ PyMethodDef Application::Methods[] = { {"getMarkerIndex", (PyCFunction) Application::sGetMarkerIndex, METH_VARARGS, "Get marker index according to marker size setting"}, - + {"addDocumentObserver", (PyCFunction) Application::sAddDocObserver, METH_VARARGS, "addDocumentObserver() -> None\n\n" "Add an observer to get notified about changes on documents."}, @@ -225,8 +225,8 @@ PyMethodDef Application::Methods[] = { PyObject* Gui::Application::sEditDocument(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception Document *pcDoc = Instance->editDocument(); if (pcDoc) { @@ -270,7 +270,7 @@ PyObject* Gui::Application::sActiveView(PyObject * /*self*/, PyObject *args) Gui::MDIView* mdiView = Instance->activeView(); if (mdiView && (type.isBad() || mdiView->isDerivedFrom(type))) { auto res = Py::asObject(mdiView->getPyObject()); - if(!res.isNone() || !type.isBad()) + if(!res.isNone() || !type.isBad()) return Py::new_reference_to(res); } @@ -899,11 +899,11 @@ PyObject* Application::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) // to be base class for all workbench classes Py::Module module("__main__"); Py::Object baseclass(module.getAttr(std::string("Workbench"))); - + // check whether it is an instance or class object Py::Object object(pcObject); Py::String name; - + if (PyObject_IsSubclass(object.ptr(), baseclass.ptr()) == 1) { // create an instance of this class name = object.getAttr(std::string("__name__")); @@ -928,7 +928,7 @@ PyObject* Application::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) Py::Callable(object.getAttr(std::string("GetClassName"))); item = name.as_std_string("ascii"); - PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,item.c_str()); + PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,item.c_str()); if (wb) { PyErr_Format(PyExc_KeyError, "'%s' already exists.", item.c_str()); return NULL; @@ -951,7 +951,7 @@ PyObject* Application::sRemoveWorkbenchHandler(PyObject * /*self*/, PyObject *ar if (!PyArg_ParseTuple(args, "s", &psKey)) return NULL; - PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,psKey); + PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,psKey); if (!wb) { PyErr_Format(PyExc_KeyError, "No such workbench '%s'", psKey); return NULL; @@ -970,7 +970,7 @@ PyObject* Application::sGetWorkbenchHandler(PyObject * /*self*/, PyObject *args) char* psKey; if (!PyArg_ParseTuple(args, "s", &psKey)) return NULL; - + // get the python workbench object from the dictionary PyObject* pcWorkbench = PyDict_GetItemString(Instance->_pcWorkbenchDictionary, psKey); if (!pcWorkbench) { @@ -1078,7 +1078,7 @@ PyObject* Application::sAddIcon(PyObject * /*self*/, PyObject *args) const char *format = "XPM"; if (!PyArg_ParseTuple(args, "ss#|s", &iconName,&content,&size,&format)) return NULL; - + QPixmap icon; if (BitmapFactory().findPixmapInCache(iconName, icon)) { PyErr_SetString(PyExc_AssertionError, "Icon with this name already registered"); @@ -1109,7 +1109,7 @@ PyObject* Application::sGetIcon(PyObject * /*self*/, PyObject *args) char *iconName; if (!PyArg_ParseTuple(args, "s", &iconName)) return NULL; - + PythonWrapper wrap; wrap.loadGuiModule(); wrap.loadWidgetsModule(); @@ -1124,7 +1124,7 @@ PyObject* Application::sIsIconCached(PyObject * /*self*/, PyObject *args) char *iconName; if (!PyArg_ParseTuple(args, "s", &iconName)) return NULL; - + QPixmap icon; return Py::new_reference_to(Py::Boolean(BitmapFactory().findPixmapInCache(iconName, icon))); } @@ -1330,7 +1330,7 @@ PyObject* Application::sShowPreferences(PyObject * /*self*/, PyObject *args) if (!PyArg_ParseTuple(args, "|si", &pstr, &idx)) return NULL; Gui::Dialog::DlgPreferencesImp cDlg(getMainWindow()); - if (pstr) + if (pstr) cDlg.activateGroupPage(QString::fromUtf8(pstr),idx); WaitCursor wc; wc.restoreCursor(); diff --git a/src/Gui/Assistant.cpp b/src/Gui/Assistant.cpp index 20f6fb2f67..f903c7a28f 100644 --- a/src/Gui/Assistant.cpp +++ b/src/Gui/Assistant.cpp @@ -91,7 +91,7 @@ bool Assistant::startAssistant() QString app = QCoreApplication::applicationDirPath() + QDir::separator(); #else QString app = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QDir::separator(); -#endif +#endif app += QLatin1String("assistant"); // get the name of the executable and the doc path diff --git a/src/Gui/AutoSaver.cpp b/src/Gui/AutoSaver.cpp index 899de87ba1..c39d9a7aab 100644 --- a/src/Gui/AutoSaver.cpp +++ b/src/Gui/AutoSaver.cpp @@ -77,7 +77,7 @@ AutoSaver* AutoSaver::instance() void AutoSaver::renameFile(QString dirName, QString file, QString tmpFile) { - FC_LOG("auto saver rename " << tmpFile.toUtf8().constData() + FC_LOG("auto saver rename " << tmpFile.toUtf8().constData() << " -> " << file.toUtf8().constData()); QDir dir(dirName); dir.remove(file); @@ -135,8 +135,8 @@ void AutoSaver::saveDocument(const std::string& name, AutoSaveProperty& saver) { Gui::WaitCursor wc; App::Document* doc = App::GetApplication().getDocument(name.c_str()); - if (doc && !doc->testStatus(App::Document::PartialDoc) - && !doc->testStatus(App::Document::TempDoc)) + if (doc && !doc->testStatus(App::Document::PartialDoc) + && !doc->testStatus(App::Document::TempDoc)) { // Set the document's current transient directory std::string dirName = doc->TransientDir.getValue(); @@ -175,7 +175,7 @@ void AutoSaver::saveDocument(const std::string& name, AutoSaveProperty& saver) if (!this->compressed) { RecoveryWriter writer(saver); - // We will be using thread pool if not compressed. + // We will be using thread pool if not compressed. // So, always force binary format because ASCII // is not reentrant. See PropertyPartShape::SaveDocFile writer.setMode("BinaryBrep"); @@ -347,8 +347,8 @@ public: // still chance of crash when we deleted the original and before rename // the new file. So we ask the main thread to do it. There is still // possibility of crash caused by thread other than the main, but - // that's the best we can do for now. - QMetaObject::invokeMethod(AutoSaver::instance(), "renameFile", + // that's the best we can do for now. + QMetaObject::invokeMethod(AutoSaver::instance(), "renameFile", Qt::QueuedConnection, Q_ARG(QString,dirName) ,Q_ARG(QString,fileName),Q_ARG(QString,tmpName)); } diff --git a/src/Gui/AxisOrigin.cpp b/src/Gui/AxisOrigin.cpp index dbb4aa98a4..82b54667f7 100644 --- a/src/Gui/AxisOrigin.cpp +++ b/src/Gui/AxisOrigin.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/AxisOrigin.h b/src/Gui/AxisOrigin.h index 0ad2034133..33111e0208 100644 --- a/src/Gui/AxisOrigin.h +++ b/src/Gui/AxisOrigin.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -45,7 +45,7 @@ public: /// Get origin point size float getPointSize() const { return pointSize; } - + /// Set the axis line length void setAxisLength(float size); @@ -71,7 +71,7 @@ public: * XZ: XY plane, YZ: YZ plane * * There are default labels for all components. You can also use - * this function to choose which components are hidden, by not + * this function to choose which components are hidden, by not * include the key in the input labels. */ void setLabels(const std::map &labels); diff --git a/src/Gui/AxisOriginPyImp.cpp b/src/Gui/AxisOriginPyImp.cpp index 068e5bb189..824cee7e57 100644 --- a/src/Gui/AxisOriginPyImp.cpp +++ b/src/Gui/AxisOriginPyImp.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -57,7 +57,7 @@ PyObject* AxisOriginPy::getElementPicked(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "_p_SoPickedPoint", obj, &ptr, 0); SoPickedPoint *pp = reinterpret_cast(ptr); - if(!pp) + if(!pp) throw Base::TypeError("type must be of coin.SoPickedPoint"); std::string name; if(!getAxisOriginPtr()->getElementPicked(pp,name)) @@ -74,7 +74,7 @@ PyObject* AxisOriginPy::getDetailPath(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "_p_SoPath", path, &ptr, 0); SoPath *pPath = reinterpret_cast(ptr); - if(!pPath) + if(!pPath) throw Base::TypeError("type must be of coin.SoPath"); SoDetail *det = 0; if(!getAxisOriginPtr()->getDetailPath( @@ -166,5 +166,5 @@ PyObject *AxisOriginPy::getCustomAttributes(const char* /*attr*/) const int AxisOriginPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Gui/BitmapFactory.h b/src/Gui/BitmapFactory.h index aa089fd9c4..d4b2e9d003 100644 --- a/src/Gui/BitmapFactory.h +++ b/src/Gui/BitmapFactory.h @@ -77,7 +77,7 @@ public: QPixmap pixmap(const char* name) const; /** Retrieves a pixmap by name and size created by an * scalable vector graphics (SVG). - * + * * @param colorMapping - a dictionary of substitute colors. * Can be used to customize icon color scheme, e.g. crosshair color */ diff --git a/src/Gui/BlenderNavigationStyle.cpp b/src/Gui/BlenderNavigationStyle.cpp index 2d69e52111..b5b0cfbc42 100644 --- a/src/Gui/BlenderNavigationStyle.cpp +++ b/src/Gui/BlenderNavigationStyle.cpp @@ -145,6 +145,10 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) processed = true; viewer->saveHomePosition(); break; + case SoKeyboardEvent::R: + processed = true; + viewer->resetToHomePosition(); + break; case SoKeyboardEvent::S: case SoKeyboardEvent::HOME: case SoKeyboardEvent::LEFT_ARROW: @@ -221,8 +225,8 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) this->lockrecenter = true; if (!viewer->isEditing()) { // If we are in zoom or pan mode ignore RMB events otherwise - // the canvas doesn't get any release events - if (this->currentmode != NavigationStyle::ZOOMING && + // the canvas doesn't get any release events + if (this->currentmode != NavigationStyle::ZOOMING && this->currentmode != NavigationStyle::PANNING && this->currentmode != NavigationStyle::DRAGGING) { if (this->isPopupMenuEnabled()) { diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index f44397e7c3..344a249882 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -224,6 +224,7 @@ generate_from_xml(DocumentPy) generate_from_xml(PythonWorkbenchPy) generate_from_xml(ViewProviderPy) generate_from_xml(ViewProviderDocumentObjectPy) +generate_from_xml(ViewProviderExtensionPy) generate_from_xml(WorkbenchPy) generate_from_xml(SelectionObjectPy) generate_from_xml(LinkViewPy) @@ -237,6 +238,7 @@ generate_from_py(FreeCADGuiInit GuiInitScript.h) SET(FreeCADGui_XML_SRCS ViewProviderDocumentObjectPy.xml ViewProviderPy.xml + ViewProviderExtensionPy.xml PythonWorkbenchPy.xml WorkbenchPy.xml SelectionObjectPy.xml @@ -1004,6 +1006,7 @@ SOURCE_GROUP("Quarter" FILES ${Quarter_SRCS}) SET(Viewprovider_CPP_SRCS ViewProvider.cpp ViewProviderExtension.cpp + ViewProviderExtensionPyImp.cpp ViewProviderGroupExtension.cpp ViewProviderGeoFeatureGroupExtension.cpp ViewProviderOriginGroupExtension.cpp diff --git a/src/Gui/Clipping.cpp b/src/Gui/Clipping.cpp index e2bdff30b2..1ee10b8a09 100644 --- a/src/Gui/Clipping.cpp +++ b/src/Gui/Clipping.cpp @@ -89,7 +89,7 @@ public: } static void moveCallback(void * data, SoSensor * sensor) { - Q_UNUSED(sensor); + Q_UNUSED(sensor); Private* self = reinterpret_cast(data); if (self->view) { Gui::View3DInventorViewer* view = self->view->getViewer(); diff --git a/src/Gui/CoinRiftWidget.cpp b/src/Gui/CoinRiftWidget.cpp index 174e290130..53d97343f1 100644 --- a/src/Gui/CoinRiftWidget.cpp +++ b/src/Gui/CoinRiftWidget.cpp @@ -67,7 +67,7 @@ CoinRiftWidget::CoinRiftWidget() : QGLWidget() if (!ovrHmd_ConfigureTracking (hmd, ovrTrackingCap_Orientation | ovrTrackingCap_MagYawCorrection | - ovrTrackingCap_Position, + ovrTrackingCap_Position, ovrTrackingCap_Orientation | ovrTrackingCap_MagYawCorrection | ovrTrackingCap_Position @@ -98,8 +98,8 @@ CoinRiftWidget::CoinRiftWidget() : QGLWidget() m_sceneManager->setBackgroundColor(SbColor(.0f, .0f, .8f)); #endif basePosition = SbVec3f(0.0f, 0.0f, -2.0f); - - // light handling + + // light handling SoDirectionalLight *light = new SoDirectionalLight(); light->direction.setValue(1,-1,-1); @@ -118,7 +118,7 @@ CoinRiftWidget::CoinRiftWidget() : QGLWidget() camera[eye]->focalDistance.setValue(5.0f); camera[eye]->viewportMapping.setValue(SoCamera::LEAVE_ALONE); rootScene[eye]->addChild(camera[eye]); - rootScene[eye]->addChild(light); + rootScene[eye]->addChild(light); rootScene[eye]->addChild(light2); rootScene[eye]->addChild(scene); } @@ -163,11 +163,11 @@ CoinRiftWidget::CoinRiftWidget() : QGLWidget() DistortionCaps |= ovrDistortionCap_HqDistortion; bool VSyncEnabled(false); // TODO This is a guess. - if (!ovrHmd_ConfigureRendering( hmd, - &cfg.Config, + if (!ovrHmd_ConfigureRendering( hmd, + &cfg.Config, /*(VSyncEnabled ? 0 : ovrHmdCap_NoVSync),*/ - DistortionCaps, - hmd->DefaultEyeFov,//eyes, + DistortionCaps, + hmd->DefaultEyeFov,//eyes, eyeRenderDesc)) { qDebug() << "Could not configure OVR rendering."; throw; @@ -307,7 +307,7 @@ void CoinRiftWidget::initializeGL() glDisable(GL_TEXTURE_2D); #ifdef USE_FRAMEBUFFER - // Continue rendering to the orgiginal frame buffer (likely 0, the onscreen buffer). + // Continue rendering to the original frame buffer (likely 0, the onscreen buffer). OVR::CAPI::GL::glBindFramebuffer(GL_FRAMEBUFFER_EXT, oldfb); #endif doneCurrent(); @@ -315,11 +315,11 @@ void CoinRiftWidget::initializeGL() void CoinRiftWidget::paintGL() -{ +{ const int ms(1000 / 75 /*fps*/); QTimer::singleShot(ms, this, SLOT(updateGL())); - // handling the sfety warning + // handling the safety warning handlingSafetyWarning(); makeCurrent(); @@ -388,7 +388,7 @@ void CoinRiftWidget::paintGL() // m_sceneManager->setCamera(camera[eye]); // SoSceneManager does this implicitly. m_sceneManager->render(); - // Continue rendering to the orgiginal frame buffer (likely 0, the onscreen buffer). + // Continue rendering to the original frame buffer (likely 0, the onscreen buffer). OVR::CAPI::GL::glBindFramebuffer(GL_FRAMEBUFFER_EXT, oldfb); Q_ASSERT(!glGetError()); #endif @@ -396,8 +396,8 @@ void CoinRiftWidget::paintGL() //camera[eye]->position.setValue(originalPosition); } - - // Submit the texture for distortion. + + // Submit the texture for distortion. ovrHmd_EndFrame(hmd, eyePose, eyeTexture); // Swap buffers. @@ -438,7 +438,7 @@ void CoinRiftWidget::handlingSafetyWarning(void) // } //} } - + } diff --git a/src/Gui/CoinRiftWidget.h b/src/Gui/CoinRiftWidget.h index 27655405f9..2664ca9cdc 100644 --- a/src/Gui/CoinRiftWidget.h +++ b/src/Gui/CoinRiftWidget.h @@ -36,7 +36,7 @@ #if BUILD_VR -// defines which method to use to render +// defines which method to use to render #define USE_SO_OFFSCREEN_RENDERER //#define USE_FRAMEBUFFER @@ -84,7 +84,7 @@ class CoinRiftWidget : public QGLWidget GLuint frameBufferID[2], depthBufferID[2]; // A SoSceneManager has a SoRenderManager to do the rendering -- should we not use SoRenderManager instead? // We are probably not that interested in events. SoSceneManager::setSceneGraph() searches for the camera - // and sets it in SoRenderManager, but its is actually only used for built-in stereo rendering. + // and sets it in SoRenderManager, but its is actually only used for built-in stereo rendering. // FIXME: We should probably eliminate that search... SoSceneManager *m_sceneManager; #endif diff --git a/src/Gui/ComboView.cpp b/src/Gui/ComboView.cpp index 4b50014c7e..29fda97079 100644 --- a/src/Gui/ComboView.cpp +++ b/src/Gui/ComboView.cpp @@ -52,7 +52,7 @@ ComboView::ComboView(bool showModel, Gui::Document* pcDocument, QWidget *parent) { setWindowTitle(tr("Combo View")); - QGridLayout* pLayout = new QGridLayout(this); + QGridLayout* pLayout = new QGridLayout(this); pLayout->setSpacing( 0 ); pLayout->setMargin ( 0 ); diff --git a/src/Gui/ComboView.h b/src/Gui/ComboView.h index e4385fc776..9ded1fa9dc 100644 --- a/src/Gui/ComboView.h +++ b/src/Gui/ComboView.h @@ -58,7 +58,7 @@ namespace Gui { namespace DockWnd { /** Combo View - * is a combination of a tree, property and TaskPanel for + * is a combination of a tree, property and TaskPanel for * integrated user action. */ class GuiExport ComboView : public Gui::DockWindow diff --git a/src/Gui/Command.cpp b/src/Gui/Command.cpp index 24efce7665..983f423b6d 100644 --- a/src/Gui/Command.cpp +++ b/src/Gui/Command.cpp @@ -93,9 +93,9 @@ using namespace Gui::DockWnd; * * \section wayout Way out * To solve these problems we have introduced the command framework to decouple QAction and MainWindow. The base classes of the framework are - * \a Gui::CommandBase and \a Gui::Action that represent the link between Qt's QAction world and the FreeCAD's command world. + * \a Gui::CommandBase and \a Gui::Action that represent the link between Qt's QAction world and the FreeCAD's command world. * - * The Action class holds a pointer to QAction and CommandBase and acts as a mediator and -- to save memory -- that gets created + * The Action class holds a pointer to QAction and CommandBase and acts as a mediator and -- to save memory -- that gets created * (@ref Gui::CommandBase::createAction()) not before it is added (@ref Gui::Command::addTo()) to a menu or toolbar. * * Now, the implementation of the slots of MainWindow can be done in the method \a activated() of subclasses of Command instead. @@ -482,7 +482,7 @@ void Command::testActive(void) } if (!(eType & ForEdit)) { // special case for commands which are only in some edit modes active - + if ((!Gui::Control().isAllowedAlterDocument() && eType & AlterDoc) || (!Gui::Control().isAllowedAlterView() && eType & Alter3DView) || (!Gui::Control().isAllowedAlterSelection() && eType & AlterSelection)) { @@ -542,8 +542,8 @@ std::string Command::getUniqueObjectName(const char *BaseName, const App::Docume return doc->getUniqueObjectName(BaseName); } -std::string Command::getObjectCmd(const char *Name, const App::Document *doc, - const char *prefix, const char *postfix, bool gui) +std::string Command::getObjectCmd(const char *Name, const App::Document *doc, + const char *prefix, const char *postfix, bool gui) { if(!doc) doc = App::GetApplication().getActiveDocument(); if(!doc || !Name) @@ -551,7 +551,7 @@ std::string Command::getObjectCmd(const char *Name, const App::Document *doc, std::ostringstream str; if(prefix) str << prefix; - str << (gui?"Gui":"App") << ".getDocument('" << doc->getName() + str << (gui?"Gui":"App") << ".getDocument('" << doc->getName() << "').getObject('" << Name << "')"; if(postfix) str << postfix; @@ -559,7 +559,7 @@ std::string Command::getObjectCmd(const char *Name, const App::Document *doc, } std::string Command::getObjectCmd(const App::DocumentObject *obj, - const char *prefix, const char *postfix, bool gui) + const char *prefix, const char *postfix, bool gui) { if(!obj || !obj->getNameInDocument()) return std::string("None"); @@ -651,7 +651,7 @@ void Command::printPyCaller() { if(!FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) return; PyFrameObject* frame = PyEval_GetFrame(); - if(!frame) + if(!frame) return; int line = PyFrame_GetLineNumber(frame); #if PY_MAJOR_VERSION >= 3 @@ -663,7 +663,7 @@ void Command::printPyCaller() { } void Command::printCaller(const char *file, int line) { - if(!FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) + if(!FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) return; std::ostringstream str; #ifdef FC_OS_WIN32 @@ -720,7 +720,7 @@ void Command::addModule(DoCmd_Type eType,const char* sModuleName) std::string Command::_assureWorkbench(const char *file, int line, const char * sName) { - // check if the WB is already open? + // check if the WB is already open? std::string actName = WorkbenchManager::instance()->active()->name(); // if yes, do nothing if(actName == sName) @@ -1039,7 +1039,7 @@ void GroupCommand::languageChange() { void GroupCommand::setup(Action *pcAction) { pcAction->setText(QCoreApplication::translate(className(), getMenuText())); - + int idx = pcAction->property("defaultAction").toInt(); if(idx>=0 && idx<(int)cmds.size() && cmds[idx].first) { auto cmd = cmds[idx].first; @@ -1083,7 +1083,7 @@ MacroCommand::~MacroCommand() void MacroCommand::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QDir d; if (!systemMacro) { @@ -1099,7 +1099,7 @@ void MacroCommand::activated(int iMsg) QString dirstr = QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro"); d = QDir(dirstr); } - + QFileInfo fi(d, QString::fromUtf8(sScriptName)); if (!fi.exists()) { QMessageBox::critical(Gui::getMainWindow(), diff --git a/src/Gui/Command.h b/src/Gui/Command.h index 7b637075cf..c3c76fc39c 100644 --- a/src/Gui/Command.h +++ b/src/Gui/Command.h @@ -40,7 +40,7 @@ * @param _doc: pointer to a document * @param _cmd: command string, streamable * - * Example: + * Example: * @code{.cpp} * _FCMD_DOC_CMD(Gui,doc,"getObject('" << objName << "')"); * @endcode @@ -96,7 +96,7 @@ * @param _obj: pointer to a DocumentObject * @param _cmd: command string, streamable * - * Example: + * Example: * @code{.cpp} * _FCMD_OBJ_CMD(Gui,obj,"Visibility = " << (visible?"True":"False")); * @endcode @@ -135,7 +135,7 @@ * @param _cmd: command string, supporting printf like formatter * @param _obj: pointer to a DocumentObject * - * Example: + * Example: * @code{.cpp} * FCMD_OBJ_CMD2("Visibility = %s", obj, visible?"True":"False"); * @endcode @@ -252,7 +252,7 @@ protected: virtual Action * createAction(void); public: - /// Reassigns QAction stuff after the language has changed. + /// Reassigns QAction stuff after the language has changed. virtual void languageChange() = 0; /// Updates the QAction with respect to the passed mode. virtual void updateAction(int mode) = 0; @@ -338,7 +338,7 @@ public: /// CommandManager is a friend friend class CommandManager; /// Override this method if your Cmd is not always active - virtual bool isActive(void){return true;} + virtual bool isActive(void){return true;} /// Get somtile called to check the state of the command void testActive(void); /// Enables or disables the command @@ -361,7 +361,7 @@ public: * checkable state. * @param trigger: indicate the command triggering source, see TriggerSource. */ - void invoke (int index, TriggerSource trigger=TriggerNone); + void invoke (int index, TriggerSource trigger=TriggerNone); /// adds this command to arbitrary widgets void addTo(QWidget *); void addToGroup(ActionGroup *, bool checkable); @@ -372,8 +372,8 @@ public: /** @name Helper methods to get important classes */ //@{ /// Get pointer to the Application Window - static Application* getGuiApplication(void); - /// Get a reference to the selection + static Application* getGuiApplication(void); + /// Get a reference to the selection static Gui::SelectionSingleton& getSelection(void); /// Get pointer to the active gui document Gui::Document* getActiveGuiDocument(void) const; @@ -388,12 +388,12 @@ public: /// returns the named feature or the active one from the active document or NULL App::DocumentObject* getObject(const char* Name) const; /// returns a python command string to retrieve an object from a document - static std::string getObjectCmd(const char *Name, const App::Document *doc=0, + static std::string getObjectCmd(const char *Name, const App::Document *doc=0, const char *prefix=0, const char *postfix=0, bool gui=false); /// returns a python command string to retrieve the given object - static std::string getObjectCmd(const App::DocumentObject *obj, + static std::string getObjectCmd(const App::DocumentObject *obj, const char *prefix=0, const char *postfix=0, bool gui=false); - /** Get unique Feature name from the active document + /** Get unique Feature name from the active document * * @param BaseName: the base name * @param obj: if not zero, then request the unique name in the document of @@ -475,7 +475,7 @@ public: #define runCommand(_type,_cmd) _runCommand(__FILE__,__LINE__,_type,_cmd) /** Run a command - * + * * @param file: the calling file path (for debugging purpose) * @param line: the calling line number (for debugging purpose) * @param eType: command type, See DoCmd_Type @@ -486,7 +486,7 @@ public: static void _runCommand(const char *file, int line, DoCmd_Type eType,const char* sCmd); /** Run a command - * + * * @param file: the calling file path (for debugging purpose) * @param line: the calling line number (for debugging purpose) * @param eType: command type, See DoCmd_Type @@ -496,7 +496,7 @@ public: */ static void _runCommand(const char *file, int line, DoCmd_Type eType,const QByteArray& sCmd); - /// import an external (or own) module only once + /// import an external (or own) module only once static void addModule(DoCmd_Type eType,const char* sModuleName); /** Convenience macro to assure the switch to a certain workbench @@ -517,7 +517,7 @@ public: */ static std::string _assureWorkbench(const char *file, int line, const char * sName); //@} - + /** @name Methods for copying visiual properties */ //@{ /// Convenience macro to copy visual properties @@ -528,7 +528,7 @@ public: static void _copyVisual(const char *file, int line, const App::DocumentObject *to, const char *attr_to, const App::DocumentObject *from, const char *attr_from); //@} - /// Get Python tuple from object and sub-elements + /// Get Python tuple from object and sub-elements static std::string getPythonTuple(const std::string& name, const std::vector& subnames); /// translate a string to a python string literal (needed e.g. in file names for windows...) const std::string strToPython(const char* Str); @@ -565,8 +565,8 @@ public: const char* getGroupName() const { return sGroup; } void setGroupName(const char*); //@} - - + + /** @name arbitrary helper methods */ //@{ void adjustCameraPosition(); @@ -593,9 +593,9 @@ protected: NoTransaction = 16, /**< Do not setup auto transaction */ }; - /** @name Attributes - * Set by the inherited constructor to set up the most important properties - * of the command. In the Command constructor are set default values! + /** @name Attributes + * Set by the inherited constructor to set up the most important properties + * of the command. In the Command constructor are set default values! * The real values should be set in the constructor of the inhereting class. */ //@{ @@ -649,9 +649,9 @@ protected: }; /** The Python command class - * This is a special type of command class. It's used to bind a Python command class into the + * This is a special type of command class. It's used to bind a Python command class into the * FreeCAD command framework. - * An object of this class gets a reference to the Python command object and manages all the + * An object of this class gets a reference to the Python command object and manages all the * passing between the C++ and the Python world. This includes everything like setting resources such as * bitmaps, activation or bindings to the user interface. * @see CommandManager @@ -679,7 +679,7 @@ protected: public: /** @name Methods to get the properties of the command */ //@{ - /// Reassigns QAction stuff after the language has changed. + /// Reassigns QAction stuff after the language has changed. void languageChange(); const char* className() const { return "PythonCommand"; } @@ -730,7 +730,7 @@ protected: public: /** @name Methods to get the properties of the command */ //@{ - /// Reassigns QAction stuff after the language has changed. + /// Reassigns QAction stuff after the language has changed. void languageChange(); const char* className() const { return "PythonGroupCommand"; } @@ -755,7 +755,7 @@ protected: /** The script command class - * This is a special type of command class. Its used to bind a macro or Python script to the + * This is a special type of command class. Its used to bind a macro or Python script to the * FreeCAD command framework. * An object of this class gets a string to the place where the script is in the file system. * Unlike the other commands the resources can be set by several methods. @@ -781,11 +781,11 @@ protected: public: /// Returns the script name const char* getScriptName () const { return sScriptName; } - /// Ignore when language has changed. + /// Ignore when language has changed. void languageChange() {} const char* className() const { return "Gui::MacroCommand"; } - + /** @name Methods to set the properties of the Script Command */ //@{ /// Sets the script name @@ -806,10 +806,10 @@ protected: }; /** The CommandManager class - * This class manage all available commands in FreeCAD. All + * This class manage all available commands in FreeCAD. All * Commands will registered here, also commands from Application * modules. Also activation / deactivation, Icons Tooltips and so - * on are handles here. Further the Building of Toolbars and (Context) + * on are handles here. Further the Building of Toolbars and (Context) * menus (connecting to a QAction) is done here. * @see Command * @author Jürgen Riegel @@ -830,7 +830,7 @@ public: bool addTo(const char* Name, QWidget* pcWidget); /** Returns all commands of a special App Module - * delivers a vector of all commands in the given application module. When no + * delivers a vector of all commands in the given application module. When no * name is given the standard commands (build in ) are returned. * @see Command */ diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index a29edc43ad..bba8d391e9 100644 --- a/src/Gui/CommandDoc.cpp +++ b/src/Gui/CommandDoc.cpp @@ -179,7 +179,7 @@ StdCmdImport::StdCmdImport() sToolTipText = QT_TR_NOOP("Import a file in the active document"); sWhatsThis = "Std_Import"; sStatusTip = QT_TR_NOOP("Import a file in the active document"); - //sPixmap = "Open"; + sPixmap = "Std_Import"; sAccel = "Ctrl+I"; } @@ -267,6 +267,7 @@ StdCmdExport::StdCmdExport() sStatusTip = QT_TR_NOOP("Export an object in the active document"); //sPixmap = "Open"; sAccel = "Ctrl+E"; + sPixmap = "Std_Export"; eType = 0; } @@ -331,6 +332,7 @@ StdCmdMergeProjects::StdCmdMergeProjects() sToolTipText = QT_TR_NOOP("Merge project"); sWhatsThis = "Std_MergeProjects"; sStatusTip = QT_TR_NOOP("Merge project"); + sPixmap = "Std_MergeProjects"; } void StdCmdMergeProjects::activated(int iMsg) @@ -384,6 +386,7 @@ StdCmdDependencyGraph::StdCmdDependencyGraph() sStatusTip = QT_TR_NOOP("Show the dependency graph of the objects in the active document"); sWhatsThis = "Std_DependencyGraph"; eType = 0; + sPixmap = "Std_DependencyGraph"; } void StdCmdDependencyGraph::activated(int iMsg) @@ -527,7 +530,7 @@ StdCmdSaveCopy::StdCmdSaveCopy() sToolTipText = QT_TR_NOOP("Save a copy of the active document under a new file name"); sWhatsThis = "Std_SaveCopy"; sStatusTip = QT_TR_NOOP("Save a copy of the active document under a new file name"); - //sPixmap = "document-save-as"; + sPixmap = "Std_SaveCopy"; } void StdCmdSaveCopy::activated(int iMsg) @@ -560,11 +563,12 @@ StdCmdSaveAll::StdCmdSaveAll() sToolTipText = QT_TR_NOOP("Save all opened document"); sWhatsThis = "Std_SaveAll"; sStatusTip = QT_TR_NOOP("Save all opened document"); + sPixmap = "Std_SaveAll"; } void StdCmdSaveAll::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Document::saveAll(); } @@ -587,7 +591,7 @@ StdCmdRevert::StdCmdRevert() sToolTipText = QT_TR_NOOP("Reverts to the saved version of this file"); sWhatsThis = "Std_Revert"; sStatusTip = QT_TR_NOOP("Reverts to the saved version of this file"); - //sPixmap = "document-revert"; + sPixmap = "Std_Revert"; eType = NoTransaction; } @@ -658,6 +662,7 @@ StdCmdProjectUtil::StdCmdProjectUtil() sMenuText = QT_TR_NOOP("Project utility..."); sToolTipText = QT_TR_NOOP("Utility to extract or create project files"); sStatusTip = QT_TR_NOOP("Utility to extract or create project files"); + sPixmap = "Std_ProjectUtil"; } void StdCmdProjectUtil::activated(int iMsg) @@ -747,6 +752,7 @@ StdCmdPrintPdf::StdCmdPrintPdf() sToolTipText = QT_TR_NOOP("Export the document as PDF"); sWhatsThis = "Std_PrintPdf"; sStatusTip = QT_TR_NOOP("Export the document as PDF"); + sPixmap = "Std_PrintPdf"; eType = 0; } @@ -1048,7 +1054,7 @@ void StdCmdDuplicateSelection::activated(int iMsg) "To link to external objects, the document must be saved at least once.\n" "Do you want to save the document now?"), QMessageBox::Yes,QMessageBox::No); - if(ret == QMessageBox::Yes) + if(ret == QMessageBox::Yes) proceed = Application::Instance->getDocument(doc)->saveAs(); } if(proceed) { @@ -1129,7 +1135,7 @@ void StdCmdDelete::activated(int iMsg) std::set docs; try { - openCommand("Delete"); + openCommand(QT_TRANSLATE_NOOP("Command", "Delete")); if (getGuiApplication()->sendHasMsgToFocusView(getName())) { commitCommand(); return; @@ -1218,8 +1224,8 @@ void StdCmdDelete::activated(int iMsg) bodyMessageStream << "\n"; } std::string thisDoc = pGuiDoc->getDocument()->getName(); - bodyMessageStream << qApp->translate("Std_Delete", - "These items are selected for deletion, but are not in the active document."); + bodyMessageStream << qApp->translate("Std_Delete", + "These items are selected for deletion, but are not in the active document."); for (const auto ¤tLabel : inactiveLabels) bodyMessageStream << currentLabel << " / " << Base::Tools::fromStdString(thisDoc) << '\n'; } @@ -1301,7 +1307,7 @@ StdCmdRefresh::StdCmdRefresh() // undoing the last transaction the manual recompute will clear the redo stack. ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( "User parameter:BaseApp/Preferences/Document"); - bool create = hGrp->GetBool("TransactionOnRecompute", true); + bool create = hGrp->GetBool("TransactionOnRecompute", false); if (!create) eType = eType | NoTransaction; } @@ -1618,7 +1624,7 @@ protected: << " (" << obj->Label.getValue() << ')' << std::endl; ss << "##@@"; if(v.second->comment.size()) { - if(v.second->comment[0] == '&' + if(v.second->comment[0] == '&' || v.second->comment.find('\n') != std::string::npos || v.second->comment.find('\r') != std::string::npos) { @@ -1639,7 +1645,7 @@ protected: } void pasteExpressions() { - std::map > > exprs; bool failed = false; @@ -1708,7 +1714,7 @@ protected: return; } - openCommand("Paste expressions"); + openCommand(QT_TRANSLATE_NOOP("Command", "Paste expressions")); try { for(auto &v : exprs) { for(auto &v2 : v.second) { diff --git a/src/Gui/CommandFeat.cpp b/src/Gui/CommandFeat.cpp index 52d0a5f859..008534ec76 100644 --- a/src/Gui/CommandFeat.cpp +++ b/src/Gui/CommandFeat.cpp @@ -58,7 +58,7 @@ StdCmdFeatRecompute::StdCmdFeatRecompute() void StdCmdFeatRecompute::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } //=========================================================================== diff --git a/src/Gui/CommandLink.cpp b/src/Gui/CommandLink.cpp index 1e699caa55..5063588389 100644 --- a/src/Gui/CommandLink.cpp +++ b/src/Gui/CommandLink.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -140,7 +140,7 @@ void StdCmdLinkMakeGroup::activated(int option) { Selection().selStackPush(); Selection().clearCompleteSelection(); - Command::openCommand("Make link group"); + Command::openCommand(QT_TRANSLATE_NOOP("Command", "Make link group")); try { std::string groupName = doc->getUniqueObjectName("LinkGroup"); Command::doCommand(Command::Doc, @@ -236,7 +236,7 @@ void StdCmdLinkMake::activated(int) { Selection().selStackPush(); Selection().clearCompleteSelection(); - Command::openCommand("Make link"); + Command::openCommand(QT_TRANSLATE_NOOP("Command", "Make link")); try { if(objs.empty()) { std::string name = doc->getUniqueObjectName("Link"); @@ -289,7 +289,7 @@ void StdCmdLinkMakeRelative::activated(int) { FC_ERR("no active document"); return; } - Command::openCommand("Make sub-link"); + Command::openCommand(QT_TRANSLATE_NOOP("Command", "Make sub-link")); try { std::map, std::pair > > linkInfo; @@ -320,7 +320,7 @@ void StdCmdLinkMakeRelative::activated(int) { ss << "'" << s << "',"; ss << ']'; FCMD_DOC_CMD(doc,"addObject('App::Link','" << name << "').setLink(" - << getObjectCmd(key.first) << ",'" << key.second + << getObjectCmd(key.first) << ",'" << key.second << "'," << ss.str() << ")"); auto link = doc->getObject(name.c_str()); FCMD_OBJ_CMD(link,"LinkTransform = True"); @@ -547,7 +547,7 @@ StdCmdLinkImport::StdCmdLinkImport() sPixmap = "LinkImport"; } -static std::map > getLinkImportSelections() +static std::map > getLinkImportSelections() { std::map > objMap; for(auto &sel : Selection().getCompleteSelection(false)) { @@ -576,7 +576,7 @@ bool StdCmdLinkImport::isActive() { } void StdCmdLinkImport::activated(int) { - Command::openCommand("Import links"); + Command::openCommand(QT_TRANSLATE_NOOP("Command", "Import links")); try { WaitCursor wc; wc.setIgnoreEvents(WaitCursor::NoEvents); @@ -617,7 +617,7 @@ bool StdCmdLinkImportAll::isActive() { } void StdCmdLinkImportAll::activated(int) { - Command::openCommand("Import all links"); + Command::openCommand(QT_TRANSLATE_NOOP("Command", "Import all links")); try { WaitCursor wc; wc.setIgnoreEvents(WaitCursor::NoEvents); @@ -678,7 +678,7 @@ static App::DocumentObject *getSelectedLink(bool finalLink, std::string *subname if(obj->getDocument()!=sels[0].pObject->getDocument()) { if(finalLink) return sobj==obj?0:sobj; - if(subname) + if(subname) *subname = std::string(dot+1); return obj; } @@ -705,7 +705,7 @@ static App::DocumentObject *getSelectedLink(bool finalLink, std::string *subname for(auto &v : linked->getParents()) { if(v.first != sels[0].pObject) continue; - + const char *sub = v.second.c_str(); const char *dot = sub; for(const char *s=sels[0].SubName; *s && *sub==*s; ++s,++sub) { @@ -713,9 +713,9 @@ static App::DocumentObject *getSelectedLink(bool finalLink, std::string *subname dot = sub; } found = true; - if(dot-v.second.c_str() > pre_len - || (dot-v.second.c_str()==pre_len - && v.second.size() pre_len + || (dot-v.second.c_str()==pre_len + && v.second.size()macroManager()->commit(); } @@ -112,7 +112,7 @@ StdCmdDlgMacroExecute::StdCmdDlgMacroExecute() void StdCmdDlgMacroExecute::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Dialog::DlgMacroExecuteImp cDlg(getMainWindow()); cDlg.exec(); } @@ -142,7 +142,7 @@ StdCmdDlgMacroExecuteDirect::StdCmdDlgMacroExecuteDirect() void StdCmdDlgMacroExecuteDirect::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); doCommand(Command::Gui,"Gui.SendMsgToActiveView(\"Run\")"); } @@ -193,7 +193,7 @@ StdCmdMacroStartDebug::StdCmdMacroStartDebug() void StdCmdMacroStartDebug::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); PythonDebugger* dbg = Application::Instance->macroManager()->debugger(); if (!dbg->isRunning()) doCommand(Command::Gui,"Gui.SendMsgToActiveView(\"StartDebug\")"); @@ -223,7 +223,7 @@ StdCmdMacroStopDebug::StdCmdMacroStopDebug() void StdCmdMacroStopDebug::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Application::Instance->macroManager()->debugger()->tryStop(); } @@ -250,7 +250,7 @@ StdCmdMacroStepOver::StdCmdMacroStepOver() void StdCmdMacroStepOver::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Application::Instance->macroManager()->debugger()->stepOver(); } @@ -277,7 +277,7 @@ StdCmdMacroStepInto::StdCmdMacroStepInto() void StdCmdMacroStepInto::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Application::Instance->macroManager()->debugger()->stepInto(); } @@ -304,7 +304,7 @@ StdCmdToggleBreakpoint::StdCmdToggleBreakpoint() void StdCmdToggleBreakpoint::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); doCommand(Command::Gui,"Gui.SendMsgToActiveView(\"ToggleBreakpoint\")"); } diff --git a/src/Gui/CommandPy.xml b/src/Gui/CommandPy.xml index 84f6550200..410be417fb 100644 --- a/src/Gui/CommandPy.xml +++ b/src/Gui/CommandPy.xml @@ -94,5 +94,10 @@ Usage: menuText, tooltipText, whatsThisText, statustipText, pixmapText, shortcut + + + getAction() -> list of QAction + + diff --git a/src/Gui/CommandPyImp.cpp b/src/Gui/CommandPyImp.cpp index 2597680a49..ac53da4441 100644 --- a/src/Gui/CommandPyImp.cpp +++ b/src/Gui/CommandPyImp.cpp @@ -31,6 +31,7 @@ #include "MainWindow.h" #include "Selection.h" #include "Window.h" +#include "WidgetFactory.h" // inclusion of the generated files (generated out of AreaPy.xml) #include "CommandPy.h" @@ -311,6 +312,36 @@ PyObject* CommandPy::getInfo(PyObject *args) } } +PyObject* CommandPy::getAction(PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return nullptr; + + Command* cmd = this->getCommandPtr(); + if (cmd) { + Action* action = cmd->getAction(); + ActionGroup* group = qobject_cast(action); + + PythonWrapper wrap; + wrap.loadWidgetsModule(); + + Py::List list; + if (group) { + for (auto a : group->actions()) + list.append(wrap.fromQObject(a)); + } + else if (action) { + list.append(wrap.fromQObject(action->action())); + } + + return Py::new_reference_to(list); + } + else { + PyErr_Format(Base::BaseExceptionFreeCADError, "No such command"); + return nullptr; + } +} + PyObject *CommandPy::getCustomAttributes(const char* /*attr*/) const { return 0; diff --git a/src/Gui/CommandStd.cpp b/src/Gui/CommandStd.cpp index ce1bee3d27..e3551d2375 100644 --- a/src/Gui/CommandStd.cpp +++ b/src/Gui/CommandStd.cpp @@ -106,11 +106,11 @@ void StdCmdWorkbench::activated(int i) int pos = rx.indexIn(msg); if (pos != -1) msg = msg.mid(rx.matchedLength()); - QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"), msg); + QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"), msg); } catch(...) { - QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"), - QObject::tr("A general error occurred while loading the workbench")); + QMessageBox::critical(getMainWindow(), QObject::tr("Cannot load workbench"), + QObject::tr("A general error occurred while loading the workbench")); } } @@ -146,6 +146,7 @@ StdCmdRecentFiles::StdCmdRecentFiles() sToolTipText = QT_TR_NOOP("Recent file list"); sWhatsThis = "Std_RecentFiles"; sStatusTip = QT_TR_NOOP("Recent file list"); + sPixmap = "Std_RecentFiles"; eType = NoTransaction; } @@ -264,7 +265,7 @@ bool StdCmdAbout::isActive() */ void StdCmdAbout::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); const Gui::Dialog::AboutDialogFactory* f = Gui::Dialog::AboutDialogFactory::defaultFactory(); boost::scoped_ptr dlg(f->create(getMainWindow())); dlg->exec(); @@ -302,7 +303,7 @@ StdCmdAboutQt::StdCmdAboutQt() void StdCmdAboutQt::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); qApp->aboutQt(); } @@ -326,7 +327,7 @@ StdCmdWhatsThis::StdCmdWhatsThis() void StdCmdWhatsThis::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QWhatsThis::enterWhatsThisMode(); } @@ -343,13 +344,13 @@ StdCmdDlgParameter::StdCmdDlgParameter() sToolTipText = QT_TR_NOOP("Opens a Dialog to edit the parameters"); sWhatsThis = "Std_DlgParameter"; sStatusTip = QT_TR_NOOP("Opens a Dialog to edit the parameters"); - //sPixmap = "settings"; + sPixmap = "Std_DlgParameter"; eType = 0; } void StdCmdDlgParameter::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Dialog::DlgParameterImp cDlg(getMainWindow()); cDlg.resize(QSize(800, 600)); cDlg.exec(); @@ -381,7 +382,7 @@ Action * StdCmdDlgPreferences::createAction(void) void StdCmdDlgPreferences::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Dialog::DlgPreferencesImp cDlg(getMainWindow()); cDlg.exec(); } @@ -405,7 +406,7 @@ StdCmdDlgCustomize::StdCmdDlgCustomize() void StdCmdDlgCustomize::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); static QPointer dlg = 0; if (!dlg) dlg = new Gui::Dialog::DlgCustomizeImp(getMainWindow()); @@ -432,7 +433,7 @@ StdCmdCommandLine::StdCmdCommandLine() void StdCmdCommandLine::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); bool show = getMainWindow()->isMaximized (); // pop up the Gui command window @@ -481,7 +482,7 @@ StdCmdOnlineHelp::StdCmdOnlineHelp() void StdCmdOnlineHelp::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::getMainWindow()->showDocumentation(QString::fromLatin1("Online_Help_Startpage")); } @@ -504,7 +505,7 @@ StdCmdOnlineHelpWebsite::StdCmdOnlineHelpWebsite() void StdCmdOnlineHelpWebsite::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/Online_Help_Toc").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("OnlineHelp", defaulturl.c_str()); @@ -532,7 +533,7 @@ StdCmdFreeCADWebsite::StdCmdFreeCADWebsite() void StdCmdFreeCADWebsite::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("WebPage", defaulturl.c_str()); @@ -560,7 +561,7 @@ StdCmdFreeCADUserHub::StdCmdFreeCADUserHub() void StdCmdFreeCADUserHub::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/User_hub").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("Documentation", defaulturl.c_str()); @@ -588,7 +589,7 @@ StdCmdFreeCADPowerUserHub::StdCmdFreeCADPowerUserHub() void StdCmdFreeCADPowerUserHub::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/Power_users_hub").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("PowerUsers", defaulturl.c_str()); @@ -616,7 +617,7 @@ StdCmdFreeCADForum::StdCmdFreeCADForum() void StdCmdFreeCADForum::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://forum.freecadweb.org").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("UserForum", defaulturl.c_str()); @@ -644,7 +645,7 @@ StdCmdFreeCADFAQ::StdCmdFreeCADFAQ() void StdCmdFreeCADFAQ::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); std::string defaulturl = QCoreApplication::translate(this->className(),"http://www.freecadweb.org/wiki/FAQ").toStdString(); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Websites"); std::string url = hURLGrp->GetASCII("FAQ", defaulturl.c_str()); @@ -672,7 +673,7 @@ StdCmdPythonWebsite::StdCmdPythonWebsite() void StdCmdPythonWebsite::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); OpenURLInBrowser("http://python.org"); } @@ -696,9 +697,9 @@ StdCmdMeasurementSimple::StdCmdMeasurementSimple() void StdCmdMeasurementSimple::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); unsigned int n = getSelection().countObjectsOfType(App::DocumentObject::getClassTypeId()); - + if (n == 1) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Only one object selected. Please select two objects.\n" @@ -724,7 +725,7 @@ void StdCmdMeasurementSimple::activated(int iMsg) name += "-"; name += Sel[1].SubName; - openCommand("Insert measurement"); + openCommand(QT_TRANSLATE_NOOP("Command", "Insert measurement")); doCommand(Doc,"_f = App.activeDocument().addObject(\"App::MeasureDistance\",\"%s\")","Measurement"); doCommand(Doc,"_f.Label ='%s'",name.c_str()); doCommand(Doc,"_f.P1 = FreeCAD.Vector(%f,%f,%f)",Sel[0].x,Sel[0].y,Sel[0].z); @@ -755,7 +756,7 @@ void StdCmdTextDocument::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Insert text document"); + openCommand(QT_TRANSLATE_NOOP("Command", "Insert text document")); doCommand(Doc, "App.ActiveDocument.addObject(\"App::TextDocument\",\"%s\").Label=\"%s\"","Text document","Text document"); doCommand(Gui, "Gui.ActiveDocument.ActiveObject.doubleClicked()"); updateActive(); @@ -786,7 +787,7 @@ StdCmdUnitsCalculator::StdCmdUnitsCalculator() void StdCmdUnitsCalculator::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Dialog::DlgUnitsCalculator *dlg = new Gui::Dialog::DlgUnitsCalculator( getMainWindow() ); dlg->show(); } diff --git a/src/Gui/CommandStructure.cpp b/src/Gui/CommandStructure.cpp index f7b5577cfa..5b90e67510 100644 --- a/src/Gui/CommandStructure.cpp +++ b/src/Gui/CommandStructure.cpp @@ -60,7 +60,7 @@ void StdCmdPart::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Add a part"); + openCommand(QT_TRANSLATE_NOOP("Command", "Add a part")); std::string FeatName = getUniqueObjectName("Part"); std::string PartName; @@ -101,7 +101,7 @@ void StdCmdGroup::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Add a group"); + openCommand(QT_TRANSLATE_NOOP("Command", "Add a group")); std::string GroupName; GroupName = getUniqueObjectName("Group"); diff --git a/src/Gui/CommandT.h b/src/Gui/CommandT.h index 4de1b06a91..ee29102d9f 100644 --- a/src/Gui/CommandT.h +++ b/src/Gui/CommandT.h @@ -65,7 +65,7 @@ public: * @param mod: module name, "Gui" or "App" * @param cmd: command string, streamable * - * Example: + * Example: * @code{.cpp} * _cmdDocument(Gui::Command::Gui, doc, "Gui", std::stringstream() << "getObject('" << objName << "')"); * @endcode @@ -93,7 +93,7 @@ void _cmdDocument(Gui::Command::DoCmd_Type cmdType, const App::Document* doc, co * @param cmd: command string, streamable * @sa _cmdDocument() * - * Example: + * Example: * @code{.cpp} * cmdAppDocument(doc, std::stringstream() << "getObject('" << objName << "')"); * @endcode @@ -115,7 +115,7 @@ inline void cmdAppDocument(const App::Document* doc, T&& cmd) { * @param cmd: command string, streamable * @sa _cmdDocument() * - * Example: + * Example: * @code{.cpp} * cmdGuiDocument(doc, std::stringstream() << "getObject('" << objName << "')"); * @endcode @@ -169,7 +169,7 @@ inline void cmdGuiDocument(const App::DocumentObject* obj, T&& cmd) { * @param mod: module name, "Gui" or "App" * @param cmd: command string, streamable * - * Example: + * Example: * @code{.cpp} * _cmdObject(Command::Gui,obj,"Gui", "Visibility = " << (visible?"True":"False")); * @endcode @@ -245,7 +245,7 @@ inline void cmdSetEdit(const App::DocumentObject* obj) { * @param cmd: command string, supporting printf like formatter * @param obj: pointer to a DocumentObject * - * Example: + * Example: * @code{.cpp} * cmdAppObjectArgs(obj, "Visibility = %s", visible ? "True" : "False"); * @endcode @@ -304,7 +304,7 @@ void cmdGuiObjectArgs(const App::DocumentObject* obj, const std::string& cmd, Ar * @param cmdType: command type * @param cmd: command string, supporting printf like formatter * - * Example: + * Example: * @code{.cpp} * doCommandT(Gui::Command::Gui, "Gui.getDocument(%s).getObject(%s).Visibility = %s", "DocName", "ObjName", visible?"True":"False"); * @endcode diff --git a/src/Gui/CommandTest.cpp b/src/Gui/CommandTest.cpp index db7cc6ee7e..032635011e 100644 --- a/src/Gui/CommandTest.cpp +++ b/src/Gui/CommandTest.cpp @@ -70,7 +70,7 @@ Std_TestQM::Std_TestQM() void Std_TestQM::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QStringList files = QFileDialog::getOpenFileNames(getMainWindow(), QString::fromLatin1("Test translation"), QString(), QString::fromLatin1("Translation (*.qm)")); @@ -108,7 +108,7 @@ Std_TestReloadQM::Std_TestReloadQM() void Std_TestReloadQM::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Translator::instance()->activateLanguage(Translator::instance()->activeLanguage().c_str()); } @@ -131,7 +131,7 @@ FCCmdTest1::FCCmdTest1() void FCCmdTest1::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } bool FCCmdTest1::isActive(void) @@ -159,7 +159,7 @@ FCCmdTest2::FCCmdTest2() void FCCmdTest2::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } bool FCCmdTest2::isActive(void) @@ -185,7 +185,7 @@ FCCmdTest3::FCCmdTest3() void FCCmdTest3::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); App::Document *pcDoc = getDocument(); if (!pcDoc) return; } @@ -215,7 +215,7 @@ FCCmdTest4::FCCmdTest4() void FCCmdTest4::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); App::Document *pcDoc = getDocument(); if(!pcDoc) return; } @@ -244,7 +244,7 @@ FCCmdTest5::FCCmdTest5() void FCCmdTest5::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); App::Document *pcDoc = getDocument(); if(!pcDoc) return; } @@ -273,7 +273,7 @@ FCCmdTest6::FCCmdTest6() void FCCmdTest6::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); App::Document *pcDoc = getDocument(); if(!pcDoc) return; } @@ -350,7 +350,7 @@ CmdTestProgress1::CmdTestProgress1() void CmdTestProgress1::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QMutex mutex; QMutexLocker ml(&mutex); try @@ -392,7 +392,7 @@ CmdTestProgress2::CmdTestProgress2() void CmdTestProgress2::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QMutex mutex; QMutexLocker ml(&mutex); @@ -435,10 +435,10 @@ CmdTestProgress3::CmdTestProgress3() void CmdTestProgress3::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QMutex mutex; QMutexLocker ml(&mutex); - + try { // level 1 @@ -505,7 +505,7 @@ CmdTestProgress4::CmdTestProgress4() void CmdTestProgress4::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QMutex mutex; QMutexLocker ml(&mutex); @@ -571,7 +571,7 @@ public: { QMutex mutex; QMutexLocker ml(&mutex); - + try { Base::SequencerLauncher seq("Starting progress bar in thread", steps); @@ -596,7 +596,7 @@ private: void CmdTestProgress5::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QEventLoop loop; BarThread* thr1 = new BarThread(2000); @@ -639,7 +639,7 @@ CmdTestMDI1::CmdTestMDI1() void CmdTestMDI1::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); MDIView* mdi = getMainWindow()->activeWindow(); getMainWindow()->removeWindow(mdi); } @@ -663,7 +663,7 @@ CmdTestMDI2::CmdTestMDI2() void CmdTestMDI2::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QMdiArea* area = getMainWindow()->findChild(); if (area) { MDIView* mdi = getMainWindow()->activeWindow(); @@ -691,11 +691,11 @@ CmdTestMDI3::CmdTestMDI3() void CmdTestMDI3::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); MDIView* mdi = getMainWindow()->activeWindow(); getMainWindow()->removeWindow(mdi); mdi->setParent(0, Qt::Window | Qt::WindowTitleHint | - Qt::WindowSystemMenuHint | + Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); mdi->show(); } @@ -790,7 +790,7 @@ public: void CmdTestConsoleOutput::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); TestConsoleObserver obs; Base::Console().AttachObserver(&obs); QThreadPool::globalInstance()->start(new ConsoleMessageTask); diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index cf7b024761..5ed54ca0e2 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -199,6 +199,64 @@ Action * StdPerspectiveCamera::createAction(void) return pcAction; } +//=========================================================================== + +// The two commands below are provided for convenience so that they can be bound +// to a button of a space mouse + +//=========================================================================== +// Std_ViewSaveCamera +//=========================================================================== + +DEF_3DV_CMD(StdCmdViewSaveCamera) + +StdCmdViewSaveCamera::StdCmdViewSaveCamera() + : Command("Std_ViewSaveCamera") +{ + sGroup = QT_TR_NOOP("Standard-View"); + sMenuText = QT_TR_NOOP("Save current camera"); + sToolTipText = QT_TR_NOOP("Save current camera settings"); + sStatusTip = QT_TR_NOOP("Save current camera settings"); + sWhatsThis = "Std_ViewSaveCamera"; + eType = Alter3DView; +} + +void StdCmdViewSaveCamera::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + Gui::View3DInventor* view = qobject_cast(Gui::getMainWindow()->activeWindow()); + if (view) { + view->getViewer()->saveHomePosition(); + } +} + +//=========================================================================== +// Std_ViewRestoreCamera +//=========================================================================== +DEF_3DV_CMD(StdCmdViewRestoreCamera) + +StdCmdViewRestoreCamera::StdCmdViewRestoreCamera() + : Command("Std_ViewRestoreCamera") +{ + sGroup = QT_TR_NOOP("Standard-View"); + sMenuText = QT_TR_NOOP("Restore saved camera"); + sToolTipText = QT_TR_NOOP("Restore saved camera settings"); + sStatusTip = QT_TR_NOOP("Restore saved camera settings"); + sWhatsThis = "Std_ViewRestoreCamera"; + eType = Alter3DView; +} + +void StdCmdViewRestoreCamera::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + Gui::View3DInventor* view = qobject_cast(Gui::getMainWindow()->activeWindow()); + if (view) { + view->getViewer()->resetToHomePosition(); + } +} + //=========================================================================== // Std_FreezeViews //=========================================================================== @@ -609,7 +667,7 @@ Gui::Action * StdCmdDrawStyle::createAction(void) a1->setCheckable(true); a1->setIcon(BitmapFactory().iconFromTheme("DrawStylePoints")); a1->setObjectName(QString::fromLatin1("Std_DrawStylePoints")); - a1->setShortcut(QKeySequence(QString::fromUtf8("V,2"))); + a1->setShortcut(QKeySequence(QString::fromUtf8("V,2"))); a1->setWhatsThis(QString::fromLatin1(sWhatsThis)); QAction* a2 = pcAction->addAction(QString()); a2->setCheckable(true); @@ -732,7 +790,7 @@ void StdCmdDrawStyle::updateIcon(const MDIView *view) { actionGroup->setCheckedAction(5); return; - } + } if (mode == "Flat Lines") { actionGroup->setCheckedAction(6); @@ -811,7 +869,7 @@ StdCmdToggleVisibility::StdCmdToggleVisibility() void StdCmdToggleVisibility::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Selection().setVisible(SelectionSingleton::VisToggle); } @@ -885,7 +943,7 @@ StdCmdShowSelection::StdCmdShowSelection() void StdCmdShowSelection::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Selection().setVisible(SelectionSingleton::VisShow); } @@ -912,7 +970,7 @@ StdCmdHideSelection::StdCmdHideSelection() void StdCmdHideSelection::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Selection().setVisible(SelectionSingleton::VisHide); } @@ -2554,14 +2612,14 @@ static std::vector getBoxSelection( // check if both two boundary points are inside polygon, only // valid since we know the given polygon is a box. - if(polygon.Contains(Base::Vector2d(bbox.MinX,bbox.MinY)) && - polygon.Contains(Base::Vector2d(bbox.MaxX,bbox.MaxY))) + if(polygon.Contains(Base::Vector2d(bbox.MinX,bbox.MinY)) && + polygon.Contains(Base::Vector2d(bbox.MaxX,bbox.MaxY))) { ret.emplace_back(""); return ret; } - if(!bbox.Intersect(polygon)) + if(!bbox.Intersect(polygon)) return ret; const auto &subs = obj->getSubObjects(App::DocumentObject::GS_SELECT); @@ -2630,7 +2688,7 @@ static std::vector getBoxSelection( std::string childName; Base::Matrix4D smat(mat); auto sobj = obj->resolve(sub.c_str(),&parent,&childName,0,0,&smat,transform,depth+1); - if(!sobj) + if(!sobj) continue; int vis; if(!parent || (vis=parent->isElementVisible(childName.c_str()))<0) @@ -2707,7 +2765,7 @@ static void selectionCallback(void * ud, SoEventCallback * cb) continue; Base::Matrix4D mat; - for(auto &sub : getBoxSelection(vp,selectionMode,selectElement,proj,polygon,mat)) + for(auto &sub : getBoxSelection(vp,selectionMode,selectElement,proj,polygon,mat)) Gui::Selection().addSelection(doc->getName(), obj->getNameInDocument(), sub.c_str()); } } @@ -2757,7 +2815,7 @@ StdBoxElementSelection::StdBoxElementSelection() void StdBoxElementSelection::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); View3DInventor* view = qobject_cast(getMainWindow()->activeWindow()); if (view) { View3DInventorViewer* viewer = view->getViewer(); @@ -2822,7 +2880,7 @@ StdCmdTreeCollapse::StdCmdTreeCollapse() void StdCmdTreeCollapse::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QList tree = Gui::getMainWindow()->findChildren(); for (QList::iterator it = tree.begin(); it != tree.end(); ++it) (*it)->expandSelectedItems(TreeItemMode::CollapseItem); @@ -2847,7 +2905,7 @@ StdCmdTreeExpand::StdCmdTreeExpand() void StdCmdTreeExpand::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); QList tree = Gui::getMainWindow()->findChildren(); for (QList::iterator it = tree.begin(); it != tree.end(); ++it) (*it)->expandSelectedItems(TreeItemMode::ExpandItem); @@ -2885,7 +2943,7 @@ bool StdCmdTreeSelectAllInstances::isActive(void) void StdCmdTreeSelectAllInstances::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); const auto &sels = Selection().getSelectionEx("*",App::DocumentObject::getClassTypeId(),true,true); if(sels.empty()) return; @@ -2894,7 +2952,7 @@ void StdCmdTreeSelectAllInstances::activated(int iMsg) return; auto vpd = dynamic_cast( Application::Instance->getViewProvider(obj)); - if(!vpd) + if(!vpd) return; Selection().selStackPush(); Selection().clearCompleteSelection(); @@ -3009,6 +3067,7 @@ StdCmdSceneInspector::StdCmdSceneInspector() sWhatsThis = "Std_SceneInspector"; sStatusTip = QT_TR_NOOP("Scene inspector"); eType = Alter3DView; + sPixmap = "Std_SceneInspector"; } void StdCmdSceneInspector::activated(int iMsg) @@ -3067,6 +3126,7 @@ StdCmdDemoMode::StdCmdDemoMode() sWhatsThis = "Std_DemoMode"; sStatusTip = QT_TR_NOOP("View turntable"); eType = Alter3DView; + sPixmap = "Std_DemoMode"; } void StdCmdDemoMode::activated(int iMsg) @@ -3159,7 +3219,7 @@ StdCmdSelBack::StdCmdSelBack() void StdCmdSelBack::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Selection().selStackGoBack(); } @@ -3189,7 +3249,7 @@ StdCmdSelForward::StdCmdSelForward() void StdCmdSelForward::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Selection().selStackGoForward(); } @@ -3221,7 +3281,7 @@ bool StdTree##_name::isActive() {\ _pcAction->setChecked(checked,true);\ return true;\ } - + TREEVIEW_DOC_CMD_DEF(SingleDocument,0) StdTreeSingleDocument::StdTreeSingleDocument() @@ -3294,7 +3354,7 @@ bool StdTree##_name::isActive() {\ _pcAction->setChecked(checked,true);\ return true;\ } - + TREEVIEW_CMD_DEF(SyncView) StdTreeSyncView::StdTreeSyncView() @@ -3552,6 +3612,8 @@ void CreateViewStdCommands(void) rcCmdMgr.addCommand(new StdPerspectiveCamera()); rcCmdMgr.addCommand(new StdCmdToggleClipPlane()); rcCmdMgr.addCommand(new StdCmdDrawStyle()); + rcCmdMgr.addCommand(new StdCmdViewSaveCamera()); + rcCmdMgr.addCommand(new StdCmdViewRestoreCamera()); rcCmdMgr.addCommand(new StdCmdFreezeViews()); rcCmdMgr.addCommand(new StdViewZoomIn()); rcCmdMgr.addCommand(new StdViewZoomOut()); diff --git a/src/Gui/CommandWindow.cpp b/src/Gui/CommandWindow.cpp index 9017a2ddbc..822378c48f 100644 --- a/src/Gui/CommandWindow.cpp +++ b/src/Gui/CommandWindow.cpp @@ -61,7 +61,7 @@ StdCmdArrangeIcons::StdCmdArrangeIcons() void StdCmdArrangeIcons::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->arrangeIcons (); } @@ -89,7 +89,7 @@ StdCmdTileWindows::StdCmdTileWindows() void StdCmdTileWindows::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->tile(); } @@ -117,7 +117,7 @@ StdCmdCascadeWindows::StdCmdCascadeWindows() void StdCmdCascadeWindows::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->cascade(); } @@ -143,12 +143,13 @@ StdCmdCloseActiveWindow::StdCmdCloseActiveWindow() // collide with this shortcut. Thus the shortcut of QMdiSubWindow will be // reset in MainWindow::addWindow() (#0002631) sAccel = keySequenceToAccel(QKeySequence::Close); + sPixmap = "Std_CloseActiveWindow"; eType = NoTransaction; } void StdCmdCloseActiveWindow::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->closeActiveWindow(); } @@ -170,12 +171,13 @@ StdCmdCloseAllWindows::StdCmdCloseAllWindows() sToolTipText = QT_TR_NOOP("Close all windows"); sWhatsThis = "Std_CloseAllWindows"; sStatusTip = QT_TR_NOOP("Close all windows"); + sPixmap = "Std_CloseAllWindows"; eType = NoTransaction; } void StdCmdCloseAllWindows::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->closeAllDocuments(); } @@ -204,7 +206,7 @@ StdCmdActivateNextWindow::StdCmdActivateNextWindow() void StdCmdActivateNextWindow::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->activateNextWindow(); } @@ -233,7 +235,7 @@ StdCmdActivatePrevWindow::StdCmdActivatePrevWindow() void StdCmdActivatePrevWindow::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); getMainWindow()->activatePreviousWindow(); } @@ -261,7 +263,7 @@ StdCmdWindows::StdCmdWindows() void StdCmdWindows::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); Gui::Dialog::DlgActivateWindowImp dlg( getMainWindow() ); dlg.exec(); } @@ -307,7 +309,7 @@ StdCmdDockViewMenu::StdCmdDockViewMenu() void StdCmdDockViewMenu::activated(int iMsg) { // Handled by the related QAction objects - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } bool StdCmdDockViewMenu::isActive(void) @@ -343,7 +345,7 @@ StdCmdToolBarMenu::StdCmdToolBarMenu() void StdCmdToolBarMenu::activated(int iMsg) { // Handled by the related QAction objects - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } bool StdCmdToolBarMenu::isActive(void) @@ -366,7 +368,7 @@ Action * StdCmdToolBarMenu::createAction(void) class FilterStatusBar : public QObject { // Q_OBJECT - + public: FilterStatusBar(Action * action):QObject() {this->action = action;} // virtual ~FilterStatusBar() {} @@ -401,7 +403,7 @@ Action * StdCmdStatusBar::createAction(void) pcAction->setChecked(false, true); FilterStatusBar *fsb = new FilterStatusBar(pcAction); getMainWindow()->statusBar()->installEventFilter(fsb); - + return pcAction; } @@ -443,7 +445,7 @@ StdCmdWindowsMenu::StdCmdWindowsMenu() void StdCmdWindowsMenu::activated(int iMsg) { // already handled by the main window - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); } bool StdCmdWindowsMenu::isActive(void) diff --git a/src/Gui/Control.h b/src/Gui/Control.h index 68288940f6..169ce37bf5 100644 --- a/src/Gui/Control.h +++ b/src/Gui/Control.h @@ -59,7 +59,7 @@ public: static ControlSingleton& instance(void); static void destruct (void); - /** @name dialog handling + /** @name dialog handling * These methods are used to control the TaskDialog stuff. */ //@{ @@ -69,7 +69,7 @@ public: //void closeDialog(); //@} - /** @name task view handling + /** @name task view handling */ //@{ Gui::TaskView::TaskView* taskPanel() const; @@ -99,7 +99,7 @@ public Q_SLOTS: void accept(); void reject(); void closeDialog(); - /// raises the task view panel + /// raises the task view panel void showTaskView(); private Q_SLOTS: @@ -117,7 +117,7 @@ private: std::stack StatusStack; Gui::TaskView::TaskDialog *ActiveDialog; - + private: /// Construction ControlSingleton(); diff --git a/src/Gui/DemoMode.cpp b/src/Gui/DemoMode.cpp index b150311c63..bbd874873c 100644 --- a/src/Gui/DemoMode.cpp +++ b/src/Gui/DemoMode.cpp @@ -189,7 +189,7 @@ void DemoMode::reorientCamera(SoCamera * cam, const SbRotation & rot) void DemoMode::on_speedSlider_valueChanged(int v) { - Q_UNUSED(v); + Q_UNUSED(v); Gui::View3DInventor* view = activeView(); if (view && view->getViewer()->isAnimating()) { startAnimation(view); @@ -257,7 +257,7 @@ void DemoMode::startAnimation(Gui::View3DInventor* view) { if (!view->getViewer()->isAnimationEnabled()) view->getViewer()->setAnimationEnabled(true); - view->getViewer()->startAnimating(getDirection(view), + view->getViewer()->startAnimating(getDirection(view), getSpeed(ui->speedSlider->value())); } diff --git a/src/Gui/DlgActionsImp.cpp b/src/Gui/DlgActionsImp.cpp index 6e3479d76a..9cc3de483c 100644 --- a/src/Gui/DlgActionsImp.cpp +++ b/src/Gui/DlgActionsImp.cpp @@ -97,7 +97,7 @@ DlgCustomActionsImp::~DlgCustomActionsImp() { } -/** +/** * Displays this page. If no macros were found a message box * appears. */ @@ -125,18 +125,18 @@ bool DlgCustomActionsImp::event(QEvent* e) int index = topLevel->metaObject()->indexOfSignal( QMetaObject::normalizedSignature("addMacroAction(const QByteArray&)") ); if ( index >= 0 ) { if ( e->type() == QEvent::ParentChange ) { - connect(this, SIGNAL(addMacroAction( const QByteArray& )), + connect(this, SIGNAL(addMacroAction( const QByteArray& )), topLevel, SIGNAL(addMacroAction( const QByteArray& ))); - connect(this, SIGNAL(removeMacroAction( const QByteArray& )), + connect(this, SIGNAL(removeMacroAction( const QByteArray& )), topLevel, SIGNAL(removeMacroAction( const QByteArray& ))); - connect(this, SIGNAL(modifyMacroAction( const QByteArray& )), + connect(this, SIGNAL(modifyMacroAction( const QByteArray& )), topLevel, SIGNAL(modifyMacroAction( const QByteArray& ))); } else { - disconnect(this, SIGNAL(addMacroAction( const QByteArray& )), + disconnect(this, SIGNAL(addMacroAction( const QByteArray& )), topLevel, SIGNAL(addMacroAction( const QByteArray& ))); - disconnect(this, SIGNAL(removeMacroAction( const QByteArray& )), + disconnect(this, SIGNAL(removeMacroAction( const QByteArray& )), topLevel, SIGNAL(removeMacroAction( const QByteArray& ))); - disconnect(this, SIGNAL(modifyMacroAction( const QByteArray& )), + disconnect(this, SIGNAL(modifyMacroAction( const QByteArray& )), topLevel, SIGNAL(modifyMacroAction( const QByteArray& ))); } } @@ -179,7 +179,7 @@ void DlgCustomActionsImp::showActions() void DlgCustomActionsImp::on_actionListWidget_itemActivated(QTreeWidgetItem *item) { - if (!item) + if (!item) return; // no valid item // search for the command in the manager and if necessary in the temporary created ones @@ -205,7 +205,7 @@ void DlgCustomActionsImp::on_actionListWidget_itemActivated(QTreeWidgetItem *ite if (!bFound) { - QMessageBox::critical(this, tr("Macro not found"), + QMessageBox::critical(this, tr("Macro not found"), tr("Sorry, couldn't find macro file '%1'.").arg(scriptName)); } @@ -263,10 +263,10 @@ void DlgCustomActionsImp::on_buttonAddAction_clicked() if (!ui->actionWhatsThis->text().isEmpty()) macro->setWhatsThis(ui->actionWhatsThis->text().toUtf8()); ui->actionWhatsThis->clear(); - + if (!ui->actionMacros-> currentText().isEmpty()) macro->setScriptName(ui->actionMacros->currentText().toUtf8()); - + if (!ui->actionMenu->text().isEmpty()) macro->setMenuText(ui->actionMenu->text().toUtf8()); ui->actionMenu->clear(); @@ -320,10 +320,10 @@ void DlgCustomActionsImp::on_buttonReplaceAction_clicked() if (!ui->actionWhatsThis->text().isEmpty()) macro->setWhatsThis(ui->actionWhatsThis->text().toUtf8()); ui->actionWhatsThis->clear(); - + if (!ui->actionMacros-> currentText().isEmpty()) macro->setScriptName(ui->actionMacros->currentText().toUtf8()); - + if (!ui->actionMenu->text().isEmpty()) macro->setMenuText(ui->actionMenu->text().toUtf8()); ui->actionMenu->clear(); @@ -385,7 +385,7 @@ void DlgCustomActionsImp::on_buttonRemoveAction_clicked() { // remove item from list view QTreeWidgetItem* item = ui->actionListWidget->currentItem(); - if (!item) + if (!item) return; int current = ui->actionListWidget->indexOfTopLevelItem(item); ui->actionListWidget->takeTopLevelItem(current); @@ -687,4 +687,4 @@ QStringList IconFolders::getPaths() const return paths; } -#include "moc_DlgActionsImp.cpp" +#include "moc_DlgActionsImp.cpp" diff --git a/src/Gui/DlgActionsImp.h b/src/Gui/DlgActionsImp.h index 2d68725d8c..1f94fb9810 100644 --- a/src/Gui/DlgActionsImp.h +++ b/src/Gui/DlgActionsImp.h @@ -49,7 +49,7 @@ class Ui_DlgCustomActions; * \author Werner Mayer */ class DlgCustomActionsImp : public CustomizeActionPage -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgAddProperty.cpp b/src/Gui/DlgAddProperty.cpp index d20e7af9b8..9b6ccd21d6 100644 --- a/src/Gui/DlgAddProperty.cpp +++ b/src/Gui/DlgAddProperty.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -39,7 +39,7 @@ using namespace Gui; using namespace Gui::Dialog; -DlgAddProperty::DlgAddProperty(QWidget* parent, +DlgAddProperty::DlgAddProperty(QWidget* parent, std::unordered_set &&c) : QDialog( parent ) , containers(std::move(c)) @@ -92,7 +92,7 @@ void DlgAddProperty::accept() { std::string name = ui->edtName->text().toUtf8().constData(); std::string group = ui->edtGroup->text().toUtf8().constData(); - if(name.empty() || group.empty() + if(name.empty() || group.empty() || name != Base::Tools::getIdentifier(name) || group != Base::Tools::getIdentifier(group)) { diff --git a/src/Gui/DlgAddProperty.h b/src/Gui/DlgAddProperty.h index 4f86d4a461..13d2300b24 100644 --- a/src/Gui/DlgAddProperty.h +++ b/src/Gui/DlgAddProperty.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2019 Zheng, Lei (realthunder) * + * Copyright (c) 2019 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/DlgCustomizeImp.cpp b/src/Gui/DlgCustomizeImp.cpp index b9394b546e..694ce54006 100644 --- a/src/Gui/DlgCustomizeImp.cpp +++ b/src/Gui/DlgCustomizeImp.cpp @@ -40,8 +40,8 @@ QList DlgCustomizeImp::_pages; /* TRANSLATOR Gui::Dialog::DlgCustomizeImp */ /** - * Constructs a DlgCustomizeImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgCustomizeImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -51,16 +51,16 @@ DlgCustomizeImp::DlgCustomizeImp(QWidget* parent, Qt::WindowFlags fl) { setModal(false); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); - resize( 690, 365 ); + resize( 690, 365 ); setWindowTitle(tr("Customize")); setSizeGripEnabled( true ); - customLayout = new QGridLayout( this ); + customLayout = new QGridLayout( this ); customLayout->setSpacing( 6 ); customLayout->setMargin( 11 ); - layout = new QHBoxLayout; + layout = new QHBoxLayout; layout->setSpacing( 6 ); layout->setMargin( 0 ); diff --git a/src/Gui/DlgCustomizeImp.h b/src/Gui/DlgCustomizeImp.h index aa1403cffa..d4a47ff72e 100644 --- a/src/Gui/DlgCustomizeImp.h +++ b/src/Gui/DlgCustomizeImp.h @@ -36,9 +36,9 @@ namespace Dialog { /** * Dialog which contains several tab pages to customize * the changeable toolbars and commandbars or to define - * own macro actions. + * own macro actions. * - * You can extend the existing toolbars or commandbars with + * You can extend the existing toolbars or commandbars with * several commands just by drag and drop. * @see DlgCustomCommandsImp * @see DlgCustomToolbarsImp @@ -47,7 +47,7 @@ namespace Dialog { * \author Werner Mayer */ class DlgCustomizeImp : public QDialog -{ +{ Q_OBJECT public: @@ -70,7 +70,7 @@ private: //@{ QPushButton* buttonHelp; /**< the help button */ QPushButton* buttonClose; /**< the cancel button */ - QTabWidget* tabWidget; /**< tab widgets containing all pages */ + QTabWidget* tabWidget; /**< tab widgets containing all pages */ QGridLayout* customLayout; /**< layout */ QHBoxLayout* layout; /** horizontal layout */ static QList _pages; /**< Name of all registered preference pages */ diff --git a/src/Gui/DlgCustomizeSpNavSettings.cpp b/src/Gui/DlgCustomizeSpNavSettings.cpp index 4ffe9760a5..98d1e9186a 100644 --- a/src/Gui/DlgCustomizeSpNavSettings.cpp +++ b/src/Gui/DlgCustomizeSpNavSettings.cpp @@ -147,7 +147,7 @@ void DlgCustomizeSpNavSettings::initialize() void DlgCustomizeSpNavSettings::on_ButtonDefaultSpNavMotions_clicked() { - spaceballMotionGroup()->Clear(); + spaceballMotionGroup()->Clear(); initialize(); } @@ -197,7 +197,7 @@ void DlgCustomizeSpNavSettings::on_SliderGlobal_sliderReleased() } void DlgCustomizeSpNavSettings::on_CBEnablePanLR_clicked() -{ +{ spaceballMotionGroup()->SetBool("PanLREnable", ui->CBEnablePanLR->isChecked()); ui->CBReversePanLR->setEnabled(ui->CBEnablePanLR->isChecked()); @@ -233,7 +233,7 @@ void DlgCustomizeSpNavSettings::on_SliderPanUD_sliderReleased() } void DlgCustomizeSpNavSettings::on_CBEnableZoom_clicked() -{ +{ spaceballMotionGroup()->SetBool("ZoomEnable", ui->CBEnableZoom->isChecked()); ui->CBReverseZoom ->setEnabled(ui->CBEnableZoom->isChecked()); @@ -263,12 +263,12 @@ void DlgCustomizeSpNavSettings::on_CBReverseTilt_clicked() spaceballMotionGroup()->SetBool("TiltReverse", ui->CBReverseTilt->isChecked()); } -void DlgCustomizeSpNavSettings::on_SliderTilt_sliderReleased() +void DlgCustomizeSpNavSettings::on_SliderTilt_sliderReleased() { spaceballMotionGroup()->SetInt("TiltSensitivity", ui->SliderTilt->value()); } -void DlgCustomizeSpNavSettings::on_CBEnableRoll_clicked() +void DlgCustomizeSpNavSettings::on_CBEnableRoll_clicked() { spaceballMotionGroup()->SetBool("RollEnable", ui->CBEnableRoll->isChecked()); @@ -307,19 +307,19 @@ void DlgCustomizeSpNavSettings::on_SliderSpin_sliderReleased() void DlgCustomizeSpNavSettings::onAddMacroAction(const QByteArray ¯oName) { //don't need to do anything here. - Q_UNUSED(macroName); + Q_UNUSED(macroName); } void DlgCustomizeSpNavSettings::onRemoveMacroAction(const QByteArray ¯oName) { //don't need to do anything here. - Q_UNUSED(macroName); + Q_UNUSED(macroName); } void DlgCustomizeSpNavSettings::onModifyMacroAction(const QByteArray ¯oName) { //don't need to do anything here. - Q_UNUSED(macroName); + Q_UNUSED(macroName); } #include "moc_DlgCustomizeSpNavSettings.cpp" diff --git a/src/Gui/DlgCustomizeSpNavSettings.h b/src/Gui/DlgCustomizeSpNavSettings.h index 9db7e3e95b..367964bed9 100644 --- a/src/Gui/DlgCustomizeSpNavSettings.h +++ b/src/Gui/DlgCustomizeSpNavSettings.h @@ -71,7 +71,7 @@ namespace Gui void on_SliderSpin_sliderReleased(); void on_ButtonDefaultSpNavMotions_clicked(); void on_ButtonCalibrate_clicked(); - + protected: void changeEvent(QEvent *e); diff --git a/src/Gui/DlgCustomizeSpaceball.cpp b/src/Gui/DlgCustomizeSpaceball.cpp index 10986edd6a..23c96bcb9b 100644 --- a/src/Gui/DlgCustomizeSpaceball.cpp +++ b/src/Gui/DlgCustomizeSpaceball.cpp @@ -61,7 +61,7 @@ void ButtonView::selectButton(int number) void ButtonView::goSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { - Q_UNUSED(deselected); + Q_UNUSED(deselected); if (selected.indexes().isEmpty()) return; QModelIndex select(selected.indexes().at(0)); @@ -87,7 +87,7 @@ ButtonModel::ButtonModel(QObject *parent) : QAbstractListModel(parent) void ButtonModel::load3DConnexionButtonMapping(boost::property_tree::ptree ButtonMapTree) { spaceballButtonGroup()->Clear(); - + BOOST_FOREACH(const boost::property_tree::ptree::value_type &Map, ButtonMapTree.get_child("Mapping")) { if ("Map" == Map.first) @@ -96,7 +96,7 @@ void ButtonModel::load3DConnexionButtonMapping(boost::property_tree::ptree Butto std::string ButtonCode; std::string ButtonCommand; std::string ButtonDownTime; - + // Inspect Map attributes BOOST_FOREACH(const boost::property_tree::ptree::value_type &kv, Map.second.get_child("")) { @@ -105,7 +105,7 @@ void ButtonModel::load3DConnexionButtonMapping(boost::property_tree::ptree Butto Attribute = kv.first.data(); Value = kv.second.data(); - + if (0 == Attribute.compare("Description")) { ButtonDescription = Value; @@ -123,7 +123,7 @@ void ButtonModel::load3DConnexionButtonMapping(boost::property_tree::ptree Butto ButtonCommand = Value; } } - + // ButtonCode is mandatory, the remaining attributes optional. if (!ButtonCode.empty()) { @@ -145,7 +145,7 @@ void ButtonModel::load3DConnexionButtons(const char *RequiredDeviceName) { boost::property_tree::ptree tree; boost::property_tree::ptree DeviceTree; - + // exception thrown if no file found std::string path = App::Application::getResourceDir(); path += "3Dconnexion/3DConnexion.xml"; @@ -170,7 +170,7 @@ void ButtonModel::load3DConnexionButtons(const char *RequiredDeviceName) { // We found the ButtonMap we want to load up DeviceTree = ButtonMap.second; - } + } } } } @@ -187,10 +187,10 @@ void ButtonModel::load3DConnexionButtons(const char *RequiredDeviceName) Base::Console().Warning("%s\n", e.what()); } } - + int ButtonModel::rowCount (const QModelIndex &parent) const { - Q_UNUSED(parent); + Q_UNUSED(parent); return spaceballButtonGroup()->GetGroups().size(); } @@ -404,7 +404,7 @@ int CommandModel::rowCount(const QModelIndex &parent) const int CommandModel::columnCount(const QModelIndex &parent) const { - Q_UNUSED(parent); + Q_UNUSED(parent); return 1; } @@ -601,13 +601,13 @@ PrintModel::PrintModel(QObject *parent, ButtonModel *buttonModelIn, CommandModel int PrintModel::rowCount(const QModelIndex &parent) const { - Q_UNUSED(parent); + Q_UNUSED(parent); return buttonModel->rowCount(); } int PrintModel::columnCount(const QModelIndex &parent) const { - Q_UNUSED(parent); + Q_UNUSED(parent); return 2; } @@ -871,7 +871,7 @@ void DlgCustomizeSpaceball::onRemoveMacroAction(const QByteArray ¯oName) void DlgCustomizeSpaceball::onModifyMacroAction(const QByteArray ¯oName) { //don't think I need to do anything here. - Q_UNUSED(macroName); + Q_UNUSED(macroName); } QStringList DlgCustomizeSpaceball::getModels() diff --git a/src/Gui/DlgDisplayPropertiesImp.cpp b/src/Gui/DlgDisplayPropertiesImp.cpp index c84eb5d3b4..f3812d158e 100644 --- a/src/Gui/DlgDisplayPropertiesImp.cpp +++ b/src/Gui/DlgDisplayPropertiesImp.cpp @@ -70,8 +70,8 @@ public: }; /** - * Constructs a DlgDisplayPropertiesImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgDisplayPropertiesImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -115,7 +115,7 @@ DlgDisplayPropertiesImp::DlgDisplayPropertiesImp(bool floating, QWidget* parent, (&DlgDisplayPropertiesImp::slotChangedObject, this, bp::_1, bp::_2)); } -/** +/** * Destroys the object and frees any allocated resources */ DlgDisplayPropertiesImp::~DlgDisplayPropertiesImp() @@ -142,7 +142,7 @@ void DlgDisplayPropertiesImp::changeEvent(QEvent *e) void DlgDisplayPropertiesImp::OnChange(Gui::SelectionSingleton::SubjectType &rCaller, Gui::SelectionSingleton::MessageType Reason) { - Q_UNUSED(rCaller); + Q_UNUSED(rCaller); if (Reason.Type == SelectionChanges::AddSelection || Reason.Type == SelectionChanges::RmvSelection || Reason.Type == SelectionChanges::SetSelection || diff --git a/src/Gui/DlgEditFileIncludePropertyExternal.cpp b/src/Gui/DlgEditFileIncludePropertyExternal.cpp index e17dca7555..b9360fc6c1 100644 --- a/src/Gui/DlgEditFileIncludePropertyExternal.cpp +++ b/src/Gui/DlgEditFileIncludePropertyExternal.cpp @@ -37,8 +37,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgEditFileIncludePropertyExternal */ /** - * Constructs a DlgEditFileIncludePropertyExternal which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgEditFileIncludePropertyExternal which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -51,7 +51,7 @@ DlgEditFileIncludePropertyExternal(App::PropertyFileIncluded& Prop, } -/** +/** * Destroys the object and frees any allocated resources */ DlgEditFileIncludePropertyExternal::~DlgEditFileIncludePropertyExternal() diff --git a/src/Gui/DlgEditFileIncludePropertyExternal.h b/src/Gui/DlgEditFileIncludePropertyExternal.h index 2cf6b598dc..92c14f5f36 100644 --- a/src/Gui/DlgEditFileIncludePropertyExternal.h +++ b/src/Gui/DlgEditFileIncludePropertyExternal.h @@ -31,11 +31,11 @@ namespace Gui { namespace Dialog { /** - * + * * \author Jürgen Riegel */ -class GuiExport DlgEditFileIncludePropertyExternal : public DlgRunExternal -{ +class GuiExport DlgEditFileIncludePropertyExternal : public DlgRunExternal +{ Q_OBJECT public: diff --git a/src/Gui/DlgEditorImp.cpp b/src/Gui/DlgEditorImp.cpp index 134985e792..561467b863 100644 --- a/src/Gui/DlgEditorImp.cpp +++ b/src/Gui/DlgEditorImp.cpp @@ -69,63 +69,63 @@ DlgSettingsEditorImp::DlgSettingsEditorImp( QWidget* parent ) d = new DlgSettingsEditorP(); QColor col; - col = Qt::black; + col = Qt::black; unsigned int lText = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Text")), lText)); - col = Qt::cyan; + col = Qt::cyan; unsigned int lBookmarks = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Bookmark")), lBookmarks)); - col = Qt::red; + col = Qt::red; unsigned int lBreakpnts = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Breakpoint")), lBreakpnts)); - col = Qt::blue; + col = Qt::blue; unsigned int lKeywords = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Keyword")), lKeywords)); - col.setRgb(0, 170, 0); + col.setRgb(0, 170, 0); unsigned int lComments = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Comment")), lComments)); - col.setRgb(160, 160, 164); + col.setRgb(160, 160, 164); unsigned int lBlockCom = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Block comment")), lBlockCom)); - col = Qt::blue; + col = Qt::blue; unsigned int lNumbers = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Number")), lNumbers)); - col = Qt::red; + col = Qt::red; unsigned int lStrings = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("String")), lStrings)); - col = Qt::red; + col = Qt::red; unsigned int lCharacter = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Character")), lCharacter)); - col.setRgb(255, 170, 0); + col.setRgb(255, 170, 0); unsigned int lClass = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Class name")), lClass)); - col.setRgb(255, 170, 0); + col.setRgb(255, 170, 0); unsigned int lDefine = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Define name")), lDefine)); - col.setRgb(160, 160, 164); + col.setRgb(160, 160, 164); unsigned int lOperat = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Operator")), lOperat)); - col.setRgb(170, 170, 127); + col.setRgb(170, 170, 127); unsigned int lPyOutput = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Python output")), lPyOutput)); - col = Qt::red; + col = Qt::red; unsigned int lPyError = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Python error")), lPyError)); - col.setRgb(224, 224, 224); + col.setRgb(224, 224, 224); unsigned int lCLine = (col.red() << 24) | (col.green() << 16) | (col.blue() << 8); d->colormap.push_back(QPair (QString::fromLatin1(QT_TR_NOOP("Current line highlight")), lCLine)); diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index 637b27e5e4..fdb299c7f2 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -59,7 +59,7 @@ DlgExpressionInput::DlgExpressionInput(const App::ObjectIdentifier & _path, // Connect signal(s) connect(ui->expression, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString))); connect(ui->discardBtn, SIGNAL(clicked()), this, SLOT(setDiscarded())); - + if (expression) { ui->expression->setText(Base::Tools::fromStdString(expression->toString())); } @@ -130,7 +130,7 @@ void DlgExpressionInput::textChanged(const QString &text) ui->expression->setMinimumWidth(minimumWidth); else ui->expression->setMinimumWidth(width); - + if(this->width() < ui->expression->minimumWidth()) setMinimumWidth(ui->expression->minimumWidth()); diff --git a/src/Gui/DlgExpressionInput.h b/src/Gui/DlgExpressionInput.h index c6d6d5c34a..9de74f5ec7 100644 --- a/src/Gui/DlgExpressionInput.h +++ b/src/Gui/DlgExpressionInput.h @@ -49,11 +49,11 @@ namespace Dialog { class GuiExport DlgExpressionInput : public QDialog { Q_OBJECT - + public: explicit DlgExpressionInput(const App::ObjectIdentifier & _path, boost::shared_ptr _expression, const Base::Unit &_impliedUnit, QWidget *parent = 0); ~DlgExpressionInput(); - + boost::shared_ptr getExpression() const { return expression; } bool discardedFormula() const { return discarded; } diff --git a/src/Gui/DlgGeneralImp.cpp b/src/Gui/DlgGeneralImp.cpp index 1a09a4a411..37ebac3f3b 100644 --- a/src/Gui/DlgGeneralImp.cpp +++ b/src/Gui/DlgGeneralImp.cpp @@ -44,8 +44,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgGeneralImp */ /** - * Constructs a DlgGeneralImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgGeneralImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -55,7 +55,7 @@ DlgGeneralImp::DlgGeneralImp( QWidget* parent ) , ui(new Ui_DlgGeneral) { ui->setupUi(this); - + // fills the combo box with all available workbenches // sorted by their menu text QStringList work = Application::Instance->workbenches(); @@ -84,7 +84,7 @@ DlgGeneralImp::DlgGeneralImp( QWidget* parent ) } } -/** +/** * Destroys the object and frees any allocated resources */ DlgGeneralImp::~DlgGeneralImp() @@ -115,7 +115,7 @@ void DlgGeneralImp::saveSettings() ui->RecentFiles->onSave(); ui->SplashScreen->onSave(); ui->PythonWordWrap->onSave(); - + QWidget* pc = DockWindowManager::instance()->getDockWindow("Python console"); PythonConsole *pcPython = qobject_cast(pc); if (pcPython) { @@ -222,7 +222,7 @@ void DlgGeneralImp::loadSettings() if (index < 0) { ui->toolbarIconSize->addItem(tr("Custom (%1px)").arg(current), QVariant((int)current)); index = ui->toolbarIconSize->findData(QVariant(current)); - } + } ui->toolbarIconSize->setCurrentIndex(index); ui->treeMode->addItem(tr("Combo View")); diff --git a/src/Gui/DlgMacroExecuteImp.cpp b/src/Gui/DlgMacroExecuteImp.cpp index 7e7607768c..316221c31c 100644 --- a/src/Gui/DlgMacroExecuteImp.cpp +++ b/src/Gui/DlgMacroExecuteImp.cpp @@ -133,7 +133,7 @@ void DlgMacroExecuteImp::fillUpList(void) } } -/** +/** * Selects a macro file in the list view. */ void DlgMacroExecuteImp::on_userMacroListBox_currentItemChanged(QTreeWidgetItem* item) @@ -351,7 +351,7 @@ void DlgMacroExecuteImp::on_createButton_clicked() { // query file name QString fn = QInputDialog::getText(this, tr("Macro file"), tr("Enter a file name, please:"), - QLineEdit::Normal, QString(), 0); + QLineEdit::Normal, QString(), nullptr, Qt::MSWindowsFixedSizeDialogHint); if (!fn.isEmpty()) { QString suffix = QFileInfo(fn).suffix().toLower(); @@ -680,7 +680,7 @@ void DlgMacroExecuteImp::on_renameButton_clicked() // query new name QString fn = QInputDialog::getText(this, tr("Renaming Macro File"), - tr("Enter new name:"), QLineEdit::Normal, oldName, 0); + tr("Enter new name:"), QLineEdit::Normal, oldName, nullptr, Qt::MSWindowsFixedSizeDialogHint); if (!fn.isEmpty() && fn != oldName) { QString suffix = QFileInfo(fn).suffix().toLower(); if (suffix != QLatin1String("fcmacro") && suffix != QLatin1String("py")) @@ -767,7 +767,8 @@ void DlgMacroExecuteImp::on_duplicateButton_clicked() // give user a chance to pick a different name from digitized name suggested QString fn = QInputDialog::getText(this, tr("Duplicate Macro"), - tr("Enter new name:"), QLineEdit::Normal, oldNameDigitized, 0); + tr("Enter new name:"), QLineEdit::Normal, oldNameDigitized, + nullptr, Qt::MSWindowsFixedSizeDialogHint); if (!fn.isEmpty() && fn != oldName) { QString suffix = QFileInfo(fn).suffix().toLower(); if (suffix != QLatin1String("fcmacro") && suffix != QLatin1String("py")){ diff --git a/src/Gui/DlgMacroExecuteImp.h b/src/Gui/DlgMacroExecuteImp.h index 751b3f04ca..be876fad9a 100644 --- a/src/Gui/DlgMacroExecuteImp.h +++ b/src/Gui/DlgMacroExecuteImp.h @@ -36,11 +36,11 @@ class Ui_DlgMacroExecute; /** * The DlgMacroExecuteImp class implements a dialog to execute or edit a - * recorded macro. + * recorded macro. * \author Jürgen Riegel */ class DlgMacroExecuteImp : public QDialog, public Gui::WindowParameter -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgMacroRecordImp.cpp b/src/Gui/DlgMacroRecordImp.cpp index d6374c68c3..b763675a86 100644 --- a/src/Gui/DlgMacroRecordImp.cpp +++ b/src/Gui/DlgMacroRecordImp.cpp @@ -42,8 +42,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgMacroRecordImp */ /** - * Constructs a DlgMacroRecordImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgMacroRecordImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -70,7 +70,7 @@ DlgMacroRecordImp::DlgMacroRecordImp( QWidget* parent, Qt::WindowFlags fl ) this->macroManager->isOpen() ? ui->buttonStart->setEnabled(false) : ui->buttonStop->setEnabled(false); } -/** +/** * Destroys the object and frees any allocated resources */ DlgMacroRecordImp::~DlgMacroRecordImp() @@ -132,7 +132,7 @@ void DlgMacroRecordImp::on_buttonCancel_clicked() if (this->macroManager->isOpen()) { this->macroManager->cancel(); } - + QDialog::reject(); } diff --git a/src/Gui/DlgObjectSelection.cpp b/src/Gui/DlgObjectSelection.cpp index 127aeef5e7..a017154dea 100644 --- a/src/Gui/DlgObjectSelection.cpp +++ b/src/Gui/DlgObjectSelection.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -196,7 +196,7 @@ App::DocumentObject *DlgObjectSelection::objFromItem(QTreeWidgetItem *item) { } void DlgObjectSelection::onItemExpanded(QTreeWidgetItem * item) { - if(item->childCount()) + if(item->childCount()) return; auto obj = objFromItem(item); if(!obj) diff --git a/src/Gui/DlgObjectSelection.h b/src/Gui/DlgObjectSelection.h index f555546b4d..315ed3126a 100644 --- a/src/Gui/DlgObjectSelection.h +++ b/src/Gui/DlgObjectSelection.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -32,7 +32,7 @@ class GuiExport DlgObjectSelection : public QDialog Q_OBJECT public: - DlgObjectSelection(const std::vector &objs, + DlgObjectSelection(const std::vector &objs, QWidget* parent = 0, Qt::WindowFlags fl = Qt::WindowFlags()); ~DlgObjectSelection(); diff --git a/src/Gui/DlgOnlineHelpImp.cpp b/src/Gui/DlgOnlineHelpImp.cpp index 440da08594..9fef7bb2aa 100644 --- a/src/Gui/DlgOnlineHelpImp.cpp +++ b/src/Gui/DlgOnlineHelpImp.cpp @@ -39,8 +39,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgOnlineHelpImp */ /** - * Constructs a DlgOnlineHelpImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgOnlineHelpImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -57,7 +57,7 @@ DlgOnlineHelpImp::DlgOnlineHelpImp( QWidget* parent ) } } -/** +/** * Destroys the object and frees any allocated resources */ DlgOnlineHelpImp::~DlgOnlineHelpImp() diff --git a/src/Gui/DlgParameterFind.cpp b/src/Gui/DlgParameterFind.cpp index 9503d95691..8d2cc3fd03 100644 --- a/src/Gui/DlgParameterFind.cpp +++ b/src/Gui/DlgParameterFind.cpp @@ -49,7 +49,7 @@ DlgParameterFind::DlgParameterFind(DlgParameterImp* parent) } } -/** +/** * Destroys the object and frees any allocated resources */ DlgParameterFind::~DlgParameterFind() diff --git a/src/Gui/DlgParameterFind.h b/src/Gui/DlgParameterFind.h index fbc031a0a7..20fddd7ff7 100644 --- a/src/Gui/DlgParameterFind.h +++ b/src/Gui/DlgParameterFind.h @@ -36,7 +36,7 @@ class Ui_DlgParameterFind; class DlgParameterImp; class GuiExport DlgParameterFind : public QDialog -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgParameterImp.cpp b/src/Gui/DlgParameterImp.cpp index 0e49aa38dd..8ff85d9c6a 100644 --- a/src/Gui/DlgParameterImp.cpp +++ b/src/Gui/DlgParameterImp.cpp @@ -53,7 +53,7 @@ using namespace Gui::Dialog; /** * Constructs a DlgParameterImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -76,7 +76,7 @@ DlgParameterImp::DlgParameterImp( QWidget* parent, Qt::WindowFlags fl ) paramGroup->header()->setProperty("showSortIndicator", QVariant(true)); #endif - QStringList valueLabels; + QStringList valueLabels; valueLabels << tr( "Name" ) << tr( "Type" ) << tr( "Value" ); paramValue = new ParameterValue(ui->splitter3); paramValue->setHeaderLabels(valueLabels); @@ -112,9 +112,9 @@ DlgParameterImp::DlgParameterImp( QWidget* parent, Qt::WindowFlags fl ) if (ui->parameterSet->count() < 2) ui->parameterSet->hide(); - connect(ui->parameterSet, SIGNAL(activated(int)), + connect(ui->parameterSet, SIGNAL(activated(int)), this, SLOT(onChangeParameterSet(int))); - connect(paramGroup, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + connect(paramGroup, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(onGroupSelected(QTreeWidgetItem*))); onGroupSelected(paramGroup->currentItem()); @@ -133,7 +133,7 @@ DlgParameterImp::DlgParameterImp( QWidget* parent, Qt::WindowFlags fl ) #endif } -/** +/** * Destroys the object and frees any allocated resources */ DlgParameterImp::~DlgParameterImp() @@ -242,12 +242,12 @@ void DlgParameterImp::on_checkSort_toggled(bool on) paramGroup->setSortingEnabled(on); paramGroup->sortByColumn(0, Qt::AscendingOrder); paramGroup->header()->setProperty("showSortIndicator", QVariant(on)); -#endif -#if QT_VERSION >= 0x050000 paramValue->setSortingEnabled(on); paramValue->sortByColumn(0, Qt::AscendingOrder); paramValue->header()->setProperty("showSortIndicator", QVariant(on)); +#else + Q_UNUSED(on) #endif } @@ -452,7 +452,7 @@ bool validateInput(QWidget* parent, const QString& input) (c < 'A' || c > 'Z') && // Uppercase letters (c < 'a' || c > 'z') && // Lowercase letters (c != ' ')) { // Space - QMessageBox::warning(parent, DlgParameterImp::tr("Invalid input"), + QMessageBox::warning(parent, DlgParameterImp::tr("Invalid input"), DlgParameterImp::tr("Invalid key name '%1'").arg(input)); return false; } @@ -503,7 +503,7 @@ void ParameterGroup::contextMenuEvent ( QContextMenuEvent* event ) void ParameterGroup::keyPressEvent (QKeyEvent* event) { - switch ( tolower(event->key()) ) + switch ( tolower(event->key()) ) { case Qt::Key_Delete: { @@ -520,7 +520,7 @@ void ParameterGroup::onDeleteSelectedItem() if (sel && sel->isSelected() && sel->parent()) { if ( QMessageBox::question(this, tr("Remove group"), tr("Do you really want to remove this parameter group?"), - QMessageBox::Yes, QMessageBox::No|QMessageBox::Default|QMessageBox::Escape) == + QMessageBox::Yes, QMessageBox::No|QMessageBox::Default|QMessageBox::Escape) == QMessageBox::Yes ) { QTreeWidgetItem* parent = sel->parent(); @@ -554,7 +554,7 @@ void ParameterGroup::onCreateSubgroup() { bool ok; QString name = QInputDialog::getText(this, QObject::tr("New sub-group"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok ); + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok && Gui::validateInput(this, name)) { @@ -677,7 +677,7 @@ ParameterValue::ParameterValue( QWidget * parent ) newUlgAct = menuNew->addAction(tr("New unsigned item"), this, SLOT(onCreateUIntItem())); newBlnAct = menuNew->addAction(tr("New Boolean item"), this, SLOT(onCreateBoolItem())); - connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), + connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(onChangeSelectedItem(QTreeWidgetItem*, int))); } @@ -720,7 +720,7 @@ void ParameterValue::contextMenuEvent ( QContextMenuEvent* event ) void ParameterValue::keyPressEvent (QKeyEvent* event) { - switch ( tolower(event->key()) ) + switch ( tolower(event->key()) ) { case Qt::Key_Delete: { @@ -781,8 +781,8 @@ void ParameterValue::onRenameSelectedItem() void ParameterValue::onCreateTextItem() { bool ok; - QString name = QInputDialog::getText(this, QObject::tr("New text item"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok); + QString name = QInputDialog::getText(this, QObject::tr("New text item"), QObject::tr("Enter the name:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || !Gui::validateInput(this, name)) return; @@ -797,8 +797,8 @@ void ParameterValue::onCreateTextItem() } } - QString val = QInputDialog::getText(this, QObject::tr("New text item"), QObject::tr("Enter your text:"), - QLineEdit::Normal, QString(), &ok); + QString val = QInputDialog::getText(this, QObject::tr("New text item"), QObject::tr("Enter your text:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok && !val.isEmpty() ) { ParameterValueItem *pcItem; @@ -810,8 +810,8 @@ void ParameterValue::onCreateTextItem() void ParameterValue::onCreateIntItem() { bool ok; - QString name = QInputDialog::getText(this, QObject::tr("New integer item"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok); + QString name = QInputDialog::getText(this, QObject::tr("New integer item"), QObject::tr("Enter the name:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || !Gui::validateInput(this, name)) return; @@ -827,7 +827,7 @@ void ParameterValue::onCreateIntItem() } int val = QInputDialog::getInt(this, QObject::tr("New integer item"), QObject::tr("Enter your number:"), - 0, -2147483647, 2147483647, 1, &ok); + 0, -2147483647, 2147483647, 1, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { @@ -840,8 +840,8 @@ void ParameterValue::onCreateIntItem() void ParameterValue::onCreateUIntItem() { bool ok; - QString name = QInputDialog::getText(this, QObject::tr("New unsigned item"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok); + QString name = QInputDialog::getText(this, QObject::tr("New unsigned item"), QObject::tr("Enter the name:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || !Gui::validateInput(this, name)) return; @@ -876,8 +876,8 @@ void ParameterValue::onCreateUIntItem() void ParameterValue::onCreateFloatItem() { bool ok; - QString name = QInputDialog::getText(this, QObject::tr("New float item"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok); + QString name = QInputDialog::getText(this, QObject::tr("New float item"), QObject::tr("Enter the name:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || !Gui::validateInput(this, name)) return; @@ -891,9 +891,9 @@ void ParameterValue::onCreateFloatItem() return; } } - - double val = QInputDialog::getDouble(this, QObject::tr("New float item"), QObject::tr("Enter your number:"), - 0, -2147483647, 2147483647, 12, &ok); + + double val = QInputDialog::getDouble(this, QObject::tr("New float item"), QObject::tr("Enter your number:"), + 0, -2147483647, 2147483647, 12, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { ParameterValueItem *pcItem; @@ -905,8 +905,8 @@ void ParameterValue::onCreateFloatItem() void ParameterValue::onCreateBoolItem() { bool ok; - QString name = QInputDialog::getText(this, QObject::tr("New Boolean item"), QObject::tr("Enter the name:"), - QLineEdit::Normal, QString(), &ok); + QString name = QInputDialog::getText(this, QObject::tr("New Boolean item"), QObject::tr("Enter the name:"), + QLineEdit::Normal, QString(), &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || !Gui::validateInput(this, name)) return; @@ -924,7 +924,7 @@ void ParameterValue::onCreateBoolItem() QStringList list; list << QString::fromLatin1("true") << QString::fromLatin1("false"); QString val = QInputDialog::getItem (this, QObject::tr("New boolean item"), QObject::tr("Choose an item:"), - list, 0, false, &ok); + list, 0, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { ParameterValueItem *pcItem; @@ -991,8 +991,8 @@ void ParameterGroupItem::setData ( int column, int role, const QVariant & value QMessageBox::critical( treeWidget(), QObject::tr("Existing group"), QObject::tr("The group '%1' already exists.").arg( newName ) ); return; - } - else + } + else { // rename the group by adding a new group, copy the content and remove the old group if (!item->_hcGrp->RenameGrp(oldName.toLatin1(), newName.toLatin1())) @@ -1064,8 +1064,8 @@ ParameterText::~ParameterText() void ParameterText::changeValue() { bool ok; - QString txt = QInputDialog::getText(treeWidget(), QObject::tr("Change value"), QObject::tr("Enter your text:"), - QLineEdit::Normal, text(2), &ok); + QString txt = QInputDialog::getText(treeWidget(), QObject::tr("Change value"), QObject::tr("Enter your text:"), + QLineEdit::Normal, text(2), &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { setText( 2, txt ); @@ -1109,7 +1109,7 @@ void ParameterInt::changeValue() { bool ok; int num = QInputDialog::getInt(treeWidget(), QObject::tr("Change value"), QObject::tr("Enter your number:"), - text(2).toInt(), -2147483647, 2147483647, 1, &ok); + text(2).toInt(), -2147483647, 2147483647, 1, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { setText(2, QString::fromLatin1("%1").arg(num)); @@ -1205,8 +1205,8 @@ ParameterFloat::~ParameterFloat() void ParameterFloat::changeValue() { bool ok; - double num = QInputDialog::getDouble(treeWidget(), QObject::tr("Change value"), QObject::tr("Enter your number:"), - text(2).toDouble(), -2147483647, 2147483647, 12, &ok); + double num = QInputDialog::getDouble(treeWidget(), QObject::tr("Change value"), QObject::tr("Enter your number:"), + text(2).toDouble(), -2147483647, 2147483647, 12, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { setText(2, QString::fromLatin1("%1").arg(num)); @@ -1249,12 +1249,12 @@ ParameterBool::~ParameterBool() void ParameterBool::changeValue() { bool ok; - QStringList list; list << QString::fromLatin1("true") + QStringList list; list << QString::fromLatin1("true") << QString::fromLatin1("false"); int pos = (text(2) == list[0] ? 0 : 1); QString txt = QInputDialog::getItem (treeWidget(), QObject::tr("Change value"), QObject::tr("Choose an item:"), - list, pos, false, &ok); + list, pos, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok ) { setText( 2, txt ); diff --git a/src/Gui/DlgParameterImp.h b/src/Gui/DlgParameterImp.h index 9e47758dd2..a783c28d9e 100644 --- a/src/Gui/DlgParameterImp.h +++ b/src/Gui/DlgParameterImp.h @@ -42,7 +42,7 @@ class DlgParameterFind; * \author Jürgen Riegel */ class GuiExport DlgParameterImp : public QDialog -{ +{ Q_OBJECT public: @@ -181,7 +181,7 @@ protected Q_SLOTS: void onCreateFloatItem(); /** Creates and appends a new "boolean" leaf. */ void onCreateBoolItem(); - /** Defines that the first column is editable. + /** Defines that the first column is editable. * @note We need to reimplement this method as QTreeWidgetItem::flags() * doesn't have an int parameter. */ @@ -202,8 +202,8 @@ private: }; /** The link between the Tree and the shown Label. - * Every (shown) Label in the FCDocument class get it - * associated FCTreeLabel which controls the visibility + * Every (shown) Label in the FCDocument class get it + * associated FCTreeLabel which controls the visibility * and the functions of the Label. * * \author Jürgen Riegel @@ -228,7 +228,7 @@ public: /** * The ParameterValueItem class represents items that are added to the ParameterValue * listview. Each item represents a leaf in a parameter group and allows interaction - * with this leaf, such as modifying its name, its value or even remove it from the + * with this leaf, such as modifying its name, its value or even remove it from the * parameter group. * @author Werner Mayer */ diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index 76d64b045d..6ac6bd973f 100644 --- a/src/Gui/DlgPreferencesImp.cpp +++ b/src/Gui/DlgPreferencesImp.cpp @@ -39,7 +39,7 @@ #endif #include -#include +#include #include #include "DlgPreferencesImp.h" #include "ui_DlgPreferences.h" @@ -94,7 +94,7 @@ void DlgPreferencesImp::setupPages() for (std::list::iterator it = _pages.begin(); it != _pages.end(); ++it) { QTabWidget* tabWidget = new QTabWidget; ui->tabWidgetStack->addWidget(tabWidget); - + QByteArray group = it->first.c_str(); QListWidgetItem *item = new QListWidgetItem(ui->listBox); item->setData(Qt::UserRole, QVariant(group)); diff --git a/src/Gui/DlgPreferencesImp.h b/src/Gui/DlgPreferencesImp.h index 356afab5a1..6b6ff17ee4 100644 --- a/src/Gui/DlgPreferencesImp.h +++ b/src/Gui/DlgPreferencesImp.h @@ -36,29 +36,29 @@ class Ui_DlgPreferences; /** * This class implements a dialog containing several preference pages. - * + * * To append your own page you just have to take note of these points: * * \li Each preference page can be created by the Qt Designer selecting the "Widget" item * in the project dialog. * - * \li To save or load the widgets' settings automatically (e.g. combo boxes, line edits, + * \li To save or load the widgets' settings automatically (e.g. combo boxes, line edits, * check boxes, ...) you can make use of the classes inherited from @ref PrefWidget such as: * PrefSpinBox, PrefLineEdit, PrefComboBox, PrefListBox, PrefCheckBox, PrefRadioButton and * PrefSlider. If you have compiled and installed the library under src/Tools/plugins/widgets - * to QTDIR/plugins/designer you should see the new category "Preferences". - * Moreover you have to make sure to have specified the "prefEntry" and "prefPath" properties for each + * to QTDIR/plugins/designer you should see the new category "Preferences". + * Moreover you have to make sure to have specified the "prefEntry" and "prefPath" properties for each * preference widget you have used inside your form in Qt Designer. * - * \li For each widget inside your page - you want to save or load - you have to call - * \->onSave() or \->onRestore(). The best way to this is either to + * \li For each widget inside your page - you want to save or load - you have to call + * \->onSave() or \->onRestore(). The best way to this is either to * define the protected slots saveSettings() and loadSettings() in your form and overwrite - * them in a subclass or define these slots in this subclass directly. + * them in a subclass or define these slots in this subclass directly. * * See the example below for more details: * * \code - * // This class was created by Qt's uic tool + * // This class was created by Qt's uic tool * class MyPrefPage : public QWidget * { * public: diff --git a/src/Gui/DlgPropertyLink.cpp b/src/Gui/DlgPropertyLink.cpp index 89b577b754..6fb8f2c1f0 100644 --- a/src/Gui/DlgPropertyLink.cpp +++ b/src/Gui/DlgPropertyLink.cpp @@ -122,14 +122,14 @@ QList DlgPropertyLink::getLinksFromProperty(const App::Property std::vector subs; prop->getLinks(objs,true,&subs,false); if(subs.empty()) { - for(auto obj : objs) + for(auto obj : objs) res.push_back(App::SubObjectT(obj,0)); } else if (objs.size()==1) { - for(auto &sub : subs) + for(auto &sub : subs) res.push_back(App::SubObjectT(objs.front(),sub.c_str())); } else { int i=0; - for(auto obj : objs) + for(auto obj : objs) res.push_back(App::SubObjectT(obj,subs[i++].c_str())); } return res; @@ -279,10 +279,10 @@ void DlgPropertyLink::init(const App::DocumentObjectT &prop, bool tryFilter) { { isLinkList = true; allowSubObject = false; - } + } if(singleSelect) { - singleParent = true; + singleParent = true; ui->treeWidget->setSelectionMode(QAbstractItemView::SingleSelection); } else { ui->treeWidget->setSelectionMode(QAbstractItemView::MultiSelection); @@ -302,7 +302,7 @@ void DlgPropertyLink::init(const App::DocumentObjectT &prop, bool tryFilter) { ui->treeWidget->header()->setResizeMode(0, QHeaderView::ResizeToContents); #endif } - + std::set expandDocs; if(oldLinks.empty()) { @@ -529,7 +529,7 @@ void DlgPropertyLink::onItemSelectionChanged() sobj.getSubName().c_str()); blockConnection(blocked); - // Enforce single parent + // Enforce single parent if(singleParent && currentObj && currentObj!=obj) { ui->treeWidget->blockSignals(true); for(auto item : ui->treeWidget->selectedItems()) { @@ -717,7 +717,7 @@ DlgPropertyLink::getLinkFromItem(QTreeWidgetItem *item, bool needSubName) const void DlgPropertyLink::onTimer() { auto item = ui->treeWidget->itemAt( ui->treeWidget->viewport()->mapFromGlobal(QCursor::pos())); - if(!item) + if(!item) return; auto sobjs = getLinkFromItem(item); if(sobjs.isEmpty()) @@ -733,7 +733,7 @@ QList DlgPropertyLink::currentLinks() const { auto items = ui->treeWidget->selectedItems(); QList res; - for(auto item : items) + for(auto item : items) res.append(getLinkFromItem(item)); return res; } @@ -790,7 +790,7 @@ void DlgPropertyLink::filterItem(QTreeWidgetItem *item) { } bool DlgPropertyLink::eventFilter(QObject *obj, QEvent *e) { - if(obj == ui->searchBox + if(obj == ui->searchBox && e->type() == QEvent::KeyPress && static_cast(e)->key() == Qt::Key_Escape) { @@ -843,7 +843,7 @@ void DlgPropertyLink::itemSearch(const QString &text, bool select) { return; App::DocumentObject *obj = path.getDocumentObject(); - if(!obj) + if(!obj) return; bool found; @@ -881,7 +881,7 @@ QTreeWidgetItem *DlgPropertyLink::createItem( auto vp = Base::freecad_dynamic_cast( Application::Instance->getViewProvider(obj)); - if(!vp) + if(!vp) return 0; QTreeWidgetItem* item; @@ -912,7 +912,7 @@ QTreeWidgetItem *DlgPropertyLink::createItem( Py::Object proxy = prop->getValue(); if(!proxy.isNone() && !proxy.isString()) { const char *name = 0; - if (proxy.hasAttr("__class__")) + if (proxy.hasAttr("__class__")) proxyType = QByteArray(proxy.getAttr("__class__").as_string().c_str()); else { name = proxy.ptr()->ob_type->tp_name; @@ -1008,7 +1008,7 @@ bool DlgPropertyLink::filterType(QTreeWidgetItem *item) { } void DlgPropertyLink::onItemExpanded(QTreeWidgetItem * item) { - if(item->childCount()) + if(item->childCount()) return; const char *docName = item->data(0, Qt::UserRole+1).toByteArray().constData(); diff --git a/src/Gui/DlgReportViewImp.cpp b/src/Gui/DlgReportViewImp.cpp index 8d15bdd7ce..68c6d21807 100644 --- a/src/Gui/DlgReportViewImp.cpp +++ b/src/Gui/DlgReportViewImp.cpp @@ -36,8 +36,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgReportViewImp */ /** - * Constructs a DlgReportViewImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgReportViewImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -49,7 +49,7 @@ DlgReportViewImp::DlgReportViewImp( QWidget* parent ) ui->setupUi(this); } -/** +/** * Destroys the object and frees any allocated resources */ DlgReportViewImp::~DlgReportViewImp() diff --git a/src/Gui/DlgReportViewImp.h b/src/Gui/DlgReportViewImp.h index 6b4d992966..b4565b97f2 100644 --- a/src/Gui/DlgReportViewImp.h +++ b/src/Gui/DlgReportViewImp.h @@ -31,7 +31,7 @@ namespace Gui { namespace Dialog { class Ui_DlgReportView; -/** The DlgReportViewImp class implements the available settings for the +/** The DlgReportViewImp class implements the available settings for the * report output window to change. * \author Werner Mayer */ diff --git a/src/Gui/DlgRunExternal.cpp b/src/Gui/DlgRunExternal.cpp index 91ea200fd3..61851f5c92 100644 --- a/src/Gui/DlgRunExternal.cpp +++ b/src/Gui/DlgRunExternal.cpp @@ -40,8 +40,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgRunExternal */ /** - * Constructs a DlgRunExternal which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgRunExternal which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * true to construct a modal dialog. @@ -62,7 +62,7 @@ DlgRunExternal::DlgRunExternal( QWidget* parent, Qt::WindowFlags fl ) ui->extensionWidget->hide(); } -/** +/** * Destroys the object and frees any allocated resources */ DlgRunExternal::~DlgRunExternal() @@ -114,8 +114,8 @@ void DlgRunExternal::advanced (void) void DlgRunExternal::finished (int exitCode, QProcess::ExitStatus exitStatus) { - Q_UNUSED(exitCode); - Q_UNUSED(exitStatus); + Q_UNUSED(exitCode); + Q_UNUSED(exitStatus); ui->buttonAccept->setEnabled(true); ui->buttonDiscard->setEnabled(true); ui->buttonAbort->setEnabled(false); diff --git a/src/Gui/DlgRunExternal.h b/src/Gui/DlgRunExternal.h index 65693858a2..108de5241a 100644 --- a/src/Gui/DlgRunExternal.h +++ b/src/Gui/DlgRunExternal.h @@ -37,7 +37,7 @@ class Ui_DlgRunExternal; * \author Jürgen Riegel */ class GuiExport DlgRunExternal : public QDialog -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgSettings3DViewImp.cpp b/src/Gui/DlgSettings3DViewImp.cpp index 3f6dbb0acc..134aae1336 100644 --- a/src/Gui/DlgSettings3DViewImp.cpp +++ b/src/Gui/DlgSettings3DViewImp.cpp @@ -52,8 +52,8 @@ using namespace Gui::Dialog; bool DlgSettings3DViewImp::showMsg = true; /** - * Constructs a DlgSettings3DViewImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgSettings3DViewImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ DlgSettings3DViewImp::DlgSettings3DViewImp(QWidget* parent) : PreferencePage( parent ) @@ -62,7 +62,7 @@ DlgSettings3DViewImp::DlgSettings3DViewImp(QWidget* parent) ui->setupUi(this); } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettings3DViewImp::~DlgSettings3DViewImp() diff --git a/src/Gui/DlgSettingsDocumentImp.cpp b/src/Gui/DlgSettingsDocumentImp.cpp index 2a5fe4a4fc..e973043a82 100644 --- a/src/Gui/DlgSettingsDocumentImp.cpp +++ b/src/Gui/DlgSettingsDocumentImp.cpp @@ -35,8 +35,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgSettingsDocumentImp */ /** - * Constructs a DlgSettingsDocumentImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgSettingsDocumentImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ DlgSettingsDocumentImp::DlgSettingsDocumentImp( QWidget* parent ) : PreferencePage( parent ) @@ -58,7 +58,7 @@ DlgSettingsDocumentImp::DlgSettingsDocumentImp( QWidget* parent ) connect( ui->prefLicenseType, SIGNAL(currentIndexChanged(int)), this, SLOT(onLicenseTypeChanged(int)) ); } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettingsDocumentImp::~DlgSettingsDocumentImp() @@ -143,8 +143,8 @@ void DlgSettingsDocumentImp::changeEvent(QEvent *e) } } -/** - * Set the correct URL depending on the license type +/** + * Set the correct URL depending on the license type */ void DlgSettingsDocumentImp::onLicenseTypeChanged(int index) { diff --git a/src/Gui/DlgSettingsImageImp.h b/src/Gui/DlgSettingsImageImp.h index f5a7ab2727..1e079b3750 100644 --- a/src/Gui/DlgSettingsImageImp.h +++ b/src/Gui/DlgSettingsImageImp.h @@ -24,8 +24,8 @@ #ifndef GUI_DIALOG_DLGSETTINGSIMAGE_IMP_H #define GUI_DIALOG_DLGSETTINGSIMAGE_IMP_H -#include -#include +#include +#include #include #include diff --git a/src/Gui/DlgSettingsMacroImp.cpp b/src/Gui/DlgSettingsMacroImp.cpp index 5f2548cf8e..cfd8534aa1 100644 --- a/src/Gui/DlgSettingsMacroImp.cpp +++ b/src/Gui/DlgSettingsMacroImp.cpp @@ -33,8 +33,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgSettingsMacroImp */ /** - * Constructs a DlgSettingsMacroImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgSettingsMacroImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ DlgSettingsMacroImp::DlgSettingsMacroImp( QWidget* parent ) : PreferencePage( parent ) @@ -52,7 +52,7 @@ DlgSettingsMacroImp::DlgSettingsMacroImp( QWidget* parent ) } } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettingsMacroImp::~DlgSettingsMacroImp() diff --git a/src/Gui/DlgSettingsNavigation.cpp b/src/Gui/DlgSettingsNavigation.cpp index 575de5dc2f..cd558d11b7 100644 --- a/src/Gui/DlgSettingsNavigation.cpp +++ b/src/Gui/DlgSettingsNavigation.cpp @@ -51,7 +51,7 @@ using namespace Gui::Dialog; /** * Constructs a DlgSettingsNavigation which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * name 'name' and widget flags set to 'f' */ DlgSettingsNavigation::DlgSettingsNavigation(QWidget* parent) : PreferencePage( parent ) @@ -62,7 +62,7 @@ DlgSettingsNavigation::DlgSettingsNavigation(QWidget* parent) retranslate(); } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettingsNavigation::~DlgSettingsNavigation() @@ -84,11 +84,13 @@ void DlgSettingsNavigation::saveSettings() index = ui->naviCubeCorner->currentIndex(); hGrp->SetInt("CornerNaviCube", index); + index = ui->comboRotationMode->currentIndex(); + hGrp->SetInt("RotationMode", index); + ui->checkBoxZoomAtCursor->onSave(); ui->checkBoxInvertZoom->onSave(); ui->checkBoxDisableTilt->onSave(); ui->spinBoxZoomStep->onSave(); - ui->checkBoxDragAtCursor->onSave(); ui->CheckBox_UseAutoRotation->onSave(); ui->qspinNewDocScale->onSave(); ui->prefStepByTurn->onSave(); @@ -113,7 +115,6 @@ void DlgSettingsNavigation::loadSettings() ui->checkBoxInvertZoom->onRestore(); ui->checkBoxDisableTilt->onRestore(); ui->spinBoxZoomStep->onRestore(); - ui->checkBoxDragAtCursor->onRestore(); ui->CheckBox_UseAutoRotation->onRestore(); ui->qspinNewDocScale->onRestore(); ui->prefStepByTurn->onRestore(); @@ -127,10 +128,13 @@ void DlgSettingsNavigation::loadSettings() index = hGrp->GetInt("OrbitStyle", int(NavigationStyle::Trackball)); index = Base::clamp(index, 0, ui->comboOrbitStyle->count()-1); ui->comboOrbitStyle->setCurrentIndex(index); - + index = hGrp->GetInt("CornerNaviCube", 1); ui->naviCubeCorner->setCurrentIndex(index); + index = hGrp->GetInt("RotationMode", 1); + ui->comboRotationMode->setCurrentIndex(index); + bool showNaviCube = hGrp->GetBool("ShowNaviCube", true); ui->groupBoxNaviCube->setChecked(showNaviCube); diff --git a/src/Gui/DlgSettingsNavigation.ui b/src/Gui/DlgSettingsNavigation.ui index 8e2c492dda..db674b9192 100644 --- a/src/Gui/DlgSettingsNavigation.ui +++ b/src/Gui/DlgSettingsNavigation.ui @@ -232,13 +232,57 @@ Turntable: the part will be rotated around the z-axis. + + + Rotation mode + + + + + + + + 120 + 0 + + + + + 16777215 + 16777215 + + + + Rotations in 3D will use current cursor position as center for rotation + + + 1 + + + + Window center + + + + + Drag at cursor + + + + + Object center + + + + + Default camera orientation - + @@ -257,14 +301,14 @@ Turntable: the part will be rotated around the z-axis. - + New document scale - + @@ -302,7 +346,7 @@ The value is the diameter of the sphere to fit on the screen. - + true @@ -324,7 +368,7 @@ The value is the diameter of the sphere to fit on the screen. - + Zoom operations will be performed at position of mouse pointer @@ -343,7 +387,7 @@ The value is the diameter of the sphere to fit on the screen. - + @@ -411,7 +455,7 @@ Zoom step of '1' means a factor of 7.5 for every zoom step. - + Direction of zoom operations will be inverted @@ -430,7 +474,7 @@ Zoom step of '1' means a factor of 7.5 for every zoom step. - + Prevents view tilting when pinch-zooming. @@ -451,25 +495,6 @@ Mouse tilting is not disabled by this setting. - - - - Rotations in 3D will use current cursor position as center for rotation - - - Rotate at cursor - - - false - - - DragAtCursor - - - View - - - diff --git a/src/Gui/DlgSettingsUnitsImp.cpp b/src/Gui/DlgSettingsUnitsImp.cpp index 51a14120b4..cb4c3e701f 100644 --- a/src/Gui/DlgSettingsUnitsImp.cpp +++ b/src/Gui/DlgSettingsUnitsImp.cpp @@ -57,8 +57,8 @@ using namespace Base; #endif /** - * Constructs a DlgSettingsUnitsImp which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgSettingsUnitsImp which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ DlgSettingsUnitsImp::DlgSettingsUnitsImp(QWidget* parent) : PreferencePage( parent ), ui(new Ui_DlgSettingsUnits) @@ -86,7 +86,7 @@ DlgSettingsUnitsImp::DlgSettingsUnitsImp(QWidget* parent) } } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettingsUnitsImp::~DlgSettingsUnitsImp() @@ -125,7 +125,7 @@ void DlgSettingsUnitsImp::saveSettings() // Set actual value Base::UnitsApi::setDecimals(ui->spinBoxDecimals->value()); - + // Convert the combobox index to the its integer denominator. Currently // with 1/2, 1/4, through 1/128, this little equation directly computes the // denominator given the combobox integer. diff --git a/src/Gui/DlgSettingsViewColor.cpp b/src/Gui/DlgSettingsViewColor.cpp index ad5cf7520c..972bf40de9 100644 --- a/src/Gui/DlgSettingsViewColor.cpp +++ b/src/Gui/DlgSettingsViewColor.cpp @@ -35,8 +35,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::DlgSettingsViewColor */ /** - * Constructs a DlgSettingsViewColor which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a DlgSettingsViewColor which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ DlgSettingsViewColor::DlgSettingsViewColor(QWidget* parent) : PreferencePage(parent) @@ -47,7 +47,7 @@ DlgSettingsViewColor::DlgSettingsViewColor(QWidget* parent) ui->SelectionColor->setEnabled(ui->checkBoxSelection->isChecked()); } -/** +/** * Destroys the object and frees any allocated resources */ DlgSettingsViewColor::~DlgSettingsViewColor() diff --git a/src/Gui/DlgSettingsViewColor.h b/src/Gui/DlgSettingsViewColor.h index 2b02cb00c1..12ff65125c 100644 --- a/src/Gui/DlgSettingsViewColor.h +++ b/src/Gui/DlgSettingsViewColor.h @@ -37,7 +37,7 @@ class Ui_DlgSettingsViewColor; * @author Werner Mayer */ class DlgSettingsViewColor : public PreferencePage -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgToolbarsImp.cpp b/src/Gui/DlgToolbarsImp.cpp index 2907d254e5..32242b6c53 100644 --- a/src/Gui/DlgToolbarsImp.cpp +++ b/src/Gui/DlgToolbarsImp.cpp @@ -130,7 +130,7 @@ DlgCustomToolbars::DlgCustomToolbars(DlgCustomToolbars::Type t, QWidget* parent) } } - QStringList labels; + QStringList labels; labels << tr("Icon") << tr("Command"); ui->commandTreeWidget->setHeaderLabels(labels); ui->commandTreeWidget->header()->hide(); @@ -488,7 +488,7 @@ void DlgCustomToolbars::on_newButton_clicked() { bool ok; QString text = QString::fromLatin1("Custom%1").arg(ui->toolbarTreeWidget->topLevelItemCount()+1); - text = QInputDialog::getText(this, tr("New toolbar"), tr("Toolbar name:"), QLineEdit::Normal, text, &ok); + text = QInputDialog::getText(this, tr("New toolbar"), tr("Toolbar name:"), QLineEdit::Normal, text, &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok) { // Check for duplicated name for (int i=0; itoolbarTreeWidget->topLevelItemCount(); i++) { @@ -535,7 +535,7 @@ void DlgCustomToolbars::on_renameButton_clicked() bool ok; QString old_text = item->text(0); QString text = QInputDialog::getText(this, tr("Rename toolbar"), tr("Toolbar name:"), - QLineEdit::Normal, old_text, &ok); + QLineEdit::Normal, old_text, &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok && text != old_text) { // Check for duplicated name for (int i=0; itoolbarTreeWidget->topLevelItemCount(); i++) { diff --git a/src/Gui/DlgToolbarsImp.h b/src/Gui/DlgToolbarsImp.h index 109b24b509..12a7b7ea80 100644 --- a/src/Gui/DlgToolbarsImp.h +++ b/src/Gui/DlgToolbarsImp.h @@ -33,19 +33,19 @@ class Ui_DlgCustomToolbars; /** This class implements the creation of user defined toolbars. * In the left panel are shown all command groups with their command objects. - * If any changeable toolbar was created in the left panel are shown all commands + * If any changeable toolbar was created in the left panel are shown all commands * of the currently edited toolbar, otherwise it is empty. * All changes to a toolbar is done immediately. - * + * * \author Werner Mayer */ class DlgCustomToolbars : public CustomizeActionPage -{ +{ Q_OBJECT protected: enum Type { Toolbar, Toolboxbar }; - + DlgCustomToolbars(Type, QWidget* parent = 0); virtual ~DlgCustomToolbars(); @@ -90,7 +90,7 @@ private: * \author Werner Mayer */ class DlgCustomToolbarsImp : public DlgCustomToolbars -{ +{ Q_OBJECT public: @@ -113,7 +113,7 @@ private: }; /** This class implements the creation of user defined toolbox bars. - * A toolbox bar is the same as a toolbar - a collection of several + * A toolbox bar is the same as a toolbar - a collection of several * action objects - unless a toolbox bar is placed in a toolbox, * while a toolbar is placed in the dock areas of the main window. * So toolbox bars are predestinated to save place on your desktop. @@ -122,7 +122,7 @@ private: * \author Werner Mayer */ class DlgCustomToolBoxbarsImp : public DlgCustomToolbars -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgUndoRedo.cpp b/src/Gui/DlgUndoRedo.cpp index 298d6e9c5a..2d183dcb60 100644 --- a/src/Gui/DlgUndoRedo.cpp +++ b/src/Gui/DlgUndoRedo.cpp @@ -38,8 +38,8 @@ using namespace Gui::Dialog; /* TRANSLATOR Gui::Dialog::UndoRedoDialog */ /** - * Constructs a UndoRedoDialog which is a child of 'parent', with the - * name 'name'.' + * Constructs a UndoRedoDialog which is a child of 'parent', with the + * name 'name'.' */ UndoDialog::UndoDialog( QWidget* parent ) : QMenu( parent ) @@ -47,7 +47,7 @@ UndoDialog::UndoDialog( QWidget* parent ) connect(this, SIGNAL(aboutToShow()), this, SLOT(onFetchInfo())); } -/** +/** * Destroys the object and frees any allocated resources. */ UndoDialog::~UndoDialog() @@ -55,11 +55,11 @@ UndoDialog::~UndoDialog() // no need to delete child widgets, Qt does it all for us } -/** - * This method fetches the undo / redo information from the +/** + * This method fetches the undo / redo information from the * active document and shows it in the undo / redo dialog. */ -void UndoDialog::onFetchInfo() +void UndoDialog::onFetchInfo() { clear(); // Remove first all items @@ -103,8 +103,8 @@ void UndoDialog::onSelected() /* TRANSLATOR Gui::Dialog::RedoDialog */ /** - * Constructs a UndoRedoDialog which is a child of 'parent', with the - * name 'name'.' + * Constructs a UndoRedoDialog which is a child of 'parent', with the + * name 'name'.' */ RedoDialog::RedoDialog( QWidget* parent ) : QMenu( parent ) @@ -112,7 +112,7 @@ RedoDialog::RedoDialog( QWidget* parent ) connect(this, SIGNAL(aboutToShow()), this, SLOT(onFetchInfo())); } -/** +/** * Destroys the object and frees any allocated resources. */ RedoDialog::~RedoDialog() @@ -120,11 +120,11 @@ RedoDialog::~RedoDialog() // no need to delete child widgets, Qt does it all for us } -/** - * This method fetches the undo / redo information from the +/** + * This method fetches the undo / redo information from the * active document and shows it in the undo / redo dialog. */ -void RedoDialog::onFetchInfo() +void RedoDialog::onFetchInfo() { clear(); // Remove first all items diff --git a/src/Gui/DlgUndoRedo.h b/src/Gui/DlgUndoRedo.h index 62b2ca9c6f..300b936406 100644 --- a/src/Gui/DlgUndoRedo.h +++ b/src/Gui/DlgUndoRedo.h @@ -33,7 +33,7 @@ namespace Dialog { * \author Werner Mayer */ class UndoDialog : public QMenu -{ +{ Q_OBJECT public: @@ -49,7 +49,7 @@ protected Q_SLOTS: * \author Werner Mayer */ class RedoDialog : public QMenu -{ +{ Q_OBJECT public: diff --git a/src/Gui/DlgUnitsCalculator.ui b/src/Gui/DlgUnitsCalculator.ui index 24dc2d0583..c0e39feadc 100644 --- a/src/Gui/DlgUnitsCalculator.ui +++ b/src/Gui/DlgUnitsCalculator.ui @@ -6,7 +6,7 @@ 0 0 - 424 + 537 262 diff --git a/src/Gui/DlgUnitsCalculatorImp.h b/src/Gui/DlgUnitsCalculatorImp.h index 0e1ddd5607..93174200c6 100644 --- a/src/Gui/DlgUnitsCalculatorImp.h +++ b/src/Gui/DlgUnitsCalculatorImp.h @@ -35,7 +35,7 @@ class Ui_DlgUnitCalculator; /** * The DlgUnitsCalculator provides a unit conversion dialog - * \author Juergen Riegel + * \author Juergen Riegel */ class DlgUnitsCalculator : public QDialog { diff --git a/src/Gui/DlgWorkbenchesImp.cpp b/src/Gui/DlgWorkbenchesImp.cpp index 850de62cf3..3e4b15f21c 100644 --- a/src/Gui/DlgWorkbenchesImp.cpp +++ b/src/Gui/DlgWorkbenchesImp.cpp @@ -1,7 +1,6 @@ /*************************************************************************** * Copyright (c) 2015 FreeCAD Developers * * Author: Przemo Firszt * - * Based on DlgToolbars.cpp file * * * * This file is part of the FreeCAD CAx development system. * * * @@ -22,6 +21,8 @@ * * ***************************************************************************/ +// Based on DlgToolbars.cpp + #include "PreCompiled.h" #ifndef _PreComp_ diff --git a/src/Gui/DlgWorkbenchesImp.h b/src/Gui/DlgWorkbenchesImp.h index 0321e2e606..64097849d2 100644 --- a/src/Gui/DlgWorkbenchesImp.h +++ b/src/Gui/DlgWorkbenchesImp.h @@ -1,7 +1,6 @@ /*************************************************************************** * Copyright (c) 2015 FreeCAD Developers * * Author: Przemo Firszt * - * Based on DlgToolbars.h file * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library General Public * @@ -20,6 +19,8 @@ * * ***************************************************************************/ +// Based on DlgToolbars.h file + #ifndef GUI_DIALOG_DLGWORKBENCHES_IMP_H #define GUI_DIALOG_DLGWORKBENCHES_IMP_H diff --git a/src/Gui/DockWindow.h b/src/Gui/DockWindow.h index 910aae70c6..9e53f6e44b 100644 --- a/src/Gui/DockWindow.h +++ b/src/Gui/DockWindow.h @@ -34,10 +34,10 @@ class MDIView; class Application; /** Base class of all dockable windows belonging to a document - * there are two ways of belonging to a document. The + * there are two ways of belonging to a document. The * first way is to a fixed one. The second way is to always * belong to the active document, that means switching every time - * the active document is changing. It also means that the view + * the active document is changing. It also means that the view * belongs sometimes to no document at all! * @see TreeView * @see Gui::Document @@ -60,7 +60,7 @@ public: */ virtual ~DockWindow(); - /** @name methods to override + /** @name methods to override */ //@{ /// get called when the document is updated @@ -82,4 +82,4 @@ Q_SIGNALS: } // namespace Gui -#endif // GUI_DOCKWINDOW_H +#endif // GUI_DOCKWINDOW_H diff --git a/src/Gui/DockWindowManager.cpp b/src/Gui/DockWindowManager.cpp index a3b5db25ab..4bafc8c099 100644 --- a/src/Gui/DockWindowManager.cpp +++ b/src/Gui/DockWindowManager.cpp @@ -261,10 +261,10 @@ void DockWindowManager::retranslate() * \li Std_SelectionView * * To avoid name clashes the caller should use names of the form \a module_widgettype, i. e. if a analyse dialog for - * the mesh module is added the name must then be Mesh_AnalyzeDialog. + * the mesh module is added the name must then be Mesh_AnalyzeDialog. * - * To make use of dock windows when a workbench gets loaded the method setupDockWindows() must reimplemented in a - * subclass of Gui::Workbench. + * To make use of dock windows when a workbench gets loaded the method setupDockWindows() must reimplemented in a + * subclass of Gui::Workbench. */ bool DockWindowManager::registerDockWindow(const char* name, QWidget* widget) { diff --git a/src/Gui/DockWindowManager.h b/src/Gui/DockWindowManager.h index 2a29ce4ac0..a38d89a2b1 100644 --- a/src/Gui/DockWindowManager.h +++ b/src/Gui/DockWindowManager.h @@ -71,7 +71,7 @@ public: void setup(DockWindowItems*); /// Adds a QDockWidget to the main window and sets \a widget as its widget - QDockWidget* addDockWindow(const char* name, QWidget* widget, + QDockWidget* addDockWindow(const char* name, QWidget* widget, Qt::DockWidgetArea pos = Qt::AllDockWidgetAreas); /// Removes and destroys the QDockWidget and returns the widget /// with name \a name added with @ref addDockWindow. @@ -102,7 +102,7 @@ private Q_SLOTS: private: QDockWidget* findDockWidget(const QList&, const QString&) const; - + DockWindowManager(); ~DockWindowManager(); static DockWindowManager* _instance; @@ -111,4 +111,4 @@ private: } // namespace Gui -#endif // GUI_DOCKWINDOWMANAGER_H +#endif // GUI_DOCKWINDOWMANAGER_H diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index b8ae366c16..e6463eec6a 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -199,7 +199,7 @@ Document::Document(App::Document* pcDocument,Application * app) (boost::bind(&Gui::Document::importObjects, this, bp::_1, bp::_2, bp::_3)); d->connectFinishImportObjects = pcDocument->signalFinishImportObjects.connect (boost::bind(&Gui::Document::slotFinishImportObjects, this, bp::_1)); - + d->connectUndoDocument = pcDocument->signalUndo.connect (boost::bind(&Gui::Document::slotUndoDocument, this, bp::_1)); d->connectRedoDocument = pcDocument->signalRedo.connect @@ -348,7 +348,7 @@ bool Document::setEdit(Gui::ViewProvider* p, int ModNum, const char *subname) // ViewProvider::setEditViewer(), which transfer all child node of the view // provider into an editing node inside the viewer of this document. And // that's may actually be the case, as the subname referenced sub object - // is allowed to be in other documents. + // is allowed to be in other documents. // // We just disabling editing external parent object here, for bug // tracking purpose. Because, bringing an unrelated external object to @@ -380,7 +380,7 @@ bool Document::setEdit(Gui::ViewProvider* p, int ModNum, const char *subname) // } auto sobj = obj->getSubObject(subname,0,&d->_editingTransform); if(!sobj || !sobj->getNameInDocument()) { - FC_ERR("Invalid sub object '" << obj->getFullName() + FC_ERR("Invalid sub object '" << obj->getFullName() << '.' << (subname?subname:"") << "'"); return false; } @@ -396,7 +396,7 @@ bool Document::setEdit(Gui::ViewProvider* p, int ModNum, const char *subname) View3DInventor *view3d = dynamic_cast(getActiveView()); // if the currently active view is not the 3d view search for it and activate it - if (view3d) + if (view3d) getMainWindow()->setActiveWindow(view3d); else view3d = dynamic_cast(setActiveView(vp)); @@ -453,7 +453,7 @@ void Document::setEditingTransform(const Base::Matrix4D &mat) { d->_editObjs.clear(); d->_editingTransform = mat; View3DInventor *activeView = dynamic_cast(getActiveView()); - if (activeView) + if (activeView) activeView->getViewer()->setEditingTransform(mat); } @@ -477,7 +477,7 @@ void Document::_resetEdit(void) // the editing object gets deleted inside the above call to // 'finishEditing()', which will trigger our slotDeletedObject(), which // nullifies _editViewProvider. - if (d->_editViewProvider && d->_editViewProvider->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) + if (d->_editViewProvider && d->_editViewProvider->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) signalResetEdit(*(static_cast(d->_editViewProvider))); d->_editViewProvider = 0; @@ -506,7 +506,7 @@ void Document::_resetEdit(void) Application::Instance->setEditDocument(0); } -ViewProvider *Document::getInEdit(ViewProviderDocumentObject **parentVp, +ViewProvider *Document::getInEdit(ViewProviderDocumentObject **parentVp, std::string *subname, int *mode, std::string *subelement) const { if(parentVp) *parentVp = d->_editViewProviderParent; @@ -540,7 +540,7 @@ void Document::setAnnotationViewProvider(const char* name, ViewProvider *pcProvi if (it != d->_ViewProviderMapAnnotation.end()) removeAnnotationViewProvider(name); - // add + // add d->_ViewProviderMapAnnotation[name] = pcProvider; // cycling to all views of the document @@ -570,7 +570,7 @@ void Document::removeAnnotationViewProvider(const char* name) } delete it->second; - d->_ViewProviderMapAnnotation.erase(it); + d->_ViewProviderMapAnnotation.erase(it); } @@ -584,7 +584,7 @@ ViewProvider* Document::getViewProvider(const App::DocumentObject* Feat) const std::vector Document::getViewProvidersOfType(const Base::Type& typeId) const { std::vector Objects; - for (std::map::const_iterator it = + for (std::map::const_iterator it = d->_ViewProviderMap.begin(); it != d->_ViewProviderMap.end(); ++it ) { if (it->second->getTypeId().isDerivedFrom(typeId)) Objects.push_back(it->second); @@ -739,7 +739,7 @@ void Document::slotDeletedObject(const App::DocumentObject& Obj) std::list::iterator vIt; setModified(true); //Base::Console().Log("Document::slotDeleteObject() called\n"); - + // cycling to all views of the document ViewProvider* viewProvider = getViewProvider(&Obj); if(!viewProvider) return; @@ -779,7 +779,7 @@ void Document::beforeDelete() { if(editDoc) { auto vp = dynamic_cast(editDoc->d->_editViewProvider); auto vpp = dynamic_cast(editDoc->d->_editViewProviderParent); - if(editDoc == this || + if(editDoc == this || (vp && vp->getDocument()==this) || (vpp && vpp->getDocument()==this)) { @@ -797,13 +797,13 @@ void Document::slotChangedObject(const App::DocumentObject& Obj, const App::Prop if (viewProvider) { try { viewProvider->update(&Prop); - if(d->_editingViewer + if(d->_editingViewer && d->_editingObject - && d->_editViewProviderParent + && d->_editViewProviderParent && (Prop.isDerivedFrom(App::PropertyPlacement::getClassTypeId()) // Issue ID 0004230 : getName() can return null in which case strstr() crashes || (Prop.getName() && strstr(Prop.getName(),"Scale"))) - && d->_editObjs.count(&Obj)) + && d->_editObjs.count(&Obj)) { Base::Matrix4D mat; auto sobj = d->_editViewProviderParent->getObject()->getSubObject( @@ -891,8 +891,8 @@ void Document::slotUndoDocument(const App::Document& doc) { if (d->_pcDocument != &doc) return; - - signalUndoDocument(*this); + + signalUndoDocument(*this); getMainWindow()->updateActions(); } @@ -900,8 +900,8 @@ void Document::slotRedoDocument(const App::Document& doc) { if (d->_pcDocument != &doc) return; - - signalRedoDocument(*this); + + signalRedoDocument(*this); getMainWindow()->updateActions(); } @@ -922,8 +922,8 @@ void Document::slotSkipRecompute(const App::Document& doc, const std::vector_pcDocument != &doc) return; - if(objs.size()>1 || - App::GetApplication().getActiveDocument()!=&doc || + if(objs.size()>1 || + App::GetApplication().getActiveDocument()!=&doc || !doc.testStatus(App::Document::AllowPartialRecompute)) return; App::DocumentObject *obj = 0; @@ -967,7 +967,7 @@ void Document::setModified(bool b) if(d->_isModified == b) return; d->_isModified = b; - + std::list mdis = getMDIViews(); for (std::list::iterator it = mdis.begin(); it != mdis.end(); ++it) { (*it)->setWindowModified(b); @@ -1173,8 +1173,8 @@ bool Document::saveAs(void) getMainWindow()->showMessage(QObject::tr("Save document under new filename...")); QString exe = qApp->applicationName(); - QString fn = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe), - QString::fromUtf8(getDocument()->FileName.getValue()), + QString fn = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe), + QString::fromUtf8(getDocument()->FileName.getValue()), QString::fromLatin1("%1 %2 (*.FCStd)").arg(exe).arg(QObject::tr("Document"))); if (!fn.isEmpty()) { QFileInfo fi; @@ -1252,9 +1252,9 @@ void Document::saveAll() gdoc->setModified(false); } catch (const Base::Exception& e) { - QMessageBox::critical(getMainWindow(), - QObject::tr("Failed to save document") + - QString::fromLatin1(": %1").arg(QString::fromUtf8(doc->getName())), + QMessageBox::critical(getMainWindow(), + QObject::tr("Failed to save document") + + QString::fromLatin1(": %1").arg(QString::fromUtf8(doc->getName())), QString::fromLatin1(e.what())); break; } @@ -1267,8 +1267,8 @@ bool Document::saveCopy(void) getMainWindow()->showMessage(QObject::tr("Save a copy of the document under new filename...")); QString exe = qApp->applicationName(); - QString fn = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe), - QString::fromUtf8(getDocument()->FileName.getValue()), + QString fn = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe), + QString::fromUtf8(getDocument()->FileName.getValue()), QObject::tr("%1 document (*.FCStd)").arg(exe)); if (!fn.isEmpty()) { const char * DocName = App::GetApplication().getDocumentName(getDocument()); @@ -1298,7 +1298,7 @@ unsigned int Document::getMemSize (void) const return size; } -/** +/** * Adds a separate XML file to the projects file that contains information about the view providers. */ void Document::Save (Base::Writer &writer) const @@ -1326,7 +1326,7 @@ void Document::Save (Base::Writer &writer) const } } -/** +/** * Loads a separate XML file from the projects file with information about the view providers. */ void Document::Restore(Base::XMLReader &reader) @@ -1475,7 +1475,7 @@ void Document::SaveDocFile (Base::Writer &writer) const writer.Stream() << "::const_iterator it; // writing the view provider names itself - writer.Stream() << writer.ind() << "_ViewProviderMap.size() <<"\">" << std::endl; bool xml = writer.isForceXML(); @@ -1507,7 +1507,7 @@ void Document::SaveDocFile (Base::Writer &writer) const << "expanded=\"" << (doc->testStatus(App::Expand) ? 1:0) << "\""; if (obj->hasExtensions()) writer.Stream() << " Extensions=\"True\""; - + writer.Stream() << ">" << std::endl; obj->Save(writer); writer.Stream() << writer.ind() << "" << std::endl; @@ -1530,7 +1530,7 @@ void Document::SaveDocFile (Base::Writer &writer) const } writer.incInd(); // indentation for camera settings - writer.Stream() << writer.ind() << "\n"; writer.decInd(); // indentation for camera settings writer.Stream() << "" << std::endl; @@ -1552,7 +1552,7 @@ void Document::exportObjects(const std::vector& obj, Base: // writing the view provider names itself writer.incInd(); // indentation for 'ViewProviderData Count' - writer.Stream() << writer.ind() << "" << std::endl; bool xml = writer.isForceXML(); @@ -1622,7 +1622,7 @@ void Document::importObjects(const std::vector& obj, Base: auto vpd = Base::freecad_dynamic_cast(pObj); if(vpd) vpd->startRestoring(); pObj->Restore(*localreader); - if (expanded && vpd) + if (expanded && vpd) this->signalExpandObject(*vpd, TreeItemMode::ExpandItem,0,0); } localreader->readEndElement("ViewProvider"); @@ -1906,7 +1906,7 @@ bool Document::isLastView(void) return false; } -/** +/** * This method checks if the document can be closed. It checks on * the save state of the document and is able to abort the closing. */ @@ -2035,7 +2035,7 @@ bool Document::sendMsgToFirstView(const Base::Type& typeId, const char* pMsg, co /// Getter for the active view MDIView* Document::getActiveView(void) const { - // get the main window's active view + // get the main window's active view MDIView* active = getMainWindow()->activeWindow(); // get all MDI views of the document @@ -2050,7 +2050,7 @@ MDIView* Document::getActiveView(void) const } } - if (ok) + if (ok) return active; // the active view is not part of this document, just use the last view @@ -2181,13 +2181,13 @@ Gui::MDIView* Document::getEditingViewOfViewProvider(Gui::ViewProvider* vp) cons } //-------------------------------------------------------------------------- -// UNDO REDO transaction handling +// UNDO REDO transaction handling //-------------------------------------------------------------------------- /** Open a new Undo transaction on the active document * This method opens a new UNDO transaction on the active document. This transaction - * will later appear in the UNDO/REDO dialog with the name of the command. If the user - * recall the transaction everything changed on the document between OpenCommand() and - * CommitCommand will be undone (or redone). You can use an alternative name for the + * will later appear in the UNDO/REDO dialog with the name of the command. If the user + * recall the transaction everything changed on the document between OpenCommand() and + * CommitCommand will be undone (or redone). You can use an alternative name for the * operation default is the command name. * @see CommitCommand(),AbortCommand() */ @@ -2258,7 +2258,7 @@ bool Document::checkTransactionID(bool undo, int iSteps) { } str << " " << doc->getName() << "\n"; } - int ret = QMessageBox::warning(getMainWindow(), + int ret = QMessageBox::warning(getMainWindow(), undo?QObject::tr("Undo"):QObject::tr("Redo"), QString::fromLatin1("%1,\n%2%3") .arg(QObject::tr( @@ -2384,7 +2384,7 @@ void Document::handleChildren3D(ViewProvider* viewProvider, bool deleting) } } } - } + } } void Document::toggleInSceneGraph(ViewProvider *vp) diff --git a/src/Gui/Document.h b/src/Gui/Document.h index 171ae9ed3f..b24887aaf8 100644 --- a/src/Gui/Document.h +++ b/src/Gui/Document.h @@ -115,15 +115,15 @@ public: /// signal on leaving edit mode mutable boost::signals2::signal signalResetEdit; /// signal on changed Object, the 2nd argument is the highlite mode to use - mutable boost::signals2::signal signalHighlightObject; + App::DocumentObject *parent, + const char *subname)> signalHighlightObject; /// signal on changed Object, the 2nd argument is the highlite mode to use mutable boost::signals2::signal signalExpandObject; /// signal on changed ShowInTree property in view provider mutable boost::signals2::signal signalShowItem; @@ -246,7 +246,7 @@ public: /// reset edit of this document void _resetEdit(void); /// get the in edit ViewProvider or NULL - ViewProvider *getInEdit(ViewProviderDocumentObject **parentVp=0, + ViewProvider *getInEdit(ViewProviderDocumentObject **parentVp=0, std::string *subname=0, int *mode=0, std::string *subElement=0) const; /// set the in edit ViewProvider subname reference void setInEdit(ViewProviderDocumentObject *parentVp, const char *subname); diff --git a/src/Gui/DocumentModel.cpp b/src/Gui/DocumentModel.cpp index a43e9a07bf..228e5a0df7 100644 --- a/src/Gui/DocumentModel.cpp +++ b/src/Gui/DocumentModel.cpp @@ -84,12 +84,12 @@ namespace Gui { { return childItems.count(); } virtual QVariant data(int role) const { - Q_UNUSED(role); + Q_UNUSED(role); return QVariant(); } virtual bool setData (const QVariant & value, int role) { - Q_UNUSED(value); + Q_UNUSED(value); if (role == Qt::EditRole) { return true; } @@ -299,7 +299,7 @@ namespace Gui { ViewProviderIndex* c = static_cast(*it)->clone(); copy->appendChild(c); } - return copy; + return copy; } void ViewProviderIndex::findViewProviders(const ViewProviderDocumentObject& vp, @@ -412,7 +412,7 @@ void DocumentModel::slotDeleteDocument(const Gui::Document& Doc) void DocumentModel::slotRenameDocument(const Gui::Document& Doc) { - Q_UNUSED(Doc); + Q_UNUSED(Doc); // do nothing here } @@ -437,12 +437,12 @@ void DocumentModel::slotActiveDocument(const Gui::Document& /*Doc*/) void DocumentModel::slotInEdit(const Gui::ViewProviderDocumentObject& v) { - Q_UNUSED(v); + Q_UNUSED(v); } void DocumentModel::slotResetEdit(const Gui::ViewProviderDocumentObject& v) { - Q_UNUSED(v); + Q_UNUSED(v); } void DocumentModel::slotNewObject(const Gui::ViewProviderDocumentObject& obj) @@ -551,13 +551,13 @@ void DocumentModel::slotChangeObject(const Gui::ViewProviderDocumentObject& obj, void DocumentModel::slotRenameObject(const Gui::ViewProviderDocumentObject& obj) { - Q_UNUSED(obj); + Q_UNUSED(obj); // renaming of objects not supported at the moment } void DocumentModel::slotActiveObject(const Gui::ViewProviderDocumentObject& obj) { - Q_UNUSED(obj); + Q_UNUSED(obj); // do nothing here because this is automatically done by calling // ViewProviderIndex::data() } @@ -665,7 +665,7 @@ int DocumentModel::rowCount (const QModelIndex & parent) const QVariant DocumentModel::headerData (int section, Qt::Orientation orientation, int role) const { - Q_UNUSED(section); + Q_UNUSED(section); if (orientation == Qt::Horizontal) { if (role != Qt::DisplayRole) return QVariant(); diff --git a/src/Gui/DocumentObserverPython.h b/src/Gui/DocumentObserverPython.h index bd3aa5b51d..96d9196008 100644 --- a/src/Gui/DocumentObserverPython.h +++ b/src/Gui/DocumentObserverPython.h @@ -35,7 +35,7 @@ namespace Gui /** * The DocumentObserverPython class is used to notify registered Python instances * whenever something happens to a document, like creation, destruction, adding or - * removing viewproviders or when viewprovider property changes. This is the equivalent to the app + * removing viewproviders or when viewprovider property changes. This is the equivalent to the app * python document observer */ class GuiExport DocumentObserverPython @@ -49,7 +49,7 @@ public: static void addObserver(const Py::Object& obj); static void removeObserver(const Py::Object& obj); -private: +private: /** Checks if a new document was created */ void slotCreatedDocument(const Gui::Document& Doc); /** Checks if the given document is about to be closed */ @@ -77,7 +77,7 @@ private: Py::Object inst; static std::vector _instances; - typedef struct { + typedef struct PythonObject { boost::signals2::scoped_connection slot; Py::Object py; PyObject* ptr() { diff --git a/src/Gui/DocumentPyImp.cpp b/src/Gui/DocumentPyImp.cpp index 4d638a2df5..0ffbfd7095 100644 --- a/src/Gui/DocumentPyImp.cpp +++ b/src/Gui/DocumentPyImp.cpp @@ -62,11 +62,11 @@ std::string DocumentPy::representation(void) const PyObject* DocumentPy::show(PyObject *args) { char *psFeatStr; - if (!PyArg_ParseTuple(args, "s;Name of the Feature to show have to be given!",&psFeatStr)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s;Name of the Feature to show have to be given!",&psFeatStr)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { - getDocumentPtr()->setShow(psFeatStr); + getDocumentPtr()->setShow(psFeatStr); Py_Return; } PY_CATCH; } @@ -74,11 +74,11 @@ PyObject* DocumentPy::show(PyObject *args) PyObject* DocumentPy::hide(PyObject *args) { char *psFeatStr; - if (!PyArg_ParseTuple(args, "s;Name of the Feature to hide have to be given!",&psFeatStr)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s;Name of the Feature to hide have to be given!",&psFeatStr)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { - getDocumentPtr()->setHide(psFeatStr); + getDocumentPtr()->setHide(psFeatStr); Py_Return; } PY_CATCH; } @@ -90,13 +90,13 @@ PyObject* DocumentPy::setPos(PyObject *args) PyObject *pcMatObj; if (!PyArg_ParseTuple(args, "sO!;Name of the Feature and the transformation matrix have to be given!", &psFeatStr, - &(Base::MatrixPy::Type), &pcMatObj)) // convert args: Python->C - return NULL; // NULL triggers exception + &(Base::MatrixPy::Type), &pcMatObj)) // convert args: Python->C + return NULL; // NULL triggers exception mat = static_cast(pcMatObj)->value(); PY_TRY { - getDocumentPtr()->setPos(psFeatStr,mat); + getDocumentPtr()->setPos(psFeatStr,mat); Py_Return; } PY_CATCH; } @@ -159,8 +159,8 @@ PyObject* DocumentPy::getInEdit(PyObject *args) PyObject* DocumentPy::resetEdit(PyObject *args) { - if (!PyArg_ParseTuple(args, ";No arguments allowed")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, ";No arguments allowed")) // convert args: Python->C + return NULL; // NULL triggers exception getDocumentPtr()->resetEdit(); Py_Return; @@ -169,8 +169,8 @@ PyObject* DocumentPy::resetEdit(PyObject *args) PyObject* DocumentPy::addAnnotation(PyObject *args) { char *psAnnoName,*psFileName,*psModName=0; - if (!PyArg_ParseTuple(args, "ss|s;Name of the Annotation and a file name have to be given!",&psAnnoName,&psFileName,&psModName)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "ss|s;Name of the Annotation and a file name have to be given!",&psAnnoName,&psFileName,&psModName)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { ViewProviderExtern *pcExt = new ViewProviderExtern(); @@ -187,8 +187,8 @@ PyObject* DocumentPy::addAnnotation(PyObject *args) PyObject* DocumentPy::update(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { getDocumentPtr()->onUpdate(); @@ -199,8 +199,8 @@ PyObject* DocumentPy::update(PyObject *args) PyObject* DocumentPy::getObject(PyObject *args) { char *sName; - if (!PyArg_ParseTuple(args, "s",&sName)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s",&sName)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { ViewProvider *pcView = getDocumentPtr()->getViewProviderByName(sName); @@ -214,8 +214,8 @@ PyObject* DocumentPy::getObject(PyObject *args) PyObject* DocumentPy::activeObject(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { App::DocumentObject *pcFtr = getDocumentPtr()->getDocument()->getActiveObject(); @@ -230,8 +230,8 @@ PyObject* DocumentPy::activeObject(PyObject *args) PyObject* DocumentPy::activeView(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { Gui::MDIView *pcView = getDocumentPtr()->getActiveView(); @@ -247,8 +247,8 @@ PyObject* DocumentPy::activeView(PyObject *args) PyObject* DocumentPy::mdiViewsOfType(PyObject *args) { char* sType; - if (!PyArg_ParseTuple(args, "s", &sType)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s", &sType)) // convert args: Python->C + return NULL; // NULL triggers exception Base::Type type = Base::Type::fromName(sType); if (type == Base::Type::badType()) { @@ -268,8 +268,8 @@ PyObject* DocumentPy::mdiViewsOfType(PyObject *args) PyObject* DocumentPy::sendMsgToViews(PyObject *args) { char* msg; - if (!PyArg_ParseTuple(args, "s", &msg)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s", &msg)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { getDocumentPtr()->sendMsgToViews(msg); @@ -280,8 +280,8 @@ PyObject* DocumentPy::sendMsgToViews(PyObject *args) PyObject* DocumentPy::mergeProject(PyObject *args) { char* filename; - if (!PyArg_ParseTuple(args, "s", &filename)) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "s", &filename)) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { Base::FileInfo fi(filename); @@ -301,18 +301,18 @@ PyObject* DocumentPy::toggleTreeItem(PyObject *args) if (PyArg_ParseTuple(args,"O!|is",&(App::DocumentObjectPy::Type), &object,&mod,&subname)) { App::DocumentObject* Object = static_cast(object)->getDocumentObjectPtr(); // Should be set! - assert(Object); + assert(Object); App::DocumentObject *parent = 0; if (subname) { auto sobj = Object->getSubObject(subname); - if (!sobj) + if (!sobj) throw Py::RuntimeError("Sub-object not found"); parent = Object; Object = sobj; } - - // get the gui document of the Assembly Item + + // get the gui document of the Assembly Item //ActiveAppDoc = Item->getDocument(); //ActiveGuiDoc = Gui::Application::Instance->getDocument(getDocumentPtr()); Gui::ViewProviderDocumentObject* ActiveVp = dynamic_cast (getDocumentPtr()->getViewProvider(Object)); @@ -410,8 +410,8 @@ Py::Object DocumentPy::getInEditInfo(void) const { ViewProviderDocumentObject *vp = 0; std::string subname,subelement; int mode = 0; - getDocumentPtr()->getInEdit(&vp,&subname,&mode,&subelement); - if (!vp || !vp->getObject() || !vp->getObject()->getNameInDocument()) + getDocumentPtr()->getInEdit(&vp,&subname,&mode,&subelement); + if (!vp || !vp->getObject() || !vp->getObject()->getNameInDocument()) return Py::None(); return Py::TupleN(Py::Object(vp->getObject()->getPyObject(),true), Py::String(subname),Py::String(subelement),Py::Int(mode)); @@ -420,7 +420,7 @@ Py::Object DocumentPy::getInEditInfo(void) const { void DocumentPy::setInEditInfo(Py::Object arg) { PyObject *pyobj = 0; const char *subname = 0; - if (!PyArg_ParseTuple(arg.ptr(), "O!s", + if (!PyArg_ParseTuple(arg.ptr(), "O!s", &Gui::ViewProviderDocumentObjectPy::Type, &pyobj,&subname)) throw Py::Exception(); getDocumentPtr()->setInEdit(static_cast( @@ -476,11 +476,11 @@ int DocumentPy::setCustomAttributes(const char* attr, PyObject *) ViewProvider* obj = getDocumentPtr()->getViewProviderByName(attr); if (obj) { std::stringstream str; - str << "'Document' object attribute '" << attr + str << "'Document' object attribute '" << attr << "' must not be set this way" << std::ends; throw Py::AttributeError(str.str()); } - + return 0; } diff --git a/src/Gui/EditorView.cpp b/src/Gui/EditorView.cpp index eb13f0a7b3..75f010da77 100644 --- a/src/Gui/EditorView.cpp +++ b/src/Gui/EditorView.cpp @@ -166,7 +166,7 @@ void EditorView::closeEvent(QCloseEvent* event) void EditorView::OnChange(Base::Subject &rCaller,const char* rcReason) { - Q_UNUSED(rCaller); + Q_UNUSED(rCaller); ParameterGrp::handle hPrefGrp = getWindowParameter(); if (strcmp(rcReason, "EnableLineNumber") == 0) { //bool show = hPrefGrp->GetBool( "EnableLineNumber", true ); @@ -178,7 +178,7 @@ void EditorView::checkTimestamp() QFileInfo fi(d->fileName); uint timeStamp = fi.lastModified().toTime_t(); if (timeStamp != d->timeStamp) { - switch( QMessageBox::question( this, tr("Modified file"), + switch( QMessageBox::question( this, tr("Modified file"), tr("%1.\n\nThis has been modified outside of the source editor. Do you want to reload it?").arg(d->fileName), QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) ) { @@ -300,10 +300,10 @@ bool EditorView::canClose(void) if ( !d->textEdit->document()->isModified() ) return true; this->setFocus(); // raises the view to front - switch( QMessageBox::question(this, tr("Unsaved document"), + switch( QMessageBox::question(this, tr("Unsaved document"), tr("The document has been modified.\n" "Do you want to save your changes?"), - QMessageBox::Yes|QMessageBox::Default, QMessageBox::No, + QMessageBox::Yes|QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel|QMessageBox::Escape)) { case QMessageBox::Yes: @@ -380,7 +380,7 @@ void EditorView::copy(void) } /** - * Pastes the text from the clipboard into the text edit at the current cursor position. + * Pastes the text from the clipboard into the text edit at the current cursor position. * If there is no text in the clipboard nothing happens. */ void EditorView::paste(void) @@ -531,7 +531,7 @@ void EditorView::redoAvailable(bool redo) void EditorView::contentsChange(int position, int charsRemoved, int charsAdded) { - Q_UNUSED(position); + Q_UNUSED(position); if (d->lock) return; if (charsRemoved > 0 && charsAdded > 0) diff --git a/src/Gui/ExpressionBinding.cpp b/src/Gui/ExpressionBinding.cpp index 21ded0c06a..0be9f992c6 100644 --- a/src/Gui/ExpressionBinding.cpp +++ b/src/Gui/ExpressionBinding.cpp @@ -84,7 +84,7 @@ void Gui::ExpressionBinding::setExpression(boost::shared_ptr expr) if(m_autoApply) apply(); - + if(transaction) App::GetApplication().closeActiveTransaction(); @@ -97,7 +97,7 @@ void ExpressionBinding::bind(const App::ObjectIdentifier &_path) Q_ASSERT(prop != 0); path = prop->canonicalPath(_path); - + //connect to be informed about changes DocumentObject * docObj = path.getDocumentObject(); connection = docObj->ExpressionEngine.expressionChanged.connect(boost::bind(&ExpressionBinding::expressionChange, this, bp::_1)); @@ -170,7 +170,7 @@ QPixmap ExpressionBinding::getIcon(const char* name, const QSize& size) const bool ExpressionBinding::apply(const std::string & propName) { - Q_UNUSED(propName); + Q_UNUSED(propName); if (hasExpression()) { DocumentObject * docObj = path.getDocumentObject(); diff --git a/src/Gui/ExpressionBinding.h b/src/Gui/ExpressionBinding.h index 031006ca5d..40c1604fb2 100644 --- a/src/Gui/ExpressionBinding.h +++ b/src/Gui/ExpressionBinding.h @@ -49,19 +49,19 @@ public: bool hasExpression() const; QPixmap getIcon(const char *name, const QSize &size) const; - - //auto apply means that the python code is issued not only on apply() but + + //auto apply means that the python code is issued not only on apply() but //also on setExpression bool autoApply() const {return m_autoApply;}; void setAutoApply(bool value) {m_autoApply = value;}; - + protected: const App::ObjectIdentifier & getPath() const { return path; } boost::shared_ptr getExpression() const; std::string getExpressionString(bool no_throw=true) const; std::string getEscapedExpressionString() const; virtual void setExpression(boost::shared_ptr expr); - + //gets called when the bound expression is changed, either by this binding or any external action virtual void onChange() {}; diff --git a/src/Gui/ExpressionCompleter.cpp b/src/Gui/ExpressionCompleter.cpp index 812ba04168..0338cfc757 100644 --- a/src/Gui/ExpressionCompleter.cpp +++ b/src/Gui/ExpressionCompleter.cpp @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2015 Eivind Kvedalen * + * * + * 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_ @@ -59,12 +81,12 @@ public: } // This ExpressionCompleter model works without any pysical items. - // Everything item related is stored inside QModelIndex.InternalPointer/InternalId(), + // Everything item related is stored inside QModelIndex.InternalPointer/InternalId(), // using the following Info structure. // // The Info contains two indices, one for document and the other for object. // For 32-bit system, the index is 16bit which limits the size to 64K. For - // 64-bit system, the index is 32bit. + // 64-bit system, the index is 32bit. // // The "virtual" items are organized as a tree. The root items are special, // which consists of three types in the following order, @@ -142,7 +164,7 @@ public: App::Document *doc = 0; App::DocumentObject *obj = 0; App::Property *prop = 0; - if(idx>=0 && idx=0 && idx=0 && v) { QString res; @@ -189,7 +211,7 @@ public: if(sep && !noProperty) res += QLatin1Char('.'); } else { - if(idx & 1) + if(idx & 1) res = QString::fromUtf8(quote(doc->Label.getStrValue()).c_str()); else res = QString::fromLatin1(doc->getName()); @@ -237,7 +259,7 @@ public: if(count) *count = propSize; } - if(v) + if(v) *v = QString::fromLatin1(prop->getName()); return; } @@ -287,7 +309,7 @@ public: row = -1; }else{ info = getInfo(parent); - if(info.d.doc<0) + if(info.d.doc<0) info.d.doc = parent.row(); else if(info.d.obj<0) info.d.obj = parent.row(); @@ -318,7 +340,7 @@ private: * @param parent Parent object owning the completer. */ -ExpressionCompleter::ExpressionCompleter(const App::DocumentObject * currentDocObj, +ExpressionCompleter::ExpressionCompleter(const App::DocumentObject * currentDocObj, QObject *parent, bool noProperty) : QCompleter(parent), currentObj(currentDocObj), noProperty(noProperty) { @@ -393,7 +415,7 @@ QStringList ExpressionCompleter::splitPath ( const QString & input ) const l << Base::Tools::fromStdString(*sli); ++sli; } - FC_TRACE("split path " << path + FC_TRACE("split path " << path << " -> " << l.join(QLatin1String("/")).toUtf8().constData()); return l; } @@ -477,7 +499,7 @@ void ExpressionCompleter::slotUpdate(const QString & prefix, int pos) stringing = false; break; } - if(token==ExpressionParser::LT + if(token==ExpressionParser::LT && i && get<0>(tokens[i-1])==ExpressionParser::LT) { --i; @@ -497,7 +519,7 @@ void ExpressionCompleter::slotUpdate(const QString & prefix, int pos) i = static_cast(tokens.size()) - 1; for(;i>=0;--i) { int token = get<0>(tokens[i]); - if (token != '.' && token != '#' && + if (token != '.' && token != '#' && token != ExpressionParser::IDENTIFIER && token != ExpressionParser::STRING && token != ExpressionParser::UNIT) diff --git a/src/Gui/ExpressionCompleter.h b/src/Gui/ExpressionCompleter.h index 2d291e4c60..8829c77836 100644 --- a/src/Gui/ExpressionCompleter.h +++ b/src/Gui/ExpressionCompleter.h @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2015 Eivind Kvedalen * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + #ifndef EXPRESSIONCOMPLETER_H #define EXPRESSIONCOMPLETER_H @@ -28,10 +50,10 @@ class GuiExport ExpressionCompleter : public QCompleter { Q_OBJECT public: - ExpressionCompleter(const App::DocumentObject * currentDocObj, + ExpressionCompleter(const App::DocumentObject * currentDocObj, QObject *parent = 0, bool noProperty = false); - void getPrefixRange(int &start, int &end) const { + void getPrefixRange(int &start, int &end) const { start = prefixStart; end = prefixEnd; } diff --git a/src/Gui/FileDialog.cpp b/src/Gui/FileDialog.cpp index 45afbddf68..139b1bdf78 100644 --- a/src/Gui/FileDialog.cpp +++ b/src/Gui/FileDialog.cpp @@ -131,7 +131,7 @@ void FileDialog::accept() /** * This is a convenience static function that will return a file name selected by the user. The file does not have to exist. */ -QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption, const QString & dir, +QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption, const QString & dir, const QString & filter, QString * selectedFilter, Options options) { QString dirName = dir; @@ -144,7 +144,7 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption, dirName += QLatin1String("/"); dirName += fi.fileName(); } - + // get the suffix for the filter QRegExp rx; rx.setPattern(QLatin1String("\\s(\\(\\*\\.\\w{1,})\\W")); @@ -166,7 +166,7 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption, #endif // NOTE: We must not change the specified file name afterwards as we may return the name of an already - // existing file. Hence we must extract the first matching suffix from the filter list and append it + // existing file. Hence we must extract the first matching suffix from the filter list and append it // before showing the file dialog. QString file; if (dontUseNativeDialog()) { @@ -245,11 +245,11 @@ QString FileDialog::getExistingDirectory( QWidget * parent, const QString & capt return path; } -/** - * This is a convenience static function that returns an existing file selected by the user. +/** + * This is a convenience static function that returns an existing file selected by the user. * If the user pressed Cancel, it returns a null string. */ -QString FileDialog::getOpenFileName(QWidget * parent, const QString & caption, const QString & dir, +QString FileDialog::getOpenFileName(QWidget * parent, const QString & caption, const QString & dir, const QString & filter, QString * selectedFilter, Options options) { QString dirName = dir; @@ -597,7 +597,7 @@ void FileOptionsDialog::setOptionsWidget(FileOptionsDialog::ExtensionPosition po // Instead of resizing the dialog we can fix the layout size. // This however, doesn't work nicely when the extension widget - // is higher/wider than the dialog. + // is higher/wider than the dialog. //grid->setSizeConstraint(QLayout::SetFixedSize); oldSize = size(); @@ -727,7 +727,7 @@ void FileChooser::editingFinished() fileNameSelected(le_converted); } -/** +/** * Sets the file name \a s. */ void FileChooser::setFileName( const QString& s ) @@ -795,7 +795,7 @@ void FileChooser::setMode( FileChooser::Mode m ) /** * \property FileChooser::filter * - * This property holds the set filter to choose a file. This property is used only if + * This property holds the set filter to choose a file. This property is used only if * FileChooser::Mode is set to File. * * \sa chooseFile(), filter(), setFilter(). @@ -806,7 +806,7 @@ QString FileChooser::filter() const } /** - * Sets the filter for choosing a file. + * Sets the filter for choosing a file. */ void FileChooser::setFilter ( const QString& filter ) { @@ -966,7 +966,7 @@ SelectModule::Dict SelectModule::exportHandler(const QStringList& fileNames, con QFileInfo fi(*it); QString ext = fi.completeSuffix().toLower(); std::map filters = App::GetApplication().getExportFilters(ext.toLatin1()); - + if (filters.empty()) { ext = fi.suffix().toLower(); filters = App::GetApplication().getExportFilters(ext.toLatin1()); @@ -980,7 +980,7 @@ SelectModule::Dict SelectModule::exportHandler(const QStringList& fileNames, con dict[*it] = QString::fromLatin1(filters.begin()->second.c_str()); } - for (QMap::const_iterator it = filetypeHandler.begin(); + for (QMap::const_iterator it = filetypeHandler.begin(); it != filetypeHandler.end(); ++it) { if (it.value().size() > 1) { SelectModule dlg(it.key(),it.value(), getMainWindow()); @@ -1028,7 +1028,7 @@ SelectModule::Dict SelectModule::importHandler(const QStringList& fileNames, con QFileInfo fi(*it); QString ext = fi.completeSuffix().toLower(); std::map filters = App::GetApplication().getImportFilters(ext.toLatin1()); - + if (filters.empty()) { ext = fi.suffix().toLower(); filters = App::GetApplication().getImportFilters(ext.toLatin1()); @@ -1042,7 +1042,7 @@ SelectModule::Dict SelectModule::importHandler(const QStringList& fileNames, con dict[*it] = QString::fromLatin1(filters.begin()->second.c_str()); } - for (QMap::const_iterator it = filetypeHandler.begin(); + for (QMap::const_iterator it = filetypeHandler.begin(); it != filetypeHandler.end(); ++it) { if (it.value().size() > 1) { SelectModule dlg(it.key(),it.value(), getMainWindow()); diff --git a/src/Gui/FileDialog.h b/src/Gui/FileDialog.h index c5f1fcef20..7c9ffe6582 100644 --- a/src/Gui/FileDialog.h +++ b/src/Gui/FileDialog.h @@ -48,11 +48,11 @@ class GuiExport FileDialog : public QFileDialog Q_OBJECT public: - static QString getOpenFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), + static QString getOpenFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = Options() ); - static QString getSaveFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), + static QString getSaveFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = Options() ); - static QString getExistingDirectory( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), + static QString getExistingDirectory( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly ); static QStringList getOpenFileNames( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = Options() ); @@ -80,7 +80,7 @@ private: // ---------------------------------------------------------------------- /** - * The FileOptionsDialog class provides an extensible file dialog with an additional widget either at the right + * The FileOptionsDialog class provides an extensible file dialog with an additional widget either at the right * or at the bottom, that can be shown or hidden with the 'Extended' button. * @author Werner Mayer */ @@ -155,12 +155,12 @@ public: FileChooser ( QWidget * parent = 0 ); virtual ~FileChooser(); - /** + /** * Returns the set filter. */ QString filter() const; - /** + /** * Returns the filename. */ QString fileName() const; @@ -234,7 +234,7 @@ public: virtual ~SelectModule(); QString getModule() const; - /** @name Import/Export handler + /** @name Import/Export handler * These methods accepts a file name or a list of file names and return * a map of file names with the associated Python module that should open * the file. diff --git a/src/Gui/Flag.cpp b/src/Gui/Flag.cpp index 51e5c10cd1..907a3a32a9 100644 --- a/src/Gui/Flag.cpp +++ b/src/Gui/Flag.cpp @@ -274,13 +274,13 @@ void FlagLayout::setGeometry(const QRect &rect) if (position == TopLeft) { topHeight += spacing(); - item->setGeometry(QRect(rect.x() + spacing(), topHeight, + item->setGeometry(QRect(rect.x() + spacing(), topHeight, item->sizeHint().width(), item->sizeHint().height())); topHeight += item->geometry().height(); } else if (position == BottomLeft) { bottomHeight += item->geometry().height() + spacing(); - item->setGeometry(QRect(rect.x() + spacing(), rect.height() - bottomHeight, + item->setGeometry(QRect(rect.x() + spacing(), rect.height() - bottomHeight, item->sizeHint().width(), item->sizeHint().height())); } } @@ -296,13 +296,13 @@ void FlagLayout::setGeometry(const QRect &rect) int rightpos = item->sizeHint().width() + spacing(); if (position == TopRight) { topHeight += spacing(); - item->setGeometry(QRect(rect.x() + rect.width() - rightpos, topHeight, + item->setGeometry(QRect(rect.x() + rect.width() - rightpos, topHeight, item->sizeHint().width(), item->sizeHint().height())); topHeight += item->geometry().height(); } else if (position == BottomRight) { bottomHeight += item->geometry().height() + spacing(); - item->setGeometry(QRect(rect.x() + rect.width() - rightpos, rect.height() - bottomHeight, + item->setGeometry(QRect(rect.x() + rect.width() - rightpos, rect.height() - bottomHeight, item->sizeHint().width(), item->sizeHint().height())); } } diff --git a/src/Gui/FreeCADGuiInit.py b/src/Gui/FreeCADGuiInit.py index e7ebbacafc..66ada4808d 100644 --- a/src/Gui/FreeCADGuiInit.py +++ b/src/Gui/FreeCADGuiInit.py @@ -1,12 +1,5 @@ -# FreeCAD gui init module -# (c) 2003 Jürgen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** -#* Copyright (c) 2002 Jürgen Riegel * +#* Copyright (c) 2002,2003 Jürgen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -28,6 +21,11 @@ #* * #***************************************************************************/ +# FreeCAD gui init module +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up # imports the one and only import FreeCAD, FreeCADGui @@ -125,8 +123,12 @@ def InitApplications(): if (os.path.exists(InstallFile)): try: # XXX: This looks scary securitywise... - with open(InstallFile) as f: - exec(f.read()) + if sys.version_info.major < 3: + with open(InstallFile) as f: + exec(f.read()) + else: + with open(file=InstallFile, encoding="utf-8") as f: + exec(f.read()) except Exception as inst: Log('Init: Initializing ' + Dir + '... failed\n') Log('-'*100+'\n') diff --git a/src/Gui/GLPainter.cpp b/src/Gui/GLPainter.cpp index 20fda13bcd..ad65e96b3b 100644 --- a/src/Gui/GLPainter.cpp +++ b/src/Gui/GLPainter.cpp @@ -390,7 +390,7 @@ void Polyline::setCloseStippled(bool c) void Polyline::setLineWidth(float l) { - line = l; + line = l; } void Polyline::addNode(const QPoint& p) diff --git a/src/Gui/GraphvizView.cpp b/src/Gui/GraphvizView.cpp index c28ff37216..58632d31cc 100644 --- a/src/Gui/GraphvizView.cpp +++ b/src/Gui/GraphvizView.cpp @@ -103,7 +103,7 @@ public: void run() { QByteArray preprocessed = str; - + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DependencyGraph"); if(hGrp->GetBool("Unflatten", true)) { // Write data to unflatten process @@ -116,7 +116,7 @@ public: unflattenProc.closeWriteChannel(); unflattenProc.waitForFinished(); } - + dotProc.write(preprocessed); dotProc.closeWriteChannel(); if (!dotProc.waitForFinished()) { @@ -131,7 +131,7 @@ public: QProcess * dotProcess() { return &dotProc; } - + QProcess * unflattenProcess() { return &unflattenProc; } @@ -343,13 +343,13 @@ QByteArray GraphvizView::exportGraph(const QString& format) QString exe = QString::fromLatin1("%1/dot").arg(path); QString unflatten = QString::fromLatin1("%1/unflatten").arg(path); #endif - + dotProc.setEnvironment(QProcess::systemEnvironment()); dotProc.start(exe, args); if (!dotProc.waitForStarted()) { return QByteArray(); } - + ParameterGrp::handle depGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DependencyGraph"); if(depGrp->GetBool("Unflatten", true)) { flatProc.setEnvironment(QProcess::systemEnvironment()); @@ -361,12 +361,12 @@ QByteArray GraphvizView::exportGraph(const QString& format) flatProc.closeWriteChannel(); if (!flatProc.waitForFinished()) return QByteArray(); - + dotProc.write(flatProc.readAll()); } - else - dotProc.write(graphCode.c_str(), graphCode.size()); - + else + dotProc.write(graphCode.c_str(), graphCode.size()); + dotProc.closeWriteChannel(); if (!dotProc.waitForFinished()) return QByteArray(); @@ -434,11 +434,11 @@ bool GraphvizView::onHasMsg(const char* pMsg) const else if (strcmp("SaveAs",pMsg) == 0) return true; else if (strcmp("Print",pMsg) == 0) - return true; + return true; else if (strcmp("PrintPreview",pMsg) == 0) - return true; + return true; else if (strcmp("PrintPdf",pMsg) == 0) - return true; + return true; return false; } diff --git a/src/Gui/GraphvizView.h b/src/Gui/GraphvizView.h index 5a9dc204b3..0fc516dbb4 100644 --- a/src/Gui/GraphvizView.h +++ b/src/Gui/GraphvizView.h @@ -35,7 +35,7 @@ class QSvgRenderer; class QGraphicsSvgItem; class GraphicsViewZoom; -namespace Gui +namespace Gui { class GraphvizWorker; diff --git a/src/Gui/GuiApplication.cpp b/src/Gui/GuiApplication.cpp index 9b435015e3..abdbf870c9 100644 --- a/src/Gui/GuiApplication.cpp +++ b/src/Gui/GuiApplication.cpp @@ -85,7 +85,7 @@ bool GUIApplication::notify (QObject * receiver, QEvent * event) return false; } try { - if (event->type() == Spaceball::ButtonEvent::ButtonEventType || + if (event->type() == Spaceball::ButtonEvent::ButtonEventType || event->type() == Spaceball::MotionEvent::MotionEventType) return processSpaceballEvent(receiver, event); else diff --git a/src/Gui/GuiApplicationNativeEventAware.cpp b/src/Gui/GuiApplicationNativeEventAware.cpp index 3506ec9e68..e3f77bde13 100644 --- a/src/Gui/GuiApplicationNativeEventAware.cpp +++ b/src/Gui/GuiApplicationNativeEventAware.cpp @@ -117,7 +117,7 @@ void Gui::GUIApplicationNativeEventAware::postMotionEvent(std::vector motio Spaceball::MotionEvent *motionEvent = new Spaceball::MotionEvent(); motionEvent->setTranslations(motionDataArray[0], motionDataArray[1], motionDataArray[2]); - motionEvent->setRotations(motionDataArray[3], motionDataArray[4], motionDataArray[5]); + motionEvent->setRotations(motionDataArray[3], motionDataArray[4], motionDataArray[5]); this->postEvent(currentWidget, motionEvent); } diff --git a/src/Gui/GuiApplicationNativeEventAware.h b/src/Gui/GuiApplicationNativeEventAware.h index 156a0f7504..2265d03217 100644 --- a/src/Gui/GuiApplicationNativeEventAware.h +++ b/src/Gui/GuiApplicationNativeEventAware.h @@ -43,7 +43,7 @@ namespace Gui ~GUIApplicationNativeEventAware(); void initSpaceball(QMainWindow *window); bool isSpaceballPresent() const {return spaceballPresent;} - void setSpaceballPresent(bool present) {spaceballPresent = present;} + void setSpaceballPresent(bool present) {spaceballPresent = present;} bool processSpaceballEvent(QObject *object, QEvent *event); void postMotionEvent(std::vector motionDataArray); void postButtonEvent(int buttonNumber, int buttonPress); diff --git a/src/Gui/GuiConsole.cpp b/src/Gui/GuiConsole.cpp index 8833da243c..a2bfc7dd30 100644 --- a/src/Gui/GuiConsole.cpp +++ b/src/Gui/GuiConsole.cpp @@ -45,7 +45,7 @@ const unsigned int GUIConsole::s_nMaxLines = 1000; unsigned int GUIConsole::s_nRefCount = 0; /** Constructor - * Open a Top level Window and redirect the + * Open a Top level Window and redirect the * stdin, stdout and stderr stream to it. * Not needed in Linux! */ @@ -76,7 +76,7 @@ GUIConsole::GUIConsole (void) } /** Destructor - * Close the window and redirect the streams back + * Close the window and redirect the streams back */ GUIConsole::~GUIConsole (void) { diff --git a/src/Gui/GuiConsole.h b/src/Gui/GuiConsole.h index a06c7bc250..bca7a14a22 100644 --- a/src/Gui/GuiConsole.h +++ b/src/Gui/GuiConsole.h @@ -30,12 +30,12 @@ namespace Gui { /** The console window class - * This class opens a console window when instantiated - * and redirects the stdio streams to it as long it exists. + * This class opens a console window when instantiated + * and redirects the stdio streams to it as long it exists. * This is for Windows only! * After instantiation it automatically registers itself at * the FCConsole class and gets all the FCConsoleObserver - * messages. The class must not used directly! Only the + * messages. The class must not used directly! Only the * FCConsole class is allowed! * @see FCConsole * \author Jürgen Riegel diff --git a/src/Gui/Icons/Std_CloseActiveWindow.svg b/src/Gui/Icons/Std_CloseActiveWindow.svg new file mode 100644 index 0000000000..34cf937f65 --- /dev/null +++ b/src/Gui/Icons/Std_CloseActiveWindow.svg @@ -0,0 +1,204 @@ + + + Std_CloseActiveWindow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_CloseActiveWindow + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/11/28 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + + + + + + cross + + + orange box with a cross + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_CloseAllWindows.svg b/src/Gui/Icons/Std_CloseAllWindows.svg new file mode 100644 index 0000000000..baabe656e6 --- /dev/null +++ b/src/Gui/Icons/Std_CloseAllWindows.svg @@ -0,0 +1,248 @@ + + + Std_CloseAllWindows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_CloseAllWindows + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/11/28 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + + + + + + cross + + + Double orange box with a cross + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_DemoMode.svg b/src/Gui/Icons/Std_DemoMode.svg new file mode 100644 index 0000000000..f6f5e8ac4c --- /dev/null +++ b/src/Gui/Icons/Std_DemoMode.svg @@ -0,0 +1,325 @@ + + + Std_DemoMode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_DemoMode + + + [watsug] + + + Part_Shape_from_Mesh + 2020/10/29 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + watsug's design in collaboration with bitacovir + + + + + shapes + arrows + disc + + + Shapes spining on a disc + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_DependencyGraph.svg b/src/Gui/Icons/Std_DependencyGraph.svg new file mode 100644 index 0000000000..f3fae58f70 --- /dev/null +++ b/src/Gui/Icons/Std_DependencyGraph.svg @@ -0,0 +1,273 @@ + + + Std_DependencyGraph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_DependencyGraph + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/10/31 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + + + + + + Arrow balloons + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_DlgParameter.svg b/src/Gui/Icons/Std_DlgParameter.svg new file mode 100644 index 0000000000..29beda5a36 --- /dev/null +++ b/src/Gui/Icons/Std_DlgParameter.svg @@ -0,0 +1,251 @@ + + + Std_DlgParameter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_DlgParameter + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/11/19 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + Based on Bejant's work + + + + + Gear + + + Blue gear + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_Export.svg b/src/Gui/Icons/Std_Export.svg new file mode 100644 index 0000000000..28599a3407 --- /dev/null +++ b/src/Gui/Icons/Std_Export.svg @@ -0,0 +1,428 @@ + + + Std_Export + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_Export + + + [bitacovir] + + + + + + + Based on Jakub Steiner's work + + + 2020/11/31 + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + red arrow + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_Import.svg b/src/Gui/Icons/Std_Import.svg new file mode 100644 index 0000000000..26a2e3ace9 --- /dev/null +++ b/src/Gui/Icons/Std_Import.svg @@ -0,0 +1,428 @@ + + + Std_Import + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_Import + + + [bitacovir] + + + + + + + Based on Jakub Steiner's work + + + 2020/11/31 + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + green arrow + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_MergeProjects.svg b/src/Gui/Icons/Std_MergeProjects.svg new file mode 100644 index 0000000000..e7ef5081a4 --- /dev/null +++ b/src/Gui/Icons/Std_MergeProjects.svg @@ -0,0 +1,661 @@ + + + Std_MergeProjects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_MergeProjects + + + [bitacovir] + + + + + + + Work based o Jakub Steiner design + + + 2020/11/31 + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_PrintPdf.svg b/src/Gui/Icons/Std_PrintPdf.svg new file mode 100644 index 0000000000..ac55098cdb --- /dev/null +++ b/src/Gui/Icons/Std_PrintPdf.svg @@ -0,0 +1,423 @@ + + + Std_PrintPdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_PrintPdf + + + [bitacovir] + + + + + + + Based on Jakub Steiner's work + + + 2020/11/31 + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + loop + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_ProjectUtil.svg b/src/Gui/Icons/Std_ProjectUtil.svg new file mode 100644 index 0000000000..3ce11685af --- /dev/null +++ b/src/Gui/Icons/Std_ProjectUtil.svg @@ -0,0 +1,113 @@ + + + Std_ProjectUtil + + + + image/svg+xml + + Std_ProjectUtil + 2020/10/31 + + + [bitacovir] + + + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + + Green arrow and blue frame + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_RecentFiles.svg b/src/Gui/Icons/Std_RecentFiles.svg new file mode 100644 index 0000000000..5dbe9f91f0 --- /dev/null +++ b/src/Gui/Icons/Std_RecentFiles.svg @@ -0,0 +1,728 @@ + + + Std_RecentFiles + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_RecentFiles + 2020-11-12 + + + [bitacovir] + + + + + documents + clock + + + + + + Based on Andreas Nilsson's work + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_Revert.svg b/src/Gui/Icons/Std_Revert.svg new file mode 100644 index 0000000000..5e9f16976a --- /dev/null +++ b/src/Gui/Icons/Std_Revert.svg @@ -0,0 +1,201 @@ + + + Std_Revert + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_Revert + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/11/28 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + + + + + + back arrow + + + orange box with a arrow + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_SaveAll.svg b/src/Gui/Icons/Std_SaveAll.svg new file mode 100644 index 0000000000..79810f5e81 --- /dev/null +++ b/src/Gui/Icons/Std_SaveAll.svg @@ -0,0 +1,605 @@ + + + Std_SaveAll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_SaveAll + + + [bitacovr] + + + + + hdd + hard drive + save + io + store + + + + + + + + Based on Jakub Steiner's work + + + 2020/12/06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_SaveCopy.svg b/src/Gui/Icons/Std_SaveCopy.svg new file mode 100644 index 0000000000..23b885796e --- /dev/null +++ b/src/Gui/Icons/Std_SaveCopy.svg @@ -0,0 +1,633 @@ + + + Std_SaveCopy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_SaveCopy + + + [bitacovir] + + + + + + + Work based o Jakub Steiner design + + + 2020/11/31 + + + FreeCAD LGPL2+ + + + + + FreeCAD + + + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/Std_SceneInspector.svg b/src/Gui/Icons/Std_SceneInspector.svg new file mode 100644 index 0000000000..2a4a4fb8d2 --- /dev/null +++ b/src/Gui/Icons/Std_SceneInspector.svg @@ -0,0 +1,279 @@ + + + Std_SceneInspector + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Std_SceneInspector + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020/10/31 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + + + + + + window + + + Window with list of elements + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/Icons/resource.qrc b/src/Gui/Icons/resource.qrc index 56169171d7..ad7f6a1fe3 100644 --- a/src/Gui/Icons/resource.qrc +++ b/src/Gui/Icons/resource.qrc @@ -152,6 +152,16 @@ Param_UInt.svg PolygonPick.svg Python.svg + Std_CloseActiveWindow.svg + Std_CloseAllWindows.svg + Std_Export.svg + Std_Import.svg + Std_MergeProjects.svg + Std_PrintPdf.svg + Std_RecentFiles.svg + Std_Revert.svg + Std_SaveAll.svg + Std_SaveCopy.svg Std_Tool1.svg Std_Tool2.svg Std_Tool3.svg @@ -168,6 +178,11 @@ Std_WindowNext.svg Std_WindowPrev.svg Std_WindowTileVer.svg + Std_DemoMode.svg + Std_DependencyGraph.svg + Std_DlgParameter.svg + Std_ProjectUtil.svg + Std_SceneInspector.svg WhatsThis.svg colors.svg px.svg diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp index ecc5f72961..9192b8237b 100644 --- a/src/Gui/InputField.cpp +++ b/src/Gui/InputField.cpp @@ -314,7 +314,7 @@ void InputField::pushToHistory(const QString &valueq) for(std::vector::const_iterator it = hist.begin();it!=hist.end();++it) if( *it == val) return; - + std::string value(val.toUtf8()); if(_handle.isValid()){ char hist1[21]; @@ -489,7 +489,7 @@ double InputField::singleStep(void)const return StepSize; } -/// set the value of the singleStep property +/// set the value of the singleStep property void InputField::setSingleStep(double s) { StepSize = s; @@ -501,7 +501,7 @@ double InputField::maximum(void)const return Maximum; } -/// set the value of the maximum property +/// set the value of the maximum property void InputField::setMaximum(double m) { Maximum = m; @@ -517,7 +517,7 @@ double InputField::minimum(void)const return Minimum; } -/// set the value of the minimum property +/// set the value of the minimum property void InputField::setMinimum(double m) { Minimum = m; @@ -581,7 +581,7 @@ int InputField::historySize(void)const return HistorySize; } -// set the value of the minimum property +// set the value of the minimum property void InputField::setHistorySize(int i) { assert(i>=0); diff --git a/src/Gui/InputField.h b/src/Gui/InputField.h index 0f956970e5..d242446f90 100644 --- a/src/Gui/InputField.h +++ b/src/Gui/InputField.h @@ -107,11 +107,11 @@ public: /// (shown by the red pixmap in the gui) bool hasValidInput() { return validInput;} - /** sets the Unit this field is working with. + /** sets the Unit this field is working with. * After setting the Unit the field will only accept - * user input with this unit type. Or if the user input + * user input with this unit type. Or if the user input * a value without unit, this one will be added to the resulting - * Quantity. + * Quantity. */ void setUnit(const Base::Unit&); const Base::Unit& getUnit() const; @@ -120,33 +120,33 @@ public: void setToLastUsedValue(void); /// get the value of the singleStep property double singleStep(void)const; - /// set the value of the singleStep property + /// set the value of the singleStep property void setSingleStep(double); /// get the value of the maximum property double maximum(void)const; - /// set the value of the maximum property + /// set the value of the maximum property void setMaximum(double); /// get the value of the minimum property double minimum(void)const; - /// set the value of the minimum property + /// set the value of the minimum property void setMinimum(double); /// get the value of the minimum property int historySize(void)const; - /// set the value of the minimum property + /// set the value of the minimum property void setHistorySize(int); - /// set the unit by a string (can be used in the *.ui file) + /// set the unit by a string (can be used in the *.ui file) void setUnitText(const QString&); - /// get the unit as a string (can be used in the *.ui file) - QString getUnitText(void); + /// get the unit as a string (can be used in the *.ui file) + QString getUnitText(void); /// get the value of the precision property - int getPrecision(void) const; - /// set the value of the precision property (can be used in the *.ui file) + int getPrecision(void) const; + /// set the value of the precision property (can be used in the *.ui file) void setPrecision(const int); /// get the value of the format property: "f" (fixed), "e" (scientific), "g" (general) - QString getFormat(void) const; - /// set the value of the format property (can be used in the *.ui file) + QString getFormat(void) const; + /// set the value of the format property (can be used in the *.ui file) void setFormat(const QString&); - /// set the number portion selected (use after setValue()) + /// set the number portion selected (use after setValue()) void selectNumber(void); /// input validation void fixup(QString& input) const; @@ -159,11 +159,11 @@ public: QByteArray paramGrpPath () const; /// set the param group path where the widget writes and reads the default values void setParamGrpPath ( const QByteArray& name ); - /// push a new value to the history, if no string given the actual text of the input field is used. + /// push a new value to the history, if no string given the actual text of the input field is used. void pushToHistory(const QString &valueq = QString()); /// get the history of the field, newest first std::vector getHistory(void); - /// push a new value to the history, if no string given the actual text of the input field is used. + /// push a new value to the history, if no string given the actual text of the input field is used. void pushToSavedValues(const QString &valueq = QString()); /// get the history of the field, newest first std::vector getSavedValues(void); @@ -176,15 +176,15 @@ public: Q_SIGNALS: /** gets emitted if the user has entered a VALID input * Valid means the user inputted string obeys all restrictions - * like: minimum, maximum and/or the right Unit (if specified). - * If you want the unfiltered/non-validated input use textChanged(const QString&) + * like: minimum, maximum and/or the right Unit (if specified). + * If you want the unfiltered/non-validated input use textChanged(const QString&) * instead: */ void valueChanged(const Base::Quantity&); /** gets emitted if the user has entered a VALID input * Valid means the user inputted string obeys all restrictions - * like: minimum, maximum and/or the right Unit (if specified). - * If you want the unfiltered/non-validated input use textChanged(const QString&) + * like: minimum, maximum and/or the right Unit (if specified). + * If you want the unfiltered/non-validated input use textChanged(const QString&) * instead: */ void valueChanged(double); diff --git a/src/Gui/InputVector.cpp b/src/Gui/InputVector.cpp index c6a52cf7a8..9b73b7aafc 100644 --- a/src/Gui/InputVector.cpp +++ b/src/Gui/InputVector.cpp @@ -100,7 +100,7 @@ void LocationWidget::retranslateUi() yLabel->setText(QApplication::translate("Gui::LocationWidget", "Y:")); zLabel->setText(QApplication::translate("Gui::LocationWidget", "Z:")); dLabel->setText(QApplication::translate("Gui::LocationWidget", "Direction:")); - + if (dValue->count() == 0) { dValue->insertItems(0, QStringList() << QApplication::translate("Gui::LocationDialog", "X") @@ -120,7 +120,7 @@ void LocationWidget::retranslateUi() dValue->setItemText(0, QApplication::translate("Gui::LocationDialog", "X")); dValue->setItemText(1, QApplication::translate("Gui::LocationDialog", "Y")); dValue->setItemText(2, QApplication::translate("Gui::LocationDialog", "Z")); - dValue->setItemText(dValue->count()-1, + dValue->setItemText(dValue->count()-1, QApplication::translate("Gui::LocationDialog", "User defined...")); } } diff --git a/src/Gui/InventorAll.h b/src/Gui/InventorAll.h index b559d4a5e5..afcab3da18 100644 --- a/src/Gui/InventorAll.h +++ b/src/Gui/InventorAll.h @@ -36,9 +36,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -49,9 +49,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -82,7 +82,7 @@ #include #include #include -#include +#include #include #include #include @@ -99,7 +99,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/Gui/InventorNavigationStyle.cpp b/src/Gui/InventorNavigationStyle.cpp index eca15da5af..74062c51b8 100644 --- a/src/Gui/InventorNavigationStyle.cpp +++ b/src/Gui/InventorNavigationStyle.cpp @@ -250,8 +250,8 @@ SbBool InventorNavigationStyle::processSoEvent(const SoEvent * const ev) this->lockrecenter = true; if (!viewer->isEditing()) { // If we are in zoom or pan mode ignore RMB events otherwise - // the canvas doesn't get any release events - if (this->currentmode != NavigationStyle::ZOOMING && + // the canvas doesn't get any release events + if (this->currentmode != NavigationStyle::ZOOMING && this->currentmode != NavigationStyle::PANNING) { if (this->isPopupMenuEnabled()) { if (!press) { // release right mouse button diff --git a/src/Gui/Language/FreeCAD_af.qm b/src/Gui/Language/FreeCAD_af.qm index 96898ffbe1..d0ad145a85 100644 Binary files a/src/Gui/Language/FreeCAD_af.qm and b/src/Gui/Language/FreeCAD_af.qm differ diff --git a/src/Gui/Language/FreeCAD_ar.qm b/src/Gui/Language/FreeCAD_ar.qm index 6928139899..4cfc45f21d 100644 Binary files a/src/Gui/Language/FreeCAD_ar.qm and b/src/Gui/Language/FreeCAD_ar.qm differ diff --git a/src/Gui/Language/FreeCAD_ca.qm b/src/Gui/Language/FreeCAD_ca.qm index c2a36b2f05..d251cc8efe 100644 Binary files a/src/Gui/Language/FreeCAD_ca.qm and b/src/Gui/Language/FreeCAD_ca.qm differ diff --git a/src/Gui/Language/FreeCAD_cs.qm b/src/Gui/Language/FreeCAD_cs.qm index a6e617c700..a33da5cc3d 100644 Binary files a/src/Gui/Language/FreeCAD_cs.qm and b/src/Gui/Language/FreeCAD_cs.qm differ diff --git a/src/Gui/Language/FreeCAD_de.qm b/src/Gui/Language/FreeCAD_de.qm index a9c0b0ba7a..3db404fbb5 100644 Binary files a/src/Gui/Language/FreeCAD_de.qm and b/src/Gui/Language/FreeCAD_de.qm differ diff --git a/src/Gui/Language/FreeCAD_de.ts b/src/Gui/Language/FreeCAD_de.ts index bbd8c1b72a..2312828857 100644 --- a/src/Gui/Language/FreeCAD_de.ts +++ b/src/Gui/Language/FreeCAD_de.ts @@ -2535,9 +2535,8 @@ angezeigt Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. - + Bereich für das Auswählen von Elementen in der 3D-Ansicht. +Größere Werte erleichtern das Selektieren von Dingen, können aber die Auswahl kleiner Merkmale unmöglich machen. diff --git a/src/Gui/Language/FreeCAD_el.qm b/src/Gui/Language/FreeCAD_el.qm index 55b415534f..1457f0f5cd 100644 Binary files a/src/Gui/Language/FreeCAD_el.qm and b/src/Gui/Language/FreeCAD_el.qm differ diff --git a/src/Gui/Language/FreeCAD_es-ES.qm b/src/Gui/Language/FreeCAD_es-ES.qm index 58db64e827..ae77eb5d54 100644 Binary files a/src/Gui/Language/FreeCAD_es-ES.qm and b/src/Gui/Language/FreeCAD_es-ES.qm differ diff --git a/src/Gui/Language/FreeCAD_es-ES.ts b/src/Gui/Language/FreeCAD_es-ES.ts index d88859c752..475ab47a0b 100644 --- a/src/Gui/Language/FreeCAD_es-ES.ts +++ b/src/Gui/Language/FreeCAD_es-ES.ts @@ -2546,9 +2546,8 @@ opening or creation Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. - + Área para elegir elementos en la vista 3D. +Valor más grande facilita la selección de cosas, pero puede hacer que las características pequeñas sean imposibles de seleccionar. diff --git a/src/Gui/Language/FreeCAD_eu.qm b/src/Gui/Language/FreeCAD_eu.qm index 89c8f1a732..4b9d866644 100644 Binary files a/src/Gui/Language/FreeCAD_eu.qm and b/src/Gui/Language/FreeCAD_eu.qm differ diff --git a/src/Gui/Language/FreeCAD_eu.ts b/src/Gui/Language/FreeCAD_eu.ts index f6d8b07ba1..ddd32f71ce 100644 --- a/src/Gui/Language/FreeCAD_eu.ts +++ b/src/Gui/Language/FreeCAD_eu.ts @@ -2550,8 +2550,8 @@ fitxategia irekitzean edo sortzean Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. + 3D bistako elementuak aukeratzeko area. +Balio handiagoak elementuak aukeratzea errazten du, baina elementu txikiak hautatzea oztopatu dezake. diff --git a/src/Gui/Language/FreeCAD_fi.qm b/src/Gui/Language/FreeCAD_fi.qm index 8a010fc62a..9dc1bc9a10 100644 Binary files a/src/Gui/Language/FreeCAD_fi.qm and b/src/Gui/Language/FreeCAD_fi.qm differ diff --git a/src/Gui/Language/FreeCAD_fil.qm b/src/Gui/Language/FreeCAD_fil.qm index 7496408403..82c208cb38 100644 Binary files a/src/Gui/Language/FreeCAD_fil.qm and b/src/Gui/Language/FreeCAD_fil.qm differ diff --git a/src/Gui/Language/FreeCAD_fr.qm b/src/Gui/Language/FreeCAD_fr.qm index 60204dc2da..3c63b2196b 100644 Binary files a/src/Gui/Language/FreeCAD_fr.qm and b/src/Gui/Language/FreeCAD_fr.qm differ diff --git a/src/Gui/Language/FreeCAD_fr.ts b/src/Gui/Language/FreeCAD_fr.ts index 8f61e91be6..a1e2b80693 100644 --- a/src/Gui/Language/FreeCAD_fr.ts +++ b/src/Gui/Language/FreeCAD_fr.ts @@ -2545,8 +2545,8 @@ opening or creation Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. + Zone de sélection des éléments dans la vue 3D. +Une valeur plus grande facilite la sélection, mais peut rendre les petites fonctions difficiles, voire impossible à sélectionner. diff --git a/src/Gui/Language/FreeCAD_gl.qm b/src/Gui/Language/FreeCAD_gl.qm index dc99841edc..e2671eda0a 100644 Binary files a/src/Gui/Language/FreeCAD_gl.qm and b/src/Gui/Language/FreeCAD_gl.qm differ diff --git a/src/Gui/Language/FreeCAD_hr.qm b/src/Gui/Language/FreeCAD_hr.qm index 5fcced5a51..82539a8ec6 100644 Binary files a/src/Gui/Language/FreeCAD_hr.qm and b/src/Gui/Language/FreeCAD_hr.qm differ diff --git a/src/Gui/Language/FreeCAD_hu.qm b/src/Gui/Language/FreeCAD_hu.qm index 7ebe896aba..52e0b0e298 100644 Binary files a/src/Gui/Language/FreeCAD_hu.qm and b/src/Gui/Language/FreeCAD_hu.qm differ diff --git a/src/Gui/Language/FreeCAD_id.qm b/src/Gui/Language/FreeCAD_id.qm index 4237bf9fda..74a4edd1d2 100644 Binary files a/src/Gui/Language/FreeCAD_id.qm and b/src/Gui/Language/FreeCAD_id.qm differ diff --git a/src/Gui/Language/FreeCAD_it.qm b/src/Gui/Language/FreeCAD_it.qm index 476e74f410..c8d8a9b7cf 100644 Binary files a/src/Gui/Language/FreeCAD_it.qm and b/src/Gui/Language/FreeCAD_it.qm differ diff --git a/src/Gui/Language/FreeCAD_it.ts b/src/Gui/Language/FreeCAD_it.ts index 606d2b63a7..72a36da719 100644 --- a/src/Gui/Language/FreeCAD_it.ts +++ b/src/Gui/Language/FreeCAD_it.ts @@ -2548,8 +2548,8 @@ opening or creation Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. + Area per selezionare gli elementi nella vista 3D. +Un valore maggiore facilita la selezione delle cose, ma può rendere impossibile la selezione di funzionalità piccole. diff --git a/src/Gui/Language/FreeCAD_ja.qm b/src/Gui/Language/FreeCAD_ja.qm index f0f7ffd9a3..c579c4ad10 100644 Binary files a/src/Gui/Language/FreeCAD_ja.qm and b/src/Gui/Language/FreeCAD_ja.qm differ diff --git a/src/Gui/Language/FreeCAD_kab.qm b/src/Gui/Language/FreeCAD_kab.qm index d20d7b5d21..071efbfb8d 100644 Binary files a/src/Gui/Language/FreeCAD_kab.qm and b/src/Gui/Language/FreeCAD_kab.qm differ diff --git a/src/Gui/Language/FreeCAD_ko.qm b/src/Gui/Language/FreeCAD_ko.qm index 5ffe7fddc0..8a192ade86 100644 Binary files a/src/Gui/Language/FreeCAD_ko.qm and b/src/Gui/Language/FreeCAD_ko.qm differ diff --git a/src/Gui/Language/FreeCAD_lt.qm b/src/Gui/Language/FreeCAD_lt.qm index 63cb824c5f..3c42b48499 100644 Binary files a/src/Gui/Language/FreeCAD_lt.qm and b/src/Gui/Language/FreeCAD_lt.qm differ diff --git a/src/Gui/Language/FreeCAD_nl.qm b/src/Gui/Language/FreeCAD_nl.qm index 0f84573290..488346381e 100644 Binary files a/src/Gui/Language/FreeCAD_nl.qm and b/src/Gui/Language/FreeCAD_nl.qm differ diff --git a/src/Gui/Language/FreeCAD_no.qm b/src/Gui/Language/FreeCAD_no.qm index ec681315d6..407ef63db6 100644 Binary files a/src/Gui/Language/FreeCAD_no.qm and b/src/Gui/Language/FreeCAD_no.qm differ diff --git a/src/Gui/Language/FreeCAD_pl.qm b/src/Gui/Language/FreeCAD_pl.qm index 6213b393c3..fe2eb5aa72 100644 Binary files a/src/Gui/Language/FreeCAD_pl.qm and b/src/Gui/Language/FreeCAD_pl.qm differ diff --git a/src/Gui/Language/FreeCAD_pl.ts b/src/Gui/Language/FreeCAD_pl.ts index 9bca144706..9b8c3d3776 100644 --- a/src/Gui/Language/FreeCAD_pl.ts +++ b/src/Gui/Language/FreeCAD_pl.ts @@ -2313,7 +2313,7 @@ z konsoli Python do panelu Widoku Raportu Discard changes - Porzuć zmiany + Odrzuć zmiany Abort program @@ -2549,9 +2549,8 @@ opening or creation Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. - + Obszar do wskazania/wyboru elementów w widoku 3D. +Większa wartość ułatwia wybieranie, ale może uniemożliwić wybór małych obiektów. @@ -2724,7 +2723,7 @@ Larger value eases to pick things, but can make small features impossible to sel Discard saved transaction after saving document - Odrzucić zapisane transakcji po zapisaniu dokumentu + Odrzuć zapisaną transakcję po zapisaniu dokumentu Save thumbnail into project file when saving document @@ -5235,7 +5234,7 @@ How do you want to proceed? Gui::PropertyEditor::PropertyModel Property - Właściwości + Własność Value @@ -5530,7 +5529,7 @@ Do you want to specify another directory? Recompute after commit - Recompute after commit + Przelicz po zatwierdzeniu Remove @@ -5621,7 +5620,7 @@ Do you want to specify another directory? The text of the underlying object has changed. Discard changes and reload the text from the object? - Tekst obiektu został zmieniony. Porzucić zmiany i wczytać tekst z obiektu? + Tekst podstawowego obiektu uległ zmianie. Odrzucić zmiany i przeładować tekst z obiektu? Yes, reload. @@ -6619,7 +6618,7 @@ Please check the Report View for more details. Unlink failed - Unlink failed + Nie udało się usunąć powiązania Replace link failed @@ -6701,7 +6700,7 @@ Choose 'Abort' to abort Drag & drop failed - Drag & drop failed + Przeciągnięcie i upuszczenie nie powiodło się Override colors... @@ -7563,7 +7562,7 @@ Dokument: Unlink - Unlink + Usuń powiązanie Strip on level of link @@ -8100,7 +8099,7 @@ Dokument: &Back - &Back + &Cofnij Go back to previous selection @@ -8254,7 +8253,7 @@ Dokument: Add text document to active document - Add text document to active document + Dodaj dokument tekstowy do aktywnego dokumentu @@ -8291,7 +8290,7 @@ Dokument: StdCmdToggleBreakpoint Macro - Makro + Makropolecenia Toggle breakpoint @@ -8302,7 +8301,7 @@ Dokument: StdCmdToggleClipPlane Standard-View - Normalny widok + Widok standardowy Clipping plane @@ -8317,7 +8316,7 @@ Dokument: StdCmdToggleNavigation Standard-View - Normalny widok + Widok standardowy Toggle navigation/Edit mode @@ -8332,7 +8331,7 @@ Dokument: StdCmdToggleObjects Standard-View - Normalny widok + Widok standardowy Toggle all objects @@ -8347,7 +8346,7 @@ Dokument: StdCmdToggleSelectability Standard-View - Normalny widok + Widok standardowy Toggle selectability @@ -8362,7 +8361,7 @@ Dokument: StdCmdToggleVisibility Standard-View - Normalny widok + Widok standardowy Toggle visibility @@ -8456,11 +8455,11 @@ Dokument: Select all instances - Select all instances + Wybierz wszystkie wystąpienia Select all instances of the current selected object - Select all instances of the current selected object + Wybierz wszystkie wystąpienia w aktualnie wybranym obiekcie @@ -9381,7 +9380,7 @@ Czy nadal chcesz kontynuować? Std_Revert This will discard all the changes since last file save. - To spowoduje odrzucenie wszelkich zmian od czasu ostatniego zachowania pliku. + Spowoduje to odrzucenie wszystkich zmian od ostatniego zapisu pliku. Revert document diff --git a/src/Gui/Language/FreeCAD_pt-BR.qm b/src/Gui/Language/FreeCAD_pt-BR.qm index 628713e3d8..29a9308d90 100644 Binary files a/src/Gui/Language/FreeCAD_pt-BR.qm and b/src/Gui/Language/FreeCAD_pt-BR.qm differ diff --git a/src/Gui/Language/FreeCAD_pt-PT.qm b/src/Gui/Language/FreeCAD_pt-PT.qm index 527bba8357..2463490661 100644 Binary files a/src/Gui/Language/FreeCAD_pt-PT.qm and b/src/Gui/Language/FreeCAD_pt-PT.qm differ diff --git a/src/Gui/Language/FreeCAD_ro.qm b/src/Gui/Language/FreeCAD_ro.qm index 4823bfdd49..5233e1f41b 100644 Binary files a/src/Gui/Language/FreeCAD_ro.qm and b/src/Gui/Language/FreeCAD_ro.qm differ diff --git a/src/Gui/Language/FreeCAD_ru.qm b/src/Gui/Language/FreeCAD_ru.qm index b42e3d6d88..180b2b8f6b 100644 Binary files a/src/Gui/Language/FreeCAD_ru.qm and b/src/Gui/Language/FreeCAD_ru.qm differ diff --git a/src/Gui/Language/FreeCAD_ru.ts b/src/Gui/Language/FreeCAD_ru.ts index 8581f20972..ab610209a9 100644 --- a/src/Gui/Language/FreeCAD_ru.ts +++ b/src/Gui/Language/FreeCAD_ru.ts @@ -2544,8 +2544,8 @@ opening or creation Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. + Область выбора элементов в 3D виде. +Большее значение облегчает выбор элемента, но может сделать невозможным выбор небольших элементов. diff --git a/src/Gui/Language/FreeCAD_sk.qm b/src/Gui/Language/FreeCAD_sk.qm index cd077b7fdb..975f7cd343 100644 Binary files a/src/Gui/Language/FreeCAD_sk.qm and b/src/Gui/Language/FreeCAD_sk.qm differ diff --git a/src/Gui/Language/FreeCAD_sl.qm b/src/Gui/Language/FreeCAD_sl.qm index 38254f268c..2acbb252c7 100644 Binary files a/src/Gui/Language/FreeCAD_sl.qm and b/src/Gui/Language/FreeCAD_sl.qm differ diff --git a/src/Gui/Language/FreeCAD_sl.ts b/src/Gui/Language/FreeCAD_sl.ts index 0a71e330cb..4a2bb64340 100644 --- a/src/Gui/Language/FreeCAD_sl.ts +++ b/src/Gui/Language/FreeCAD_sl.ts @@ -2550,8 +2550,8 @@ privzeto prikazan Area for picking elements in 3D view. Larger value eases to pick things, but can make small features impossible to select. - Area for picking elements in 3D view. -Larger value eases to pick things, but can make small features impossible to select. + Površina pri izbiranju v trirazsežnem pogledu. +Pri večjih vrednostih je izbiranje lažje, vendar pa je lahko zaradi tega izbiranje drobnih reči nemogoče. @@ -7583,7 +7583,7 @@ Dokument: Strip on level of link - Strip on level of link + Odreži na raven povezave diff --git a/src/Gui/Language/FreeCAD_sr.qm b/src/Gui/Language/FreeCAD_sr.qm index 1c197d3991..2506fa5fff 100644 Binary files a/src/Gui/Language/FreeCAD_sr.qm and b/src/Gui/Language/FreeCAD_sr.qm differ diff --git a/src/Gui/Language/FreeCAD_sv-SE.qm b/src/Gui/Language/FreeCAD_sv-SE.qm index efcff49008..735a1ab0d2 100644 Binary files a/src/Gui/Language/FreeCAD_sv-SE.qm and b/src/Gui/Language/FreeCAD_sv-SE.qm differ diff --git a/src/Gui/Language/FreeCAD_sv-SE.ts b/src/Gui/Language/FreeCAD_sv-SE.ts index 84a3c061c3..3bb6183bee 100644 --- a/src/Gui/Language/FreeCAD_sv-SE.ts +++ b/src/Gui/Language/FreeCAD_sv-SE.ts @@ -425,7 +425,7 @@ while doing a left or right click and move the mouse up or down Collection - Collection + Samling @@ -440,7 +440,7 @@ while doing a left or right click and move the mouse up or down " - " + " " @@ -1316,7 +1316,7 @@ If this is not ticked, then the property must be uniquely named, and it is acces Display items - Display items + Visa objekt Font size to be used for selected code type @@ -1486,7 +1486,7 @@ horizontal space in Python console Both - Both + Båda @@ -1850,7 +1850,7 @@ Ange en annan katalog. Sorted - Sorted + Sorterad Quick search @@ -2115,7 +2115,7 @@ Ange en annan katalog. Filter by type - Filter by type + Filtrera efter typ Sync sub-object selection @@ -2833,12 +2833,12 @@ This feature may slightly increase recomputation time. If there is a recovery file available the application will automatically run a file recovery when it is started. - If there is a recovery file available the application will -automatically run a file recovery when it is started. + Om det finns en återställningsfil tillgänglig kommer programmet +automatiskt att köra en filåterställning när det startas. How often a recovery file is written - How often a recovery file is written + Hur ofta en återställningsfil skrivs A thumbnail will be stored when document is saved @@ -3573,7 +3573,7 @@ Mouse tilting is not disabled by this setting. FEM (mm, N, sec) - FEM (mm, N, sec) + FEM (mm, N, s) @@ -3640,7 +3640,7 @@ Mouse tilting is not disabled by this setting. Bottom color - Bottom color + Nedre färg Background will have selected color gradient @@ -3648,7 +3648,7 @@ Mouse tilting is not disabled by this setting. Top color - Top color + Övre färg Tree view @@ -3706,7 +3706,7 @@ Mouse tilting is not disabled by this setting. Result - Result + Resultat List of last used calculations @@ -3716,7 +3716,7 @@ To add a calculation press Return in the value input field Quantity - Quantity + Kvantitet Unit system: @@ -4283,15 +4283,15 @@ The 'Status' column shows whether the document could be recovered. Around y-axis: - Around y-axis: + Runt y-axeln: Around z-axis: - Around z-axis: + Runt z-axeln: Around x-axis: - Around x-axis: + Runt x-axeln: Rotation around the x-axis @@ -4337,15 +4337,15 @@ The 'Status' column shows whether the document could be recovered. VS Code - VS Code + VS kod Address: - Address: + Adress: Port: - Port: + Port: Redirect output @@ -4444,7 +4444,7 @@ The 'Status' column shows whether the document could be recovered. Dependency - Dependency + Beroende Document @@ -4456,11 +4456,11 @@ The 'Status' column shows whether the document could be recovered. State - State + Tillstånd Hierarchy - Hierarchy + Hierarki Selected @@ -4468,7 +4468,7 @@ The 'Status' column shows whether the document could be recovered. Partial - Partial + Partiell @@ -4556,11 +4556,11 @@ The 'Status' column shows whether the document could be recovered. Warnings - Warnings + Varningar Errors - Errors + Fel Show report view on @@ -5221,7 +5221,7 @@ Hur vill du fortsätta? Show all - Show all + Visa alla Add property @@ -5233,7 +5233,7 @@ Hur vill du fortsätta? Expression... - Expression... + Uttryck... @@ -5348,7 +5348,7 @@ Vill du avsluta utan att spara din data? Saves Python history across %1 sessions - Saves Python history across %1 sessions + Sparar Python-historik över %1 sessioner @@ -5381,7 +5381,7 @@ Vill du avsluta utan att spara din data? Gui::RecentMacrosAction Run macro %1 (Shift+click to edit) shortcut: %2 - Run macro %1 (Shift+click to edit) shortcut: %2 + Kör makro %1 (Shift+klick för att redigera) genväg: %2 File not found @@ -5532,7 +5532,7 @@ Vill du ange en annan katalog? Gui::TaskElementColors Set element color - Set element color + Ange elementfärg TextLabel @@ -5552,11 +5552,11 @@ Vill du ange en annan katalog? Remove all - Remove all + Ta bort alla Hide - Hide + Dölj Box select @@ -5709,7 +5709,7 @@ Vill du ange en annan katalog? Korean - Korean + Koreansk Russian @@ -5781,11 +5781,11 @@ Vill du ange en annan katalog? Basque - Basque + Baskisk Catalan - Catalan + Katalanska Galician @@ -5954,7 +5954,7 @@ Vill du ange en annan katalog? Recompute object - Recompute object + Omräkna objekt Recompute the selected object @@ -5962,14 +5962,14 @@ Vill du ange en annan katalog? (but must be executed) - (but must be executed) + (men måste verkställas) Gui::VectorListEditor Vectors - Vectors + Vektorer Table @@ -6573,11 +6573,11 @@ Tänk på att det har betydelse var du klickar. Delete failed - Delete failed + Borttagning misslyckades Dependency error - Dependency error + Beroendefel Copy selected @@ -6585,11 +6585,11 @@ Tänk på att det har betydelse var du klickar. Copy active document - Copy active document + Kopiera aktivt dokument Copy all documents - Copy all documents + Kopiera alla dokument Paste @@ -6611,7 +6611,7 @@ Please check the Report View for more details. Simple group - Simple group + Enkel grupp Group with links @@ -6651,7 +6651,7 @@ Please check the Report View for more details. Invalid name - Invalid name + Ogiltigt namn The property name or group name must only contain alpha numericals, @@ -6760,8 +6760,8 @@ Document: Path: - - Path: + + Sökväg: Identical physical path @@ -8056,11 +8056,11 @@ Document: Save All - Save All + Spara alla Save all opened document - Save all opened document + Spara alla öppnade dokument @@ -8116,7 +8116,7 @@ Document: &Back - &Back + &Tillbaka Go back to previous selection diff --git a/src/Gui/Language/FreeCAD_tr.qm b/src/Gui/Language/FreeCAD_tr.qm index c3bd864a49..2cf4ab646b 100644 Binary files a/src/Gui/Language/FreeCAD_tr.qm and b/src/Gui/Language/FreeCAD_tr.qm differ diff --git a/src/Gui/Language/FreeCAD_tr.ts b/src/Gui/Language/FreeCAD_tr.ts index cc27b9c423..3e1cfd3905 100644 --- a/src/Gui/Language/FreeCAD_tr.ts +++ b/src/Gui/Language/FreeCAD_tr.ts @@ -329,7 +329,7 @@ while doing a left or right click and move the mouse up or down &Cancel - &İptal + İptal @@ -780,7 +780,7 @@ If this is not ticked, then the property must be uniquely named, and it is acces Sorry, couldn't find macro file '%1'. - Üzgünüm, makro dosyası '% 1' bulunamadı. + Üzgünüm, '%1' makro dosyası bulunamadı. Empty macro @@ -1018,7 +1018,7 @@ If this is not ticked, then the property must be uniquely named, and it is acces The toolbar name '%1' is already used - Araç çubuğu adı '%1' zaten kullanılıyor + '%1' Araç çubuğu adı zaten kullanılıyor Rename toolbar @@ -1034,7 +1034,7 @@ If this is not ticked, then the property must be uniquely named, and it is acces %1 module not loaded - %1 module not loaded + %1 modül yüklenmedi @@ -1400,8 +1400,8 @@ If this is not ticked, then the property must be uniquely named, and it is acces Background of the main window will consist of tiles of a special image. See the FreeCAD Wiki for details about the image. - Background of the main window will consist of tiles of a special image. -See the FreeCAD Wiki for details about the image. + Ana pencerenin arka planı özel bir resimle döşenecektir. +Resimle ilgili ayrıntılar için FreeCAD Wiki'ye bakın. Style sheet how user interface will look like @@ -1707,7 +1707,7 @@ Note: your changes will be applied when you next switch workbenches Cancel - İptal et + İptal Macro path: @@ -1817,7 +1817,7 @@ Note: your changes will be applied when you next switch workbenches Access denied to '%1' Specify another directory, please. - '% 1' e erişim reddedildi + '%1' e erişim reddedildi Lütfen başka bir dizin belirtin. @@ -2490,7 +2490,7 @@ but slower response to any scene changes. Backface pass - Backface pass + Arka yüz geçişi Size of vertices in the Sketcher workbench @@ -2510,11 +2510,11 @@ bounding box size of the 3D object that is currently displayed. Backlight is enabled with the defined color - Backlight is enabled with the defined color + Arka ışık, tanımlanan renkle etkinleştirilir Backlight color - Backlight color + Arka ışık rengi Intensity @@ -2522,7 +2522,7 @@ bounding box size of the 3D object that is currently displayed. Intensity of the backlight - Intensity of the backlight + Arka ışığın yoğunluğu Objects will be projected in orthographic projection @@ -2563,8 +2563,7 @@ Larger value eases to pick things, but can make small features impossible to sel Open a new viewer or restart %1 to apply anti-aliasing changes. - 92/5000 -Kenar yumuşatma değişiklikleri uygulamak için yeni bir görüntüleyici açın veya% 1'i yeniden başlatın. + %1 Kenar yumuşatma değişikliklerini uygulamak için yeni bir görüntüleyici açın veya yeniden başlatın. 5px @@ -2861,7 +2860,7 @@ Common sizes are 128, 256 and 512 How many backup files will be kept when saving document - How many backup files will be kept when saving document + Belgeyi kaydederken kaç tane yedekleme dosyası tutulacak Backup files will get extension '.FCbak' and file names @@ -3629,11 +3628,11 @@ Mouse tilting is not disabled by this setting. Background color for the model view - Background color for the model view + Model görünümü için arka plan rengi Background will have selected color - Background will have selected color + Arka plan seçilen renge sahip olacak Color gradient will get selected color as middle color @@ -3645,7 +3644,7 @@ Mouse tilting is not disabled by this setting. Background will have selected color gradient - Background will have selected color gradient + Arka plan seçilen renk gradyanına sahip olacak Top color @@ -3657,7 +3656,7 @@ Mouse tilting is not disabled by this setting. Background color for objects in tree view that are currently edited - Background color for objects in tree view that are currently edited + Şu anda düzenlenen Unsur Ağacı nesneleri için arka plan rengi Background color for active containers in tree view @@ -3867,7 +3866,7 @@ The preference system is the one set in the general preferences. Successfully recovered - %s başarıyla kurtarıldı + Başarıyla kurtarıldı Finish @@ -3926,7 +3925,7 @@ The 'Status' column shows whether the document could be recovered. Download canceled: %1 - Karşıdan yükleme iptal edildi + İndirme iptal edildi: %1 Open containing folder @@ -3934,15 +3933,15 @@ The 'Status' column shows whether the document could be recovered. Error opening saved file: %1 - Toplu iş kütüğünü açma yanlışlığı\n + Kayıtlı dosya açılırken hata oluştu:%1 Error saving: %1 - Not kaydedilirken hata + Kaydetme hatası: %1 Network Error: %1 - Ağ hatası + Ağ hatası: %1 seconds @@ -3954,11 +3953,11 @@ The 'Status' column shows whether the document could be recovered. - %4 %5 remaining - -kalan %4 %5 + - %4 %5 kaldı %1 of %2 (%3/sec) %4 - %2 (%3/sn) %4 %1 + %1 / %2 (%3/sn) %4 ? @@ -3966,7 +3965,7 @@ The 'Status' column shows whether the document could be recovered. %1 of %2 - Stopped - Durdu %2 - %1 + %1 /%2 - Durduruldu bytes @@ -4005,7 +4004,7 @@ The 'Status' column shows whether the document could be recovered. %1 Downloads - İndir + %1 İndirme @@ -4428,7 +4427,7 @@ The 'Status' column shows whether the document could be recovered. Gui::Dialog::Transform Cancel - İptal et + İptal Transform @@ -4637,11 +4636,11 @@ The 'Status' column shows whether the document could be recovered. Mark to recompute - Mark tablosunu yeniden oluştur + Yeniden hesaplamak için işaretle Mark this object to be recomputed - Recomputed için bu nesneyi işaretlemek + Bu nesneyi yeniden hesaplanacak şekilde işaretleyin Selection View @@ -4887,7 +4886,7 @@ Do you want to save your changes? Save value - Değeri kaydetmek + Değeri kaydet @@ -5157,7 +5156,7 @@ sağ görünümde %2 nokta seçili. Save value - Değeri kaydetmek + Değeri kaydet Clear list @@ -5368,7 +5367,7 @@ Do you want to exit without saving your data? Gui::RecentFilesAction Open file %1 - %1 Dosyasını aç + Dosyayı aç %1 File not found @@ -5542,7 +5541,7 @@ Başka bir dizin belirlemek ister misiniz? Recompute after commit - Recompute after commit + İşlemden sonra yeniden hesapla Remove @@ -5884,7 +5883,7 @@ Başka bir dizin belirlemek ister misiniz? Skip recomputes - Yeniden tartışmaları atla + Yeniden hesaplamayı atla Enable or disable recomputations of document @@ -5892,15 +5891,15 @@ Başka bir dizin belirlemek ister misiniz? Mark to recompute - Mark tablosunu yeniden oluştur + Yeniden hesaplamak için işaretle Mark this object to be recomputed - Recomputed için bu nesneyi işaretlemek + Bu nesneyi yeniden hesaplanacak şekilde işaretleyin %1, Internal name: %2 - % 1, Dahili adı:% 2 + %1, Dahili adı: %2 Search... @@ -5916,19 +5915,19 @@ Başka bir dizin belirlemek ister misiniz? Show hidden items - Show hidden items + Gizli öğeleri göster Show hidden tree view items - Show hidden tree view items + Unsur Ağacındaki gizli öğeleri göster Hide item - Hide item + Öğeyi gizle Hide the item in tree - Hide the item in tree + Öğeyi Unsur Ağacında gizle Close document @@ -5948,7 +5947,7 @@ Başka bir dizin belirlemek ister misiniz? Allow partial recomputes - Allow partial recomputes + Kısmi yeniden hesaplamalara izin ver Enable or disable recomputating editing object when 'skip recomputation' is enabled @@ -5956,11 +5955,11 @@ Başka bir dizin belirlemek ister misiniz? Recompute object - Recompute object + Nesneyi yeniden hesapla Recompute the selected object - Recompute the selected object + Seçili Nesneyi yeniden hesapla (but must be executed) @@ -6005,7 +6004,7 @@ Başka bir dizin belirlemek ister misiniz? Gui::WorkbenchGroup Select the '%1' workbench - '% 1' Tezgah seçin + '%1' tezgahını seçin @@ -6255,7 +6254,7 @@ Başka bir dizin belirlemek ister misiniz? Restore view &%1 - Görüş &%1 geri yükleme + Görünümü geri yükle &%1 Save frozen views @@ -6276,7 +6275,7 @@ Do you want to continue? Cannot open file '%1'. - '% 1' Dosyasını açamıyor. + '%1' dosyası açılamıyor. files @@ -6332,7 +6331,7 @@ Do you want to continue? The group '%1' cannot be renamed. - '% 1' Grubu yeniden adlandırılamaz. + '%1' grubu yeniden adlandırılamaz. Existing group @@ -6372,7 +6371,7 @@ Do you want to continue? Cancel - İptal et + İptal Inner @@ -6430,7 +6429,7 @@ Please open a browser window and type in: http://localhost:%1. %1 document (*.FCStd) - % 1 belgesi (*. FCStd) + %1 belgesi (*. FCStd) Document not closable @@ -7234,7 +7233,7 @@ Belge: Recompute feature or document - Dükümanı yada bir özelliği tekrar hesapla + Belgeyi ya da özelliği yeniden hesapla @@ -7490,7 +7489,7 @@ Belge: Create a sub-object or sub-element link - Create a sub-object or sub-element link + Bir alt nesne veya alt öğe bağlantısı oluştur @@ -7673,7 +7672,7 @@ Belge: Measure distance - Mesafeyi Ölç + Mesafe Ölç @@ -7688,7 +7687,7 @@ Belge: Measure distance - Mesafeyi Ölç + Mesafe Ölç @@ -7711,7 +7710,7 @@ Belge: %1 document (*.FCStd) - % 1 belgesi (*. FCStd) + %1 belgesi (*. FCStd) @@ -7787,7 +7786,7 @@ Belge: Loading the file %1 is not supported - Büyük boyutlu dosya yükleme desteklenmiyor + %1 dosyasının yüklenmesi desteklenmiyor @@ -8113,11 +8112,11 @@ Belge: &Back - &Back + Geri Go back to previous selection - Go back to previous selection + Önceki seçime geri dön @@ -8128,11 +8127,11 @@ Belge: &Bounding box - &Bounding box + Sınır kutusu Show selection bounding box - Show selection bounding box + Seçimin sınır kutusunu göster @@ -8634,7 +8633,7 @@ Belge: Fit all - Tümünü uydur + Tümünü görüntüle Fits the whole content on the screen @@ -8649,7 +8648,7 @@ Belge: Fit selection - Seçimi uydur + Seçimi görüntüle Fits the selected content on the screen diff --git a/src/Gui/Language/FreeCAD_uk.qm b/src/Gui/Language/FreeCAD_uk.qm index e3bc29cd3d..7cbf8be015 100644 Binary files a/src/Gui/Language/FreeCAD_uk.qm and b/src/Gui/Language/FreeCAD_uk.qm differ diff --git a/src/Gui/Language/FreeCAD_val-ES.qm b/src/Gui/Language/FreeCAD_val-ES.qm index 772c76d07a..8d9881b63c 100644 Binary files a/src/Gui/Language/FreeCAD_val-ES.qm and b/src/Gui/Language/FreeCAD_val-ES.qm differ diff --git a/src/Gui/Language/FreeCAD_vi.qm b/src/Gui/Language/FreeCAD_vi.qm index 645b20209a..84e0a71f5f 100644 Binary files a/src/Gui/Language/FreeCAD_vi.qm and b/src/Gui/Language/FreeCAD_vi.qm differ diff --git a/src/Gui/Language/FreeCAD_zh-CN.qm b/src/Gui/Language/FreeCAD_zh-CN.qm index 270452621f..afb862a576 100644 Binary files a/src/Gui/Language/FreeCAD_zh-CN.qm and b/src/Gui/Language/FreeCAD_zh-CN.qm differ diff --git a/src/Gui/Language/FreeCAD_zh-TW.qm b/src/Gui/Language/FreeCAD_zh-TW.qm index 9375c08319..5834b90c2f 100644 Binary files a/src/Gui/Language/FreeCAD_zh-TW.qm and b/src/Gui/Language/FreeCAD_zh-TW.qm differ diff --git a/src/Gui/LinkViewPyImp.cpp b/src/Gui/LinkViewPyImp.cpp index 7f9ab1f208..c5d01abe8d 100644 --- a/src/Gui/LinkViewPyImp.cpp +++ b/src/Gui/LinkViewPyImp.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -106,7 +106,7 @@ PyObject* LinkViewPy::setMaterial(PyObject *args) { Py::Sequence seq(pyObj); std::vector materials; materials.resize(seq.size(),0); - for(size_t i=0;isetMaterial(i,materials[i]); Py_Return; } - + PyErr_SetString(PyExc_TypeError, "exepcting a type of Material, [Material,...] or {Int:Material,}"); return 0; } PY_CATCH; @@ -156,7 +156,7 @@ PyObject* LinkViewPy::setTransform(PyObject *args) { Py::Sequence seq(pyObj); std::vector mat; mat.resize(seq.size(),0); - for(size_t i=0;isetTransform(i,*mat[i]); Py_Return; } - + PyErr_SetString(PyExc_TypeError, "exepcting a type of Matrix, [Matrix,...] or {Int:Matrix,...}"); return 0; } PY_CATCH; @@ -221,7 +221,7 @@ PyObject* LinkViewPy::setLink(PyObject *args) else if(PyObject_TypeCheck(pyObj,&ViewProviderDocumentObjectPy::Type)) vpd = static_cast(pyObj)->getViewProviderDocumentObjectPtr(); else { - PyErr_SetString(PyExc_TypeError, + PyErr_SetString(PyExc_TypeError, "exepcting a type of DocumentObject or ViewProviderDocumentObject"); return 0; } @@ -233,9 +233,9 @@ PyObject* LinkViewPy::setLink(PyObject *args) prop.setPyObject(pySubName); if(obj) - getLinkViewPtr()->setLink(obj,prop.getValue()); + getLinkViewPtr()->setLink(obj,prop.getValue()); else - getLinkViewPtr()->setLinkViewObject(vpd,prop.getValue()); + getLinkViewPtr()->setLinkViewObject(vpd,prop.getValue()); Py_Return; } PY_CATCH; } @@ -283,7 +283,7 @@ PyObject* LinkViewPy::getElementPicked(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "SoPickedPoint *", obj, &ptr, 0); SoPickedPoint *pp = reinterpret_cast(ptr); - if(!pp) + if(!pp) throw Py::TypeError("type must be of coin.SoPickedPoint"); PY_TRY{ std::string name; @@ -302,7 +302,7 @@ PyObject* LinkViewPy::getDetailPath(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "SoPath *", path, &ptr, 0); SoPath *pPath = reinterpret_cast(ptr); - if(!pPath) + if(!pPath) throw Py::TypeError("type must be of coin.SoPath"); PY_TRY{ SoDetail *det = 0; diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp index 99a8ecb78b..0e64d1a7e5 100644 --- a/src/Gui/MDIView.cpp +++ b/src/Gui/MDIView.cpp @@ -58,7 +58,7 @@ MDIView::MDIView(Gui::Document* pcDocument,QWidget* parent, Qt::WindowFlags wfla , ActiveObjects(pcDocument) { setAttribute(Qt::WA_DeleteOnClose); - + if (pcDocument) { connectDelObject = pcDocument->signalDeletedObject.connect @@ -211,7 +211,7 @@ void MDIView::closeEvent(QCloseEvent *e) // and thus the notification in QMdiSubWindow::closeEvent of // other mdi windows to get maximized if this window // is maximized will fail. - // This odd behaviour is caused by the invocation of + // This odd behaviour is caused by the invocation of // d->mdiArea->removeSubWindow(parent) which we must let there // because otherwise other parts don't work as they should. QMainWindow::closeEvent(e); @@ -308,7 +308,7 @@ void MDIView::setCurrentViewMode(ViewMode mode) if (qobject_cast(this->parentWidget())) getMainWindow()->removeWindow(this,false); setWindowFlags(windowFlags() | Qt::Window); - setParent(0, Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | + setParent(0, Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); if (this->wstate & Qt::WindowMaximized) showMaximized(); @@ -327,7 +327,7 @@ void MDIView::setCurrentViewMode(ViewMode mode) else showNormal(); } - + this->currentMode = TopLevel; update(); } break; @@ -345,7 +345,7 @@ void MDIView::setCurrentViewMode(ViewMode mode) this->wstate = windowState(); showFullScreen(); } - + this->currentMode = FullScreen; update(); } break; diff --git a/src/Gui/MDIView.h b/src/Gui/MDIView.h index c33f9a336b..0aadbb4ead 100644 --- a/src/Gui/MDIView.h +++ b/src/Gui/MDIView.h @@ -32,7 +32,7 @@ QT_BEGIN_NAMESPACE class QPrinter; QT_END_NAMESPACE -namespace Gui +namespace Gui { class Document; class ViewProvider; @@ -99,8 +99,8 @@ public: /// MDI view mode enum enum ViewMode { - Child, /**< Child viewing, view is docked inside the MDI application window */ - TopLevel, /**< The view becomes a top level window and can be moved outsinde the application window */ + Child, /**< Child viewing, view is docked inside the MDI application window */ + TopLevel, /**< The view becomes a top level window and can be moved outsinde the application window */ FullScreen /**< The view goes to full screen viewing */ }; /** @@ -175,4 +175,4 @@ private: } // namespace Gui -#endif // GUI_MDIVIEW_H +#endif // GUI_MDIVIEW_H diff --git a/src/Gui/Macro.cpp b/src/Gui/Macro.cpp index faae471de8..41ce6da705 100644 --- a/src/Gui/Macro.cpp +++ b/src/Gui/Macro.cpp @@ -103,7 +103,7 @@ void MacroManager::open(MacroType eType, const char *sName) void MacroManager::commit(void) { QFile file(this->macroName); - if (file.open(QFile::WriteOnly)) + if (file.open(QFile::WriteOnly)) { // sort import lines and avoid duplicates QTextStream str(&file); @@ -172,7 +172,7 @@ void MacroManager::addLine(LineType Type, const char* sLine, bool pending) if(pending) { if(!sLine) pendingLine.clear(); - else + else pendingLine.emplace_back(Type,sLine); return; } @@ -263,7 +263,7 @@ namespace Gui { void MacroManager::run(MacroType eType, const char *sName) { - Q_UNUSED(eType); + Q_UNUSED(eType); try { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter() diff --git a/src/Gui/Macro.h b/src/Gui/Macro.h index 4ef6c4d24c..b2771cf2b5 100644 --- a/src/Gui/Macro.h +++ b/src/Gui/Macro.h @@ -41,7 +41,7 @@ class PythonDebugger; * a macro file (so far). * \author Jürgen Riegel */ -class GuiExport MacroManager : public Base::Observer +class GuiExport MacroManager : public Base::Observer { protected: MacroManager(); @@ -50,22 +50,22 @@ protected: public: /** Macro type enumeration */ - enum MacroType { - File, /**< The macro will be saved in a file */ - User, /**< The macro belongs to the Application and will be saved in the UserParameter */ - Doc /**< The macro belongs to the Document and will be saved and restored with the Document */ - }; + enum MacroType { + File, /**< The macro will be saved in a file */ + User, /**< The macro belongs to the Application and will be saved in the UserParameter */ + Doc /**< The macro belongs to the Document and will be saved and restored with the Document */ + }; /** Line type enumeration */ - enum LineType { + enum LineType { App, /**< The line effects only the document and Application (FreeCAD) */ Gui, /**< The line effects the Gui (FreeCADGui) */ Cmt, /**< The line is handled as a comment */ - }; + }; /** Opens a new Macro recording session * Starts a session with the type and the name of the macro. - * All user interactions will be recorded as long as the commit() or cancel() isn't called. + * All user interactions will be recorded as long as the commit() or cancel() isn't called. * There is only one recording session possible. Trying to open a second one causes an exception: * @param eType Type of the macro * @param sName Name or path of the macro @@ -81,7 +81,7 @@ public: bool isOpen(void) const {return openMacro;} /// insert a new line in the macro void addLine(LineType Type,const char* sLine,bool pending=false); - /** Set the active module + /** Set the active module * This is normally done by the workbench switch. It sets * the actually active application module so when the macro * gets started the right import can be issued. diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index ba3e169fed..b796e01bba 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -86,7 +86,7 @@ #include "WorkbenchManager.h" #include "Workbench.h" -#include "Window.h" +#include "Window.h" #include "View.h" #include "Macro.h" #include "ProgressBar.h" @@ -140,8 +140,8 @@ MainWindow* MainWindow::instance = 0L; namespace Gui { /** - * The CustomMessageEvent class is used to send messages as events in the methods - * Error(), Warning() and Message() of the StatusBarObserver class to the main window + * The CustomMessageEvent class is used to send messages as events in the methods + * Error(), Warning() and Message() of the StatusBarObserver class to the main window * to display them on the status bar instead of printing them directly to the status bar. * * This makes the usage of StatusBarObserver thread-safe. @@ -288,7 +288,7 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags f) d->whatsthis = false; d->assistant = new Assistant(); - // global access + // global access instance = this; // support for grouped dragging of dockwidgets @@ -629,7 +629,7 @@ int MainWindow::confirmSave(const char *docName, QWidget *parent, bool addCheckb GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("General"); checkBox.setChecked(hGrp->GetBool("ConfirmAll",false)); checkBox.blockSignals(true); - box.addButton(&checkBox, QMessageBox::ResetRole); + box.addButton(&checkBox, QMessageBox::ResetRole); } // add shortcuts @@ -648,6 +648,7 @@ int MainWindow::confirmSave(const char *docName, QWidget *parent, bool addCheckb } int res = 0; + box.adjustSize(); // Silence warnings from Qt on Windows switch (box.exec()) { case QMessageBox::Save: @@ -678,7 +679,7 @@ bool MainWindow::closeAllDocuments (bool close) continue; if(!gdoc->canClose(false)) return false; - if(!gdoc->isModified() + if(!gdoc->isModified() || doc->testStatus(App::Document::PartialDoc) || doc->testStatus(App::Document::TempDoc)) continue; @@ -829,8 +830,8 @@ bool MainWindow::eventFilter(QObject* o, QEvent* e) { if (o != this) { if (e->type() == QEvent::WindowStateChange) { - // notify all mdi views when the active view receives a show normal, show minimized - // or show maximized event + // notify all mdi views when the active view receives a show normal, show minimized + // or show maximized event MDIView * view = qobject_cast(o); if (view) { // emit this signal Qt::WindowStates oldstate = static_cast(e)->oldState(); @@ -993,7 +994,7 @@ void MainWindow::removeWindow(Gui::MDIView* view, bool close) // d->mdiArea->removeSubWindow(parent); } - if(close) + if(close) parent->deleteLater(); updateActions(); } @@ -1052,7 +1053,7 @@ void MainWindow::onWindowActivated(QMdiSubWindow* w) w->setProperty("ownWB", QString::fromStdString(WorkbenchManager::instance()->active()->name())); } } - + // Even if windowActivated() signal is emitted mdi doesn't need to be a top-level window. // This happens e.g. if two windows are top-level and one of them gets docked again. // QWorkspace emits the signal then even though the other window is in front. @@ -1063,7 +1064,7 @@ void MainWindow::onWindowActivated(QMdiSubWindow* w) // at least under Linux. It seems to be a problem with the window manager. // Under Windows it seems to work though it's not really sure that it works reliably. // Result: So, we accept the first problem to be sure to avoid the second one. - if ( !view /*|| !mdi->isActiveWindow()*/ ) + if ( !view /*|| !mdi->isActiveWindow()*/ ) return; // either no MDIView or no valid object or no top-level window // set active the appropriate window (it needs not to be part of mdiIds, e.g. directly after creation) @@ -1483,7 +1484,7 @@ void MainWindow::startSplasher(void) { // startup splasher // when running in verbose mode no splasher - if (!(App::Application::Config()["Verbose"] == "Strict") && + if (!(App::Application::Config()["Verbose"] == "Strict") && (App::Application::Config()["RunMode"] == "Gui")) { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("General"); @@ -1724,7 +1725,7 @@ bool MainWindow::canInsertFromMimeData (const QMimeData * source) const { if (!source) return false; - return source->hasUrls() || + return source->hasUrls() || source->hasFormat(_MimeDocObj) || source->hasFormat(_MimeDocObjX) || source->hasFormat(_MimeDocObjFile) || source->hasFormat(_MimeDocObjXFile); } @@ -1881,7 +1882,7 @@ void MainWindow::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { d->sizeLabel->setText(tr("Dimension")); - + CommandManager& rclMan = Application::Instance->commandManager(); std::vector cmd = rclMan.getAllCommands(); for (std::vector::iterator it = cmd.begin(); it != cmd.end(); ++it) @@ -1941,7 +1942,7 @@ void MainWindow::showMessage(const QString& message, int timeout) { void MainWindow::showStatus(int type, const QString& message) { if(QApplication::instance()->thread() != QThread::currentThread()) { - QApplication::postEvent(this, + QApplication::postEvent(this, new CustomMessageEvent(type,message)); return; } diff --git a/src/Gui/MainWindow.h b/src/Gui/MainWindow.h index d704956547..b4c94df325 100644 --- a/src/Gui/MainWindow.h +++ b/src/Gui/MainWindow.h @@ -67,7 +67,7 @@ public: } }; -/** +/** * The MainWindow class provides a main window with menu bar, toolbars, dockable windows, * a status bar and mainly a workspace for the MDI windows. * @author Werner Mayer @@ -75,7 +75,7 @@ public: class GuiExport MainWindow : public QMainWindow { Q_OBJECT - + public: /** * Constructs an empty main window. For default \a parent is 0, as there usually is @@ -141,7 +141,7 @@ public: void showDocumentation(const QString& help); //@} - /** @name Layout Methods + /** @name Layout Methods */ //@{ /// Loads the main window settings. @@ -214,7 +214,7 @@ public Q_SLOTS: */ void closeActiveWindow (); /** - * Closes all document window. + * Closes all document window. */ bool closeAllDocuments (bool close=true); /** Pop up a message box asking for saving document @@ -293,7 +293,7 @@ private Q_SLOTS: * Fills up the menu with the current dock windows. */ void onDockWindowMenuAboutToShow(); - /** + /** * This method gets frequently activated and test the commands if they are still active. */ void _updateActions(); diff --git a/src/Gui/ManualAlignment.cpp b/src/Gui/ManualAlignment.cpp index 34dfd5111f..3251af8e1c 100644 --- a/src/Gui/ManualAlignment.cpp +++ b/src/Gui/ManualAlignment.cpp @@ -509,7 +509,7 @@ public: SbRotation rot_cam1, rot_cam2; SbVec3f pos_cam1, pos_cam2; - Private() + Private() : sensorCam1(0), sensorCam2(0) { // left view @@ -551,7 +551,7 @@ public: SoCamera* cam2, SbRotation& rot_cam2, SbVec3f& pos_cam2) { Q_UNUSED(pos_cam2); - + // recompute the diff we have applied to the camera's orientation SbRotation rot = cam1->orientation.getValue(); SbRotation dif = rot * rot_cam1.inverse(); @@ -713,7 +713,7 @@ void ManualAlignment::destruct() } /** - * Checks whether the one instance exists. + * Checks whether the one instance exists. */ bool ManualAlignment::hasInstance() { @@ -851,10 +851,10 @@ void ManualAlignment::startAlignment(Base::Type mousemodel) } myViewer->getViewer(0)->setEditing(true); - myViewer->getViewer(0)->addEventCallback(SoMouseButtonEvent::getClassTypeId(), + myViewer->getViewer(0)->addEventCallback(SoMouseButtonEvent::getClassTypeId(), ManualAlignment::probePickedCallback); myViewer->getViewer(1)->setEditing(true); - myViewer->getViewer(1)->addEventCallback(SoMouseButtonEvent::getClassTypeId(), + myViewer->getViewer(1)->addEventCallback(SoMouseButtonEvent::getClassTypeId(), ManualAlignment::probePickedCallback); // apply the mouse model myViewer->getViewer(0)->setNavigationType(mousemodel); @@ -966,19 +966,19 @@ void ManualAlignment::cancel() void ManualAlignment::align() { - // Now we can start the actual alignment + // Now we can start the actual alignment if (myAlignModel.activeGroup().countPoints() < myPickPoints) { - QMessageBox::warning(myViewer, tr("Manual alignment"), + QMessageBox::warning(myViewer, tr("Manual alignment"), tr("Too few points picked in the left view." " At least %1 points are needed.").arg(myPickPoints)); } else if (myFixedGroup.countPoints() < myPickPoints) { - QMessageBox::warning(myViewer, tr("Manual alignment"), + QMessageBox::warning(myViewer, tr("Manual alignment"), tr("Too few points picked in the right view." " At least %1 points are needed.").arg(myPickPoints)); } else if (myAlignModel.activeGroup().countPoints() != myFixedGroup.countPoints()) { - QMessageBox::warning(myViewer, tr("Manual alignment"), + QMessageBox::warning(myViewer, tr("Manual alignment"), tr("Different number of points picked in left and right view.\n" "On the left view %1 points are picked,\n" "on the right view %2 points are picked.") @@ -996,7 +996,7 @@ void ManualAlignment::align() bool ok = computeAlignment(myAlignModel.activeGroup().getPoints(), myFixedGroup.getPoints()); if (ok && myDocument) { // Align views - myDocument->openCommand("Align"); + myDocument->openCommand(QT_TRANSLATE_NOOP("Command", "Align")); for (std::vector::iterator it = pViews.begin(); it != pViews.end(); ++it) alignObject(*it); myDocument->commitCommand(); @@ -1010,7 +1010,7 @@ void ManualAlignment::align() } else { // Inform user that alignment failed - int ret = QMessageBox::critical(myViewer, tr("Manual alignment"), + int ret = QMessageBox::critical(myViewer, tr("Manual alignment"), tr("The alignment failed.\nHow do you want to proceed?"), tr("Retry"), tr("Ignore"), tr("Abort")); if ( ret == 1 ) { @@ -1028,7 +1028,7 @@ void ManualAlignment::align() void ManualAlignment::showInstructions() { - // Now we can start the actual alignment + // Now we can start the actual alignment if (myAlignModel.activeGroup().countPoints() < myPickPoints) { Gui::getMainWindow()->showMessage( tr("Too few points picked in the left view." @@ -1224,7 +1224,7 @@ void ManualAlignment::onCancel() void ManualAlignment::probePickedCallback(void * ud, SoEventCallback * n) { - Q_UNUSED(ud); + Q_UNUSED(ud); Gui::View3DInventorViewer* view = reinterpret_cast(n->getUserData()); const SoEvent* ev = n->getEvent(); @@ -1237,7 +1237,7 @@ void ManualAlignment::probePickedCallback(void * ud, SoEventCallback * n) if (mbe->getButton() == SoMouseButtonEvent::BUTTON1 && mbe->getState() == SoButtonEvent::DOWN) { // if we are in 'align' mode then handle the click event ManualAlignment* self = ManualAlignment::instance(); - // Get the closest point to the camera of the whole scene. + // Get the closest point to the camera of the whole scene. // This point doesn't need to be part of this view provider. Gui::WaitCursor wc; const SoPickedPoint * point = view->getPickedPoint(n); diff --git a/src/Gui/ManualAlignment.h b/src/Gui/ManualAlignment.h index 522f593029..121c3b7ee3 100644 --- a/src/Gui/ManualAlignment.h +++ b/src/Gui/ManualAlignment.h @@ -67,7 +67,7 @@ public: void addView(App::DocumentObject*); std::vector getViews() const; /** - * Checks for the view provider of one of the added views. + * Checks for the view provider of one of the added views. */ bool hasView(Gui::ViewProviderDocumentObject*) const; /** diff --git a/src/Gui/MenuManager.h b/src/Gui/MenuManager.h index 0715219957..52bacbbb0c 100644 --- a/src/Gui/MenuManager.h +++ b/src/Gui/MenuManager.h @@ -68,7 +68,7 @@ private: * The MenuManager class is responsible for the creation of menus and context menus and appending them * to the main window. * @see ToolBoxManager - * @see ToolBarManager + * @see ToolBarManager * @author Werner Mayer */ class GuiExport MenuManager @@ -103,4 +103,4 @@ private: } // namespace Gui -#endif // GUI_MENUMANAGER_H +#endif // GUI_MENUMANAGER_H diff --git a/src/Gui/MergeDocuments.cpp b/src/Gui/MergeDocuments.cpp index 818b6b88c6..9e22096ecc 100644 --- a/src/Gui/MergeDocuments.cpp +++ b/src/Gui/MergeDocuments.cpp @@ -65,7 +65,7 @@ public: } protected: // See App::MergeDocument::XMLMergeReader for comments, with one additional - // benefits, we can save repetitive coding here. + // benefits, we can save repetitive coding here. #if 0 void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, diff --git a/src/Gui/MouseSelection.h b/src/Gui/MouseSelection.h index 132326bbb0..667a8be901 100644 --- a/src/Gui/MouseSelection.h +++ b/src/Gui/MouseSelection.h @@ -258,4 +258,4 @@ public: } // namespace Gui -#endif // MOUSESELECTION_H +#endif // MOUSESELECTION_H diff --git a/src/Gui/NaviCube.cpp b/src/Gui/NaviCube.cpp index 2690031d42..72f57992ab 100644 --- a/src/Gui/NaviCube.cpp +++ b/src/Gui/NaviCube.cpp @@ -1086,7 +1086,7 @@ void NaviCubeImplementation::drawNaviCube(bool pickMode) { glVertex3f(0.0f, 0.0f, 0.0f); glEnd(); } - + QColor& c = m_ButtonColor; glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()); glBindTexture(GL_TEXTURE_2D, m_Textures[TEX_VIEW_MENU_ICON]); diff --git a/src/Gui/NavigationStyle.cpp b/src/Gui/NavigationStyle.cpp index d5f43bd9d2..61f15f02a7 100644 --- a/src/Gui/NavigationStyle.cpp +++ b/src/Gui/NavigationStyle.cpp @@ -54,8 +54,7 @@ struct NavigationStyleP { SbVec3f focal1, focal2; SbVec3f rotationCenter; SbBool rotationCenterFound; - NavigationStyle::RotationCenterMode rotationCenterMode; - SbBool dragAtCursor; + NavigationStyle::RotationCenterModes rotationCenterMode; SbRotation endRotation; SoTimerSensor * animsensor; float sensitivity; @@ -69,8 +68,8 @@ struct NavigationStyleP { this->sensitivity = 2.0f; this->resetcursorpos = false; this->rotationCenterFound = false; - this->rotationCenterMode = NavigationStyle::ScenePointAtCursor; - this->dragAtCursor = false; + this->rotationCenterMode = NavigationStyle::RotationCenterMode::ScenePointAtCursor | + NavigationStyle::RotationCenterMode::FocalPointAtCursor; } static void viewAnimationCB(void * data, SoSensor * sensor); }; @@ -165,7 +164,7 @@ NavigationStyleEvent::~NavigationStyleEvent() } const Base::Type& NavigationStyleEvent::style() const -{ +{ return t; } @@ -240,8 +239,19 @@ void NavigationStyle::initialize() ("User parameter:BaseApp/Preferences/View")->GetBool("ZoomAtCursor",true); this->zoomStep = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/View")->GetFloat("ZoomStep",0.2f); - PRIVATE(this)->dragAtCursor = App::GetApplication().GetParameterGroupByPath - ("User parameter:BaseApp/Preferences/View")->GetBool("DragAtCursor",false); + long mode = App::GetApplication().GetParameterGroupByPath + ("User parameter:BaseApp/Preferences/View")->GetInt("RotationMode", 1); + if (mode == 0) { + setRotationCenterMode(NavigationStyle::RotationCenterMode::WindowCenter); + } + else if (mode == 1) { + setRotationCenterMode(NavigationStyle::RotationCenterMode::ScenePointAtCursor | + NavigationStyle::RotationCenterMode::FocalPointAtCursor); + } + else if (mode == 2) { + setRotationCenterMode(NavigationStyle::RotationCenterMode::ScenePointAtCursor | + NavigationStyle::RotationCenterMode::BoundingBoxCenter); + } } void NavigationStyle::finalize() @@ -459,7 +469,7 @@ void NavigationStyle::setCameraOrientation(const SbRotation& rot, SbBool moveToC void NavigationStyleP::viewAnimationCB(void * data, SoSensor * sensor) { - Q_UNUSED(sensor); + Q_UNUSED(sensor); NavigationStyle* that = reinterpret_cast(data); if (PRIVATE(that)->animationsteps > 0) { // here the camera rotates from the current rotation to a given @@ -494,7 +504,7 @@ void NavigationStyleP::viewAnimationCB(void * data, SoSensor * sensor) void NavigationStyle::boxZoom(const SbBox2s& box) { SoCamera* cam = viewer->getSoRenderManager()->getCamera(); - if (!cam) return; // no camera + if (!cam) return; // no camera const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); SbViewVolume vv = cam->getViewVolume(vp.getViewportAspectRatio()); @@ -504,7 +514,7 @@ void NavigationStyle::boxZoom(const SbBox2s& box) // The bbox must not be empty i.e. width and length is zero, but it is possible that // either width or length is zero - if (sizeX == 0 && sizeY == 0) + if (sizeX == 0 && sizeY == 0) return; // Get the new center in normalized pixel coordinates @@ -543,8 +553,8 @@ void NavigationStyle::viewAll() // check whether the box is very wide or tall, if not do nothing float box_width, box_height, box_depth; box.getSize( box_width, box_height, box_depth ); - if (box_width < 5.0f*box_height && box_width < 5.0f*box_depth && - box_height < 5.0f*box_width && box_height < 5.0f*box_depth && + if (box_width < 5.0f*box_height && box_width < 5.0f*box_depth && + box_height < 5.0f*box_width && box_height < 5.0f*box_depth && box_depth < 5.0f*box_width && box_depth < 5.0f*box_height ) return; #endif @@ -885,7 +895,7 @@ void NavigationStyle::spin(const SbVec2f & pointerpos) lastpos[0] = float(this->log.position[1][0]) / float(std::max((int)(glsize[0]-1), 1)); lastpos[1] = float(this->log.position[1][1]) / float(std::max((int)(glsize[1]-1), 1)); - if (PRIVATE(this)->dragAtCursor && PRIVATE(this)->rotationCenterFound) { + if (PRIVATE(this)->rotationCenterMode && PRIVATE(this)->rotationCenterFound) { SbVec3f hitpoint = PRIVATE(this)->rotationCenter; // set to the given position @@ -913,7 +923,7 @@ void NavigationStyle::spin(const SbVec2f & pointerpos) r.invert(); this->reorientCamera(viewer->getSoRenderManager()->getCamera(), r); - if (PRIVATE(this)->dragAtCursor && PRIVATE(this)->rotationCenterFound) { + if (PRIVATE(this)->rotationCenterMode && PRIVATE(this)->rotationCenterFound) { float ratio = vp.getViewportAspectRatio(); SbViewVolume vv = viewer->getSoRenderManager()->getCamera()->getViewVolume(vp.getViewportAspectRatio()); SbPlane panplane = vv.getPlane(viewer->getSoRenderManager()->getCamera()->focalDistance.getValue()); @@ -1013,49 +1023,66 @@ void NavigationStyle::saveCursorPosition(const SoEvent * const ev) this->globalPos.setValue(QCursor::pos().x(), QCursor::pos().y()); this->localPos = ev->getPosition(); - // get the 3d point to the screen position, if possible - if (PRIVATE(this)->dragAtCursor) { - //Option to get point on model (slow) or always on focal plane (fast) - switch (PRIVATE(this)->rotationCenterMode) { - case ScenePointAtCursor: - { - SoRayPickAction rpaction(viewer->getSoRenderManager()->getViewportRegion()); - rpaction.setPoint(this->localPos); - rpaction.setRadius(viewer->getPickRadius()); - rpaction.apply(viewer->getSoRenderManager()->getSceneGraph()); + //Option to get point on model (slow) or always on focal plane (fast) + // + // mode is ScenePointAtCursor to get exact point if possible + if (PRIVATE(this)->rotationCenterMode & NavigationStyle::RotationCenterMode::ScenePointAtCursor) { + SoRayPickAction rpaction(viewer->getSoRenderManager()->getViewportRegion()); + rpaction.setPoint(this->localPos); + rpaction.setRadius(viewer->getPickRadius()); + rpaction.apply(viewer->getSoRenderManager()->getSceneGraph()); - SoPickedPoint * picked = rpaction.getPickedPoint(); - if (picked) { - setRotationCenter(picked->getPoint()); - break; - } - } - /* FALLTHRU */ - // mode is FocalPointAtCursor or a ScenePointAtCursor failed - case FocalPointAtCursor: - { - // get the intersection point of the ray and the focal plane - const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - float ratio = vp.getViewportAspectRatio(); - - SoCamera* cam = viewer->getSoRenderManager()->getCamera(); - if (!cam) return; // no camera - SbViewVolume vv = cam->getViewVolume(ratio); - - SbLine line; - SbVec2f currpos = ev->getNormalizedPosition(vp); - vv.projectPointToLine(currpos, line); - SbVec3f current_planept; - SbPlane panplane = vv.getPlane(cam->focalDistance.getValue()); - panplane.intersect(line, current_planept); - - setRotationCenter(current_planept); - break; - } - default: - break; + SoPickedPoint * picked = rpaction.getPickedPoint(); + if (picked) { + setRotationCenter(picked->getPoint()); + return; } } + + // mode is FocalPointAtCursor or a ScenePointAtCursor failed + if (PRIVATE(this)->rotationCenterMode & NavigationStyle::RotationCenterMode::FocalPointAtCursor) { + // get the intersection point of the ray and the focal plane + const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); + float ratio = vp.getViewportAspectRatio(); + + SoCamera* cam = viewer->getSoRenderManager()->getCamera(); + if (!cam) return; // no camera + SbViewVolume vv = cam->getViewVolume(ratio); + + SbLine line; + SbVec2f currpos = ev->getNormalizedPosition(vp); + vv.projectPointToLine(currpos, line); + SbVec3f current_planept; + SbPlane panplane = vv.getPlane(cam->focalDistance.getValue()); + panplane.intersect(line, current_planept); + + setRotationCenter(current_planept); + } + + // mode is BoundingBoxCenter or a ScenePointAtCursor failed + if (PRIVATE(this)->rotationCenterMode & NavigationStyle::RotationCenterMode::BoundingBoxCenter) { + const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); + float ratio = vp.getViewportAspectRatio(); + + SoCamera* cam = viewer->getSoRenderManager()->getCamera(); + if (!cam) return; // no camera + + SoGetBoundingBoxAction action(viewer->getSoRenderManager()->getViewportRegion()); + action.apply(viewer->getSceneGraph()); + SbBox3f boundingBox = action.getBoundingBox(); + SbVec3f boundingBoxCenter = boundingBox.getCenter(); + setRotationCenter(boundingBoxCenter); + + // To drag around the center point of the bbox we have to determine + // its projection on the screen because this information is used in + // NavigationStyle::spin() for the panning + SbViewVolume vv = cam->getViewVolume(ratio); + vv.projectToScreen(boundingBoxCenter, boundingBoxCenter); + SbVec2s size = vp.getViewportSizePixels(); + short tox = static_cast(boundingBoxCenter[0] * size[0]); + short toy = static_cast(boundingBoxCenter[1] * size[1]); + this->localPos.setValue(tox, toy); + } } SbVec2f NavigationStyle::normalizePixelPos(SbVec2s pixpos) @@ -1173,7 +1200,7 @@ void NavigationStyle::stopAnimating(void) if (this->currentmode != NavigationStyle::SPINNING) { return; } - this->setViewingMode(this->isViewing() ? + this->setViewingMode(this->isViewing() ? NavigationStyle::IDLE : NavigationStyle::INTERACT); } @@ -1222,26 +1249,16 @@ SbBool NavigationStyle::isZoomAtCursor() const return this->zoomAtCursor; } -void NavigationStyle::setRotationCenterMode(NavigationStyle::RotationCenterMode mode) +void NavigationStyle::setRotationCenterMode(NavigationStyle::RotationCenterModes mode) { PRIVATE(this)->rotationCenterMode = mode; } -NavigationStyle::RotationCenterMode NavigationStyle::getRotationCenterMode() const +NavigationStyle::RotationCenterModes NavigationStyle::getRotationCenterMode() const { return PRIVATE(this)->rotationCenterMode; } -void NavigationStyle::setDragAtCursor(SbBool on) -{ - PRIVATE(this)->dragAtCursor = on; -} - -SbBool NavigationStyle::isDragAtCursor() const -{ - return PRIVATE(this)->dragAtCursor; -} - void NavigationStyle::startSelection(AbstractMouseSelection* mouse) { if (!mouse) @@ -1262,7 +1279,7 @@ void NavigationStyle::startSelection(NavigationStyle::SelectionMode mode) return; if (isSelecting()) stopSelection(); - + switch (mode) { case Lasso: @@ -1418,14 +1435,14 @@ SbBool NavigationStyle::processEvent(const SoEvent * const ev) else if (hd==AbstractMouseSelection::Finish) { pcPolygon = mouseSelection->getPositions(); selectedRole = mouseSelection->selectedRole(); - delete mouseSelection; + delete mouseSelection; mouseSelection = 0; syncWithEvent(ev); return NavigationStyle::processSoEvent(ev); } else if (hd==AbstractMouseSelection::Cancel) { pcPolygon.clear(); - delete mouseSelection; + delete mouseSelection; mouseSelection = 0; syncWithEvent(ev); return NavigationStyle::processSoEvent(ev); @@ -1585,7 +1602,7 @@ SbBool NavigationStyle::isPopupMenuEnabled(void) const void NavigationStyle::openPopupMenu(const SbVec2s& position) { - Q_UNUSED(position); + Q_UNUSED(position); // ask workbenches and view provider, ... MenuItem* view = new MenuItem; Gui::Application::Instance->setupContextMenu("View", view); diff --git a/src/Gui/NavigationStyle.h b/src/Gui/NavigationStyle.h index 732ac7ecb9..34c1bf52c3 100644 --- a/src/Gui/NavigationStyle.h +++ b/src/Gui/NavigationStyle.h @@ -99,10 +99,17 @@ public: Trackball }; +#if QT_VERSION < 0x050000 enum RotationCenterMode { - ScenePointAtCursor, /**< Find the point in the scene at the cursor position. If there is no point then the focal plane is used */ - FocalPointAtCursor /**< Find the point on the focal plane at the cursor position. */ +#else + enum class RotationCenterMode { +#endif + WindowCenter = 0, /**< The center of the window */ + ScenePointAtCursor = 1, /**< Find the point in the scene at the cursor position. If there is no point then the focal plane is used */ + FocalPointAtCursor = 2, /**< Find the point on the focal plane at the cursor position. */ + BoundingBoxCenter = 4 /**< Find the center point of the bounding box of the scene. */ }; + Q_DECLARE_FLAGS(RotationCenterModes, RotationCenterMode) public: NavigationStyle(); @@ -131,10 +138,8 @@ public: SbBool isZoomAtCursor() const; void zoomIn(); void zoomOut(); - void setDragAtCursor(SbBool); - SbBool isDragAtCursor() const; - void setRotationCenterMode(RotationCenterMode); - RotationCenterMode getRotationCenterMode() const; + void setRotationCenterMode(RotationCenterModes); + RotationCenterModes getRotationCenterMode() const; void setRotationCenter(const SbVec3f& cnt); SbVec3f getFocalPoint() const; @@ -264,7 +269,7 @@ private: * in the above dialog. * This mechanism is useful to implement special navigation styles which are * only needed for certain purposes. Thus, it should not be possible to be - * choosable by the user + * choosable by the user * @author Werner Mayer */ class GuiExport UserNavigationStyle : public NavigationStyle { @@ -410,4 +415,6 @@ private: } // namespace Gui -#endif // GUI_NAVIGATIONSTYLE_H +Q_DECLARE_OPERATORS_FOR_FLAGS(Gui::NavigationStyle::RotationCenterModes) + +#endif // GUI_NAVIGATIONSTYLE_H diff --git a/src/Gui/NetworkRetriever.cpp b/src/Gui/NetworkRetriever.cpp index b6cbe153bc..b4b4606aee 100644 --- a/src/Gui/NetworkRetriever.cpp +++ b/src/Gui/NetworkRetriever.cpp @@ -91,7 +91,7 @@ NetworkRetriever::NetworkRetriever( QObject * parent ) wget = new QProcess(this); // if wgets exits emit signal - connect(wget, SIGNAL(finished(int, QProcess::ExitStatus)), + connect(wget, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(wgetFinished(int, QProcess::ExitStatus))); // if application quits kill wget immediately to avoid dangling processes @@ -107,11 +107,11 @@ NetworkRetriever::~NetworkRetriever() /** * This method is connected to QTimer::singleShot() and executed after 5 seconds. If wget then is still running * we can assume that everything is fine. - * \note This test is necessary since \a wget writes all its output on stderr and we cannot determine surely + * \note This test is necessary since \a wget writes all its output on stderr and we cannot determine surely * if an error occurred or not. * - * There is still a problem that is not solved so far. If wget requires the proxy settings and if these - * are not set, wget could take more than 5 seconds without downloading anything. + * There is still a problem that is not solved so far. If wget requires the proxy settings and if these + * are not set, wget could take more than 5 seconds without downloading anything. */ void NetworkRetriever::testFailure() { @@ -164,7 +164,7 @@ void NetworkRetriever::setProxy( const QString& proxy, const QString& user, cons /** * If \a recursive is true all referenced files are downloaded recursively. - * As default recursion is disabled. \a level specifies the maximum recursion + * As default recursion is disabled. \a level specifies the maximum recursion * depth. If \a level is 0 the recursion depth is infinite. As default the level * property is 1. * \note: Use this with care! @@ -185,7 +185,7 @@ void NetworkRetriever::setFollowRelative( bool folRel ) } /** - * If \a convert is true all non-relative links are converted to + * If \a convert is true all non-relative links are converted to * relative links. As default the convert property is true. */ void NetworkRetriever::setEnableConvert( bool convert ) @@ -357,8 +357,8 @@ void NetworkRetriever::abort() void NetworkRetriever::wgetFinished(int exitCode, QProcess::ExitStatus status) { - Q_UNUSED(exitCode); - Q_UNUSED(status); + Q_UNUSED(exitCode); + Q_UNUSED(status); wget->setReadChannel(QProcess::StandardError); if (wget->canReadLine()) { QByteArray data = wget->readAll(); @@ -455,7 +455,7 @@ void StdCmdDownloadOnlineHelp::languageChange() void StdCmdDownloadOnlineHelp::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); if (!wget->isDownloading()) { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp"); hGrp = hGrp->GetGroup("Preferences")->GetGroup("OnlineHelp"); @@ -496,16 +496,16 @@ void StdCmdDownloadOnlineHelp::activated(int iMsg) loop--; QFileInfo fi( path); if (!fi.exists()) { - if (QMessageBox::critical(getMainWindow(), tr("Non-existing directory"), + if (QMessageBox::critical(getMainWindow(), tr("Non-existing directory"), tr("The directory '%1' does not exist.\n\n" - "Do you want to specify an existing directory?").arg(fi.filePath()), - QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != + "Do you want to specify an existing directory?").arg(fi.filePath()), + QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != QMessageBox::Yes) { // exit the command return; } - else + else { path = FileDialog::getExistingDirectory(); if ( path.isEmpty() ) @@ -514,10 +514,10 @@ void StdCmdDownloadOnlineHelp::activated(int iMsg) } if (!fi.permission( QFile::WriteUser)) { - if (QMessageBox::critical(getMainWindow(), tr("Missing permission"), + if (QMessageBox::critical(getMainWindow(), tr("Missing permission"), tr("You don't have write permission to '%1'\n\n" - "Do you want to specify another directory?").arg(fi.filePath()), - QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != + "Do you want to specify another directory?").arg(fi.filePath()), + QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != QMessageBox::Yes) { // exit the command diff --git a/src/Gui/NetworkRetriever.h b/src/Gui/NetworkRetriever.h index 1a90dde4b3..4fa065cde7 100644 --- a/src/Gui/NetworkRetriever.h +++ b/src/Gui/NetworkRetriever.h @@ -37,7 +37,7 @@ namespace Gui { * file structure from a server. * \author Werner Mayer */ -class NetworkRetriever : public QObject +class NetworkRetriever : public QObject { Q_OBJECT diff --git a/src/Gui/OnlineDocumentation.cpp b/src/Gui/OnlineDocumentation.cpp index 4c1921c3ee..119fc6f77b 100644 --- a/src/Gui/OnlineDocumentation.cpp +++ b/src/Gui/OnlineDocumentation.cpp @@ -195,7 +195,7 @@ QByteArray PythonOnlineHelp::loadResource(const QString& filename) const PyObject* main = PyImport_AddModule("__main__"); PyObject* dict = PyModule_GetDict(main); dict = PyDict_Copy(dict); - QByteArray cmd = + QByteArray cmd = "import pydoc\n" "object, name = pydoc.resolve(\""; cmd += name.toUtf8(); @@ -393,19 +393,19 @@ StdCmdPythonHelp::~StdCmdPythonHelp() void StdCmdPythonHelp::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); // try to open a connection over this port qint16 port = 7465; if (!this->server) this->server = new HttpServer(); // if server is not yet running try to open one - if (this->server->isListening() || + if (this->server->isListening() || this->server->listen(QHostAddress(QHostAddress::LocalHost), port)) { // okay the server is running, now we try to open the system internet browser bool failed = true; - // The webbrowser Python module allows to start the system browser in an + // The webbrowser Python module allows to start the system browser in an // OS-independent way Base::PyGILStateLocker lock; PyObject* module = PyImport_ImportModule("webbrowser"); @@ -424,7 +424,7 @@ void StdCmdPythonHelp::activated(int iMsg) #endif if (result) failed = false; - + // decrement the args and module reference Py_XDECREF(result); Py_DECREF(args); @@ -434,13 +434,13 @@ void StdCmdPythonHelp::activated(int iMsg) // print error message on failure if (failed) { - QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Browser"), + QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Browser"), QObject::tr("Unable to open your browser.\n\n" "Please open a browser window and type in: http://localhost:%1.").arg(port)); } } else { - QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Server"), + QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Server"), QObject::tr("Unable to start the server to port %1: %2.").arg(port).arg(server->errorString())); } } @@ -464,21 +464,21 @@ bool Gui::OpenURLInBrowser(const char * URL) #endif if (result) failed = false; - + // decrement the args and module reference Py_XDECREF(result); Py_DECREF(args); Py_DECREF(module); } - } + } // print error message on failure if (failed) { - QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Browser"), + QMessageBox::critical(Gui::getMainWindow(), QObject::tr("No Browser"), QObject::tr("Unable to open your system browser.")); return false; } - + return true; } diff --git a/src/Gui/OnlineDocumentation.h b/src/Gui/OnlineDocumentation.h index 3ff180d5a2..8e54c9d07a 100644 --- a/src/Gui/OnlineDocumentation.h +++ b/src/Gui/OnlineDocumentation.h @@ -35,7 +35,7 @@ namespace Gui { bool GuiExport OpenURLInBrowser(const char * URL); /** - * Returns the content of an HTML page which gets sent to + * Returns the content of an HTML page which gets sent to * the client to be displayed. * @author Werner Mayer */ @@ -52,7 +52,7 @@ public: QByteArray loadFailed(const QString& error) const; }; -/** +/** * The HttpServer class implements a simple HTTP server. */ class HttpServer : public QTcpServer diff --git a/src/Gui/Placement.cpp b/src/Gui/Placement.cpp index acf9f72715..04b2e6ad35 100644 --- a/src/Gui/Placement.cpp +++ b/src/Gui/Placement.cpp @@ -269,13 +269,13 @@ void Placement::applyPlacement(const QString& data, bool incremental) } catch (...) { } - document->openCommand("Placement"); + document->openCommand(QT_TRANSLATE_NOOP("Command", "Placement")); } else { std::vector sel = Gui::Selection().getObjectsOfType (App::DocumentObject::getClassTypeId(), document->getDocument()->getName()); if (!sel.empty()) { - document->openCommand("Placement"); + document->openCommand(QT_TRANSLATE_NOOP("Command", "Placement")); for (std::vector::iterator it=sel.begin();it!=sel.end();++it) { std::map props; (*it)->getPropertyMap(props); @@ -875,7 +875,7 @@ void TaskPlacement::setPropertyName(const QString& name) } QDialogButtonBox::StandardButtons TaskPlacement::getStandardButtons() const -{ +{ return QDialogButtonBox::Ok| QDialogButtonBox::Cancel| QDialogButtonBox::Apply; diff --git a/src/Gui/PreCompiled.cpp b/src/Gui/PreCompiled.cpp index 3e85848b9a..7b200a1bf2 100644 --- a/src/Gui/PreCompiled.cpp +++ b/src/Gui/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Gui/PreCompiled.h b/src/Gui/PreCompiled.h index b759199162..7163d51450 100644 --- a/src/Gui/PreCompiled.h +++ b/src/Gui/PreCompiled.h @@ -23,13 +23,15 @@ #ifndef GUI_PRECOMPILED_H #define GUI_PRECOMPILED_H - + #include #ifdef FC_OS_WIN32 #define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX #endif +#endif // here get the warnings of too long specifiers disabled (needed for VC6) #ifdef _MSC_VER diff --git a/src/Gui/PrefWidgets.cpp b/src/Gui/PrefWidgets.cpp index 6274c8f281..94342eb0a7 100644 --- a/src/Gui/PrefWidgets.cpp +++ b/src/Gui/PrefWidgets.cpp @@ -38,7 +38,7 @@ using Base::Console; using namespace Gui; -/** Constructs a preference widget. +/** Constructs a preference widget. */ PrefWidget::PrefWidget() : WindowParameter("") @@ -94,9 +94,9 @@ QByteArray PrefWidget::paramGrpPath() const return m_sPrefGrp; } -/** - * This method is called if one or more values in the parameter settings are changed - * where getParamGrp() points to. +/** + * This method is called if one or more values in the parameter settings are changed + * where getParamGrp() points to. * Note: This method is called for each parameter inside the parameter group. So * you have to filter out the appropriate parameter with the name \a sReason. * \a rCaller calls this method. @@ -711,7 +711,7 @@ void PrefFontBox::restorePreferences() QFont currFont = currentFont(); //QFont from selector widget QString currName = currFont.family(); - + std::string prefName = getWindowParameter()->GetASCII(entryName(), currName.toUtf8()); //font name from cfg file currFont.setFamily(QString::fromStdString(prefName)); diff --git a/src/Gui/PrefWidgets.h b/src/Gui/PrefWidgets.h index cbad7282e6..00425e0b5f 100644 --- a/src/Gui/PrefWidgets.h +++ b/src/Gui/PrefWidgets.h @@ -42,14 +42,14 @@ class WidgetFactoryInst; /** The preference widget class. * If you want to extend a QWidget class to save/restore its data - * you just have to derive from this class and implement the methods + * you just have to derive from this class and implement the methods * restorePreferences() and savePreferences(). * * To restore and save the settings of any widgets in own dialogs you have * call onRestore() e.g. in the dialog's constructor and call onSave() e.g. - * in accept() for each widget you want to enable this mechanism. - * - * For more information of how to use these widgets in normal container widgets + * in accept() for each widget you want to enable this mechanism. + * + * For more information of how to use these widgets in normal container widgets * which are again in a dialog refer to the description of Gui::Dialog::DlgPreferencesImp. * * \author Werner Mayer @@ -324,7 +324,7 @@ public: void setToLastUsedValue(); /// get the value of the history size property int historySize() const; - /// set the value of the history size property + /// set the value of the history size property void setHistorySize(int); /// Convenience method as offered by PrefWidget. Does the same as pushToHistory(). void onSave(); diff --git a/src/Gui/ProgressBar.h b/src/Gui/ProgressBar.h index 4f02e06af4..e70f369ba1 100644 --- a/src/Gui/ProgressBar.h +++ b/src/Gui/ProgressBar.h @@ -52,7 +52,7 @@ class ProgressBar; * seq.next(); * // do one step of your algorithm * } - * + * * \endcode * * The example below shows how to use two nested progresses. @@ -70,7 +70,7 @@ class ProgressBar; * } * * } - * + * * void function2() * { * unsigned long steps = ... @@ -95,9 +95,9 @@ class GuiExport SequencerBar : public Base::SequencerBase public: /** Returns the sequencer object. */ static SequencerBar* instance(); - /** This restores the last overridden cursor and release the keyboard while the progress bar + /** This restores the last overridden cursor and release the keyboard while the progress bar * is running. This is useful e.g. if a modal dialog appears while a long operation is performed - * to indicate that the user can click on the dialog. Every pause() must eventually be followed + * to indicate that the user can click on the dialog. Every pause() must eventually be followed * by a corresponding @ref resume(). */ void pause() override; diff --git a/src/Gui/ProgressDialog.cpp b/src/Gui/ProgressDialog.cpp index cf803daf6b..519ad2e72e 100644 --- a/src/Gui/ProgressDialog.cpp +++ b/src/Gui/ProgressDialog.cpp @@ -240,7 +240,7 @@ void SequencerDialog::resetData() } else { d->dlg->resetEx(); - // Note: Under Qt 4.1.4 this forces to run QWindowsStyle::eventFilter() twice + // Note: Under Qt 4.1.4 this forces to run QWindowsStyle::eventFilter() twice // handling the same event thus a warning is printed. Possibly, this is a bug // in Qt. The message is QEventDispatcherUNIX::unregisterTimer: invalid argument. d->dlg->hide(); @@ -312,7 +312,7 @@ void ProgressDialog::onCancel() bool ProgressDialog::canAbort() const { int ret = QMessageBox::question(getMainWindow(),tr("Aborting"), - tr("Do you really want to abort the operation?"), QMessageBox::Yes, + tr("Do you really want to abort the operation?"), QMessageBox::Yes, QMessageBox::No|QMessageBox::Default); return (ret == QMessageBox::Yes) ? true : false; diff --git a/src/Gui/ProjectView.h b/src/Gui/ProjectView.h index 3e361cb4e7..add88c6748 100644 --- a/src/Gui/ProjectView.h +++ b/src/Gui/ProjectView.h @@ -50,7 +50,7 @@ public: private: QFileSystemModel *fileModel; - + }; diff --git a/src/Gui/PropertyPage.cpp b/src/Gui/PropertyPage.cpp index bdf83d6d74..806d3aee6d 100644 --- a/src/Gui/PropertyPage.cpp +++ b/src/Gui/PropertyPage.cpp @@ -31,13 +31,13 @@ using namespace Gui::Dialog; /** Construction */ -PropertyPage::PropertyPage(QWidget* parent) : QWidget(parent) +PropertyPage::PropertyPage(QWidget* parent) : QWidget(parent) { bChanged = false; } /** Destruction */ -PropertyPage::~PropertyPage() +PropertyPage::~PropertyPage() { } @@ -96,12 +96,12 @@ void PropertyPage::onReset() // ---------------------------------------------------------------- /** Construction */ -PreferencePage::PreferencePage(QWidget* parent) : QWidget(parent) +PreferencePage::PreferencePage(QWidget* parent) : QWidget(parent) { } /** Destruction */ -PreferencePage::~PreferencePage() +PreferencePage::~PreferencePage() { } @@ -202,12 +202,12 @@ void PreferenceUiForm::saveSettings() // ---------------------------------------------------------------- /** Construction */ -CustomizeActionPage::CustomizeActionPage(QWidget* parent) : QWidget(parent) +CustomizeActionPage::CustomizeActionPage(QWidget* parent) : QWidget(parent) { } /** Destruction */ -CustomizeActionPage::~CustomizeActionPage() +CustomizeActionPage::~CustomizeActionPage() { } diff --git a/src/Gui/PropertyView.cpp b/src/Gui/PropertyView.cpp index f7434ff9a5..99a44066b5 100644 --- a/src/Gui/PropertyView.cpp +++ b/src/Gui/PropertyView.cpp @@ -76,9 +76,9 @@ static ParameterGrp::handle _GetParam() { * in two tabs. */ PropertyView::PropertyView(QWidget *parent) - : QWidget(parent),SelectionObserver(false,0) + : QWidget(parent),SelectionObserver(false,0) { - QGridLayout* pLayout = new QGridLayout( this ); + QGridLayout* pLayout = new QGridLayout( this ); pLayout->setSpacing(0); pLayout->setMargin (0); @@ -134,13 +134,13 @@ PropertyView::PropertyView(QWidget *parent) this->connectActiveDoc = Application::Instance->signalActiveDocument.connect(boost::bind (&PropertyView::slotActiveDocument, this, bp::_1)); - this->connectDelDocument = + this->connectDelDocument = Application::Instance->signalDeleteDocument.connect( boost::bind(&PropertyView::slotDeleteDocument, this, bp::_1)); - this->connectDelViewObject = + this->connectDelViewObject = Application::Instance->signalDeletedObject.connect( boost::bind(&PropertyView::slotDeletedViewObject, this, bp::_1)); - this->connectDelObject = + this->connectDelObject = App::GetApplication().signalDeletedObject.connect( boost::bind(&PropertyView::slotDeletedObject, this, bp::_1)); } @@ -227,7 +227,7 @@ bool PropertyView::isPropertyHidden(const App::Property *prop) { void PropertyView::slotAppendDynamicProperty(const App::Property& prop) { - if (isPropertyHidden(&prop)) + if (isPropertyHidden(&prop)) return; if (propertyEditorData->appendProperty(prop) @@ -365,7 +365,7 @@ void PropertyView::onTimer() { auto doc = gdoc->getDocument(); std::map props; doc->getPropertyMap(props); - for(auto &v : props) + for(auto &v : props) docProps.emplace_back(v.first, std::vector(1,v.second)); propertyEditorData->buildUp(std::move(docProps)); diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index 9eb42fb69c..aac3961edf 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -186,7 +186,7 @@ void InteractiveInterpreter::setPrompt() /** * Compile a command and determine whether it is incomplete. - * + * * The source string may contain line feeds and/or carriage returns. \n * Return value / exceptions raised: * - Return a code object if the command is complete and valid @@ -222,7 +222,7 @@ PyObject* InteractiveInterpreter::compile(const char* source) const /** * Compile a command and determine whether it is incomplete. - * + * * The source string may contain line feeds and/or carriage returns. \n * Return value: * - Return 1 if the command is incomplete @@ -264,17 +264,17 @@ int InteractiveInterpreter::compileCommand(const char* source) const * * One several things can happen: * - * - The input is incorrect; compile() raised an exception (SyntaxError or OverflowError). + * - The input is incorrect; compile() raised an exception (SyntaxError or OverflowError). * A syntax traceback will be printed by calling Python's PyErr_Print() method to the redirected stderr. * - * - The input is incomplete, and more input is required; compile() returned 'None'. + * - The input is incomplete, and more input is required; compile() returned 'None'. * Nothing happens. * - * - The input is complete; compile() returned a code object. The code is executed by calling + * - The input is complete; compile() returned a code object. The code is executed by calling * runCode() (which also handles run-time exceptions, except for SystemExit). * . * The return value is True if the input is incomplete, False in the other cases (unless - * an exception is raised). The return value can be used to decide whether to use sys.ps1 + * an exception is raised). The return value can be used to decide whether to use sys.ps1 * or sys.ps2 to prompt the next line. */ bool InteractiveInterpreter::runSource(const char* source) const @@ -316,10 +316,10 @@ void InteractiveInterpreter::runCode(PyCodeObject* code) const Base::PyGILStateLocker lock; PyObject *module, *dict, *presult; /* "exec code in d, d" */ module = PyImport_AddModule("__main__"); /* get module, init python */ - if (module == NULL) + if (module == NULL) throw Base::PyException(); /* not incref'd */ dict = PyModule_GetDict(module); /* get dict namespace */ - if (dict == NULL) + if (dict == NULL) throw Base::PyException(); /* not incref'd */ // It seems that the return value is always 'None' or Null @@ -425,7 +425,7 @@ void InteractiveInterpreter::clearBuffer() /* TRANSLATOR Gui::PythonConsole */ /** - * Constructs a PythonConsole which is a child of 'parent'. + * Constructs a PythonConsole which is a child of 'parent'. */ PythonConsole::PythonConsole(QWidget *parent) : TextEdit(parent), WindowParameter( "Editor" ), _sourceDrain(NULL) @@ -434,7 +434,7 @@ PythonConsole::PythonConsole(QWidget *parent) d->interactive = false; // create an instance of InteractiveInterpreter - try { + try { d->interpreter = new InteractiveInterpreter(); } catch (const Base::Exception& e) { setPlainText(QString::fromLatin1(e.what())); @@ -456,7 +456,7 @@ PythonConsole::PythonConsole(QWidget *parent) QFont serifFont(QLatin1String("Courier"), 10, QFont::Normal); setFont(serifFont); - + // set colors and font from settings ParameterGrp::handle hPrefGrp = getWindowParameter(); hPrefGrp->Attach( this ); @@ -503,10 +503,10 @@ PythonConsole::~PythonConsole() delete d; } -/** Set new font and colors according to the parameters. */ +/** Set new font and colors according to the parameters. */ void PythonConsole::OnChange( Base::Subject &rCaller,const char* sReason ) { - Q_UNUSED(rCaller); + Q_UNUSED(rCaller); ParameterGrp::handle hPrefGrp = getWindowParameter(); bool pythonWordWrap = App::GetApplication().GetUserParameter(). @@ -521,7 +521,7 @@ void PythonConsole::OnChange( Base::Subject &rCaller,const char* sR if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { int fontSize = hPrefGrp->GetInt("FontSize", 10); QString fontFamily = QString::fromLatin1(hPrefGrp->GetASCII("Font", "Courier").c_str()); - + QFont font(fontFamily, fontSize); setFont(font); QFontMetrics metric(font); @@ -580,8 +580,8 @@ void PythonConsole::keyPressEvent(QKeyEvent * e) e->matches(QKeySequence::SelectAll)) { TextEdit::keyPressEvent(e); } - else if (!e->text().isEmpty() && - (e->modifiers() == Qt::NoModifier || + else if (!e->text().isEmpty() && + (e->modifiers() == Qt::NoModifier || e->modifiers() == Qt::ShiftModifier)) { this->moveCursor(QTextCursor::End); TextEdit::keyPressEvent(e); @@ -688,7 +688,7 @@ void PythonConsole::keyPressEvent(QKeyEvent * e) { TextEdit::keyPressEvent(e); } } break; - default: + default: { TextEdit::keyPressEvent(e); } break; @@ -730,8 +730,8 @@ void PythonConsole::onFlush() } /** Prints the ps1 prompt (>>> ) for complete and ps2 prompt (... ) for - * incomplete commands to the console window. - */ + * incomplete commands to the console window. + */ void PythonConsole::printPrompt(PythonConsole::Prompt mode) { // write normal messages @@ -791,7 +791,7 @@ void PythonConsole::appendOutput(const QString& output, int state) QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::End); int pos = cursor.position() + 1; - + // delay rehighlighting cursor.beginEditBlock(); appendPlainText(output); @@ -827,7 +827,7 @@ void PythonConsole::runSource(const QString& line) PySys_SetObject("stdout", d->_stdoutPy); PySys_SetObject("stderr", d->_stderrPy); d->interactive = true; - + try { d->history.markScratch(); //< mark current history position ... // launch the command now @@ -916,7 +916,7 @@ void PythonConsole::printStatement( const QString& cmd ) QTextCursor cursor = textCursor(); QStringList statements = cmd.split(QLatin1String("\n")); for (QStringList::Iterator it = statements.begin(); it != statements.end(); ++it) { - // go to the end before inserting new text + // go to the end before inserting new text cursor.movePosition(QTextCursor::End); cursor.insertText( *it ); d->history.append( *it ); @@ -1000,7 +1000,7 @@ void PythonConsole::dropEvent (QDropEvent * e) QPlainTextEdit::dropEvent(e); } -/** Dragging of action objects is allowed. */ +/** Dragging of action objects is allowed. */ void PythonConsole::dragMoveEvent( QDragMoveEvent *e ) { const QMimeData* mimeData = e->mimeData(); @@ -1010,7 +1010,7 @@ void PythonConsole::dragMoveEvent( QDragMoveEvent *e ) QPlainTextEdit::dragMoveEvent(e); } -/** Dragging of action objects is allowed. */ +/** Dragging of action objects is allowed. */ void PythonConsole::dragEnterEvent (QDragEnterEvent * e) { const QMimeData* mimeData = e->mimeData(); @@ -1096,7 +1096,7 @@ QTextCursor PythonConsole::inputBegin(void) const QMimeData * PythonConsole::createMimeDataFromSelection () const { QMimeData* mime = new QMimeData(); - + switch (d->type) { case PythonConsoleP::Normal: { @@ -1138,9 +1138,9 @@ void PythonConsole::runSourceFromMimeData(const QString& source) // When inserting a big text block we must break it down into several command // blocks instead of processing the text block as a whole or each single line. // If we processed the complete block as a whole only the first valid Python - // command would be executed and the rest would be ignored. However, if we - // processed each line separately the interpreter might be confused that a block - // is complete but it might be not. This is for instance, if a class or method + // command would be executed and the rest would be ignored. However, if we + // processed each line separately the interpreter might be confused that a block + // is complete but it might be not. This is for instance, if a class or method // definition contains several empty lines which leads to error messages (almost // indentation errors) later on. QString text = source; @@ -1202,7 +1202,7 @@ void PythonConsole::runSourceFromMimeData(const QString& source) nextline = lines[k]; k++; } - + int ret = d->interpreter->compileCommand(nextline.toUtf8()); // If the line is valid, i.e. complete or incomplete the previous block @@ -1486,8 +1486,8 @@ void PythonConsoleHighlighter::highlightBlock(const QString& text) void PythonConsoleHighlighter::colorChanged(const QString& type, const QColor& col) { - Q_UNUSED(type); - Q_UNUSED(col); + Q_UNUSED(type); + Q_UNUSED(col); } // --------------------------------------------------------------------- @@ -1517,7 +1517,7 @@ bool ConsoleHistory::more() * While searching the next item, the routine respects the search prefix set by prev(). * @return true if the pointer was switched to a later item, false otherwise. */ -bool ConsoleHistory::next() +bool ConsoleHistory::next() { bool wentNext = false; @@ -1550,7 +1550,7 @@ bool ConsoleHistory::prev( const QString &prefix ) // store prefix if it's the first history access if (_it == _history.end()) { _prefix = prefix; } - + // while we didn't go back or reach history's begin ... while (!wentPrev && _it != _history.begin()) { diff --git a/src/Gui/PythonConsole.h b/src/Gui/PythonConsole.h index 17763e5097..d5e07eb0de 100644 --- a/src/Gui/PythonConsole.h +++ b/src/Gui/PythonConsole.h @@ -79,13 +79,13 @@ public: void append(const QString &inputLine); const QStringList& values() const; void restart(); - void markScratch( void ); - void doScratch( void ); + void markScratch( void ); + void doScratch( void ); private: QStringList _history; QStringList::ConstIterator _it; - int _scratchBegin; + int _scratchBegin; QString _prefix; }; @@ -102,8 +102,8 @@ public: enum Prompt { Complete = 0, Incomplete = 1, - Flush = 2, - Special = 3 + Flush = 2, + Special = 3 }; PythonConsole(QWidget *parent = 0); @@ -111,7 +111,7 @@ public: void OnChange( Base::Subject &rCaller,const char* rcReason ); void printStatement( const QString& cmd ); - QString readline( void ); + QString readline( void ); public Q_SLOTS: void onSaveHistoryAs(); @@ -131,7 +131,7 @@ protected: void dragEnterEvent ( QDragEnterEvent * e ); void dragMoveEvent ( QDragMoveEvent * e ); void changeEvent ( QEvent * e ); - void mouseReleaseEvent( QMouseEvent * e ); + void mouseReleaseEvent( QMouseEvent * e ); void overrideCursor(const QString& txt); @@ -140,7 +140,7 @@ protected: bool canInsertFromMimeData ( const QMimeData * source ) const; QMimeData * createMimeDataFromSelection () const; void insertFromMimeData ( const QMimeData * source ); - QTextCursor inputBegin( void ) const; + QTextCursor inputBegin( void ) const; private: void runSource(const QString&); @@ -153,9 +153,9 @@ private: void loadHistory() const; void saveHistory() const; -Q_SIGNALS: - void pendingSource( void ); - +Q_SIGNALS: + void pendingSource( void ); + private: struct PythonConsoleP* d; @@ -165,7 +165,7 @@ private: private: PythonConsoleHighlighter* pythonSyntax; QString *_sourceDrain; - QString _historyFile; + QString _historyFile; }; /** diff --git a/src/Gui/PythonConsolePy.cpp b/src/Gui/PythonConsolePy.cpp index 16151a8ac8..c92b65a750 100644 --- a/src/Gui/PythonConsolePy.cpp +++ b/src/Gui/PythonConsolePy.cpp @@ -102,7 +102,7 @@ Py::Object PythonStdout::write(const Py::Tuple& args) } } catch (Py::Exception& e) { - // Do not provoke error messages + // Do not provoke error messages e.clear(); } diff --git a/src/Gui/PythonConsolePy.h b/src/Gui/PythonConsolePy.h index 8060b51c07..052e6b8f2b 100644 --- a/src/Gui/PythonConsolePy.h +++ b/src/Gui/PythonConsolePy.h @@ -33,13 +33,13 @@ class PythonConsole; /** * Python class for redirection of stdout to FreeCAD's Python - * console window. This allows to show all Python messages in + * console window. This allows to show all Python messages in * the same window where the commands are performed. * @see PythonStderr * @see PythonConsole * @author Werner Mayer */ -class PythonStdout : public Py::PythonExtension +class PythonStdout : public Py::PythonExtension { private: PythonConsole* pyConsole; @@ -59,13 +59,13 @@ public: /** * Python class for redirection of stderr to FreeCAD's Python - * console window. This allows to show all Python messages in + * console window. This allows to show all Python messages in * the same window where the commands are performed. * @see PythonStdout * @see PythonConsole * @author Werner Mayer */ -class PythonStderr : public Py::PythonExtension +class PythonStderr : public Py::PythonExtension { private: PythonConsole* pyConsole; @@ -108,13 +108,13 @@ public: /** * Python class for redirection of stderr to FreeCAD's output - * console window. This allows to report all Python errors to + * console window. This allows to report all Python errors to * the output window which simplifies error tracking. * @see PythonStdout * @see PythonStderr * @author Werner Mayer */ -class OutputStderr : public Py::PythonExtension +class OutputStderr : public Py::PythonExtension { public: static void init_type(void); // announce properties and methods @@ -133,7 +133,7 @@ public: * Python class for redirection of stdin to an input dialog of Qt. * @author Werner Mayer */ -class PythonStdin : public Py::PythonExtension +class PythonStdin : public Py::PythonExtension { private: PythonConsole* pyConsole; diff --git a/src/Gui/PythonDebugger.cpp b/src/Gui/PythonDebugger.cpp index 796251741f..10f51e8119 100644 --- a/src/Gui/PythonDebugger.cpp +++ b/src/Gui/PythonDebugger.cpp @@ -301,7 +301,7 @@ Py::Object PythonDebugExcept::excepthook(const Py::Tuple& args) //get the pointer to the frame held by the bottom traceback object - this //should be where the exception occurred. tracebackobject* pTb = (tracebackobject*)tb; - while (pTb->tb_next != NULL) + while (pTb->tb_next != NULL) { pTb = pTb->tb_next; } @@ -316,7 +316,7 @@ Py::Object PythonDebugExcept::excepthook(const Py::Tuple& args) // ----------------------------------------------------- namespace Gui { -class PythonDebuggerPy : public Py::PythonExtension +class PythonDebuggerPy : public Py::PythonExtension { public: PythonDebuggerPy(PythonDebugger* d) : dbg(d), depth(0) { } diff --git a/src/Gui/PythonDebugger.h b/src/Gui/PythonDebugger.h index e3af16ebe7..8979c22c7a 100644 --- a/src/Gui/PythonDebugger.h +++ b/src/Gui/PythonDebugger.h @@ -111,7 +111,7 @@ private: /** * @author Werner Mayer */ -class GuiExport PythonDebugStdout : public Py::PythonExtension +class GuiExport PythonDebugStdout : public Py::PythonExtension { public: static void init_type(void); // announce properties and methods @@ -127,7 +127,7 @@ public: /** * @author Werner Mayer */ -class GuiExport PythonDebugStderr : public Py::PythonExtension +class GuiExport PythonDebugStderr : public Py::PythonExtension { public: static void init_type(void); // announce properties and methods @@ -142,7 +142,7 @@ public: /** * @author Werner Mayer */ -class GuiExport PythonDebugExcept : public Py::PythonExtension +class GuiExport PythonDebugExcept : public Py::PythonExtension { public: static void init_type(void); // announce properties and methods diff --git a/src/Gui/PythonEditor.cpp b/src/Gui/PythonEditor.cpp index 22f2e4c5d9..c4c5c0ac14 100644 --- a/src/Gui/PythonEditor.cpp +++ b/src/Gui/PythonEditor.cpp @@ -67,7 +67,7 @@ struct PythonEditorP /** * Constructs a PythonEditor which is a child of 'parent' and does the - * syntax highlighting for the Python language. + * syntax highlighting for the Python language. */ PythonEditor::PythonEditor(QWidget* parent) : TextEditor(parent) @@ -82,9 +82,9 @@ PythonEditor::PythonEditor(QWidget* parent) QShortcut* uncomment = new QShortcut(this); uncomment->setKey(Qt::ALT + Qt::Key_U); - connect(comment, SIGNAL(activated()), + connect(comment, SIGNAL(activated()), this, SLOT(onComment())); - connect(uncomment, SIGNAL(activated()), + connect(uncomment, SIGNAL(activated()), this, SLOT(onUncomment())); } @@ -277,7 +277,7 @@ void PythonSyntaxHighlighter::highlightBlock (const QString & text) const int DefineName = 8; // Text after the keyword def int endStateOfLastPara = previousBlockState(); - if (endStateOfLastPara < 0 || endStateOfLastPara > maximumUserState()) + if (endStateOfLastPara < 0 || endStateOfLastPara > maximumUserState()) endStateOfLastPara = Standard; while ( i < text.length() ) @@ -314,7 +314,7 @@ void PythonSyntaxHighlighter::highlightBlock (const QString & text) case '\'': { // Begin either string literal or block comment - if ((i>=2) && text.at(i-1) == QLatin1Char('\'') && + if ((i>=2) && text.at(i-1) == QLatin1Char('\'') && text.at(i-2) == QLatin1Char('\'')) { setFormat( i-2, 3, this->colorByType(SyntaxHighlighter::BlockComment)); @@ -331,9 +331,9 @@ void PythonSyntaxHighlighter::highlightBlock (const QString & text) { // ignore whitespaces } break; - case '(': case ')': case '[': case ']': - case '+': case '-': case '*': case '/': - case ':': case '%': case '^': case '~': + case '(': case ')': case '[': case ']': + case '+': case '-': case '*': case '/': + case ':': case '%': case '^': case '~': case '!': case '=': case '<': case '>': // possibly two characters { setFormat(i, 1, this->colorByType(SyntaxHighlighter::Operator)); @@ -465,10 +465,10 @@ void PythonSyntaxHighlighter::highlightBlock (const QString & text) } // only block comments can have several lines - if ( endStateOfLastPara != Blockcomment1 && endStateOfLastPara != Blockcomment2 ) + if ( endStateOfLastPara != Blockcomment1 && endStateOfLastPara != Blockcomment2 ) { endStateOfLastPara = Standard ; - } + } setCurrentBlockState(endStateOfLastPara); } diff --git a/src/Gui/PythonEditor.h b/src/Gui/PythonEditor.h index 0db11c9e01..fbb05ea42a 100644 --- a/src/Gui/PythonEditor.h +++ b/src/Gui/PythonEditor.h @@ -50,7 +50,7 @@ public: void hideDebugMarker(); public Q_SLOTS: - /** Inserts a '#' at the beginning of each selected line or the current line if + /** Inserts a '#' at the beginning of each selected line or the current line if * nothing is selected */ void onComment(); diff --git a/src/Gui/QListWidgetCustom.cpp b/src/Gui/QListWidgetCustom.cpp index 704e3e2a99..a2a41033af 100644 --- a/src/Gui/QListWidgetCustom.cpp +++ b/src/Gui/QListWidgetCustom.cpp @@ -28,7 +28,7 @@ # include #endif -#include "QListWidgetCustom.h" +#include "QListWidgetCustom.h" QListWidgetCustom::QListWidgetCustom(QWidget * parent) : QListWidget(parent) diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 6cd4287c01..4b64ecc7b2 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -309,7 +309,12 @@ QuantitySpinBox::QuantitySpinBox(QWidget *parent) iconLabel->hide(); lineEdit()->setStyleSheet(QString::fromLatin1("QLineEdit { padding-right: %1px } ").arg(iconHeight+frameWidth)); // When a style sheet is set the text margins for top/bottom must be set to avoid to squash the widget +#ifndef Q_OS_MAC lineEdit()->setTextMargins(0, 2, 0, 2); +#else + // https://forum.freecadweb.org/viewtopic.php?f=8&t=50615 + lineEdit()->setTextMargins(0, 2, 0, 0); +#endif QObject::connect(iconLabel, SIGNAL(clicked()), this, SLOT(openFormulaDialog())); } @@ -417,7 +422,7 @@ QString Gui::QuantitySpinBox::expressionText() const void Gui::QuantitySpinBox::onChange() { Q_ASSERT(isBound()); - + if (getExpression()) { std::unique_ptr result(getExpression()->eval()); NumberExpression * value = freecad_dynamic_cast(result.get()); @@ -458,7 +463,7 @@ bool QuantitySpinBox::apply(const std::string & propName) if (isBound()) { const App::ObjectIdentifier & path = getPath(); const Property * prop = path.getProperty(); - + /* Skip update if property is bound and we know it is read-only */ if (prop && prop->isReadOnly()) return true; diff --git a/src/Gui/QuantitySpinBox.h b/src/Gui/QuantitySpinBox.h index 61b9719c89..678fcb944d 100644 --- a/src/Gui/QuantitySpinBox.h +++ b/src/Gui/QuantitySpinBox.h @@ -66,7 +66,7 @@ public: /** Sets the Unit this widget is working with. * After setting the Unit the widget will only accept - * user input with this unit type. Or if the user input + * user input with this unit type. Or if the user input * a value without unit, this one will be added to the resulting * Quantity. */ @@ -79,17 +79,17 @@ public: /// Get the value of the singleStep property double singleStep() const; - /// Set the value of the singleStep property + /// Set the value of the singleStep property void setSingleStep(double val); /// Gets the value of the minimum property double minimum() const; - /// Sets the value of the minimum property + /// Sets the value of the minimum property void setMinimum(double min); /// Gets the value of the maximum property double maximum() const; - /// Sets the value of the maximum property + /// Sets the value of the maximum property void setMaximum(double max); /// Gets the number of decimals diff --git a/src/Gui/ReportView.cpp b/src/Gui/ReportView.cpp index 889d297fad..f68eae7658 100644 --- a/src/Gui/ReportView.cpp +++ b/src/Gui/ReportView.cpp @@ -50,8 +50,8 @@ using namespace Gui::DockWnd; /* TRANSLATOR Gui::DockWnd::ReportView */ /** - * Constructs a ReportView which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a ReportView which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ ReportView::ReportView( QWidget* parent ) : QWidget(parent) @@ -206,7 +206,7 @@ void ReportHighlighter::setErrorColor( const QColor& col ) // ---------------------------------------------------------- /** - * The CustomReportEvent class is used to send report events in the methods Log(), + * The CustomReportEvent class is used to send report events in the methods Log(), * Error(), Warning() and Message() of the ReportOutput class to itself instead of * printing the messages directly in its text view. * @@ -217,7 +217,7 @@ class CustomReportEvent : public QEvent { public: CustomReportEvent(ReportHighlighter::Paragraph p, const QString& s) - : QEvent(QEvent::Type(QEvent::User)) + : QEvent(QEvent::Type(QEvent::User)) { par = p; msg = s;} ~CustomReportEvent() { } @@ -348,8 +348,8 @@ PyObject* ReportOutput::Data::replace_stderr = 0; /* TRANSLATOR Gui::DockWnd::ReportOutput */ /** - * Constructs a ReportOutput which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' + * Constructs a ReportOutput which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' */ ReportOutput::ReportOutput(QWidget* parent) : QTextEdit(parent) @@ -714,7 +714,7 @@ void ReportOutput::OnChange(Base::Subject &rCaller, const char * sR else if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { int fontSize = rclGrp.GetInt("FontSize", 10); QString fontFamily = QString::fromLatin1(rclGrp.GetASCII("Font", "Courier").c_str()); - + QFont font(fontFamily, fontSize); setFont(font); QFontMetrics metric(font); diff --git a/src/Gui/ReportView.h b/src/Gui/ReportView.h index 534561fb0d..d3b204e5b7 100644 --- a/src/Gui/ReportView.h +++ b/src/Gui/ReportView.h @@ -69,8 +69,8 @@ private: */ class GuiExport ReportHighlighter : public QSyntaxHighlighter { -public: - enum Paragraph { +public: + enum Paragraph { Message = 0, /**< normal text */ Warning = 1, /**< Warning */ Error = 2, /**< Error text */ @@ -83,7 +83,7 @@ public: /** Parses the given text and highlight it in the right colors. */ void highlightBlock ( const QString & text ); - /** + /** * Sets the current paragraph type used in ReportOutput * @see ReportOutput::Message * @see ReportOutput::Warning @@ -143,11 +143,11 @@ public: /** Restore the default font settings. */ void restoreFont (); - /** Returns true whether errors are reported. */ + /** Returns true whether errors are reported. */ bool isError() const; - /** Returns true whether warnings are reported. */ + /** Returns true whether warnings are reported. */ bool isWarning() const; - /** Returns true whether log messages are reported. */ + /** Returns true whether log messages are reported. */ bool isLogMessage() const; /** Returns true whether normal messages are reported. */ bool isNormalMessage() const; @@ -193,7 +193,7 @@ private: bool blockStart; ReportHighlighter* reportHl; /**< Syntax highlighter */ int messageSize; - ParameterGrp::handle _prefs; + ParameterGrp::handle _prefs; }; /** diff --git a/src/Gui/RevitNavigationStyle.cpp b/src/Gui/RevitNavigationStyle.cpp index d48953b6d0..977d0c01a2 100644 --- a/src/Gui/RevitNavigationStyle.cpp +++ b/src/Gui/RevitNavigationStyle.cpp @@ -221,8 +221,8 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev) this->lockrecenter = true; if (!viewer->isEditing()) { // If we are in zoom or pan mode ignore RMB events otherwise - // the canvas doesn't get any release events - if (this->currentmode != NavigationStyle::ZOOMING && + // the canvas doesn't get any release events + if (this->currentmode != NavigationStyle::ZOOMING && this->currentmode != NavigationStyle::PANNING && this->currentmode != NavigationStyle::DRAGGING) { if (this->isPopupMenuEnabled()) { diff --git a/src/Gui/SceneInspector.cpp b/src/Gui/SceneInspector.cpp index 9d87cf62cc..c407118e32 100644 --- a/src/Gui/SceneInspector.cpp +++ b/src/Gui/SceneInspector.cpp @@ -52,7 +52,7 @@ SceneModel::~SceneModel() int SceneModel::columnCount (const QModelIndex & parent) const { - Q_UNUSED(parent); + Q_UNUSED(parent); return 2; } @@ -143,7 +143,7 @@ DlgInspector::DlgInspector(QWidget* parent, Qt::WindowFlags fl) ui->treeView->setRootIsDecorated(true); } -/* +/* * Destroys the object and frees any allocated resources */ DlgInspector::~DlgInspector() @@ -168,7 +168,7 @@ void DlgInspector::setNode(SoNode* node) { SceneModel* model = static_cast(ui->treeView->model()); model->setNode(node); - + QHeaderView* header = ui->treeView->header(); #if QT_VERSION >= 0x050000 header->setSectionResizeMode(0, QHeaderView::Stretch); diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index b21de2e0f3..84fa8d1b2a 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -1,5 +1,6 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel * + * Copyright (c) 2011 Jürgen Riegel * + * Copyright (c) 2011 Werner Mayer * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/Selection.h b/src/Gui/Selection.h index 22a2191bed..90f4df024b 100644 --- a/src/Gui/Selection.h +++ b/src/Gui/Selection.h @@ -1,5 +1,6 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel * + * Copyright (c) 2011 Jürgen Riegel * + * Copyright (c) 2011 Werner Mayer * * * * This file is part of the FreeCAD CAx development system. * * * @@ -79,7 +80,7 @@ public: MovePreselect, // to signal observer the mouse movement when preselect }; - SelectionChanges(MsgType type = ClrSelection, + SelectionChanges(MsgType type = ClrSelection, const char *docName=0, const char *objName=0, const char *subName=0, const char *typeName=0, float x=0, float y=0, float z=0, int subtype=0) @@ -95,8 +96,8 @@ public: } SelectionChanges(MsgType type, - const std::string &docName, - const std::string &objName, + const std::string &docName, + const std::string &objName, const std::string &subName, const std::string &typeName = std::string(), float x=0,float y=0,float z=0, int subtype=0) @@ -208,7 +209,7 @@ class GuiExport SelectionObserver public: /** Constructor - * + * * @param attach: whether to attach this observer on construction * @param resolve: sub-object resolving mode. * 0 no resolve, @@ -217,11 +218,11 @@ public: */ SelectionObserver(bool attach = true, int resolve = 1); /** Constructor - * + * * @param vp: filtering view object. * @param attach: whether to attach this observer on construction * @param resolve: sub-object resolving mode. - * 0 no resolve, + * 0 no resolve, * 1 resolve sub-object with old style element name * 2 resolve sub-object with new style element name * @@ -363,10 +364,10 @@ public: float x,y,z; }; - /// Add to selection - bool addSelection(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, + /// Add to selection + bool addSelection(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, float x=0, float y=0, float z=0, const std::vector *pickedList = 0, bool clearPreSelect=true); - bool addSelection2(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, + bool addSelection2(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, float x=0, float y=0, float z=0, const std::vector *pickedList = 0) { return addSelection(pDocName,pObjectName,pSubName,x,y,z,pickedList,false); @@ -376,10 +377,10 @@ public: bool addSelection(const SelectionObject&, bool clearPreSelect=true); /// Add to selection with several sub-elements bool addSelections(const char* pDocName, const char* pObjectName, const std::vector& pSubNames); - /// Update a selection + /// Update a selection bool updateSelection(bool show, const char* pDocName, const char* pObjectName=0, const char* pSubName=0); /// Remove from selection (for internal use) - void rmvSelection(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, + void rmvSelection(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, const std::vector *pickedList = 0); /// Set the selection for a document void setSelection(const char* pDocName, const std::vector&); @@ -388,7 +389,7 @@ public: /// Clear the selection of all documents void clearCompleteSelection(bool clearPreSelect=true); /// Check if selected - bool isSelected(const char* pDocName, const char* pObjectName=0, + bool isSelected(const char* pDocName, const char* pObjectName=0, const char* pSubName=0, int resolve=1) const; /// Check if selected bool isSelected(App::DocumentObject*, const char* pSubName=0, int resolve=1) const; @@ -396,7 +397,7 @@ public: const char *getSelectedElement(App::DocumentObject*, const char* pSubName) const; /// set the preselected object (mostly by the 3D view) - int setPreselect(const char* pDocName, const char* pObjectName, + int setPreselect(const char* pDocName, const char* pObjectName, const char* pSubName, float x=0, float y=0, float z=0, int signal=0); /// remove the present preselection void rmvPreselect(bool signal=false); @@ -428,7 +429,7 @@ public: * Does basically the same as the method above unless that it accepts a string literal as first argument. * \a typeName must be a registered type, otherwise 0 is returned. */ - unsigned int countObjectsOfType(const char* typeName, + unsigned int countObjectsOfType(const char* typeName, const char* pDocName=0, int resolve=1) const; /** Returns a vector of objects of type \a TypeName selected for the given document name \a pDocName. @@ -436,14 +437,14 @@ public: * If no objects of this document are selected an empty vector is returned. * @note The vector reflects the sequence of selection. */ - std::vector getObjectsOfType(const Base::Type& typeId, + std::vector getObjectsOfType(const Base::Type& typeId, const char* pDocName=0, int resolve=1) const; /** * Does basically the same as the method above unless that it accepts a string literal as first argument. * \a typeName must be a registered type otherwise an empty array is returned. */ - std::vector getObjectsOfType(const char* typeName, + std::vector getObjectsOfType(const char* typeName, const char* pDocName=0, int resolve=1) const; /** * A convenience template-based method that returns an array with the correct types already. @@ -480,9 +481,9 @@ public: * @param pDocName: document name. If no document name is given the objects * of the active are returned. If nothing for this Document is selected an * empty vector is returned. If document name is "*", then all document is - * considered. + * considered. * @param resolve: sub-object resolving mode - * 0 no resolve, + * 0 no resolve, * 1 resolve sub-object with old style element name * 2 resolve sub-object with new style element name * @param single: if set to true, then it will return an empty vector if @@ -496,10 +497,10 @@ public: * @param pDocName: document name. If no document name is given the objects * of the active are returned. If nothing for this Document is selected an * empty vector is returned. If document name is "*", then all document is - * considered. + * considered. * @param typeId: specify the type of object to be returned. * @param resolve: sub-object resolving mode. - * 0 no resolve, + * 0 no resolve, * 1 resolve sub-object with old style element name * 2 resolve sub-object with new style element name * @param single: if set to true, then it will return an empty vector if @@ -569,11 +570,11 @@ public: int selStackForwardSize() const {return _SelStackForward.size();} /** Obtain selected objects from stack - * + * * @param pDocName: optional filtering document, NULL for current active * document * @param resolve: sub-object resolving mode. - * 0 no resolve, + * 0 no resolve, * 1 resolve sub-object with old style element name * 2 resolve sub-object with new style element name * @param index: optional position in the stack @@ -589,7 +590,7 @@ public: */ void selStackGoBack(int count=1); - /** Go forward selection history + /** Go forward selection history * * @param count: optional number of steps to go back * @@ -709,12 +710,12 @@ protected: std::deque _SelStackBack; std::deque _SelStackForward; - int checkSelection(const char *pDocName, const char *pObjectName, + int checkSelection(const char *pDocName, const char *pObjectName, const char *pSubName,int resolve, _SelObj &sel, const std::list<_SelObj> *selList=0) const; std::vector getObjectList(const char* pDocName,Base::Type typeId, std::list<_SelObj> &objs, int resolve, bool single=false) const; - static App::DocumentObject *getObjectOfType(_SelObj &sel, Base::Type type, + static App::DocumentObject *getObjectOfType(_SelObj &sel, Base::Type type, int resolve, const char **subelement=0); static SelectionSingleton* _pcSingleton; diff --git a/src/Gui/SelectionFilter.h b/src/Gui/SelectionFilter.h index ead3b36811..c0fd212c54 100644 --- a/src/Gui/SelectionFilter.h +++ b/src/Gui/SelectionFilter.h @@ -34,19 +34,19 @@ namespace App { namespace Gui { struct Node_Block; - -/** Selection filter definition + +/** Selection filter definition * This class builds up a type/count tree out of a string - * to test very fast a selection or object/subelement type - * against it. + * to test very fast a selection or object/subelement type + * against it. * * Example strings are: - * "SELECT Part::Feature SUBELEMENT Edge", - * "SELECT Robot::RobotObject", + * "SELECT Part::Feature SUBELEMENT Edge", + * "SELECT Robot::RobotObject", * "SELECT Robot::RobotObject COUNT 1..5" */ -class GuiExport SelectionFilter +class GuiExport SelectionFilter { public: @@ -55,26 +55,26 @@ public: SelectionFilter(const std::string& filter); virtual ~SelectionFilter(); - /// Set a new filter string + /// Set a new filter string void setFilter(const char* filter); const std::string& getFilter() const { return Filter; } /** Test to current selection * This method tests the current selection set - * against the filter and returns true if the + * against the filter and returns true if the * described object(s) are selected. */ bool match(void); /** Test objects - * This method tests if a given object is described in the + * This method tests if a given object is described in the * filter. If SubName is not NULL the Subelement gets also * tested. */ bool test(App::DocumentObject*pObj, const char*sSubName); void addError(const char* e); - + friend class SelectionSingleton; std::vector > Result; @@ -92,9 +92,9 @@ protected: }; /** Filter object for the SelectionSengleton - * This object is a link between the selection - * filter class and the selection singleton. Created with a - * filter string and registered in the selection it will only + * This object is a link between the selection + * filter class and the selection singleton. Created with a + * filter string and registered in the selection it will only * allow the described object types to be selected. * @see SelectionFilter * @see SelectionSingleton @@ -141,7 +141,7 @@ private: * @see SelectionFilter * @author Werner Mayer */ -class SelectionFilterPy : public Py::PythonExtension +class SelectionFilterPy : public Py::PythonExtension { public: SelectionFilter filter; @@ -193,7 +193,7 @@ private: // === Abstract syntax tree (AST) =========================================== -struct Node_Slice +struct Node_Slice { Node_Slice(int min=1,int max=INT_MAX):Min(min),Max(max){} int Min,Max; @@ -201,7 +201,7 @@ struct Node_Slice }; -struct Node_Object +struct Node_Object { Node_Object(std::string *type,std::string *subname,Node_Slice* slc ) :Slice(slc) @@ -221,7 +221,7 @@ struct Node_Object std::string SubName; }; -struct Node_Block +struct Node_Block { Node_Block(Node_Object* obj){Objects.push_back(obj);} std::vector< Node_Object *> Objects; diff --git a/src/Gui/SelectionFilter.l b/src/Gui/SelectionFilter.l index f13dcacc1c..eda00025a7 100644 --- a/src/Gui/SelectionFilter.l +++ b/src/Gui/SelectionFilter.l @@ -1,6 +1,25 @@ %{ +/*************************************************************************** + * Copyright (c) 2010 Jürgen Riegel * + * * + * 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 * + * * + ***************************************************************************/ + /* Lexer for the FreeCAD selection filter language */ -/* Copyright (c) 2010 Jürgen Riegel LGPL */ /* flex -o lex.SelectionFilter.c SelectionFilter.l */ @@ -24,12 +43,12 @@ %option batch /* no support for include files is planned */ -%option noyywrap nounput +%option noyywrap nounput %% /*** Filter language Part ***/ - + [ \t] ; [\n]+ ; "SUBELEMENT" return TSUB; @@ -50,4 +69,4 @@ - + diff --git a/src/Gui/SelectionFilter.y b/src/Gui/SelectionFilter.y index 29b8baea9f..6f135a93f5 100644 --- a/src/Gui/SelectionFilter.y +++ b/src/Gui/SelectionFilter.y @@ -1,5 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2010 Jürgen Riegel * + * * + * 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 * + * * + ***************************************************************************/ + /* Parser for the FreeCAD selection filter language */ -/* Copyright (c) 2010 Jürgen Riegel LGPL */ /* bison -o SelectionFilter.tab.c SelectionFilter.y */ @@ -18,7 +37,7 @@ match our tokens.l lex file. We also define the node type they represent. */ -%token TIDENTIFIER +%token TIDENTIFIER %token TSUB TSELECT TCOUNT TSLICE TNAMESPACE %token TNUMBER @@ -34,24 +53,24 @@ %% - - + + type : TSELECT TIDENTIFIER { $$ = $2 } | TSELECT TIDENTIFIER TNAMESPACE TIDENTIFIER { $$ = new std::string(*$2 + "::" + *$4) } subname : { $$ = 0 } | TSUB TIDENTIFIER { $$ = $2 } - + count : { $$ = 0 } | TCOUNT TNUMBER TSLICE TNUMBER { $$ = new Node_Slice($2,$4) } | TCOUNT TNUMBER TSLICE { $$ = new Node_Slice($2) } | TCOUNT TNUMBER { $$ = new Node_Slice($2,$2) } - + matchline : type subname count { $$ = new Node_Object($1,$2,$3) } matchlines : matchline { $$ = new Node_Block($1); } | matchlines matchline { $$ = $1 ; $$->Objects.push_back($2); } - + block : matchlines { $$ = $1 } filter: block { TopBlock = $1 } diff --git a/src/Gui/SelectionObject.cpp b/src/Gui/SelectionObject.cpp index 28e7e82de3..939045fe88 100644 --- a/src/Gui/SelectionObject.cpp +++ b/src/Gui/SelectionObject.cpp @@ -77,7 +77,7 @@ const App::DocumentObject * SelectionObject::getObject(void) const return 0; } -App::DocumentObject * SelectionObject::getObject(void) +App::DocumentObject * SelectionObject::getObject(void) { if (!DocName.empty()) { App::Document *doc = App::GetApplication().getDocument(DocName.c_str()); diff --git a/src/Gui/SelectionObject.h b/src/Gui/SelectionObject.h index c4c1fd8123..bf5701886d 100644 --- a/src/Gui/SelectionObject.h +++ b/src/Gui/SelectionObject.h @@ -98,4 +98,4 @@ private: } // namespace Gui -#endif // GUI_SelectionObject_H +#endif // GUI_SelectionObject_H diff --git a/src/Gui/SelectionObjectPyImp.cpp b/src/Gui/SelectionObjectPyImp.cpp index b179a53e80..3c25efeab0 100644 --- a/src/Gui/SelectionObjectPyImp.cpp +++ b/src/Gui/SelectionObjectPyImp.cpp @@ -151,5 +151,5 @@ PyObject *SelectionObjectPy::getCustomAttributes(const char* /*attr*/) const int SelectionObjectPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Gui/SelectionView.h b/src/Gui/SelectionView.h index a6d6b962e5..ecb9a1dad5 100644 --- a/src/Gui/SelectionView.h +++ b/src/Gui/SelectionView.h @@ -43,7 +43,7 @@ namespace DockWnd { /** A test class. A more elaborate class description. */ -class SelectionView : public Gui::DockWindow, +class SelectionView : public Gui::DockWindow, public Gui::SelectionObserver { Q_OBJECT diff --git a/src/Gui/SoAxisCrossKit.cpp b/src/Gui/SoAxisCrossKit.cpp index 37eec7da33..7663505ed1 100644 --- a/src/Gui/SoAxisCrossKit.cpp +++ b/src/Gui/SoAxisCrossKit.cpp @@ -129,17 +129,17 @@ SoAxisCrossKit::SoAxisCrossKit() SO_KIT_CONSTRUCTOR(SoAxisCrossKit); // Add the parts to the catalog... - SO_KIT_ADD_CATALOG_ENTRY(xAxis, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(xAxis, SoShapeKit, true, this,"", true); - SO_KIT_ADD_CATALOG_ENTRY(xHead, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(xHead, SoShapeKit, true, this,"", true); - SO_KIT_ADD_CATALOG_ENTRY(yAxis, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(yAxis, SoShapeKit, true, this,"", true); - SO_KIT_ADD_CATALOG_ENTRY(yHead, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(yHead, SoShapeKit, true, this,"", true); - SO_KIT_ADD_CATALOG_ENTRY(zAxis, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(zAxis, SoShapeKit, true, this,"", true); - SO_KIT_ADD_CATALOG_ENTRY(zHead, SoShapeKit, + SO_KIT_ADD_CATALOG_ENTRY(zHead, SoShapeKit, true, this,"", true); SO_KIT_INIT_INSTANCE(); @@ -300,7 +300,7 @@ void SoRegPoint::GLRender(SoGLRenderAction *action) SbVec3f p1 = base.getValue(); SbVec3f p2 = p1 + normal.getValue() * length.getValue(); - + glLineWidth(1.0f); glColor3fv(color.getValue().getValue()); glBegin(GL_LINE_STRIP); diff --git a/src/Gui/SoFCBoundingBox.cpp b/src/Gui/SoFCBoundingBox.cpp index 95a67c9c0e..2a5e8c5309 100644 --- a/src/Gui/SoFCBoundingBox.cpp +++ b/src/Gui/SoFCBoundingBox.cpp @@ -93,7 +93,7 @@ SoFCBoundingBox::SoFCBoundingBox () bboxLines->coordIndex.setNum(36); bboxLines->coordIndex.setValues(0, 36, bBoxEdges); bboxSep->addChild(bboxLines); - + // create the text nodes, including a transform for each vertice offset textSep = new SoSeparator(); diff --git a/src/Gui/SoFCBoundingBox.h b/src/Gui/SoFCBoundingBox.h index 34ba8f1e88..3043ccf82f 100644 --- a/src/Gui/SoFCBoundingBox.h +++ b/src/Gui/SoFCBoundingBox.h @@ -25,7 +25,7 @@ #define COIN_SOFCBOUNDINGBOX_H #include -#include +#include #include #include #include @@ -43,7 +43,7 @@ namespace Gui { * A subclass of SoShape used to create an axis aligned wire frame box based * on the minBounds and maxBounds fields. The class also has a field which * can be toggled on or off for displaying text coordinate labels at the - * vertices of the box. + * vertices of the box. * @note Original source are taken from http://www.wheatchex.com/projects/openinventor/bbox/BoundingBox.h and * http://www.wheatchex.com/projects/openinventor/bbox/BoundingBox.cpp * @date November 12th, 2001 @@ -95,7 +95,7 @@ public: enum Modes { INCLUDE_BBOX, EXCLUDE_BBOX }; - + SoSFEnum mode; virtual void getBoundingBox(SoGetBoundingBoxAction *action); diff --git a/src/Gui/SoFCCSysDragger.h b/src/Gui/SoFCCSysDragger.h index 72929617a1..3a37df095d 100644 --- a/src/Gui/SoFCCSysDragger.h +++ b/src/Gui/SoFCCSysDragger.h @@ -138,7 +138,7 @@ private: * with *Increment for full double precision output. * * Dragger can be displayed in 2 modes: static scale and auto scale. - * For static you can set the field scale and you are done. + * For static you can set the field scale and you are done. * For autoscale you set the field scale & call setupAutoScale with * the viewer camera. @see setUpAutoScale @see scale. */ @@ -195,7 +195,7 @@ public: SoSFInt32 rotationIncrementCountZ; //!< used from outside for rotation z steps. void clearIncrementCounts(); //!< used to reset after drag update. - + /*! @brief Overall scale of dragger node. * * When using autoscale mode, this represents normalized device coordinates (0.0 to 1.0). A value @@ -207,7 +207,7 @@ public: SoIdleSensor idleSensor; //!< might be overkill, but want to make sure of performance. void setUpAutoScale(SoCamera *cameraIn); //!< used to setup the auto scaling of dragger. - + //! @name Visibility Functions //@{ void showTranslationX(); //!< show the x translation dragger. @@ -216,21 +216,21 @@ public: void hideTranslationX(); //!< hide the x translation dragger. void hideTranslationY(); //!< hide the y translation dragger. void hideTranslationZ(); //!< hide the z translation dragger. - + void showRotationX(); //!< show the x rotation dragger. void showRotationY(); //!< show the y rotation dragger. void showRotationZ(); //!< show the z rotation dragger. void hideRotationX(); //!< hide the x rotation dragger. void hideRotationY(); //!< hide the y rotation dragger. void hideRotationZ(); //!< hide the z rotation dragger. - + bool isShownTranslationX(); //!< is x translation dragger shown. bool isShownTranslationY(); //!< is y translation dragger shown. bool isShownTranslationZ(); //!< is z translation dragger shown. bool isShownRotationX(); //!< is x rotation dragger shown. bool isShownRotationY(); //!< is x rotation dragger shown. bool isShownRotationZ(); //!< is x rotation dragger shown. - + bool isHiddenTranslationX(); //!< is x translation dragger hidden. bool isHiddenTranslationY(); //!< is y translation dragger hidden. bool isHiddenTranslationZ(); //!< is z translation dragger hidden. diff --git a/src/Gui/SoFCColorBar.cpp b/src/Gui/SoFCColorBar.cpp index eabe799bf9..6a3f3e21ea 100644 --- a/src/Gui/SoFCColorBar.cpp +++ b/src/Gui/SoFCColorBar.cpp @@ -219,7 +219,7 @@ void SoFCColorBar::eventCallback(void * /*userdata*/, SoEventCallback * node) } } -void SoFCColorBar::handleEvent (SoHandleEventAction *action) +void SoFCColorBar::handleEvent (SoHandleEventAction *action) { const SoEvent * event = action->getEvent(); @@ -229,7 +229,7 @@ void SoFCColorBar::handleEvent (SoHandleEventAction *action) // calculate the mouse position relative to the colorbar // - const SbViewportRegion& vp = action->getViewportRegion(); + const SbViewportRegion& vp = action->getViewportRegion(); float fRatio = vp.getViewportAspectRatio(); SbVec2f pos = event->getNormalizedPosition(vp); float pX,pY; pos.getValue(pX,pY); diff --git a/src/Gui/SoFCDB.cpp b/src/Gui/SoFCDB.cpp index f4317678d4..3d3214962e 100644 --- a/src/Gui/SoFCDB.cpp +++ b/src/Gui/SoFCDB.cpp @@ -204,7 +204,7 @@ void Gui::SoFCDB::init() void Gui::SoFCDB::finish() { // Coin doesn't provide a mechanism to free static members of own data types. - // Hence, we need to define a static method e.g. 'finish()' for all new types + // Hence, we need to define a static method e.g. 'finish()' for all new types // to invoke the private member function 'atexit_cleanup()'. SoFCColorBarBase ::finish(); SoFCColorBar ::finish(); @@ -225,7 +225,7 @@ void Gui::SoFCDB::finish() SoFCSeparator ::finish(); SoFCSelectionRoot ::finish(); SoFCPathAnnotation ::finish(); - + storage->unref(); storage = nullptr; } diff --git a/src/Gui/SoFCDB.h b/src/Gui/SoFCDB.h index afaf6fe72a..ff92642063 100644 --- a/src/Gui/SoFCDB.h +++ b/src/Gui/SoFCDB.h @@ -56,7 +56,7 @@ public: static bool writeToFile(SoNode* node, const char* filename, bool binary); /*! container for app lifetime storage. See SoFCCSysDragger for details * on why this is needed. - */ + */ static SoGroup* getStorage(); private: diff --git a/src/Gui/SoFCOffscreenRenderer.cpp b/src/Gui/SoFCOffscreenRenderer.cpp index c09b16c019..4f86f8752b 100644 --- a/src/Gui/SoFCOffscreenRenderer.cpp +++ b/src/Gui/SoFCOffscreenRenderer.cpp @@ -162,10 +162,10 @@ void SoFCOffscreenRenderer::writeToImageFile(const char* filename, const char* c img.setText(QLatin1String("Description"), QLatin1String("Screenshot created by FreeCAD")); else if (strcmp(comment,"$MIBA")==0) img.setText(QLatin1String("Description"), QLatin1String(createMIBA(mat).c_str())); - else + else img.setText(QLatin1String("Description"), QString::fromUtf8(comment)); img.setText(QLatin1String("Creation Time"), QDateTime::currentDateTime().toString()); - img.setText(QLatin1String("Software"), + img.setText(QLatin1String("Software"), QString::fromUtf8(App::GetApplication().getExecutableName())); } @@ -238,7 +238,7 @@ QStringList SoFCOffscreenRenderer::getWriteImageFiletypeInfo() SbList extlist; # else // Coin3D >= 2.3.x SbPList extlist; -# endif +# endif #else // Coin3D >= 3.x SbPList extlist; #endif @@ -285,17 +285,17 @@ std::string SoFCOffscreenRenderer::createMIBA(const SbMatrix& mat) const com << setw(7) << setfill(' ') << fixed; com << " \n" ; com << " \n" ; - com << " \n"; - com << " \n"; + com << " \n" ; - com << " \n" ; - com << " \n" ; - com << " Unknown\n" ; - com << " " << QDateTime::currentDateTime().toString().toLatin1().constData() << "\n" ; + com << " />\n" ; + com << " \n" ; + com << " \n" ; + com << " Unknown\n" ; + com << " " << QDateTime::currentDateTime().toString().toLatin1().constData() << "\n" ; com << " " << App::GetApplication().getExecutableName() << " " << major << "." << minor << "\n" ; com << " Unknown\n"; com << " 1.0\n"; @@ -779,7 +779,7 @@ SoQtOffscreenRenderer::render(SoPath * scene) return PRIVATE(this)->renderFromBase(scene); } -/*! +/*! Writes the rendered image buffer directly into a QImage object. */ void @@ -822,7 +822,7 @@ SoQtOffscreenRenderer::writeToImage (QImage& img) const } /*! - This method returns all image file formats supported by Coin3D (see getWriteFiletypeInfo()) with all QImage file formats that are + This method returns all image file formats supported by Coin3D (see getWriteFiletypeInfo()) with all QImage file formats that are not directly supported by Coin3D, if so. */ QStringList SoQtOffscreenRenderer::getWriteImageFiletypeInfo() const diff --git a/src/Gui/SoFCOffscreenRenderer.h b/src/Gui/SoFCOffscreenRenderer.h index ce4b0ffa65..01500bdd30 100644 --- a/src/Gui/SoFCOffscreenRenderer.h +++ b/src/Gui/SoFCOffscreenRenderer.h @@ -34,7 +34,7 @@ namespace Gui { /** - * The SoFCOffscreenRenderer class is used for rendering scenes in offscreen buffers. + * The SoFCOffscreenRenderer class is used for rendering scenes in offscreen buffers. * @author Werner Mayer */ class GuiExport SoFCOffscreenRenderer : public SoOffscreenRenderer @@ -54,32 +54,32 @@ private: protected: /** - * Constructor. Argument is the \a viewportregion we should use when rendering. An internal - * SoGLRenderAction will be constructed. + * Constructor. Argument is the \a viewportregion we should use when rendering. An internal + * SoGLRenderAction will be constructed. */ SoFCOffscreenRenderer (const SbViewportRegion &viewportregion); /** - * Constructor. Argument is the \a action we should apply to the scene graph when rendering the - * scene. Information about the viewport is extracted from the \a action. + * Constructor. Argument is the \a action we should apply to the scene graph when rendering the + * scene. Information about the viewport is extracted from the \a action. */ SoFCOffscreenRenderer (SoGLRenderAction *action); /** - * Destructor. + * Destructor. */ ~SoFCOffscreenRenderer(); public: - /** + /** * Writes the rendered image buffer directly into a QImage object * instead of an image file. */ void writeToImage (QImage&) const; - /** + /** * Saves the buffer to \a filename, in the filetype specified by \a filetypeextensions. * - * Note that you must still specify the full filename for the first argument, i.e. the second argument will + * Note that you must still specify the full filename for the first argument, i.e. the second argument will * not automatically be attached to the filename -- it is only used to decide the filetype. - * + * * If \a comment is set to '$MIBA' information regarding the MIBA standard is * embedded to the picture, otherwise the \a comment is embedded as is. * The appropriate file format must support embedding meta information which @@ -90,7 +90,7 @@ public: */ void writeToImageFile(const char* filename, const char* comment, const SbMatrix& mat, const QImage& img); /** - * This method returns all image file formats supported by Coin3D (see getWriteFiletypeInfo()) with all QImage file formats that are + * This method returns all image file formats supported by Coin3D (see getWriteFiletypeInfo()) with all QImage file formats that are * not directly supported by Coin3D, if so. */ QStringList getWriteImageFiletypeInfo(); @@ -160,4 +160,4 @@ private: } // namespace Gui -#endif // GUI_SOFCOFFSCREENRENDERER_H +#endif // GUI_SOFCOFFSCREENRENDERER_H diff --git a/src/Gui/SoFCSelection.cpp b/src/Gui/SoFCSelection.cpp index 67ed645963..4523c96709 100644 --- a/src/Gui/SoFCSelection.cpp +++ b/src/Gui/SoFCSelection.cpp @@ -66,7 +66,7 @@ // // Disable front buffer in all cases, in order to spare the repeating logic of // handling selection contextn. SoFCSelection is not really used that much -// anyway. +// anyway. // // #if defined(_OCC64) // is set by configure or cmake # define NO_FRONTBUFFER @@ -261,11 +261,11 @@ void SoFCSelection::doAction(SoAction *action) if (selectionMode.getValue() == SEL_ON && action->getTypeId() == SoFCSelectionAction::getClassTypeId()) { SoFCSelectionAction *selaction = static_cast(action); - if (selaction->SelChange.Type == SelectionChanges::AddSelection || + if (selaction->SelChange.Type == SelectionChanges::AddSelection || selaction->SelChange.Type == SelectionChanges::RmvSelection) { if (documentName.getValue() == selaction->SelChange.pDocName && objectName.getValue() == selaction->SelChange.pObjectName && - (subElementName.getValue() == selaction->SelChange.pSubName || + (subElementName.getValue() == selaction->SelChange.pSubName || *(selaction->SelChange.pSubName) == '\0') ) { if (selaction->SelChange.Type == SelectionChanges::AddSelection) { if(selected.getValue() == NOTSELECTED){ @@ -286,7 +286,7 @@ void SoFCSelection::doAction(SoAction *action) if(selected.getValue() == SELECTED){ selected = NOTSELECTED; } - + } } else if (selaction->SelChange.Type == SelectionChanges::SetSelection) { @@ -324,7 +324,7 @@ int SoFCSelection::getPriority(const SoPickedPoint* p) const SoPickedPoint* SoFCSelection::getPickedPoint(SoHandleEventAction* action) const { - // To identify the picking of lines in a concave area we have to + // To identify the picking of lines in a concave area we have to // get all intersection points. If we have two or more intersection // points where the first is of a face and the second of a line with // almost similar coordinates we use the second point, instead. @@ -346,13 +346,13 @@ SoFCSelection::getPickedPoint(SoHandleEventAction* action) const //} //return pp0; - + const SoPickedPoint* picked = points[0]; int picked_prio = getPriority(picked); const SbVec3f& picked_pt = picked->getPoint(); - + for(int i=1; iredrawHighlighted(action, true); } } - + const auto &pt = pp->getPoint(); - + auto pts = schemaTranslatePoint(pt[0], pt[1], pt[2], 1e-7); snprintf(buf,512,"Preselected: %s.%s.%s (%f %s, %f %s, %f %s)" ,documentName.getValue().getString() @@ -414,7 +414,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) ,pts[0].first, pts[0].second.c_str() ,pts[1].first, pts[1].second.c_str() ,pts[2].first, pts[2].second.c_str()); - + getMainWindow()->showMessage(QString::fromUtf8(buf)); } else { // picked point @@ -506,7 +506,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) } } - action->setHandled(); + action->setHandled(); } // picked point } // mouse release } @@ -523,7 +523,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) // return; //} - + // // If this is a mouseMotion event, then check for locate highlighting // @@ -601,7 +601,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) bCtrl = false; } // mouse press events for (de)selection (only if selection is enabled on this node) - else if (event->isOfType(SoMouseButtonEvent::getClassTypeId()) && + else if (event->isOfType(SoMouseButtonEvent::getClassTypeId()) && selectionMode.getValue() == SoFCSelection::SEL_ON) { SoMouseButtonEvent * const e = (SoMouseButtonEvent *) event; if (SoMouseButtonEvent::isButtonReleaseEvent(e,SoMouseButtonEvent::BUTTON1)) { @@ -652,7 +652,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) ,objectName.getValue().getString() ,0 ,pt[0] ,pt[1] ,pt[2]); } - + if (mymode == OFF) { snprintf(buf,512,"Selected: %s.%s.%s (%g, %g, %g)",documentName.getValue().getString() ,objectName.getValue().getString() @@ -665,7 +665,7 @@ SoFCSelection::handleEvent(SoHandleEventAction * action) } } - action->setHandled(); + action->setHandled(); } // picked point } // mouse release } @@ -699,7 +699,7 @@ SoFCSelection::GLRenderBelowPath(SoGLRenderAction * action) if(this->setOverride(action,ctx)) { inherited::GLRenderBelowPath(action); state->pop(); - } else + } else inherited::GLRenderBelowPath(action); #else // Set up state for locate highlighting (if necessary) @@ -861,8 +861,8 @@ SoFCSelection::preRender(SoGLRenderAction *action, GLint &oldDepthFunc) void SoFCSelection::redrawHighlighted(SoAction * action , SbBool doHighlight ) { - Q_UNUSED(action); - Q_UNUSED(doHighlight); + Q_UNUSED(action); + Q_UNUSED(doHighlight); //Base::Console().Log("SoFCSelection::redrawHighlighted() (%p) doHigh=%d \n",this,doHighlight?1:0); #ifdef NO_FRONTBUFFER @@ -951,7 +951,7 @@ SoFCSelection::redrawHighlighted(SoAction * action , SbBool doHighlight ) #endif } -SbBool +SbBool SoFCSelection::readInstance ( SoInput * in, unsigned short flags ) { // Note: The read in document name can be false, so the caller must ensure pointing to the correct document @@ -991,15 +991,15 @@ SoFCSelection::setOverride(SoGLRenderAction * action, SelContextPtr ctx) SoMaterialBindingElement::set(state,SoMaterialBindingElement::OVERALL); SoOverrideElement::setMaterialBindingOverride(state,this,true); - + if(!preselected) SoLazyElement::setEmissive(state, &ctx->selectionColor); - else + else SoLazyElement::setEmissive(state, &ctx->highlightColor); SoOverrideElement::setEmissiveColorOverride(state, this, true); if(SoLazyElement::getLightModel(state)==SoLazyElement::BASE_COLOR - || mystyle == SoFCSelection::EMISSIVE_DIFFUSE) + || mystyle == SoFCSelection::EMISSIVE_DIFFUSE) { if(!preselected) SoLazyElement::setDiffuse(state, this,1, &ctx->selectionColor,&colorpacker); diff --git a/src/Gui/SoFCSelection.h b/src/Gui/SoFCSelection.h index 216b371a0a..c37a5f1455 100644 --- a/src/Gui/SoFCSelection.h +++ b/src/Gui/SoFCSelection.h @@ -117,7 +117,7 @@ protected: virtual void redrawHighlighted(SoAction * act, SbBool flag); - virtual SbBool readInstance(SoInput * in, unsigned short flags); + virtual SbBool readInstance(SoInput * in, unsigned short flags); private: static int getPriority(const SoPickedPoint*); diff --git a/src/Gui/SoFCSelectionAction.cpp b/src/Gui/SoFCSelectionAction.cpp index 68dc73fdf1..cd07fc627b 100644 --- a/src/Gui/SoFCSelectionAction.cpp +++ b/src/Gui/SoFCSelectionAction.cpp @@ -1,5 +1,4 @@ /*************************************************************************** - * * Copyright (c) 2005 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * @@ -184,11 +183,11 @@ void SoFCHighlightAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCSelectionAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCSelectionAction::initClass() @@ -254,7 +253,7 @@ SoFCSelectionAction::~SoFCSelectionAction() { } - + void SoFCSelectionAction::beginTraversal(SoNode *node) { traverse(node); @@ -270,11 +269,11 @@ void SoFCSelectionAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCEnableSelectionAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCEnableSelectionAction::initClass() @@ -336,7 +335,7 @@ SoFCEnableSelectionAction::~SoFCEnableSelectionAction() { } - + void SoFCEnableSelectionAction::beginTraversal(SoNode *node) { traverse(node); @@ -352,11 +351,11 @@ void SoFCEnableSelectionAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCEnableHighlightAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCEnableHighlightAction::initClass() @@ -418,7 +417,7 @@ SoFCEnableHighlightAction::~SoFCEnableHighlightAction() { } - + void SoFCEnableHighlightAction::beginTraversal(SoNode *node) { traverse(node); @@ -434,11 +433,11 @@ void SoFCEnableHighlightAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCSelectionColorAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCSelectionColorAction::initClass() @@ -500,7 +499,7 @@ SoFCSelectionColorAction::~SoFCSelectionColorAction() { } - + void SoFCSelectionColorAction::beginTraversal(SoNode *node) { traverse(node); @@ -516,11 +515,11 @@ void SoFCSelectionColorAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCHighlightColorAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCHighlightColorAction::initClass() @@ -582,7 +581,7 @@ SoFCHighlightColorAction::~SoFCHighlightColorAction() { } - + void SoFCHighlightColorAction::beginTraversal(SoNode *node) { traverse(node); @@ -598,11 +597,11 @@ void SoFCHighlightColorAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCDocumentAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCDocumentAction::initClass() @@ -664,7 +663,7 @@ SoFCDocumentAction::~SoFCDocumentAction() { } - + void SoFCDocumentAction::beginTraversal(SoNode *node) { traverse(node); @@ -681,11 +680,11 @@ void SoFCDocumentAction::callDoAction(SoAction *action,SoNode *node) SO_ACTION_SOURCE(SoFCDocumentObjectAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoFCDocumentObjectAction::initClass() @@ -766,11 +765,11 @@ SbBool SoFCDocumentObjectAction::isHandled() const SO_ACTION_SOURCE(SoGLSelectAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoGLSelectAction::initClass() @@ -842,11 +841,11 @@ SbBool SoGLSelectAction::isHandled() const SO_ACTION_SOURCE(SoVisibleFaceAction) /** - * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base - * classes and afterwards subclasses of them must be listed, otherwise the registered methods - * of subclasses will be overridden. For more details see the thread in the Coin3d forum + * The order of the defined SO_ACTION_ADD_METHOD statements is very important. First the base + * classes and afterwards subclasses of them must be listed, otherwise the registered methods + * of subclasses will be overridden. For more details see the thread in the Coin3d forum * https://www.coin3d.org/pipermail/coin-discuss/2004-May/004346.html. - * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after + * This means that \c SoSwitch must be listed after \c SoGroup and \c SoFCSelection after * \c SoSeparator because both classes inherits the others. */ void SoVisibleFaceAction::initClass() @@ -976,7 +975,7 @@ void SoUpdateVBOAction::callDoAction(SoAction *action,SoNode *node) namespace Gui { class SoBoxSelectionRenderActionP { public: - SoBoxSelectionRenderActionP(SoBoxSelectionRenderAction * master) + SoBoxSelectionRenderActionP(SoBoxSelectionRenderAction * master) : master(master) , searchaction(0) , selectsearch(0) @@ -1020,7 +1019,7 @@ public: // used to initialize the internal storage class with variables void -SoBoxSelectionRenderActionP::initBoxGraph() +SoBoxSelectionRenderActionP::initBoxGraph() { this->localRoot = new SoSeparator; this->localRoot->ref(); @@ -1052,8 +1051,8 @@ SoBoxSelectionRenderActionP::initBoxGraph() } -// used to render shape and non-shape nodes (usually SoGroup or SoSeparator). -void +// used to render shape and non-shape nodes (usually SoGroup or SoSeparator). +void SoBoxSelectionRenderActionP::updateBbox(const SoPath * path) { if (this->camerasearch == NULL) { @@ -1065,22 +1064,22 @@ SoBoxSelectionRenderActionP::updateBbox(const SoPath * path) this->camerasearch->setInterest(SoSearchAction::LAST); this->camerasearch->setType(SoCamera::getClassTypeId()); this->camerasearch->apply((SoPath*) path); - + if (!this->camerasearch->getPath()) { // if there is no camera there is no point rendering the bbox return; } this->localRoot->insertChild(this->camerasearch->getPath()->getTail(), 0); this->camerasearch->reset(); - + if (this->bboxaction == NULL) { this->bboxaction = new SoGetBoundingBoxAction(SbViewportRegion(100, 100)); } this->bboxaction->setViewportRegion(PUBLIC(this)->getViewportRegion()); this->bboxaction->apply((SoPath*) path); - + SbXfBox3f & box = this->bboxaction->getXfBoundingBox(); - + if (!box.isEmpty()) { // set cube size float x, y, z; @@ -1088,20 +1087,20 @@ SoBoxSelectionRenderActionP::updateBbox(const SoPath * path) this->cube->width = x; this->cube->height = y; this->cube->depth = z; - + SbMatrix transform = box.getTransform(); - + // get center (in the local bbox coordinate system) SbVec3f center = box.SbBox3f::getCenter(); - + // if center != (0,0,0), move the cube if (center != SbVec3f(0.0f, 0.0f, 0.0f)) { SbMatrix t; t.setTranslate(center); transform.multLeft(t); } - this->xform->matrix = transform; - + this->xform->matrix = transform; + PUBLIC(this)->SoGLRenderAction::apply(this->localRoot); } // remove camera @@ -1335,7 +1334,7 @@ SoBoxSelectionRenderAction::drawBoxes(SoPath * pathtothis, const SoPathList * pa int thispos = ((SoFullPath *)pathtothis)->getLength()-1; assert(thispos >= 0); PRIVATE(this)->postprocpath->truncate(0); // reset - + for (i = 0; i < thispos; i++) PRIVATE(this)->postprocpath->append(pathtothis->getNode(i)); diff --git a/src/Gui/SoFCSelectionAction.h b/src/Gui/SoFCSelectionAction.h index 92d650672b..4f1c36b51d 100644 --- a/src/Gui/SoFCSelectionAction.h +++ b/src/Gui/SoFCSelectionAction.h @@ -24,7 +24,7 @@ #ifndef _SoFCSelectionAction_h #define _SoFCSelectionAction_h -//#include +//#include #include #include #include @@ -65,7 +65,7 @@ private: /** * The SoFCSelectionAction class is used to inform an SoFCSelection node - * whether an object gets selected. + * whether an object gets selected. * @author Jürgen Riegel */ class GuiExport SoFCSelectionAction : public SoAction @@ -90,7 +90,7 @@ private: /** * The SoFCEnableSelectionAction class is used to inform an SoFCSelection node - * whether selection is enabled or disabled. + * whether selection is enabled or disabled. * @author Werner Mayer */ class GuiExport SoFCEnableSelectionAction : public SoAction @@ -115,7 +115,7 @@ private: /** * The SoFCEnableHighlightAction class is used to inform an SoFCSelection node - * whether preselection is enabled or disabled. + * whether preselection is enabled or disabled. * @author Werner Mayer */ class GuiExport SoFCEnableHighlightAction : public SoAction @@ -140,7 +140,7 @@ private: /** * The SoFCSelectionColorAction class is used to inform an SoFCSelection node - * which selection color is used. + * which selection color is used. * @author Werner Mayer */ class GuiExport SoFCSelectionColorAction : public SoAction @@ -165,7 +165,7 @@ private: /** * The SoFCHighlightColorAction class is used to inform an SoFCSelection node - * which preselection color is used. + * which preselection color is used. * @author Werner Mayer */ class GuiExport SoFCHighlightColorAction : public SoAction @@ -190,7 +190,7 @@ private: /** * The SoFCDocumentAction class is used to inform an SoFCSelection node - * when a document has been renamed. + * when a document has been renamed. * @author Werner Mayer */ class GuiExport SoFCDocumentAction : public SoAction @@ -370,4 +370,4 @@ private: } // namespace Gui -#endif // _SoFCSelectionAction_h +#endif // _SoFCSelectionAction_h diff --git a/src/Gui/SoFCSelectionContext.cpp b/src/Gui/SoFCSelectionContext.cpp index bd350cf5fe..e940a22c49 100644 --- a/src/Gui/SoFCSelectionContext.cpp +++ b/src/Gui/SoFCSelectionContext.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -40,7 +40,7 @@ bool SoFCSelectionContext::checkGlobal(SoFCSelectionContextPtr ctx) { bool sel = false; bool hl = false; SoFCSelectionRoot::checkSelection(sel,selectionColor,hl,highlightColor); - if(sel) + if(sel) selectionIndex.insert(-1); else if(ctx && hl) { selectionColor = ctx->selectionColor; @@ -66,7 +66,7 @@ bool SoFCSelectionContext::removeIndex(int index) { return false; } -int SoFCSelectionContext::merge(int status, SoFCSelectionContextBasePtr &output, +int SoFCSelectionContext::merge(int status, SoFCSelectionContextBasePtr &output, SoFCSelectionContextBasePtr input, SoFCSelectionRoot *) { auto ctx = std::dynamic_pointer_cast(input); @@ -172,7 +172,7 @@ bool SoFCSelectionContextEx::isSingleColor(uint32_t &color, bool &hasTransparenc return false; } -int SoFCSelectionContextEx::merge(int status, SoFCSelectionContextBasePtr &output, +int SoFCSelectionContextEx::merge(int status, SoFCSelectionContextBasePtr &output, SoFCSelectionContextBasePtr input, SoFCSelectionRoot *node) { auto ctx = std::dynamic_pointer_cast(input); @@ -243,7 +243,7 @@ SoFCSelectionCounter::~SoFCSelectionCounter() bool SoFCSelectionCounter::checkRenderCache(SoState *state) { - if(*counter || + if(*counter || (hasSelection && Selection().hasSelection()) || (hasPreselection && Selection().hasPreselection())) { diff --git a/src/Gui/SoFCSelectionContext.h b/src/Gui/SoFCSelectionContext.h index b87d013ffd..e4a8387a86 100644 --- a/src/Gui/SoFCSelectionContext.h +++ b/src/Gui/SoFCSelectionContext.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -38,7 +38,7 @@ typedef std::shared_ptr SoFCSelectionContextBasePtr; struct GuiExport SoFCSelectionContextBase { virtual ~SoFCSelectionContextBase() {} - typedef int MergeFunc(int status, SoFCSelectionContextBasePtr &output, + typedef int MergeFunc(int status, SoFCSelectionContextBasePtr &output, SoFCSelectionContextBasePtr input, SoFCSelectionRoot *node); }; diff --git a/src/Gui/SoFCUnifiedSelection.cpp b/src/Gui/SoFCUnifiedSelection.cpp index dce9ac1fac..5300e5869d 100644 --- a/src/Gui/SoFCUnifiedSelection.cpp +++ b/src/Gui/SoFCUnifiedSelection.cpp @@ -234,7 +234,7 @@ int SoFCUnifiedSelection::getPriority(const SoPickedPoint* p) return 0; } -std::vector +std::vector SoFCUnifiedSelection::getPickedList(SoHandleEventAction* action, bool singlePick) const { ViewProvider *last_vp = 0; @@ -269,14 +269,14 @@ SoFCUnifiedSelection::getPickedList(SoHandleEventAction* action, bool singlePick if(!info.vpd->getElementPicked(info.pp,info.element)) continue; - if(singlePick) + if(singlePick) last_vp = vp; ret.push_back(info); } if(ret.size()<=1) return ret; - // To identify the picking of lines in a concave area we have to + // To identify the picking of lines in a concave area we have to // get all intersection points. If we have two or more intersection // points where the first is of a face and the second of a line with // almost similar coordinates we use the second point, instead. @@ -287,7 +287,7 @@ SoFCUnifiedSelection::getPickedList(SoHandleEventAction* action, bool singlePick auto itPicked = ret.begin(); for(auto it=ret.begin()+1;it!=ret.end();++it) { auto &info = *it; - if(last_vpd != info.vpd) + if(last_vpd != info.vpd) break; int cur_prio = getPriority(info.pp); @@ -385,8 +385,8 @@ void SoFCUnifiedSelection::doAction(SoAction *action) if (action->getTypeId() == SoFCSelectionAction::getClassTypeId()) { SoFCSelectionAction *selaction = static_cast(action); - if(selectionMode.getValue() == ON - && (selaction->SelChange.Type == SelectionChanges::AddSelection + if(selectionMode.getValue() == ON + && (selaction->SelChange.Type == SelectionChanges::AddSelection || selaction->SelChange.Type == SelectionChanges::RmvSelection)) { // selection changes inside the 3d view are handled in handleEvent() @@ -456,13 +456,13 @@ void SoFCUnifiedSelection::doAction(SoAction *action) App::DocumentObject* obj = doc->getObject(selaction->SelChange.pObjectName); ViewProvider*vp = Application::Instance->getViewProvider(obj); if (vp && vp->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId()) && - (useNewSelection.getValue()||vp->useNewSelectionModel()) && vp->isSelectable()) + (useNewSelection.getValue()||vp->useNewSelectionModel()) && vp->isSelectable()) { detailPath->truncate(0); SoDetail *det = 0; if(vp->getDetailPath(selaction->SelChange.pSubName,detailPath,true,det)) { setHighlight(detailPath,det,static_cast(vp), - selaction->SelChange.pSubName, + selaction->SelChange.pSubName, selaction->SelChange.x, selaction->SelChange.y, selaction->SelChange.z); @@ -482,22 +482,22 @@ bool SoFCUnifiedSelection::setHighlight(const PickedInfo &info) { if(!info.pp) return setHighlight(0,0,0,0,0.0,0.0,0.0); const auto &pt = info.pp->getPoint(); - return setHighlight(static_cast(info.pp->getPath()), + return setHighlight(static_cast(info.pp->getPath()), info.pp->getDetail(), info.vpd, info.element.c_str(), pt[0],pt[1],pt[2]); } -bool SoFCUnifiedSelection::setHighlight(SoFullPath *path, const SoDetail *det, - ViewProviderDocumentObject *vpd, const char *element, float x, float y, float z) +bool SoFCUnifiedSelection::setHighlight(SoFullPath *path, const SoDetail *det, + ViewProviderDocumentObject *vpd, const char *element, float x, float y, float z) { Base::FlagToggler flag(setPreSelection); bool highlighted = false; - if(path && path->getLength() && - vpd && vpd->getObject() && vpd->getObject()->getNameInDocument()) + if(path && path->getLength() && + vpd && vpd->getObject() && vpd->getObject()->getNameInDocument()) { const char *docname = vpd->getObject()->getDocument()->getName(); const char *objname = vpd->getObject()->getNameInDocument(); - + this->preSelection = 1; static char buf[513]; @@ -605,7 +605,7 @@ bool SoFCUnifiedSelection::setSelection(const std::vector &infos, bo // Hierarchy ascending // // If the clicked subelement is already selected, check if there is an - // upper hierarchy, and select that hierarchy instead. + // upper hierarchy, and select that hierarchy instead. // // For example, let's suppose PickedInfo above reports // 'link.link2.box.Face1', and below Selection().getSelectedElement returns @@ -620,7 +620,7 @@ bool SoFCUnifiedSelection::setSelection(const std::vector &infos, bo const char *subSelected = Gui::Selection().getSelectedElement( vpd->getObject(),subName.c_str()); - FC_TRACE("select " << (subSelected?subSelected:"'null'") << ", " << + FC_TRACE("select " << (subSelected?subSelected:"'null'") << ", " << objectName << ", " << subName); std::string newElement; if(subSelected) { @@ -648,8 +648,8 @@ bool SoFCUnifiedSelection::setSelection(const std::vector &infos, bo hasNext = true; subName = nextsub; detailPath->truncate(0); - if(vpd->getDetailPath(subName.c_str(),detailPath,true,detNext) && - detailPath->getLength()) + if(vpd->getDetailPath(subName.c_str(),detailPath,true,detNext) && + detailPath->getLength()) { pPath = detailPath; det = detNext; @@ -660,7 +660,7 @@ bool SoFCUnifiedSelection::setSelection(const std::vector &infos, bo #if 0 // ViewProviderDocumentObject now has default implementation of getElementPicked - // If no next hierarchy is found, do another try on view provider hierarchies, + // If no next hierarchy is found, do another try on view provider hierarchies, // which is used by geo feature group. if(!hasNext) { bool found = false; @@ -687,7 +687,7 @@ bool SoFCUnifiedSelection::setSelection(const std::vector &infos, bo FC_TRACE("clearing selection"); Gui::Selection().clearSelection(); FC_TRACE("add selection"); - bool ok = Gui::Selection().addSelection(docname, objectName.c_str() ,subName.c_str(), + bool ok = Gui::Selection().addSelection(docname, objectName.c_str() ,subName.c_str(), pt[0] ,pt[1] ,pt[2], &sels); if (ok) type = hasNext?SoSelectionElementAction::All:SoSelectionElementAction::Append; @@ -749,7 +749,7 @@ SoFCUnifiedSelection::handleEvent(SoHandleEventAction * action) if (mymode == AUTO || mymode == ON) { // check to see if the mouse is over our geometry... auto infos = this->getPickedList(action,true); - if(infos.size()) + if(infos.size()) setHighlight(infos[0]); else { setHighlight(PickedInfo()); @@ -763,7 +763,7 @@ SoFCUnifiedSelection::handleEvent(SoHandleEventAction * action) } } // mouse press events for (de)selection - else if (event->isOfType(SoMouseButtonEvent::getClassTypeId()) && + else if (event->isOfType(SoMouseButtonEvent::getClassTypeId()) && selectionMode.getValue() == SoFCUnifiedSelection::ON) { const SoMouseButtonEvent* e = static_cast(event); if (SoMouseButtonEvent::isButtonReleaseEvent(e,SoMouseButtonEvent::BUTTON1)) { @@ -1006,16 +1006,16 @@ void SoVRMLAction::callDoAction(SoAction *action, SoNode *node) // --------------------------------------------------------------------------------- bool SoFCSelectionRoot::StackComp::operator()(const Stack &a, const Stack &b) const { - if(a.size()-a.offset < b.size()-b.offset) + if(a.size()-a.offset < b.size()-b.offset) return true; - if(a.size()-a.offset > b.size()-b.offset) + if(a.size()-a.offset > b.size()-b.offset) return false; - auto it1=a.rbegin(), end1=a.rend()-a.offset; + auto it1=a.rbegin(), end1=a.rend()-a.offset; auto it2=b.rbegin(); for(;it1!=end1;++it1,++it2) { - if(*it1 < *it2) + if(*it1 < *it2) return true; - if(*it1 > *it2) + if(*it1 > *it2) return false; } return false; @@ -1129,7 +1129,7 @@ void SoFCSelectionRoot::finish() } SoNode *SoFCSelectionRoot::getCurrentRoot(bool front, SoNode *def) { - if(SelStack.size()) + if(SelStack.size()) return front?SelStack.front():SelStack.back(); return def; } @@ -1149,13 +1149,13 @@ SoFCSelectionContextBasePtr SoFCSelectionRoot::getNodeContext( auto it = front->contextMap.find(stack); stack.front() = front; - if(it!=front->contextMap.end()) + if(it!=front->contextMap.end()) return it->second; return SoFCSelectionContextBasePtr(); } -SoFCSelectionContextBasePtr -SoFCSelectionRoot::getNodeContext2(Stack &stack, SoNode *node, SoFCSelectionContextBase::MergeFunc *merge) +SoFCSelectionContextBasePtr +SoFCSelectionRoot::getNodeContext2(Stack &stack, SoNode *node, SoFCSelectionContextBase::MergeFunc *merge) { SoFCSelectionContextBasePtr ret; if(stack.empty() || stack.back()->contextMap2.empty()) @@ -1191,7 +1191,7 @@ std::pair SoFCSelectionRoot::findActionContex return res; auto &stack = it->second; - + auto node = static_cast(_node); if(res.first) { @@ -1211,7 +1211,7 @@ std::pair SoFCSelectionRoot::findActionContex }else{ auto front = stack.front(); stack.front() = node; - if(create) + if(create) res.second = &front->contextMap[stack]; else { auto it = front->contextMap.find(stack); @@ -1226,7 +1226,7 @@ std::pair SoFCSelectionRoot::findActionContex return res; } -bool SoFCSelectionRoot::renderBBox(SoGLRenderAction *action, SoNode *node, SbColor color) +bool SoFCSelectionRoot::renderBBox(SoGLRenderAction *action, SoNode *node, SbColor color) { auto data = (SoFCBBoxRenderInfo*) so_bbox_storage->get(); if (data->bboxaction == NULL) { @@ -1279,7 +1279,7 @@ static std::time_t _CyclicLastReported; void SoFCSelectionRoot::renderPrivate(SoGLRenderAction * action, bool inPath) { if(ViewParams::instance()->getCoinCycleCheck() - && !SelStack.nodeSet.insert(this).second) + && !SelStack.nodeSet.insert(this).second) { std::time_t t = std::time(0); if(_CyclicLastReported < t) { @@ -1308,7 +1308,7 @@ bool SoFCSelectionRoot::_renderPrivate(SoGLRenderAction * action, bool inPath) { SelContextPtr ctx = getRenderContext(this); int style = selectionStyle.getValue(); if((style==SoFCSelectionRoot::Box || ViewParams::instance()->getShowSelectionBoundingBox()) - && ctx && !ctx->hideAll && (ctx->selAll || ctx->hlAll)) + && ctx && !ctx->hideAll && (ctx->selAll || ctx->hlAll)) { if (style==SoFCSelectionRoot::PassThrough) { style = SoFCSelectionRoot::Box; @@ -1328,7 +1328,7 @@ bool SoFCSelectionRoot::_renderPrivate(SoGLRenderAction * action, bool inPath) { // honour the secondary color override. bool colorPushed = false; - if(!ShapeColorNode && overrideColor && + if(!ShapeColorNode && overrideColor && !SoOverrideElement::getDiffuseColorOverride(state) && (style==SoFCSelectionRoot::Box || !ctx || (!ctx->selAll && !ctx->hideAll))) { @@ -1376,7 +1376,7 @@ bool SoFCSelectionRoot::_renderPrivate(SoGLRenderAction * action, bool inPath) { } } - if((hlPushed = ctx->hlAll)) + if((hlPushed = ctx->hlAll)) HlColorStack.push_back(ctx->hlColor); if(inPath) @@ -1558,8 +1558,8 @@ bool SoFCSelectionRoot::doActionPrivate(Stack &stack, SoAction *action) { if(action->getCurPathCode()==SoAction::IN_PATH) { auto path = action->getPathAppliedTo(); if(path) { - isTail = path->getTail()==this || - (path->getLength()>1 + isTail = path->getTail()==this || + (path->getLength()>1 && path->getNodeFromTail(1)==this && path->getTail()->isOfType(SoSwitch::getClassTypeId())); } @@ -1579,7 +1579,7 @@ bool SoFCSelectionRoot::doActionPrivate(Stack &stack, SoAction *action) { auto selAction = static_cast(action); if(selAction->isSecondary()) { if(selAction->getType() == SoSelectionElementAction::Show || - (selAction->getType() == SoSelectionElementAction::Color && + (selAction->getType() == SoSelectionElementAction::Color && selAction->getColors().empty() && action->getWhatAppliedTo()==SoAction::NODE)) { @@ -1606,8 +1606,8 @@ bool SoFCSelectionRoot::doActionPrivate(Stack &stack, SoAction *action) { } } return true; - } - + } + if(selAction->getType() == SoSelectionElementAction::None) { if(action->getWhatAppliedTo() == SoAction::NODE) { // Here the 'select none' action is applied to a node, and we @@ -1675,7 +1675,7 @@ bool SoFCSelectionRoot::doActionPrivate(Stack &stack, SoAction *action) { return true; } -int SoFCSelectionRoot::SelContext::merge(int status, SoFCSelectionContextBasePtr &output, +int SoFCSelectionRoot::SelContext::merge(int status, SoFCSelectionContextBasePtr &output, SoFCSelectionContextBasePtr input, SoFCSelectionRoot *) { auto ctx = std::dynamic_pointer_cast(input); @@ -1705,7 +1705,7 @@ SoFCPathAnnotation::~SoFCPathAnnotation() delete det; } -void SoFCPathAnnotation::finish() +void SoFCPathAnnotation::finish() { atexit_cleanup(); } diff --git a/src/Gui/SoFCUnifiedSelection.h b/src/Gui/SoFCUnifiedSelection.h index 45f1757f76..0745d01359 100644 --- a/src/Gui/SoFCUnifiedSelection.h +++ b/src/Gui/SoFCUnifiedSelection.h @@ -47,10 +47,10 @@ class Document; class ViewProviderDocumentObject; /** Unified Selection node - * This is the new selection node for the 3D Viewer which will + * This is the new selection node for the 3D Viewer which will * gradually remove all the low level selection nodes in the view * provider. The handling of the highlighting and the selection will - * be unified here. + * be unified here. * \author Jürgen Riegel */ class GuiExport SoFCUnifiedSelection : public SoSeparator { @@ -93,7 +93,7 @@ public: protected: virtual ~SoFCUnifiedSelection(); //virtual void redrawHighlighted(SoAction * act, SbBool flag); - //virtual SbBool readInstance(SoInput * in, unsigned short flags); + //virtual SbBool readInstance(SoInput * in, unsigned short flags); private: //static void turnoffcurrent(SoAction * action); @@ -111,7 +111,7 @@ private: }; bool setHighlight(const PickedInfo &); - bool setHighlight(SoFullPath *path, const SoDetail *det, + bool setHighlight(SoFullPath *path, const SoDetail *det, ViewProviderDocumentObject *vpd, const char *element, float x, float y, float z); bool setSelection(const std::vector &, bool ctrlDown=false); @@ -186,7 +186,7 @@ class GuiExport SoFCSelectionRoot : public SoFCSeparator { typedef SoFCSeparator inherited; SO_NODE_HEADER(Gui::SoFCSelectionRoot); - + public: static void initClass(void); static void finish(void); @@ -210,7 +210,7 @@ public: return std::dynamic_pointer_cast(getNodeContext(SelStack,node,def)); } - /** Returns selection context for rendering. + /** Returns selection context for rendering. * * @param node: the querying node * @param def: default context if none is found @@ -219,12 +219,12 @@ public: * @return Returned the primary context for selection, and the context is * always stored in the first encountered SoFCSelectionRoot in the path. It * is keyed using the entire sequence of SoFCSelectionRoot along the path - * to \c node, replacing the first SoFCSelectionRoot with the given node. + * to \c node, replacing the first SoFCSelectionRoot with the given node. * * @return Secondary context returned in \c ctx2 is for customized * highlighting, and is not affected by mouse event. The highlight is * applied manually using SoSelectionElementAction. It is stored in the - * last encountered SoFCSelectionRoot, and is keyed using the querying + * last encountered SoFCSelectionRoot, and is keyed using the querying * \c node and (if there are more than one SoFCSelectionRoot along the * path) the first SoFCSelectionRoot. The reason is so that any link to a * node (new links means additional SoFCSelectionRoot added in front) with @@ -238,13 +238,13 @@ public: * when the storage SoFCSSelectionRoot node is freed. */ template - static std::shared_ptr getRenderContext(SoNode *node, std::shared_ptr def, std::shared_ptr &ctx2) + static std::shared_ptr getRenderContext(SoNode *node, std::shared_ptr def, std::shared_ptr &ctx2) { ctx2 = std::dynamic_pointer_cast(getNodeContext2(SelStack,node,T::merge)); return std::dynamic_pointer_cast(getNodeContext(SelStack,node,def)); } - /** Get the selection context for an action. + /** Get the selection context for an action. * * @param action: the action. SoSelectionElementAction has any option to * query for secondary context. \sa getRenderContext for detail about @@ -260,7 +260,7 @@ public: */ template static std::shared_ptr getActionContext( - SoAction *action, SoNode *node, std::shared_ptr def=std::shared_ptr(), bool create=true) + SoAction *action, SoNode *node, std::shared_ptr def=std::shared_ptr(), bool create=true) { auto res = findActionContext(action,node,create,false); if(!res.second) { @@ -276,7 +276,7 @@ public: if(!ret) ctx.reset(); } - if(!ctx && create) + if(!ctx && create) ctx = std::make_shared(); return std::static_pointer_cast(ctx); } diff --git a/src/Gui/SoFCVectorizeSVGAction.cpp b/src/Gui/SoFCVectorizeSVGAction.cpp index 490ccebf40..eb75c76740 100644 --- a/src/Gui/SoFCVectorizeSVGAction.cpp +++ b/src/Gui/SoFCVectorizeSVGAction.cpp @@ -202,7 +202,7 @@ void SoFCVectorizeSVGActionP::printText(const SoVectorizeText * item) const std::ostream& str = publ->getSVGOutput()->getFileStream(); str << "fontsize * mul[1] << "px\">" + "font-size=\"" << item->fontsize * mul[1] << "px\">" << item->string.getString() << "" << std::endl; } @@ -246,7 +246,7 @@ Separator { Material { diffuseColor [ 1 1 0, 0 0 1, 1 0 0 ] } - + MaterialBinding { value PER_VERTEX } @@ -314,17 +314,17 @@ void SoFCVectorizeSVGActionP::printTriangle(const SbVec3f * v, const SbColor * c void SoFCVectorizeSVGActionP::printCircle(const SbVec3f & v, const SbColor & c, const float radius) const { // todo - Q_UNUSED(v); - Q_UNUSED(c); - Q_UNUSED(radius); + Q_UNUSED(v); + Q_UNUSED(c); + Q_UNUSED(radius); } void SoFCVectorizeSVGActionP::printSquare(const SbVec3f & v, const SbColor & c, const float size) const { // todo - Q_UNUSED(v); - Q_UNUSED(c); - Q_UNUSED(size); + Q_UNUSED(v); + Q_UNUSED(c); + Q_UNUSED(size); } void SoFCVectorizeSVGActionP::printLine(const SoVectorizeLine * item) const @@ -359,13 +359,13 @@ void SoFCVectorizeSVGActionP::printLine(const SoVectorizeLine * item) const void SoFCVectorizeSVGActionP::printPoint(const SoVectorizePoint * item) const { // todo - Q_UNUSED(item); + Q_UNUSED(item); } void SoFCVectorizeSVGActionP::printImage(const SoVectorizeImage * item) const { // todo - Q_UNUSED(item); + Q_UNUSED(item); } // ------------------------------------------------------- diff --git a/src/Gui/SoFCVectorizeSVGAction.h b/src/Gui/SoFCVectorizeSVGAction.h index 9728d13423..734d2f9e8b 100644 --- a/src/Gui/SoFCVectorizeSVGAction.h +++ b/src/Gui/SoFCVectorizeSVGAction.h @@ -63,11 +63,11 @@ public: SoSVGVectorOutput * getSVGOutput(void) const; virtual void setBackgroundState(bool b) { m_backgroundState = b; } - virtual bool getBackgroundState(void) const { return m_backgroundState; } + virtual bool getBackgroundState(void) const { return m_backgroundState; } virtual void setLineWidth(double w) { m_lineWidth = w; } - virtual double getLineWidth(void) const { return m_lineWidth; } + virtual double getLineWidth(void) const { return m_lineWidth; } virtual void setUseMM(bool b) { m_usemm = b; } - virtual bool getUseMM(void) const { return m_usemm; } + virtual bool getUseMM(void) const { return m_usemm; } protected: virtual void printHeader(void) const; diff --git a/src/Gui/SoFCVectorizeU3DAction.cpp b/src/Gui/SoFCVectorizeU3DAction.cpp index 7dd04c5b18..b2c3a52efe 100644 --- a/src/Gui/SoFCVectorizeU3DAction.cpp +++ b/src/Gui/SoFCVectorizeU3DAction.cpp @@ -202,7 +202,7 @@ void SoFCVectorizeU3DActionP::printText(const SoVectorizeText * item) const //std::ostream& str = publ->getU3DOutput()->getFileStream(); // todo - Q_UNUSED(item); + Q_UNUSED(item); } void SoFCVectorizeU3DActionP::printTriangle(const SoVectorizeTriangle * item) const @@ -232,23 +232,23 @@ void SoFCVectorizeU3DActionP::printTriangle(const SbVec3f * v, const SbColor * c //std::ostream& str = publ->getU3DOutput()->getFileStream(); // todo - Q_UNUSED(c); + Q_UNUSED(c); } void SoFCVectorizeU3DActionP::printCircle(const SbVec3f & v, const SbColor & c, const float radius) const { // todo - Q_UNUSED(v); - Q_UNUSED(c); - Q_UNUSED(radius); + Q_UNUSED(v); + Q_UNUSED(c); + Q_UNUSED(radius); } void SoFCVectorizeU3DActionP::printSquare(const SbVec3f & v, const SbColor & c, const float size) const { // todo - Q_UNUSED(v); - Q_UNUSED(c); - Q_UNUSED(size); + Q_UNUSED(v); + Q_UNUSED(c); + Q_UNUSED(size); } void SoFCVectorizeU3DActionP::printLine(const SoVectorizeLine * item) const @@ -272,19 +272,19 @@ void SoFCVectorizeU3DActionP::printLine(const SoVectorizeLine * item) const //std::ostream& str = publ->getU3DOutput()->getFileStream(); // todo - Q_UNUSED(item); + Q_UNUSED(item); } void SoFCVectorizeU3DActionP::printPoint(const SoVectorizePoint * item) const { // todo - Q_UNUSED(item); + Q_UNUSED(item); } void SoFCVectorizeU3DActionP::printImage(const SoVectorizeImage * item) const { // todo - Q_UNUSED(item); + Q_UNUSED(item); } // ------------------------------------------------------- @@ -318,8 +318,8 @@ SoFCVectorizeU3DAction::getU3DOutput(void) const void SoFCVectorizeU3DAction::actionMethod(SoAction * a, SoNode * n) { - Q_UNUSED(a); - Q_UNUSED(n); + Q_UNUSED(a); + Q_UNUSED(n); } void SoFCVectorizeU3DAction::beginTraversal(SoNode * node) diff --git a/src/Gui/SoMouseWheelEvent.cpp b/src/Gui/SoMouseWheelEvent.cpp index 10d694b508..1eb55eefa5 100644 --- a/src/Gui/SoMouseWheelEvent.cpp +++ b/src/Gui/SoMouseWheelEvent.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (c) Victor Titov (DeepSOIC) * - * (vv.titov@gmail.com) 2020 * + * Copyright (c) 2020 Victor Titov (DeepSOIC) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/SoMouseWheelEvent.h b/src/Gui/SoMouseWheelEvent.h index 043c6070bd..a08b49a7b8 100644 --- a/src/Gui/SoMouseWheelEvent.h +++ b/src/Gui/SoMouseWheelEvent.h @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (c) Victor Titov (DeepSOIC) * - * (vv.titov@gmail.com) 2020 * + * Copyright (c) 2020 Victor Titov (DeepSOIC) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/SoNavigationDragger.cpp b/src/Gui/SoNavigationDragger.cpp index 9f4693ad5d..3f7ee2a8cc 100644 --- a/src/Gui/SoNavigationDragger.cpp +++ b/src/Gui/SoNavigationDragger.cpp @@ -40,7 +40,7 @@ // Include file the binaray of SoNavigationDraggerLayout.iv, the layout of the dragger. #include "SoNavigationDraggerLayout.h" -// This file contains RotTransDragger::geomBuffer, which +// This file contains RotTransDragger::geomBuffer, which // describes the default geometry resources for this class. //#include "RotTransDraggerGeom.h" @@ -52,14 +52,14 @@ SO_KIT_SOURCE(RotTransDragger) void RotTransDragger::initClass() { - SO_KIT_INIT_CLASS(RotTransDragger, SoDragger, "Dragger"); + SO_KIT_INIT_CLASS(RotTransDragger, SoDragger, "Dragger"); } RotTransDragger::RotTransDragger() { SO_KIT_CONSTRUCTOR(RotTransDragger); - // Don't create "surroundScale" by default. It's only put + // Don't create "surroundScale" by default. It's only put // to use if this dragger is used within a manipulator. SO_KIT_ADD_CATALOG_ENTRY(surroundScale, SoSurroundScale, true, topSeparator, geomSeparator, true); @@ -92,7 +92,7 @@ RotTransDragger::RotTransDragger() // scene graphs in the file: // $(SO_DRAGGER_DIR)/rotTransDragger.iv" if (SO_KIT_IS_FIRST_INSTANCE()) - readDefaultParts("SoNavigationDraggerLayout.iv", + readDefaultParts("SoNavigationDraggerLayout.iv", NavigationDraggerLayout, strlen(NavigationDraggerLayout)); @@ -109,37 +109,37 @@ RotTransDragger::RotTransDragger() myAntiSquish->sizing = SoAntiSquish::BIGGEST_DIMENSION; // Create the simple draggers that comprise this dragger. - // This dragger has four simple pieces: + // This dragger has four simple pieces: // 1 TranslateRadialDragger // 3 RotateCylindricalDraggers // In the constructor, we just call SO_GET_ANY_PART to // build each dragger. // Within the setUpConnections() method, we will - // take care of giving these draggers new geometry and + // take care of giving these draggers new geometry and // establishing their callbacks. - // Create the translator dragger. - SoDragger *tDragger = SO_GET_ANY_PART(this, "translator", + // Create the translator dragger. + SoDragger *tDragger = SO_GET_ANY_PART(this, "translator", SoTranslate1Dragger); (void)tDragger; - // Create the XRotator dragger. - SoDragger *XDragger = SO_GET_ANY_PART(this, "XRotator", + // Create the XRotator dragger. + SoDragger *XDragger = SO_GET_ANY_PART(this, "XRotator", SoRotateCylindricalDragger); (void)XDragger; - // Create the YRotator dragger. - SoDragger *YDragger = SO_GET_ANY_PART(this, "YRotator", + // Create the YRotator dragger. + SoDragger *YDragger = SO_GET_ANY_PART(this, "YRotator", SoRotateCylindricalDragger); (void)YDragger; - // Create the ZRotator dragger. - SoDragger *ZDragger = SO_GET_ANY_PART(this, "ZRotator", + // Create the ZRotator dragger. + SoDragger *ZDragger = SO_GET_ANY_PART(this, "ZRotator", SoRotateCylindricalDragger); (void)ZDragger; // Set rotations in "XRotatorRot" and "ZRotatorRot" parts. - // These parts will orient the draggers from their default + // These parts will orient the draggers from their default // (rotating about Y) to the desired configurations. // By calling 'setAnyPartAsDefault' instead of 'setAnyPart' // we ensure that they will not be written out, unless @@ -154,7 +154,7 @@ RotTransDragger::RotTransDragger() SbRotation(SbVec3f(0,1,0), SbVec3f(0,0,1))); setAnyPartAsDefault("ZRotatorRot", ZRot); - // Updates the fields when motionMatrix changes + // Updates the fields when motionMatrix changes addValueChangedCallback(&RotTransDragger::valueChangedCB); // Updates motionMatrix when either field changes. @@ -187,18 +187,18 @@ RotTransDragger::setUpConnections(SbBool onOff, SbBool doItAlways) SoDragger::setUpConnections(onOff, doItAlways); // For each of the simple draggers that compries this: - // [a]Call setPart after looking up our replacement parts + // [a]Call setPart after looking up our replacement parts // in the global dictionary. // [b]Add the invalidateSurroundScaleCB as a start and end - // callback. When using a surroundScale node, these - // trigger it to recalculate a bounding box at the + // callback. When using a surroundScale node, these + // trigger it to recalculate a bounding box at the // beginning and end of dragging. - // [c]Register the dragger as a 'childDragger' of this - // one. This has the following effects: - // [1] This dragger's callbacks will be invoked - // following the child manip's callbacks. - // [2] When the child is dragged, the child's motion - // will be transferred into motion of the entire + // [c]Register the dragger as a 'childDragger' of this + // one. This has the following effects: + // [1] This dragger's callbacks will be invoked + // following the child manip's callbacks. + // [2] When the child is dragged, the child's motion + // will be transferred into motion of the entire // dragger. SoDragger *tD = (SoDragger *) getAnyPart("translator", false); @@ -369,9 +369,9 @@ RotTransDragger::fieldSensorCB(void *inDragger, SoSensor *) } // When any child dragger starts or ends a drag, tell the -// "surroundScale" part (if it exists) to invalidate its +// "surroundScale" part (if it exists) to invalidate its // current bounding box value. -void +void RotTransDragger::invalidateSurroundScaleCB(void *parent, SoDragger *) { RotTransDragger *myParentDragger = (RotTransDragger *) parent; @@ -386,7 +386,7 @@ RotTransDragger::invalidateSurroundScaleCB(void *parent, SoDragger *) void RotTransDragger::setDefaultOnNonWritingFields() { - // The nodes pointed to by these part-fields may + // The nodes pointed to by these part-fields may // change after construction, but we // don't want to write them out. surroundScale.setDefault(true); diff --git a/src/Gui/SoNavigationDragger.h b/src/Gui/SoNavigationDragger.h index 5698cbf1b5..f5c8391ec7 100644 --- a/src/Gui/SoNavigationDragger.h +++ b/src/Gui/SoNavigationDragger.h @@ -19,10 +19,10 @@ * Suite 330, Boston, MA 02111-1307, USA * * * ***************************************************************************/ - - -#ifndef SONAVIGATIONDRAGGER_H -#define SONAVIGATIONDRAGGER_H + + +#ifndef SONAVIGATIONDRAGGER_H +#define SONAVIGATIONDRAGGER_H // Geometry resources and part names for this dragger: @@ -59,8 +59,8 @@ class RotTransDragger : public SoDragger // The translating dragger... SO_KIT_CATALOG_ENTRY_HEADER(translator); - // The X and Z rotators need to be turned so as to orient - // correctly. So create a separator part and put an + // The X and Z rotators need to be turned so as to orient + // correctly. So create a separator part and put an // SoRotation node and the dragger underneath. SO_KIT_CATALOG_ENTRY_HEADER(XRotatorSep); SO_KIT_CATALOG_ENTRY_HEADER(XRotatorRot); @@ -73,7 +73,7 @@ class RotTransDragger : public SoDragger SO_KIT_CATALOG_ENTRY_HEADER(ZRotator); public: - + // Constructor RotTransDragger(); @@ -86,13 +86,13 @@ class RotTransDragger : public SoDragger protected: - // These sensors ensure that the motionMatrix is updated + // These sensors ensure that the motionMatrix is updated // when the fields are changed from outside. SoFieldSensor *rotFieldSensor; SoFieldSensor *translFieldSensor; static void fieldSensorCB(void *, SoSensor *); - // This function is invoked by the child draggers when they + // This function is invoked by the child draggers when they // change their value. static void valueChangedCB(void *, SoDragger *); @@ -105,7 +105,7 @@ class RotTransDragger : public SoDragger // and at the start/end of SoBaseKit::readInstance() // and on the new copy at the start/end of SoBaseKit::copy() // Returns the state of the node when this was called. - virtual SbBool setUpConnections( SbBool onOff, + virtual SbBool setUpConnections( SbBool onOff, SbBool doItAlways = false); // This allows us to specify that certain parts do not @@ -119,7 +119,7 @@ class RotTransDragger : public SoDragger // Destructor. ~RotTransDragger(); -}; - -#endif //SONAVIGATIONDRAGGER_H - +}; + +#endif //SONAVIGATIONDRAGGER_H + diff --git a/src/Gui/SoNavigationDraggerLayout.h b/src/Gui/SoNavigationDraggerLayout.h index c9eb67ccc0..629ba9027c 100644 --- a/src/Gui/SoNavigationDraggerLayout.h +++ b/src/Gui/SoNavigationDraggerLayout.h @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2011 Werner Mayer * + * * + * 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 * + * * + ***************************************************************************/ + const char RotTransDragger::NavigationDraggerLayout[] = "\n" "\n" diff --git a/src/Gui/SoTextLabel.cpp b/src/Gui/SoTextLabel.cpp index 8d254342d3..e15d484f1f 100644 --- a/src/Gui/SoTextLabel.cpp +++ b/src/Gui/SoTextLabel.cpp @@ -205,7 +205,7 @@ void SoTextLabel::GLRender(SoGLRenderAction *action) } #else // Unfortunately, the required size (in pixels) is stored in a non-accessible way - // in the subclass SoText2. Thus, we try to get a satisfactory solution with Qt + // in the subclass SoText2. Thus, we try to get a satisfactory solution with Qt // methods. // The font name is of the form "family:style". If 'style' is given it can be // 'Bold', 'Italic' or 'Bold Italic'. @@ -282,7 +282,7 @@ void SoTextLabel::GLRender(SoGLRenderAction *action) glPopClientAttrib(); glPopAttrib(); state->pop(); - + glPixelStorei(GL_UNPACK_ALIGNMENT,4); // Pop old GL matrix state. glMatrixMode(GL_PROJECTION); diff --git a/src/Gui/SoTouchEvents.cpp b/src/Gui/SoTouchEvents.cpp index 0e1bf608fe..4a34583d35 100644 --- a/src/Gui/SoTouchEvents.cpp +++ b/src/Gui/SoTouchEvents.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (c) Victor Titov (DeepSOIC) * - * (vv.titov@gmail.com) 2015 * + * Copyright (c) 2015 Victor Titov (DeepSOIC) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -42,7 +41,7 @@ SO_EVENT_SOURCE(SoGesturePanEvent); SoGesturePanEvent::SoGesturePanEvent(QPanGesture* qpan, QWidget *widget) { - Q_UNUSED(widget); + Q_UNUSED(widget); totalOffset = SbVec2f(qpan->offset().x(), -qpan->offset().y()); deltaOffset = SbVec2f(qpan->delta().x(), -qpan->delta().y()); state = SbGestureState(qpan->state()); @@ -120,7 +119,7 @@ SO_EVENT_SOURCE(SoGestureSwipeEvent); SoGestureSwipeEvent::SoGestureSwipeEvent(QSwipeGesture *qwsipe, QWidget *widget) { - Q_UNUSED(widget); + Q_UNUSED(widget); angle = qwsipe->swipeAngle(); switch (qwsipe->verticalDirection()){ case QSwipeGesture::Up : diff --git a/src/Gui/SoTouchEvents.h b/src/Gui/SoTouchEvents.h index 980931709e..ccba4add80 100644 --- a/src/Gui/SoTouchEvents.h +++ b/src/Gui/SoTouchEvents.h @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (c) Victor Titov (DeepSOIC) * - * (vv.titov@gmail.com) 2015 * + * Copyright (c) 2015 Victor Titov (DeepSOIC) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/SpinBox.cpp b/src/Gui/SpinBox.cpp index e751c149f7..428e65440c 100644 --- a/src/Gui/SpinBox.cpp +++ b/src/Gui/SpinBox.cpp @@ -249,7 +249,7 @@ int UIntSpinBox::valueFromText (const QString & text) const return d->mapToInt(newVal); } -void UIntSpinBox::updateValidator() +void UIntSpinBox::updateValidator() { d->mValidator->setRange(this->minimum(), this->maximum()); } @@ -281,7 +281,7 @@ void UIntSpinBox::setExpression(boost::shared_ptr expr) } void UIntSpinBox::onChange() { - + if (getExpression()) { std::unique_ptr result(getExpression()->eval()); NumberExpression * value = freecad_dynamic_cast(result.get()); @@ -454,7 +454,7 @@ IntSpinBox::~IntSpinBox() { bool IntSpinBox::apply(const std::string& propName) { - + if (!ExpressionBinding::apply(propName)) { Gui::Command::doCommand(Gui::Command::Doc, "%s = %d", propName.c_str(), value()); return true; @@ -464,7 +464,7 @@ bool IntSpinBox::apply(const std::string& propName) { } void IntSpinBox::bind(const ObjectIdentifier& _path) { - + ExpressionBinding::bind(_path); int frameWidth = style()->pixelMetric(QStyle::PM_SpinBoxFrameWidth); @@ -490,7 +490,7 @@ void IntSpinBox::setExpression(boost::shared_ptr expr) } void IntSpinBox::onChange() { - + if (getExpression()) { std::unique_ptr result(getExpression()->eval()); NumberExpression * value = freecad_dynamic_cast(result.get()); @@ -647,7 +647,7 @@ DoubleSpinBox::~DoubleSpinBox() { bool DoubleSpinBox::apply(const std::string& propName) { - + if (!ExpressionBinding::apply(propName)) { Gui::Command::doCommand(Gui::Command::Doc, "%s = %f", propName.c_str(), value()); return true; @@ -657,7 +657,7 @@ bool DoubleSpinBox::apply(const std::string& propName) { } void DoubleSpinBox::bind(const ObjectIdentifier& _path) { - + ExpressionBinding::bind(_path); int frameWidth = style()->pixelMetric(QStyle::PM_SpinBoxFrameWidth); @@ -683,7 +683,7 @@ void DoubleSpinBox::setExpression(boost::shared_ptr expr) } void DoubleSpinBox::onChange() { - + if (getExpression()) { std::unique_ptr result(getExpression()->eval()); NumberExpression * value = freecad_dynamic_cast(result.get()); diff --git a/src/Gui/SpinBox.h b/src/Gui/SpinBox.h index 7369fe08f4..90a16c5f28 100644 --- a/src/Gui/SpinBox.h +++ b/src/Gui/SpinBox.h @@ -107,7 +107,7 @@ private Q_SLOTS: protected: virtual QString textFromValue ( int v ) const; virtual int valueFromText ( const QString & text ) const; - virtual void onChange(); + virtual void onChange(); private: void updateValidator(); @@ -142,7 +142,7 @@ private Q_SLOTS: }; /** - * The DoubleSpinBox class does exactly the same as Qt's QDoubleSpinBox but has expression + * The DoubleSpinBox class does exactly the same as Qt's QDoubleSpinBox but has expression * support * @author Stefan Tröger */ diff --git a/src/Gui/Splashscreen.cpp b/src/Gui/Splashscreen.cpp index c9cb160005..de1b9ca4ec 100644 --- a/src/Gui/Splashscreen.cpp +++ b/src/Gui/Splashscreen.cpp @@ -755,11 +755,11 @@ void AboutDialog::on_copyButton_clicked() QString major = QString::fromLatin1(config["BuildVersionMajor"].c_str()); QString minor = QString::fromLatin1(config["BuildVersionMinor"].c_str()); QString build = QString::fromLatin1(config["BuildRevision"].c_str()); - + QString deskEnv = QProcessEnvironment::systemEnvironment().value(QString::fromLatin1("XDG_CURRENT_DESKTOP"),QString::fromLatin1("")); QString deskSess = QProcessEnvironment::systemEnvironment().value(QString::fromLatin1("DESKTOP_SESSION"),QString::fromLatin1("")); QString deskInfo = QString::fromLatin1(""); - + if (!(deskEnv == QString::fromLatin1("") && deskSess == QString::fromLatin1(""))) { if (deskEnv == QString::fromLatin1("") || deskSess == QString::fromLatin1("")) @@ -772,9 +772,9 @@ void AboutDialog::on_copyButton_clicked() deskInfo = QString::fromLatin1(" (") + deskEnv + QString::fromLatin1("/") + deskSess + QString::fromLatin1(")"); } } - + str << "OS: " << SystemInfo::getOperatingSystem() << deskInfo << '\n'; - + int wordSize = SystemInfo::getWordSizeOfOS(); if (wordSize > 0) { str << "Word size of OS: " << wordSize << "-bit\n"; diff --git a/src/Gui/Splashscreen.h b/src/Gui/Splashscreen.h index 0baa568c1e..9b3fc1a130 100644 --- a/src/Gui/Splashscreen.h +++ b/src/Gui/Splashscreen.h @@ -87,8 +87,8 @@ private: QTextBrowser* browser; }; -/** This widget provides the "About dialog" of an application. - * This shows the current version, the build number and date. +/** This widget provides the "About dialog" of an application. + * This shows the current version, the build number and date. * \author Werner Mayer */ class GuiExport AboutDialog : public QDialog diff --git a/src/Gui/SplitView3DInventor.cpp b/src/Gui/SplitView3DInventor.cpp index 41633ff0b4..7db754c7dd 100644 --- a/src/Gui/SplitView3DInventor.cpp +++ b/src/Gui/SplitView3DInventor.cpp @@ -48,7 +48,7 @@ AbstractSplitView::AbstractSplitView(Gui::Document* pcDocument, QWidget* parent, : MDIView(pcDocument,parent, wflags) { _viewerPy = 0; - // important for highlighting + // important for highlighting setMouseTracking(true); } @@ -296,7 +296,7 @@ void AbstractSplitView::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp void AbstractSplitView::onUpdate(void) { - update(); + update(); } const char *AbstractSplitView::getName(void) const @@ -409,7 +409,7 @@ bool AbstractSplitView::onHasMsg(const char* pMsg) const void AbstractSplitView::setOverrideCursor(const QCursor& aCursor) { - Q_UNUSED(aCursor); + Q_UNUSED(aCursor); //_viewer->getWidget()->setCursor(aCursor); } diff --git a/src/Gui/SyntaxHighlighter.cpp b/src/Gui/SyntaxHighlighter.cpp index 9d12741bed..1c3e829968 100644 --- a/src/Gui/SyntaxHighlighter.cpp +++ b/src/Gui/SyntaxHighlighter.cpp @@ -38,7 +38,7 @@ public: cBlockcomment.setRgb(160, 160, 164); cLiteral.setRgb(255, 0, 0); cNumber.setRgb(0, 0, 255); cOperator.setRgb(160, 160, 164); cKeyword.setRgb(0, 0, 255); cClassName.setRgb(255, 170, 0); - cDefineName.setRgb(255, 170, 0); cOutput.setRgb(170, 170, 127); + cDefineName.setRgb(255, 170, 0); cOutput.setRgb(170, 170, 127); cError.setRgb(255, 0, 0); } @@ -62,7 +62,7 @@ SyntaxHighlighter::~SyntaxHighlighter() delete d; } -/** Sets the color \a col to the paragraph type \a type. +/** Sets the color \a col to the paragraph type \a type. * This method is provided for convenience to specify the paragraph type * by its name. */ @@ -73,7 +73,7 @@ void SyntaxHighlighter::setColor(const QString& type, const QColor& col) if (!old.isValid()) return; // no such type if (old == col) - return; + return; if (type == QLatin1String("Text")) d->cNormalText = col; else if (type == QLatin1String("Comment")) @@ -157,8 +157,8 @@ QColor SyntaxHighlighter::colorByType(SyntaxHighlighter::TColor type) void SyntaxHighlighter::colorChanged(const QString& type, const QColor& col) { - Q_UNUSED(type); - Q_UNUSED(col); + Q_UNUSED(type); + Q_UNUSED(col); // rehighlight #if QT_VERSION >= 0x040200 rehighlight(); diff --git a/src/Gui/TaskCSysDragger.h b/src/Gui/TaskCSysDragger.h index 721cc51c8d..5b50850501 100644 --- a/src/Gui/TaskCSysDragger.h +++ b/src/Gui/TaskCSysDragger.h @@ -26,13 +26,12 @@ #include #include -class QuantitySpinBox; - namespace Gui { + class QuantitySpinBox; class SoFCCSysDragger; class ViewProviderDragger; - + class TaskCSysDragger : public Gui::TaskView::TaskDialog { Q_OBJECT diff --git a/src/Gui/TaskDlgRelocation.cpp b/src/Gui/TaskDlgRelocation.cpp index ce04380a5b..3ae609b505 100644 --- a/src/Gui/TaskDlgRelocation.cpp +++ b/src/Gui/TaskDlgRelocation.cpp @@ -36,7 +36,7 @@ using namespace Gui; //************************************************************************** //************************************************************************** -// TaskBoxPosition +// TaskBoxPosition //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* TRANSLATOR Gui::TaskBoxPosition */ @@ -100,11 +100,11 @@ TaskDlgRelocation::TaskDlgRelocation() { /* rob = new TaskRobot6Axis(pcRobotObject); ctr = new TaskRobotControl(pcRobotObject); - + trac = new TaskTrajectory(pcRobotObject,pcTrajectoryObject); msg = new TaskRobotMessages(pcRobotObject); - - + + QObject::connect(trac ,SIGNAL(axisChanged(float,float,float,float,float,float,const Base::Placement &)), rob ,SLOT (setAxis(float,float,float,float,float,float,const Base::Placement &))); @@ -130,7 +130,7 @@ void TaskDlgRelocation::open() void TaskDlgRelocation::clicked(int) { - + } bool TaskDlgRelocation::accept() diff --git a/src/Gui/TaskDlgRelocation.h b/src/Gui/TaskDlgRelocation.h index f58db4becc..33fccdcea0 100644 --- a/src/Gui/TaskDlgRelocation.h +++ b/src/Gui/TaskDlgRelocation.h @@ -70,7 +70,7 @@ private: }; -/// +/// class GuiExport TaskDlgRelocation : public Gui::TaskView::TaskDialog { Q_OBJECT @@ -88,10 +88,10 @@ public: virtual bool accept(); /// is called by the framework if the dialog is rejected (Cancel) virtual bool reject(); - /// is called by the framework if the user press the help button + /// is called by the framework if the user press the help button virtual void helpRequested(); - /// returns for Close and Help button + /// returns for Close and Help button virtual QDialogButtonBox::StandardButtons getStandardButtons(void) const { return QDialogButtonBox::Ok|QDialogButtonBox::Cancel; } diff --git a/src/Gui/TaskElementColors.cpp b/src/Gui/TaskElementColors.cpp index 39b70b2bf4..d92dbf9a73 100644 --- a/src/Gui/TaskElementColors.cpp +++ b/src/Gui/TaskElementColors.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -77,7 +77,7 @@ public: std::string editSub; std::string editElement; - Private(ViewProviderDocumentObject* vp, const char *element="") + Private(ViewProviderDocumentObject* vp, const char *element="") : ui(new Ui_TaskElementColors()), vp(vp),editElement(element) { vpDoc = vp->getDocument(); @@ -167,7 +167,7 @@ public: c.setRgbF(color.r,color.g,color.b,1.0-color.a); px.fill(c); QListWidgetItem* item = new QListWidgetItem(QIcon(px), - QString::fromLatin1(Data::ComplexGeoData::oldElementName(v.first.c_str()).c_str()), + QString::fromLatin1(Data::ComplexGeoData::oldElementName(v.first.c_str()).c_str()), ui->elementList); item->setData(Qt::UserRole,c); item->setData(Qt::UserRole+1,QString::fromLatin1(v.first.c_str())); @@ -245,7 +245,7 @@ public: item->setIcon(QIcon(px)); apply(); } - + void onSelectionChanged(const SelectionChanges &msg) { // no object selected in the combobox or no sub-element was selected if (busy) @@ -278,7 +278,7 @@ public: busy = true; std::map sels; for(auto &sel : Selection().getSelectionEx( - editDoc.c_str(),App::DocumentObject::getClassTypeId(),0)) + editDoc.c_str(),App::DocumentObject::getClassTypeId(),0)) { if(sel.getFeatName()!=editObj) continue; for(auto &sub : sel.getSubNames()) { @@ -323,7 +323,7 @@ ElementColors::ElementColors(ViewProviderDocumentObject* vp, bool noHide) ("User parameter:BaseApp/Preferences/View"); d->ui->recompute->setChecked(hPart->GetBool("ColorRecompute",true)); d->ui->onTop->setChecked(hPart->GetBool("ColorOnTop",true)); - if(d->ui->onTop->isChecked()) + if(d->ui->onTop->isChecked()) d->vpParent->OnTopWhenSelected.setValue(3); Selection().addSelectionGate(d,0); diff --git a/src/Gui/TaskElementColors.h b/src/Gui/TaskElementColors.h index f672dcd90c..b3355fc9d5 100644 --- a/src/Gui/TaskElementColors.h +++ b/src/Gui/TaskElementColors.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/TaskView/TaskAppearance.h b/src/Gui/TaskView/TaskAppearance.h index 1e3de8a898..b637053f33 100644 --- a/src/Gui/TaskView/TaskAppearance.h +++ b/src/Gui/TaskView/TaskAppearance.h @@ -29,16 +29,17 @@ #include -class Ui_TaskAppearance; - namespace App { class Property; } namespace Gui { class ViewProvider; + namespace TaskView { + typedef boost::signals2::connection TaskAppearance_Connection; +class Ui_TaskAppearance; class TaskAppearance : public TaskBox, public Gui::SelectionSingleton::ObserverType { diff --git a/src/Gui/TextDocumentEditorView.cpp b/src/Gui/TextDocumentEditorView.cpp index dd6610443a..4f8481d3e6 100644 --- a/src/Gui/TextDocumentEditorView.cpp +++ b/src/Gui/TextDocumentEditorView.cpp @@ -258,6 +258,7 @@ bool TextDocumentEditorView::canClose() discardBtn->setShortcut(QKeySequence::mnemonic(text)); } + box.adjustSize(); switch (box.exec()) { case QMessageBox::Save: diff --git a/src/Gui/TextEdit.cpp b/src/Gui/TextEdit.cpp index 8be98a1472..d9cbda44bd 100644 --- a/src/Gui/TextEdit.cpp +++ b/src/Gui/TextEdit.cpp @@ -68,7 +68,7 @@ void TextEdit::keyPressEvent(QKeyEvent* e) QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::StartOfWord); // the cursor has moved to outside the word prefix - if (cursor.position() < cursorPosition-wordPrefix.length() || + if (cursor.position() < cursorPosition-wordPrefix.length() || cursor.position() > cursorPosition) { listBox->hide(); return; @@ -95,7 +95,7 @@ void TextEdit::complete() wordPrefix = para.mid(wordStart, cursorPos - wordStart); if (wordPrefix.isEmpty()) return; - + QStringList list = toPlainText().split(QRegExp(QLatin1String("\\W+"))); QMap map; QStringList::Iterator it = list.begin(); @@ -104,7 +104,7 @@ void TextEdit::complete() map[(*it).toLower()] = *it; ++it; } - + if (map.count() == 1) { insertPlainText((*map.begin()).mid(wordPrefix.length())); } else if (map.count() > 1) { @@ -149,7 +149,7 @@ void TextEdit::complete() w += style()->pixelMetric(QStyle::PM_ScrollBarExtent); listBox->setGeometry(posX, posY+fontMetrics().height(), w, h); } - + listBox->setCurrentRow(0); listBox->show(); } @@ -200,7 +200,7 @@ struct TextEditorP /** * Constructs a TextEditor which is a child of 'parent' and does the - * syntax highlighting for the Python language. + * syntax highlighting for the Python language. */ TextEditor::TextEditor(QWidget* parent) : TextEdit(parent), WindowParameter("Editor"), highlighter(0) @@ -292,10 +292,10 @@ void TextEditor::highlightCurrentLine() void TextEditor::drawMarker(int line, int x, int y, QPainter* p) { - Q_UNUSED(line); - Q_UNUSED(x); - Q_UNUSED(y); - Q_UNUSED(p); + Q_UNUSED(line); + Q_UNUSED(x); + Q_UNUSED(y); + Q_UNUSED(p); } void TextEditor::lineNumberAreaPaintEvent(QPaintEvent *event) @@ -418,10 +418,10 @@ void TextEditor::keyPressEvent (QKeyEvent * e) TextEdit::keyPressEvent( e ); } -/** Sets the font, font size and tab size of the editor. */ +/** Sets the font, font size and tab size of the editor. */ void TextEditor::OnChange(Base::Subject &rCaller,const char* sReason) { - Q_UNUSED(rCaller); + Q_UNUSED(rCaller); ParameterGrp::handle hPrefGrp = getWindowParameter(); if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { #ifdef FC_OS_LINUX @@ -430,7 +430,7 @@ void TextEditor::OnChange(Base::Subject &rCaller,const char* sReaso int fontSize = hPrefGrp->GetInt("FontSize", 10); #endif QString fontFamily = QString::fromLatin1(hPrefGrp->GetASCII( "Font", "Courier" ).c_str()); - + QFont font(fontFamily, fontSize); setFont(font); } else { @@ -505,7 +505,7 @@ CompletionList::CompletionList(QPlainTextEdit* parent) pal.setColor(QPalette::Inactive, QPalette::HighlightedText, pal.color(QPalette::Active, QPalette::HighlightedText)); parent->setPalette( pal ); - connect(this, SIGNAL(itemActivated(QListWidgetItem *)), + connect(this, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(completionItem(QListWidgetItem *))); } @@ -514,7 +514,7 @@ CompletionList::~CompletionList() } void CompletionList::findCurrentWord(const QString& wordPrefix) -{ +{ for (int i=0; itext(); if (text.startsWith(wordPrefix)) { @@ -527,7 +527,7 @@ void CompletionList::findCurrentWord(const QString& wordPrefix) currentItem()->setSelected(false); } -/** +/** * Get all incoming events of the text edit and redirect some of them, like key up and * down, mouse press events, ... to the widget itself. */ @@ -579,4 +579,4 @@ void CompletionList::completionItem(QListWidgetItem *item) textEdit->ensureCursorVisible(); } -#include "moc_TextEdit.cpp" +#include "moc_TextEdit.cpp" diff --git a/src/Gui/TextEdit.h b/src/Gui/TextEdit.h index 2ad2a7fa88..ee85626323 100644 --- a/src/Gui/TextEdit.h +++ b/src/Gui/TextEdit.h @@ -20,6 +20,8 @@ * * ***************************************************************************/ +/* Text completion mechanism */ + #ifndef GUI_TEXTEDIT_H #define GUI_TEXTEDIT_H @@ -34,19 +36,19 @@ class CompletionBox; class SyntaxHighlighter; /** - * Completion is a means by which an editor automatically completes words that the user is typing. - * For example, in a code editor, a programmer might type "sur", then Tab, and the editor will complete - * the word the programmer was typing so that "sur" is replaced by "surnameLineEdit". This is very - * useful for text that contains long words or variable names. The completion mechanism usually works - * by looking at the existing text to see if any words begin with what the user has typed, and in most + * Completion is a means by which an editor automatically completes words that the user is typing. + * For example, in a code editor, a programmer might type "sur", then Tab, and the editor will complete + * the word the programmer was typing so that "sur" is replaced by "surnameLineEdit". This is very + * useful for text that contains long words or variable names. The completion mechanism usually works + * by looking at the existing text to see if any words begin with what the user has typed, and in most * editors completion is invoked by a special key sequence. * - * TextEdit can detect a special key sequence to invoke the completion mechanism, and can handle three + * TextEdit can detect a special key sequence to invoke the completion mechanism, and can handle three * different situations: * \li There are no possible completions. * \li There is a single possible completion. * \li There are two or more possible completions. - * + * * \remark The original sources are taken from Qt Quarterly (Customizing for Completion). * @author Werner Mayer */ diff --git a/src/Gui/TextureMapping.cpp b/src/Gui/TextureMapping.cpp index 2fbd3293ab..2b39b4c5f9 100644 --- a/src/Gui/TextureMapping.cpp +++ b/src/Gui/TextureMapping.cpp @@ -65,7 +65,7 @@ TextureMapping::TextureMapping(QWidget* parent, Qt::WindowFlags fl) for (QList::Iterator it = qtformats.begin(); it != qtformats.end(); ++it) { formats << QString::fromLatin1("*.%1").arg(QLatin1String(*it)); } - + ui->fileChooser->setFilter(tr("Image files (%1)").arg(formats.join(QLatin1String(" ")))); this->tex = new SoTexture2(); diff --git a/src/Gui/Thumbnail.cpp b/src/Gui/Thumbnail.cpp index 58109e8bb5..c8eafeaccf 100644 --- a/src/Gui/Thumbnail.cpp +++ b/src/Gui/Thumbnail.cpp @@ -79,7 +79,7 @@ void Thumbnail::Save (Base::Writer &writer) const void Thumbnail::Restore(Base::XMLReader &reader) { - Q_UNUSED(reader); + Q_UNUSED(reader); //reader.addFile("Thumbnail.png",this); } @@ -98,13 +98,19 @@ void Thumbnail::SaveDocFile (Base::Writer &writer) const this->viewer->imageFromFramebuffer(this->size, this->size, 0, invalid, img); } - QPixmap px = Gui::BitmapFactory().pixmap(App::Application::Config()["AppIcon"].c_str()); + // Get app icon and resize to half size to insert in topbottom position over the current view snapshot + QPixmap appIcon = Gui::BitmapFactory().pixmap(App::Application::Config()["AppIcon"].c_str()); + QPixmap px = appIcon; if (!img.isNull()) { if (App::GetApplication().GetParameterGroupByPath - ("User parameter:BaseApp/Preferences/Document")->GetBool("AddThumbnailLogo",true)) - px = BitmapFactory().merge(QPixmap::fromImage(img),px,BitmapFactoryInst::BottomRight); - else + ("User parameter:BaseApp/Preferences/Document")->GetBool("AddThumbnailLogo",true)) { + // only scale app icon if an offscreen image could be created + appIcon = appIcon.scaled(this->size / 4, this->size /4); + px = BitmapFactory().merge(QPixmap::fromImage(img), appIcon, BitmapFactoryInst::BottomRight); + } + else { px = QPixmap::fromImage(img); + } } if (!px.isNull()) { @@ -126,5 +132,5 @@ void Thumbnail::SaveDocFile (Base::Writer &writer) const void Thumbnail::RestoreDocFile(Base::Reader &reader) { - Q_UNUSED(reader); + Q_UNUSED(reader); } diff --git a/src/Gui/ToolBarManager.h b/src/Gui/ToolBarManager.h index 7bceccdff2..82230044f6 100644 --- a/src/Gui/ToolBarManager.h +++ b/src/Gui/ToolBarManager.h @@ -65,7 +65,7 @@ private: * The ToolBarManager class is responsible for the creation of toolbars and appending them * to the main window. * @see ToolBoxManager - * @see MenuManager + * @see MenuManager * @author Werner Mayer */ class GuiExport ToolBarManager @@ -97,4 +97,4 @@ private: } // namespace Gui -#endif // GUI_TOOLBARMANAGER_H +#endif // GUI_TOOLBARMANAGER_H diff --git a/src/Gui/ToolBox.cpp b/src/Gui/ToolBox.cpp index e27677f8b9..61213bb963 100644 --- a/src/Gui/ToolBox.cpp +++ b/src/Gui/ToolBox.cpp @@ -52,7 +52,7 @@ ToolBox::~ToolBox() } /** - * Adds the widget w in a new tab at bottom of the toolbox. The new tab's label is set to \a label. + * Adds the widget w in a new tab at bottom of the toolbox. The new tab's label is set to \a label. * Returns the new tab's index. */ int ToolBox::addItem ( QWidget * w, const QString & label ) @@ -61,7 +61,7 @@ int ToolBox::addItem ( QWidget * w, const QString & label ) } /** - * Adds the widget \a item in a new tab at bottom of the toolbox. The new tab's label is set to \a label, and + * Adds the widget \a item in a new tab at bottom of the toolbox. The new tab's label is set to \a label, and * the \a iconSet is displayed to the left of the \a label. Returns the new tab's index. */ int ToolBox::addItem ( QWidget * item, const QIcon & iconSet, const QString & label ) @@ -70,9 +70,9 @@ int ToolBox::addItem ( QWidget * item, const QIcon & iconSet, const QString & la } /** - * This is an overloaded member function, provided for convenience. It behaves essentially like the above function. + * This is an overloaded member function, provided for convenience. It behaves essentially like the above function. * - * Inserts the widget \a item at position \a index, or at the bottom of the toolbox if \a index is out of range. + * Inserts the widget \a item at position \a index, or at the bottom of the toolbox if \a index is out of range. * The new item's label is set to \a label. Returns the new item's index. */ int ToolBox::insertItem ( int index, QWidget * item, const QString & label ) @@ -81,8 +81,8 @@ int ToolBox::insertItem ( int index, QWidget * item, const QString & label ) } /** - * Inserts the widget \a item at position \a index, or at the bottom of the toolbox if \a index is out of range. - * The new item's label is set to \a label, and the \a iconSet is displayed to the left of the \a label. + * Inserts the widget \a item at position \a index, or at the bottom of the toolbox if \a index is out of range. + * The new item's label is set to \a label, and the \a iconSet is displayed to the left of the \a label. * Returns the new item's index. */ int ToolBox::insertItem ( int index, QWidget * item, const QIcon & iconSet, const QString & label ) diff --git a/src/Gui/ToolBox.h b/src/Gui/ToolBox.h index 936f39efdb..04c3f5f109 100644 --- a/src/Gui/ToolBox.h +++ b/src/Gui/ToolBox.h @@ -31,22 +31,22 @@ class QToolBox; namespace Gui { -namespace DockWnd +namespace DockWnd { /** The ToolBox class provides a column of tabbed widget items. - * A toolbox is a widget that displays a column of tabs one above the other, with the current item displayed - * below the current tab. Every tab has an index position within the column of tabs. A tab's item is a QWidget. + * A toolbox is a widget that displays a column of tabs one above the other, with the current item displayed + * below the current tab. Every tab has an index position within the column of tabs. A tab's item is a QWidget. * * Each item has an itemLabel(), an optional icon, itemIconSet(), an optional itemToolTip(), and a widget. - * The item's attributes can be changed with setItemLabel(), setItemIconSet() and setItemToolTip(). + * The item's attributes can be changed with setItemLabel(), setItemIconSet() and setItemToolTip(). * - * Items are added using addItem(), or inserted at particular positions using insertItem(). The total number of - * items is given by count(). Items can be deleted with delete, or removed from the toolbox with removeItem(). - * Combining removeItem() and insertItem() allows to move items to different positions. + * Items are added using addItem(), or inserted at particular positions using insertItem(). The total number of + * items is given by count(). Items can be deleted with delete, or removed from the toolbox with removeItem(). + * Combining removeItem() and insertItem() allows to move items to different positions. * - * The current item widget is returned by currentItem() and set with setCurrentItem(). If you prefer you can - * work in terms of indexes using currentIndex(), setCurrentIndex(), indexOf() and item(). + * The current item widget is returned by currentItem() and set with setCurrentItem(). If you prefer you can + * work in terms of indexes using currentIndex(), setCurrentIndex(), indexOf() and item(). * * The currentChanged() signal is emitted when the current item is changed. * @@ -74,13 +74,13 @@ public: void setItemText ( int index, const QString & label ); QString itemText ( int index ) const; - + void setItemIcon ( int index, const QIcon & iconSet ); QIcon itemIcon ( int index ) const; - + void setItemToolTip ( int index, const QString & toolTip ); QString itemToolTip ( int index ) const; - + QWidget * currentWidget () const; int currentIndex () const; @@ -96,7 +96,7 @@ protected: void changeEvent(QEvent *e); Q_SIGNALS: - /** This signal is emitted when the current item changed. + /** This signal is emitted when the current item changed. * The new current item's index is passed in index, or -1 if there is no current item. */ void currentChanged ( int index ); diff --git a/src/Gui/ToolBoxManager.h b/src/Gui/ToolBoxManager.h index b03ba7a220..4bb8025bd8 100644 --- a/src/Gui/ToolBoxManager.h +++ b/src/Gui/ToolBoxManager.h @@ -29,14 +29,14 @@ namespace Gui { class ToolBarItem; -namespace DockWnd +namespace DockWnd { class ToolBox;} /** * The ToolBoxManager class is responsible for the creation of command bars and appending them * to the toolbox window. * @see ToolBarManager - * @see MenuManager + * @see MenuManager * @author Werner Mayer */ class GuiExport ToolBoxManager @@ -62,4 +62,4 @@ private: } // namespace Gui -#endif // GUI_TOOLBOXMANAGER_H +#endif // GUI_TOOLBOXMANAGER_H diff --git a/src/Gui/TouchpadNavigationStyle.cpp b/src/Gui/TouchpadNavigationStyle.cpp index a6f2e68fb7..7b279eefc4 100644 --- a/src/Gui/TouchpadNavigationStyle.cpp +++ b/src/Gui/TouchpadNavigationStyle.cpp @@ -225,8 +225,8 @@ SbBool TouchpadNavigationStyle::processSoEvent(const SoEvent * const ev) this->lockrecenter = true; if (!viewer->isEditing()) { // If we are in zoom or pan mode ignore RMB events otherwise - // the canvas doesn't get any release events - if (this->currentmode != NavigationStyle::ZOOMING && + // the canvas doesn't get any release events + if (this->currentmode != NavigationStyle::ZOOMING && this->currentmode != NavigationStyle::PANNING && this->currentmode != NavigationStyle::DRAGGING) { if (this->isPopupMenuEnabled()) { diff --git a/src/Gui/TransactionObject.cpp b/src/Gui/TransactionObject.cpp index 4f8a6073be..a9d04a8b74 100644 --- a/src/Gui/TransactionObject.cpp +++ b/src/Gui/TransactionObject.cpp @@ -58,6 +58,6 @@ void TransactionViewProvider::applyNew(App::Document& Doc, App::TransactionalObj void TransactionViewProvider::applyDel(App::Document& Doc, App::TransactionalObject* pcObj) { // nothing to do here - Q_UNUSED(Doc); - Q_UNUSED(pcObj); + Q_UNUSED(Doc); + Q_UNUSED(pcObj); } diff --git a/src/Gui/Transform.cpp b/src/Gui/Transform.cpp index cdbcea03f5..96fc420ffb 100644 --- a/src/Gui/Transform.cpp +++ b/src/Gui/Transform.cpp @@ -99,7 +99,7 @@ void TransformStrategy::commitTransform(const Base::Matrix4D& mat) std::set objects = transformObjects(); Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (doc) { - doc->openCommand("Transform"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Transform")); for (std::set::iterator it=objects.begin();it!=objects.end();++it) { acceptDataTransform(mat, *it); } diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 457ee84d10..e76c7b8a8e 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -164,7 +164,7 @@ struct Stats { int _name##_count; DEFINE_STATS - + void init() { #undef DEFINE_STAT #define DEFINE_STAT(_name) \ @@ -293,19 +293,19 @@ public: continue; if(child && child->getNameInDocument()) { if(!newSet.insert(child).second) { - TREE_WARN("duplicate child item " << obj->getFullName() + TREE_WARN("duplicate child item " << obj->getFullName() << '.' << child->getNameInDocument()); }else if(!childSet.erase(child)) { // this means new child detected updated = true; - if(child->getDocument()==obj->getDocument() && + if(child->getDocument()==obj->getDocument() && child->getDocument()==docItem->document()->getDocument()) { auto &parents = docItem->_ParentMap[child]; if(parents.insert(obj).second && child->Visibility.getValue()) { bool showable = false; - for(auto parent : parents) { - if(!parent->hasChildElement() + for(auto parent : parents) { + if(!parent->hasChildElement() && parent->getLinkedObject(false)==parent) { showable = true; @@ -373,7 +373,7 @@ public: // --------------------------------------------------------------------------- -class DocumentItem::ExpandInfo: +class DocumentItem::ExpandInfo: public std::unordered_map { public: @@ -400,7 +400,7 @@ TreeWidgetEditDelegate::TreeWidgetEditDelegate(QObject* parent) } QWidget* TreeWidgetEditDelegate::createEditor( - QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &index) const + QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &index) const { auto ti = static_cast(index.internalPointer()); if(ti->type()!=TreeWidget::ObjectType || index.column()>1) @@ -660,7 +660,7 @@ void TreeWidget::startItemSearch(QLineEdit *edit) { searchDoc = item->object()->getDocument(); searchContextDoc = item->getOwnerDocument()->document(); } - }else + }else searchDoc = Application::Instance->activeDocument(); App::DocumentObject *obj = 0; @@ -791,7 +791,7 @@ void TreeWidget::updateStatus(bool delay) { void TreeWidget::_updateStatus(bool delay) { if(!delay) { - if(ChangedObjects.size() || NewObjects.size()) + if(ChangedObjects.size() || NewObjects.size()) onUpdateStatus(); return; } @@ -993,7 +993,7 @@ void TreeWidget::onStartEditing() int edit = action->data().toInt(); App::DocumentObject* obj = objitem->object()->getObject(); - if (!obj || !obj->getNameInDocument()) + if (!obj || !obj->getNameInDocument()) return; auto doc = const_cast(objitem->getOwnerDocument()->document()); MDIView *view = doc->getActiveView(); @@ -1100,7 +1100,7 @@ DocumentItem *TreeWidget::getDocumentItem(const Gui::Document *doc) const { } void TreeWidget::selectAllInstances(const ViewProviderDocumentObject &vpd) { - if(!isConnectionAttached()) + if(!isConnectionAttached()) return; if(selectTimer->isActive()) @@ -1108,7 +1108,7 @@ void TreeWidget::selectAllInstances(const ViewProviderDocumentObject &vpd) { else _updateStatus(false); - for(const auto &v : DocumentMap) + for(const auto &v : DocumentMap) v.second->selectAllInstances(vpd); } @@ -1182,7 +1182,7 @@ std::vector TreeWidget::getSelection(App::Document *doc) } void TreeWidget::selectAllLinks(App::DocumentObject *obj) { - if(!isConnectionAttached()) + if(!isConnectionAttached()) return; if(!obj || !obj->getNameInDocument()) { @@ -1195,7 +1195,7 @@ void TreeWidget::selectAllLinks(App::DocumentObject *obj) { else _updateStatus(false); - for(auto link: App::GetApplication().getLinksTo(obj,App::GetLinkRecursive)) + for(auto link: App::GetApplication().getLinksTo(obj,App::GetLinkRecursive)) { if(!link || !link->getNameInDocument()) { TREE_ERR("invalid linked object"); @@ -1253,8 +1253,8 @@ bool TreeWidget::eventFilter(QObject *, QEvent *ev) { if (ke->key() != Qt::Key_Escape) { // Qt 5 only recheck key modifier on mouse move, so generate a fake // event to trigger drag cursor change - QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseMove, - mapFromGlobal(QCursor::pos()), QCursor::pos(), Qt::NoButton, + QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseMove, + mapFromGlobal(QCursor::pos()), QCursor::pos(), Qt::NoButton, QApplication::mouseButtons(), QApplication::queryKeyboardModifiers()); QApplication::postEvent(this,mouseEvent); } @@ -1480,8 +1480,8 @@ void TreeWidget::dragMoveEvent(QDragMoveEvent *event) if(!dropOnly && !vp->canDragAndDropObject(obj)) { // check if items can be dragged auto parentItem = item->getParentItem(); - if(parentItem - && (!parentItem->object()->canDragObjects() + if(parentItem + && (!parentItem->object()->canDragObjects() || !parentItem->object()->canDragObject(item->object()->getObject()))) { if(!(event->possibleActions() & Qt::CopyAction)) { @@ -1586,7 +1586,7 @@ void TreeWidget::dropEvent(QDropEvent *event) if (ti->type() != TreeWidget::ObjectType) continue; // ignore child elements if the parent is selected - if(sels.contains(ti->parent())) + if(sels.contains(ti->parent())) continue; if (ti == targetItem) continue; @@ -1604,7 +1604,7 @@ void TreeWidget::dropEvent(QDropEvent *event) if(QApplication::keyboardModifiers()== Qt::ControlModifier) event->setDropAction(Qt::CopyAction); - else if(QApplication::keyboardModifiers()== Qt::AltModifier + else if(QApplication::keyboardModifiers()== Qt::AltModifier && (items.size()==1||targetItem->type()==TreeWidget::DocumentType)) event->setDropAction(Qt::LinkAction); else @@ -1679,15 +1679,15 @@ void TreeWidget::dropEvent(QDropEvent *event) info.subs.swap(v.second); // check if items can be dragged - if(!dropOnly && - item->myOwner == targetItemObj->myOwner && + if(!dropOnly && + item->myOwner == targetItemObj->myOwner && vp->canDragAndDropObject(item->object()->getObject())) { // check if items can be dragged auto parentItem = item->getParentItem(); if(!parentItem) info.dragging = true; - else if(parentItem->object()->canDragObjects() + else if(parentItem->object()->canDragObjects() && parentItem->object()->canDragObject(item->object()->getObject())) { info.dragging = true; @@ -1697,8 +1697,8 @@ void TreeWidget::dropEvent(QDropEvent *event) } } - if (da!=Qt::LinkAction - && !vp->canDropObjectEx(obj,owner,info.subname.c_str(),item->mySubs)) + if (da!=Qt::LinkAction + && !vp->canDropObjectEx(obj,owner,info.subname.c_str(),item->mySubs)) { if(event->possibleActions() & Qt::LinkAction) { if(items.size()>1) { @@ -1769,7 +1769,7 @@ void TreeWidget::dropEvent(QDropEvent *event) App::DocumentObject *owner = 0; if(info.ownerDoc.size()) { auto ownerDoc = App::GetApplication().getDocument(info.ownerDoc.c_str()); - if(ownerDoc) + if(ownerDoc) owner = ownerDoc->getObject(info.owner.c_str()); if(!owner) { FC_WARN("Cannot find dragging object's top parent " << info.owner); @@ -1859,9 +1859,9 @@ void TreeWidget::dropEvent(QDropEvent *event) dropParent = 0; parentItem->getSubName(ss,dropParent); - if(dropParent) + if(dropParent) ss << parentItem->object()->getObject()->getNameInDocument() << '.'; - else + else dropParent = parentItem->object()->getObject(); ss << obj->getNameInDocument() << '.'; dropName = ss.str(); @@ -1871,7 +1871,7 @@ void TreeWidget::dropEvent(QDropEvent *event) } Gui::Command::runCommand(Gui::Command::App, ss.str().c_str()); - + }else{ ss << Command::getObjectCmd(vp->getObject()) << ".ViewObject.dropObject(" << Command::getObjectCmd(obj); @@ -1904,7 +1904,7 @@ void TreeWidget::dropEvent(QDropEvent *event) Base::Matrix4D newMat; auto sobj = dropParent->getSubObject(dropName.c_str(),0,&newMat); if(!sobj) { - FC_LOG("failed to find dropped object " + FC_LOG("failed to find dropped object " << dropParent->getFullName() << '.' << dropName); setSelection = false; continue; @@ -1912,8 +1912,8 @@ void TreeWidget::dropEvent(QDropEvent *event) if(da!=Qt::CopyAction && propPlacement) { // try to adjust placement - if((info.dragging && sobj==obj) || - (!info.dragging && sobj->getLinkedObject(false)==obj)) + if((info.dragging && sobj==obj) || + (!info.dragging && sobj->getLinkedObject(false)==obj)) { if(!info.dragging) propPlacement = Base::freecad_dynamic_cast( @@ -1975,10 +1975,10 @@ void TreeWidget::dropEvent(QDropEvent *event) // key is held, or 2) the dragging item is not inside the // dropping document tree. parentItem = 0; - }else if(!parentItem->object()->canDragObjects() - || !parentItem->object()->canDragObject(obj)) + }else if(!parentItem->object()->canDragObjects() + || !parentItem->object()->canDragObject(obj)) { - TREE_ERR("'" << obj->getFullName() << "' cannot be dragged out of '" << + TREE_ERR("'" << obj->getFullName() << "' cannot be dragged out of '" << parentItem->object()->getObject()->getFullName() << "'"); return; } @@ -2058,7 +2058,7 @@ void TreeWidget::dropEvent(QDropEvent *event) continue; FCMD_OBJ_CMD(link,"Label='" << obj->getLinkedObject(true)->Label.getValue() << "'"); propPlacement = dynamic_cast(link->getPropertyByName("Placement")); - if(propPlacement) + if(propPlacement) propPlacement->setValueIfChanged(Base::Placement(mat)); droppedObjs.push_back(link); }else if(info.parent.size()) { @@ -2096,7 +2096,7 @@ void TreeWidget::dropEvent(QDropEvent *event) if(!obj || !obj->getNameInDocument()) continue; droppedObjs.push_back(obj); - if(propPlacement) + if(propPlacement) propPlacement->setValueIfChanged(Base::Placement(mat)); } else { std::ostringstream ss; @@ -2113,7 +2113,7 @@ void TreeWidget::dropEvent(QDropEvent *event) if(res) { propPlacement = dynamic_cast( res->getPropertyByName("Placement")); - if(propPlacement) + if(propPlacement) propPlacement->setValueIfChanged(Base::Placement(mat)); droppedObjs.push_back(res); } @@ -2237,7 +2237,7 @@ void TreeWidget::slotRenameDocument(const Gui::Document& Doc) void TreeWidget::slotChangedViewObject(const Gui::ViewProvider& vp, const App::Property &prop) { if(!App::GetApplication().isRestoring() - && vp.isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) + && vp.isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) { const auto &vpd = static_cast(vp); if(&prop == &vpd.ShowInTree) { @@ -2353,13 +2353,13 @@ void TreeWidget::onUpdateStatus(void) // Checking for new objects for(auto &v : NewObjects) { auto doc = App::GetApplication().getDocument(v.first.c_str()); - if(!doc) + if(!doc) continue; auto gdoc = Application::Instance->getDocument(doc); - if(!gdoc) + if(!gdoc) continue; auto docItem = getDocumentItem(gdoc); - if(!docItem) + if(!docItem) continue; for(auto id : v.second) { auto obj = doc->getObjectByID(id); @@ -2393,7 +2393,7 @@ void TreeWidget::onUpdateStatus(void) if(data->itemHidden != itemHidden) { for(auto &data : iter->second) { data->itemHidden = itemHidden; - if(data->docItem->showHidden()) + if(data->docItem->showHidden()) continue; for(auto item : data->items) item->setHidden(itemHidden); @@ -2538,7 +2538,7 @@ void TreeWidget::onPreSelectTimer() { if(!TreeParams::Instance()->PreSelection()) return; auto item = itemAt(viewport()->mapFromGlobal(QCursor::pos())); - if(!item || item->type()!=TreeWidget::ObjectType) + if(!item || item->type()!=TreeWidget::ObjectType) return; preselectTime.restart(); @@ -2578,7 +2578,7 @@ void TreeWidget::scrollItemToTop() { auto doc = Application::Instance->activeDocument(); for(auto tree : Instances) { - if(!tree->isConnectionAttached() || tree->isConnectionBlocked()) + if(!tree->isConnectionAttached() || tree->isConnectionBlocked()) continue; tree->_updateStatus(false); @@ -2613,7 +2613,7 @@ void TreeWidget::scrollItemToTop() void TreeWidget::expandSelectedItems(TreeItemMode mode) { - if(!isConnectionAttached()) + if(!isConnectionAttached()) return; for(auto item : selectedItems()) { @@ -2666,7 +2666,7 @@ void TreeWidget::setupText() this->closeDocAction->setText(tr("Close document")); this->closeDocAction->setStatusTip(tr("Close the document")); - + this->reloadDocAction->setText(tr("Reload document")); this->reloadDocAction->setStatusTip(tr("Reload a partially loaded document")); @@ -2724,7 +2724,7 @@ void TreeWidget::changeEvent(QEvent *e) void TreeWidget::onItemSelectionChanged () { - if (!this->isConnectionAttached() + if (!this->isConnectionAttached() || this->isConnectionBlocked() || updateBlocked) return; @@ -2953,8 +2953,8 @@ TreeDockWidget::~TreeDockWidget() { } -void TreeWidget::selectLinkedObject(App::DocumentObject *linked) { - if(!isConnectionAttached() || isConnectionBlocked()) +void TreeWidget::selectLinkedObject(App::DocumentObject *linked) { + if(!isConnectionAttached() || isConnectionBlocked()) return; auto linkedVp = Base::freecad_dynamic_cast( @@ -2980,7 +2980,7 @@ void TreeWidget::selectLinkedObject(App::DocumentObject *linked) { return; } auto linkedItem = it->second->rootItem; - if(!linkedItem) + if(!linkedItem) linkedItem = *it->second->items.begin(); if(linkedDoc->showItem(linkedItem,true)) @@ -3121,7 +3121,7 @@ bool DocumentItem::createNewItem(const Gui::ViewProviderDocumentObject& obj, QTreeWidgetItem *parent, int index, DocumentObjectDataPtr data) { const char *name; - if (!obj.getObject() || + if (!obj.getObject() || !(name=obj.getObject()->getNameInDocument()) || obj.getObject()->testStatus(App::PartialObject)) return false; @@ -3187,9 +3187,9 @@ ViewProviderDocumentObject *DocumentItem::getViewProvider(App::DocumentObject *o if(!obj || !obj->getNameInDocument()) return 0; ViewProvider *vp; - if(obj->getDocument() == pDocument->getDocument()) + if(obj->getDocument() == pDocument->getDocument()) vp = pDocument->getViewProvider(obj); - else + else vp = Application::Instance->getViewProvider(obj); if(!vp || !vp->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) return 0; @@ -3358,8 +3358,8 @@ void DocumentItem::populateItem(DocumentObjectItem *item, bool refresh, bool del bool updated = false; int i=-1; - // iterate through the claimed children, and try to synchronize them with the - // children tree item with the same order of appearance. + // iterate through the claimed children, and try to synchronize them with the + // children tree item with the same order of appearance. int childCount = item->childCount(); for(auto child : item->myData->children) { @@ -3386,7 +3386,7 @@ void DocumentItem::populateItem(DocumentObjectItem *item, bool refresh, bool del } // Check if the item just changed its policy of whether to remove - // children item from the root. + // children item from the root. if(item->myData->removeChildrenFromRoot) { if(childItem->myData->rootItem) { assert(childItem != childItem->myData->rootItem); @@ -3426,7 +3426,7 @@ void DocumentItem::populateItem(DocumentObjectItem *item, bool refresh, bool del }else { DocumentObjectItem *childItem = it->second->rootItem; if(item==childItem || item->isChildOfItem(childItem)) { - TREE_ERR("Cyclic dependency in " + TREE_ERR("Cyclic dependency in " << item->object()->getObject()->getFullName() << '.' << childItem->object()->getObject()->getFullName()); --i; @@ -3465,7 +3465,7 @@ void DocumentItem::populateItem(DocumentObjectItem *item, bool refresh, bool del delete ci; getTree()->blockConnection(lock); } - if(updated) + if(updated) getTree()->_updateStatus(); } @@ -3509,7 +3509,7 @@ int DocumentItem::findRootIndex(App::DocumentObject *childObj) { count = last-first; int pos; while (count > 0) { - int step = count / 2; + int step = count / 2; pos = first + step; for(;pos<=last;++pos) { auto citem = this->child(pos); @@ -3578,7 +3578,7 @@ void TreeWidget::slotChangeObject( } auto &s = ChangedObjects[obj]; - if(prop.testStatus(App::Property::Output) + if(prop.testStatus(App::Property::Output) || prop.testStatus(App::Property::NoRecompute)) { s.set(CS_Output); @@ -3641,7 +3641,7 @@ void TreeWidget::updateChildren(App::DocumentObject *obj, if(!selectTimer->isActive()) onSelectionChanged(SelectionChanges()); - //if the item is in a GeoFeatureGroup we may need to update that too, as the claim children + //if the item is in a GeoFeatureGroup we may need to update that too, as the claim children //of the geofeaturegroup depends on what the childs claim auto grp = App::GeoFeatureGroupExtension::getGroupOfObject(obj); if(grp && !ChangedObjects.count(grp)) { @@ -3651,8 +3651,8 @@ void TreeWidget::updateChildren(App::DocumentObject *obj, } } } - -void DocumentItem::slotHighlightObject (const Gui::ViewProviderDocumentObject& obj, + +void DocumentItem::slotHighlightObject (const Gui::ViewProviderDocumentObject& obj, const Gui::HighlightMode& high, bool set, const App::DocumentObject *parent, const char *subname) { getTree()->_updateStatus(false); @@ -3720,7 +3720,7 @@ static void saveExpandedItem(Base::Writer &writer, const QTreeWidgetItem *item) continue; auto obj = static_cast(citem)->object()->getObject(); if(obj->getNameInDocument()) { - writer.Stream() << writer.ind() << "getNameInDocument() << "\""; saveExpandedItem(writer,static_cast(citem)); } @@ -3805,9 +3805,9 @@ void DocumentItem::slotExpandObject (const Gui::ViewProviderDocumentObject& obj, break; } // fall through - case TreeItemMode::ExpandItem: + case TreeItemMode::ExpandItem: if(!parent) { - if(item->parent()->isExpanded()) + if(item->parent()->isExpanded()) item->setExpanded(true); }else{ App::DocumentObject *topParent = 0; @@ -3847,7 +3847,7 @@ void DocumentItem::slotScrollToObject(const Gui::ViewProviderDocumentObject& obj if(!obj.getObject() || !obj.getObject()->getNameInDocument()) return; auto it = ObjectMap.find(obj.getObject()); - if(it == ObjectMap.end() || it->second->items.empty()) + if(it == ObjectMap.end() || it->second->items.empty()) return; auto item = it->second->rootItem; if(!item) @@ -3865,7 +3865,7 @@ void DocumentItem::slotRecomputedObject(const App::DocumentObject &obj) { void DocumentItem::slotRecomputed(const App::Document &, const std::vector &objs) { auto tree = getTree(); for(auto obj : objs) { - if(!obj->isValid()) + if(!obj->isValid()) tree->ChangedObjects[obj].set(TreeWidget::CS_Error); } if(tree->ChangedObjects.size()) @@ -3933,7 +3933,7 @@ void DocumentItem::updateSelection(QTreeWidgetItem *ti, bool unselect) { auto child = ti->child(i); if(child && child->type()==TreeWidget::ObjectType) { auto childItem = static_cast(child); - if(unselect) + if(unselect) childItem->setSelected(false); updateItemSelection(childItem); if(unselect && childItem->isGroup()) { @@ -3944,7 +3944,7 @@ void DocumentItem::updateSelection(QTreeWidgetItem *ti, bool unselect) { } } } - + if(unselect) return; for(int i=0,count=ti->childCount();ichild(i)); @@ -3952,7 +3952,7 @@ void DocumentItem::updateSelection(QTreeWidgetItem *ti, bool unselect) { void DocumentItem::updateItemSelection(DocumentObjectItem *item) { bool selected = item->isSelected(); - if((selected && item->selected>0) || (!selected && !item->selected)) + if((selected && item->selected>0) || (!selected && !item->selected)) return; if(item->selected != -1) item->mySubs.clear(); @@ -4002,7 +4002,7 @@ void DocumentItem::updateItemSelection(DocumentObjectItem *item) { if(selected && item->isGroup()) { // Same reasoning as above. When a group item is newly selected, We // choose to force unselect all its children to void messing up the - // selection highlight + // selection highlight // // UPDATE: same as above, child and parent selection is now re-enabled. // @@ -4070,14 +4070,14 @@ App::DocumentObject *DocumentItem::getTopParent(App::DocumentObject *obj, std::s return obj; } ss << obj->getNameInDocument() << '.' << subname; - FC_LOG("Subname correction " << obj->getFullName() << '.' << subname + FC_LOG("Subname correction " << obj->getFullName() << '.' << subname << " -> " << topParent->getFullName() << '.' << ss.str()); subname = ss.str(); return topParent; } DocumentObjectItem *DocumentItem::findItemByObject( - bool sync, App::DocumentObject *obj, const char *subname, bool select) + bool sync, App::DocumentObject *obj, const char *subname, bool select) { if(!subname) subname = ""; @@ -4087,14 +4087,14 @@ DocumentObjectItem *DocumentItem::findItemByObject( return 0; // prefer top level item of this object - if(it->second->rootItem) + if(it->second->rootItem) return findItem(sync,it->second->rootItem,subname,select); for(auto item : it->second->items) { // non group object do not provide a coordinate system, hence its // claimed child is still in the global coordinate space, so the // child can still be considered a top level object - if(!item->isParentGroup()) + if(!item->isParentGroup()) return findItem(sync,item,subname,select); } @@ -4115,9 +4115,9 @@ DocumentObjectItem *DocumentItem::findItemByObject( } DocumentObjectItem *DocumentItem::findItem( - bool sync, DocumentObjectItem *item, const char *subname, bool select) + bool sync, DocumentObjectItem *item, const char *subname, bool select) { - if(item->isHidden()) + if(item->isHidden()) item->setHidden(false); if(!subname || *subname==0) { @@ -4133,7 +4133,7 @@ DocumentObjectItem *DocumentItem::findItem( // try to find the next level object name const char *nextsub = 0; const char *dot = 0; - if((dot=strchr(subname,'.'))) + if((dot=strchr(subname,'.'))) nextsub = dot+1; else { if(select) { @@ -4172,7 +4172,7 @@ DocumentObjectItem *DocumentItem::findItem( if(!ti || ti->type()!=TreeWidget::ObjectType) continue; auto child = static_cast(ti); - if(child->object()->getObject() == subObj) + if(child->object()->getObject() == subObj) return findItem(sync,child,nextsub,select); } @@ -4250,7 +4250,7 @@ void DocumentItem::selectItems(SelectionReason reason) { newSelect = oldSelect; else getTree()->syncView(newSelect->object()); - if(newSelect) + if(newSelect) getTree()->scrollToItem(newSelect); } } @@ -4284,7 +4284,7 @@ void DocumentItem::selectAllInstances(const ViewProviderDocumentObject &vpd) { // We are trying to select all items corresponding to a given view // provider, i.e. all appearance of the object inside all its parent items // - // Build a map of object to all its parent + // Build a map of object to all its parent for(auto &v : ObjectMap) { if(v.second->viewObject == &vpd) continue; for(auto child : v.second->viewObject->claimChildren()) { @@ -4326,8 +4326,8 @@ bool DocumentItem::showItem(DocumentObjectItem *item, bool select, bool force) { return false; item->setHidden(false); } - - if(parent->type()==TreeWidget::ObjectType) { + + if(parent->type()==TreeWidget::ObjectType) { if(!showItem(static_cast(parent),false)) return false; auto pitem = static_cast(parent); @@ -4348,7 +4348,7 @@ void DocumentItem::updateItemsVisibility(QTreeWidgetItem *item, bool show) { auto objitem = static_cast(item); objitem->setHidden(!show && !objitem->object()->showInTree()); } - for(int i=0;ichildCount();++i) + for(int i=0;ichildCount();++i) updateItemsVisibility(item->child(i),show); } @@ -4484,7 +4484,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon &icon1, QIcon &icon2 Timing(testStatus1); auto parent = parentItem->object()->getObject(); auto ext = parent->getExtensionByType(true,false); - if(!ext) + if(!ext) visible = parent->isElementVisible(pObject->getNameInDocument()); else { // We are dealing with a plain group. It has special handling when @@ -4733,7 +4733,7 @@ bool DocumentObjectItem::isChildOfItem(DocumentObjectItem* item) } bool DocumentObjectItem::requiredAtRoot(bool excludeSelf) const{ - if(myData->rootItem || object()->getDocument()!=getOwnerDocument()->document()) + if(myData->rootItem || object()->getDocument()!=getOwnerDocument()->document()) return false; bool checkMap = true; for(auto item : myData->items) { @@ -4751,7 +4751,7 @@ bool DocumentObjectItem::requiredAtRoot(bool excludeSelf) const{ // still being referred to by some parent item that is not expanded // yet. So, we force populate at least one item of the parent // object to make sure that there is at least one corresponding - // item for each object. + // item for each object. // // PS: practically speaking, it won't hurt much to delete all the // items, because the item will be auto created once the user @@ -4817,10 +4817,10 @@ bool DocumentItem::isObjectShowable(App::DocumentObject *obj) { if(itParents == _ParentMap.end() || itParents->second.empty()) return true; bool showable = true; - for(auto parent : itParents->second) { + for(auto parent : itParents->second) { if(parent->getDocument() != obj->getDocument()) continue; - if(!parent->hasChildElement() + if(!parent->hasChildElement() && parent->getLinkedObject(false)==parent) return true; showable = false; @@ -4886,7 +4886,7 @@ int DocumentObjectItem::getSubName(std::ostringstream &str, App::DocumentObject } App::DocumentObject *DocumentObjectItem::getFullSubName( - std::ostringstream &str, DocumentObjectItem *parent) const + std::ostringstream &str, DocumentObjectItem *parent) const { auto pi = getParentItem(); if(this==parent || !pi || (!parent && !pi->isGroup())) diff --git a/src/Gui/Tree.h b/src/Gui/Tree.h index a33809d02e..8f9b2a5a76 100644 --- a/src/Gui/Tree.h +++ b/src/Gui/Tree.h @@ -81,8 +81,8 @@ public: static void scrollItemToTop(); void selectAllInstances(const ViewProviderDocumentObject &vpd); - void selectLinkedObject(App::DocumentObject *linked); - void selectAllLinks(App::DocumentObject *obj); + void selectLinkedObject(App::DocumentObject *linked); + void selectAllLinks(App::DocumentObject *obj); void expandSelectedItems(TreeItemMode mode); bool eventFilter(QObject *, QEvent *ev) override; @@ -202,7 +202,7 @@ private: void changeEvent(QEvent *e) override; void setupText(); - void updateChildren(App::DocumentObject *obj, + void updateChildren(App::DocumentObject *obj, const std::set &data, bool output, bool force); private: @@ -329,13 +329,13 @@ protected: bool updateObject(const Gui::ViewProviderDocumentObject&, const App::Property &prop); - bool createNewItem(const Gui::ViewProviderDocumentObject&, - QTreeWidgetItem *parent=0, int index=-1, + bool createNewItem(const Gui::ViewProviderDocumentObject&, + QTreeWidgetItem *parent=0, int index=-1, DocumentObjectDataPtr ptrs = DocumentObjectDataPtr()); int findRootIndex(App::DocumentObject *childObj); - DocumentObjectItem *findItemByObject(bool sync, + DocumentObjectItem *findItemByObject(bool sync, App::DocumentObject *obj, const char *subname, bool select=false); DocumentObjectItem *findItem(bool sync, DocumentObjectItem *item, const char *subname, bool select=true); @@ -402,8 +402,8 @@ public: // check if a new item is required at root bool requiredAtRoot(bool excludeSelf=true) const; - - // return the owner, and full quanlified subname + + // return the owner, and full qualified subname App::DocumentObject *getFullSubName(std::ostringstream &str, DocumentObjectItem *parent = 0) const; @@ -411,7 +411,7 @@ public: // 'cousin'. App::DocumentObject *getRelativeParent( std::ostringstream &str, - DocumentObjectItem *cousin, + DocumentObjectItem *cousin, App::DocumentObject **topParent=0, std::string *topSubname=0) const; @@ -491,7 +491,7 @@ class TreeWidgetEditDelegate: public QStyledItemDelegate { Q_OBJECT public: TreeWidgetEditDelegate(QObject* parent=0); - virtual QWidget* createEditor(QWidget *parent, + virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &index) const; }; diff --git a/src/Gui/TreeView.h b/src/Gui/TreeView.h index dae426dc1d..091d8bfc33 100644 --- a/src/Gui/TreeView.h +++ b/src/Gui/TreeView.h @@ -37,7 +37,7 @@ namespace Gui { class GuiExport TreeView : public QTreeView { Q_OBJECT - + public: TreeView(QWidget* parent=0); virtual ~TreeView(); diff --git a/src/Gui/Utilities.cpp b/src/Gui/Utilities.cpp index 40e4db7d1c..a3626b1624 100644 --- a/src/Gui/Utilities.cpp +++ b/src/Gui/Utilities.cpp @@ -95,8 +95,8 @@ Base::Matrix4D ViewVolumeProjection::getProjectionMatrix () const void Tessellator::tessCB(void * v0, void * v1, void * v2, void * cbdata) { - int * vtx0 = (int *)v0; - int * vtx1 = (int *)v1; + int * vtx0 = (int *)v0; + int * vtx1 = (int *)v1; int * vtx2 = (int *)v2; std::vector* array = (std::vector *)cbdata; diff --git a/src/Gui/View.cpp b/src/Gui/View.cpp index 5bd72d4cb2..0da5508f30 100644 --- a/src/Gui/View.cpp +++ b/src/Gui/View.cpp @@ -86,7 +86,7 @@ void BaseView::setDocument(Gui::Document* pcDocument) if (_pcDocument) _pcDocument->detachView(this, true); if (pcDocument) - pcDocument->attachView(this,true); + pcDocument->attachView(this,true); // set the new document as the active one _pcDocument = pcDocument; diff --git a/src/Gui/View.h b/src/Gui/View.h index c3fd2c49f7..300eaae611 100644 --- a/src/Gui/View.h +++ b/src/Gui/View.h @@ -32,16 +32,16 @@ namespace App class Document; } -namespace Gui +namespace Gui { class Document; class ViewProvider; /** Base class of all windows belonging to a document - * there are two ways of belonging to a document. The + * there are two ways of belonging to a document. The * first way is to a fixed one. The second way is to always * belonging to the Active document. that means switching every time - * the active document is changing. It also means that the view + * the active document is changing. It also means that the view * belongs sometimes to no document at all! * @see TreeView * @see Gui::Document @@ -65,7 +65,7 @@ public: virtual ~BaseView(); - /** @name methods used by the Application and the GuiDocument + /** @name methods used by the Application and the GuiDocument */ //@{ /// sets the view to another document (called by Application) @@ -81,7 +81,7 @@ public: /// indicates if the view is in passive mode bool isPassive(void) const {return bIsPassive;} - /** @name methods to override + /** @name methods to override */ //@{ /// get called when the document is updated @@ -111,4 +111,4 @@ protected: } // namespace Gui -#endif // GUI_VIEW_H +#endif // GUI_VIEW_H diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 8425cc4570..64d0e0805f 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -200,7 +200,7 @@ View3DInventor::~View3DInventor() { if(_pcDocument) { SoCamera * Cam = _viewer->getSoRenderManager()->getCamera(); - if (Cam) + if (Cam) _pcDocument->saveCameraSettings(SoFCDB::writeNodesToString(Cam).c_str()); } hGrp->Detach(this); @@ -357,9 +357,19 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M float val = rGrp.GetFloat("ZoomStep", 0.0f); _viewer->navigationStyle()->setZoomStep(val); } - else if (strcmp(Reason,"DragAtCursor") == 0) { - bool on = rGrp.GetBool("DragAtCursor", false); - _viewer->navigationStyle()->setDragAtCursor(on); + else if (strcmp(Reason,"RotationMode") == 0) { + long mode = rGrp.GetInt("RotationMode", 1); + if (mode == 0) { + _viewer->navigationStyle()->setRotationCenterMode(NavigationStyle::RotationCenterMode::WindowCenter); + } + else if (mode == 1) { + _viewer->navigationStyle()->setRotationCenterMode(NavigationStyle::RotationCenterMode::ScenePointAtCursor | + NavigationStyle::RotationCenterMode::FocalPointAtCursor); + } + else if (mode == 2) { + _viewer->navigationStyle()->setRotationCenterMode(NavigationStyle::RotationCenterMode::ScenePointAtCursor | + NavigationStyle::RotationCenterMode::BoundingBoxCenter); + } } else if (strcmp(Reason,"EyeDistance") == 0) { _viewer->getSoRenderManager()->setStereoOffset(rGrp.GetFloat("EyeDistance",5.0)); diff --git a/src/Gui/View3DInventor.h b/src/Gui/View3DInventor.h index 106b38190e..15dab6c554 100644 --- a/src/Gui/View3DInventor.h +++ b/src/Gui/View3DInventor.h @@ -58,7 +58,7 @@ protected: }; /** The 3D view window - * It consists out of the 3D view + * It consists out of the 3D view * \author Juergen Riegel */ class GuiExport View3DInventor : public MDIView, public ParameterGrp::ObserverType @@ -93,7 +93,7 @@ public: /** * If \a b is set to \a FullScreen the MDI view is displayed in full screen mode, if \a b * is set to \a TopLevel then it is displayed as an own top-level window, otherwise (\a Normal) - * as tabbed window. + * as tabbed window. * This method is reimplemented from MDIView to set the this widget as the proxy of the embedded * GL widget to get all key events in \a TopLevel or \a Fullscreen mode. */ diff --git a/src/Gui/View3DInventorExamples.cpp b/src/Gui/View3DInventorExamples.cpp index cb03296280..2fc97a7bf3 100644 --- a/src/Gui/View3DInventorExamples.cpp +++ b/src/Gui/View3DInventorExamples.cpp @@ -82,7 +82,7 @@ unsigned char * generateTexture(int w, int h, int d) } } - + return bitmap; } @@ -117,11 +117,11 @@ void doClipping(SbVec3f trans, SbRotation rot) // Clip box against plane SbClip clip; - SoMFVec3f * globalVerts = + SoMFVec3f * globalVerts = (SoMFVec3f *)SoDB::getGlobalField(SbName("globalVerts")); - SoMFVec3f * globalTVerts = + SoMFVec3f * globalTVerts = (SoMFVec3f *)SoDB::getGlobalField(SbName("globalTVerts")); - SoMFInt32 * globalnv = + SoMFInt32 * globalnv = (SoMFInt32 *)SoDB::getGlobalField(SbName("globalnv")); globalVerts->startEditing(); globalVerts->setNum(0); @@ -154,7 +154,7 @@ void doClipping(SbVec3f trans, SbRotation rot) globalnv->finishEditing(); // Close hole in clipped box by clipping against all 6 planes - + const SbVec3f planecoords[] = { SbVec3f(-10,0,-10), SbVec3f(10,0,-10), @@ -162,7 +162,7 @@ void doClipping(SbVec3f trans, SbRotation rot) SbVec3f(-10,0,10) }; - + clip.reset(); for (i = 0;i<4;i++) { SbVec3f v; @@ -176,9 +176,9 @@ void doClipping(SbVec3f trans, SbRotation rot) clip.clip(p); } int numVerts = clip.getNumVertices(); - SoMFVec3f * planeVerts = + SoMFVec3f * planeVerts = (SoMFVec3f *)SoDB::getGlobalField(SbName("planeVerts")); - SoMFVec3f * planeTVerts = + SoMFVec3f * planeTVerts = (SoMFVec3f *)SoDB::getGlobalField(SbName("planeTVerts")); planeVerts->startEditing(); planeVerts->setNum(0); @@ -235,7 +235,7 @@ void Texture3D(SoSeparator * root) SoMaterial * mat = new SoMaterial; mat->emissiveColor.setValue(1,1,1); root->addChild(mat); - + SoTransformerDragger * dragger = new SoTransformerDragger; dragger->scaleFactor.setValue(5,5,5); dragger->addValueChangedCallback(draggerCB, NULL); @@ -310,7 +310,7 @@ void LightManip(SoSeparator * root) } -} +} @@ -339,9 +339,9 @@ unsigned char bitmap[texturewidth*textureheight]; // int height - height of the bitmap // int mult - number to multiply each color by. // unsigned char * bmp - pointer to the bitmap -// int n - number of iterations +// int n - number of iterations void -julia(double crr, double cii, float zoom, int width, int height, int mult, +julia(double crr, double cii, float zoom, int width, int height, int mult, unsigned char * bmp, int n) { double zr, zr_old, zi; @@ -375,7 +375,7 @@ texture() return texture; } -// This function is called 20 times each second. +// This function is called 20 times each second. static void timersensorcallback(void * data, SoSensor *) { @@ -413,7 +413,7 @@ void AnimationTexture(SoSeparator * root) // Generate a julia set to use as a texturemap julia(global_cr, global_ci, 2.5, texturewidth, textureheight, 4, bitmap, 64); - + SoTexture2 * texnode = texture(); // Enable backface culling diff --git a/src/Gui/View3DInventorRiftViewer.cpp b/src/Gui/View3DInventorRiftViewer.cpp index 4e72573c0d..b0f50d79e2 100644 --- a/src/Gui/View3DInventorRiftViewer.cpp +++ b/src/Gui/View3DInventorRiftViewer.cpp @@ -36,7 +36,7 @@ View3DInventorRiftViewer::View3DInventorRiftViewer() : CoinRiftWidget() { workplace = new SoGroup(); - //translation = new SoTranslation ; + //translation = new SoTranslation ; //translation->translation.setValue(0,-1,0); //workplace->addChild(translation); @@ -56,26 +56,26 @@ View3DInventorRiftViewer::View3DInventorRiftViewer() : CoinRiftWidget() workplace->addChild(scale); ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Oculus"); - + this->setGeometry( hGrp->GetInt("RenderWindowPosX",100) , hGrp->GetInt("RenderWindowPosY",100) , hGrp->GetInt("RenderWindowSizeW",1920) , - hGrp->GetInt("RenderWindowSizeH",1080) + hGrp->GetInt("RenderWindowSizeH",1080) ); - + setBackgroundColor(SbColor(51,51,101)); basePosition = SbVec3f(0.0f, 0.5f, 0.8f); } //void saveWinPosition(void) //{ -// -// +// +// // //} -View3DInventorRiftViewer::~View3DInventorRiftViewer() +View3DInventorRiftViewer::~View3DInventorRiftViewer() { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Oculus"); diff --git a/src/Gui/View3DInventorRiftViewer.h b/src/Gui/View3DInventorRiftViewer.h index 9991af9841..ed5ff528af 100644 --- a/src/Gui/View3DInventorRiftViewer.h +++ b/src/Gui/View3DInventorRiftViewer.h @@ -49,7 +49,7 @@ protected: }; -} //namespace Gui +} //namespace Gui #endif //BUILD_VR diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index ba853256cd..35cee0fdcd 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -337,12 +337,13 @@ public: SoMotion3Event* motion3Event = new SoMotion3Event; motion3Event->setTranslation(translationVector); motion3Event->setRotation(xRot * yRot * zRot); + motion3Event->setPosition(this->mousepos); return motion3Event; } return NULL; - }; + } }; /** \defgroup View3D 3D Viewer @@ -744,7 +745,7 @@ void View3DInventorViewer::checkGroupOnTop(const SelectionChanges &Reason) { return; } if(Reason.Type == SelectionChanges::RmvPreselect || - Reason.Type == SelectionChanges::RmvPreselectSignal) + Reason.Type == SelectionChanges::RmvPreselectSignal) { SoSelectionElementAction action(SoSelectionElementAction::None,true); action.apply(pcGroupOnTopPreSel); @@ -862,12 +863,12 @@ void View3DInventorViewer::checkGroupOnTop(const SelectionChanges &Reason) { if(idx<0 || idx>=modeSwitch->getNumChildren() || modeSwitch->getChild(idx)!=childRoot) { - FC_LOG("skip " << obj->getFullName() << '.' << (subname?subname:"") + FC_LOG("skip " << obj->getFullName() << '.' << (subname?subname:"") << ", hidden inside geo group"); return; } if(childRoot->findChild(childVp->getRoot())<0) { - FC_LOG("cannot find '" << childVp->getObject()->getFullName() + FC_LOG("cannot find '" << childVp->getObject()->getFullName() << "' in geo group '" << grp->getNameInDocument() << "'"); break; } @@ -917,7 +918,7 @@ void View3DInventorViewer::onSelectionChanged(const SelectionChanges &_Reason) SelectionChanges Reason(_Reason); - if(Reason.pDocName && *Reason.pDocName && + if(Reason.pDocName && *Reason.pDocName && strcmp(getDocument()->getDocument()->getName(),Reason.pDocName)!=0) return; @@ -936,7 +937,7 @@ void View3DInventorViewer::onSelectionChanged(const SelectionChanges &_Reason) case SelectionChanges::RmvPreselect: case SelectionChanges::RmvPreselectSignal: case SelectionChanges::SetSelection: - case SelectionChanges::AddSelection: + case SelectionChanges::AddSelection: case SelectionChanges::RmvSelection: case SelectionChanges::ClrSelection: checkGroupOnTop(Reason); @@ -947,8 +948,8 @@ void View3DInventorViewer::onSelectionChanged(const SelectionChanges &_Reason) return; } - if(Reason.Type == SelectionChanges::RmvPreselect || - Reason.Type == SelectionChanges::RmvPreselectSignal) + if(Reason.Type == SelectionChanges::RmvPreselect || + Reason.Type == SelectionChanges::RmvPreselectSignal) { SoFCHighlightAction cAct(SelectionChanges::RmvPreselect); cAct.apply(pcViewProviderRoot); @@ -1044,7 +1045,7 @@ void View3DInventorViewer::setEditingTransform(const Base::Matrix4D &mat) { } void View3DInventorViewer::setupEditingRoot(SoNode *node, const Base::Matrix4D *mat) { - if(!editViewProvider) + if(!editViewProvider) return; resetEditingRoot(false); if(mat) @@ -1077,7 +1078,7 @@ void View3DInventorViewer::resetEditingRoot(bool updateLinks) } restoreEditingRoot = false; auto root = editViewProvider->getRoot(); - if(root->getNumChildren()) + if(root->getNumChildren()) FC_ERR("WARNING!!! Editing view provider root node is tampered"); root->addChild(editViewProvider->getTransformNode()); for(int i=1,count=pcEditingRoot->getNumChildren();isetMatrix(gm.getMatrix()); trans->ref(); - - // build a temporary scenegraph only keeping this viewproviders nodes and the accumulated + + // build a temporary scenegraph only keeping this viewproviders nodes and the accumulated // transformation SoSeparator* root = new SoSeparator; root->ref(); @@ -1167,7 +1168,7 @@ SoPickedPoint* View3DInventorViewer::getPointOnRay(const SbVec3f& pos,const SbVe { // Note: There seems to be a bug with setRay() which causes SoRayPickAction // to fail to get intersections between the ray and a line - + SoPath *path; if(vp == editViewProvider && pcEditingRoot->getNumChildren()>1) { path = new SoPath(1); @@ -1186,19 +1187,19 @@ SoPickedPoint* View3DInventorViewer::getPointOnRay(const SbVec3f& pos,const SbVe } SoGetMatrixAction gm(getSoRenderManager()->getViewportRegion()); gm.apply(path); - - // build a temporary scenegraph only keeping this viewproviders nodes and the accumulated + + // build a temporary scenegraph only keeping this viewproviders nodes and the accumulated // transformation SoTransform* trans = new SoTransform; trans->ref(); trans->setMatrix(gm.getMatrix()); - + SoSeparator* root = new SoSeparator; root->ref(); root->addChild(getSoRenderManager()->getCamera()); root->addChild(trans); root->addChild(path->getTail()); - + //get the picked point SoRayPickAction rp(getSoRenderManager()->getViewportRegion()); rp.setRay(pos,dir); @@ -2750,7 +2751,7 @@ void View3DInventorViewer::toggleClippingPlane(int toggle, bool beforeEditing, pcClipPlane->ref(); if(beforeEditing) pcViewProviderRoot->insertChild(pcClipPlane,0); - else + else pcViewProviderRoot->insertChild(pcClipPlane,pcViewProviderRoot->findChild(pcEditingRoot)+1); } diff --git a/src/Gui/View3DInventorViewer.h b/src/Gui/View3DInventorViewer.h index ff41435d36..c690b54346 100644 --- a/src/Gui/View3DInventorViewer.h +++ b/src/Gui/View3DInventorViewer.h @@ -78,7 +78,7 @@ class ViewerEventFilter; class GuiExport View3DInventorViewer : public Quarter::SoQTQuarterAdaptor, public SelectionObserver { typedef Quarter::SoQTQuarterAdaptor inherited; - + public: /// Pick modes for picking points in the scene enum SelectionMode { @@ -102,7 +102,7 @@ public: DisallowZooming=32,/**< switch off the zooming. */ }; //@} - + /** @name Anti-Aliasing modes of the rendered 3D scene * Specifies Anti-Aliasing (AA) method * - Smoothing enables OpenGL line and vertex smoothing (basically deprecated) @@ -131,7 +131,7 @@ public: View3DInventorViewer (QWidget *parent, const QtGLWidget* sharewidget = 0); View3DInventorViewer (const QtGLFormat& format, QWidget *parent, const QtGLWidget* sharewidget = 0); virtual ~View3DInventorViewer(); - + void init(); /// Observer message from the Selection @@ -229,7 +229,7 @@ public: void saveGraphic(int pagesize, const QColor&, SoVectorizeAction* va) const; //@} /** - * Writes the current scenegraph to an Inventor file, either in ascii or binary. + * Writes the current scenegraph to an Inventor file, either in ascii or binary. */ bool dumpToFile(SoNode* node, const char* filename, bool binary) const; @@ -244,7 +244,7 @@ public: void setSelectionEnabled(const SbBool enable); SbBool isSelectionEnabled(void) const; //@} - + /// Returns the screen coordinates of the origin of the path's tail object /*! Return value is in floating-point pixels, origin at bottom-left. */ SbVec2f screenCoordsOfPath(SoPath *path) const; @@ -272,8 +272,8 @@ public: //@} /** - * Set up a callback function \a cb which will be invoked for the given eventtype. - * \a userdata will be given as the first argument to the callback function. + * Set up a callback function \a cb which will be invoked for the given eventtype. + * \a userdata will be given as the first argument to the callback function. */ void addEventCallback(SoType eventtype, SoEventCallbackCB * cb, void* userdata = 0); /** @@ -292,7 +292,7 @@ public: /** Returns the up direction */ SbVec3f getUpDirection() const; /** Returns the orientation of the camera. */ - SbRotation getCameraOrientation() const; + SbRotation getCameraOrientation() const; /** Returns the 3d point on the focal plane to the given 2d point. */ SbVec3f getPointOnScreen(const SbVec2s&) const; /** Returns the near plane represented by its normal and base point. */ @@ -300,7 +300,7 @@ public: /** Returns the far plane represented by its normal and base point. */ void getFarPlane(SbVec3f& rcPt, SbVec3f& rcNormal) const; /** Adds or remove a manipulator to/from the scenegraph. */ - void toggleClippingPlane(int toggle=-1, bool beforeEditing=false, + void toggleClippingPlane(int toggle=-1, bool beforeEditing=false, bool noManip=false, const Base::Placement &pla = Base::Placement()); /** Checks whether a clipping plane is set or not. */ bool hasClippingPlane() const; @@ -309,7 +309,7 @@ public: /** Project the given normalized 2d point onto the far plane */ SbVec3f projectOnFarPlane(const SbVec2f&) const; //@} - + /** @name Dimension controls * the "turn*" functions are wired up to parameter groups through view3dinventor. * don't call them directly. instead set the parameter groups. @@ -335,8 +335,8 @@ public: void setCameraOrientation(const SbRotation& rot, SbBool moveTocenter=false); void setCameraType(SoType t); void moveCameraTo(const SbRotation& rot, const SbVec3f& pos, int steps, int ms); - /** - * Zooms the viewport to the size of the bounding box. + /** + * Zooms the viewport to the size of the bounding box. */ void boxZoom(const SbBox2s&); /** @@ -349,7 +349,7 @@ public: void viewVR(void); /** - * Reposition the current camera so we can see all selected objects + * Reposition the current camera so we can see all selected objects * of the scene. Therefore we search for all SOFCSelection nodes, if * none of them is selected nothing happens. */ @@ -366,7 +366,7 @@ public: void setAxisCross(bool b); bool hasAxisCross(void); - + void setEnabledFPSCounter(bool b); void setEnabledNaviCube(bool b); bool isEnabledNaviCube(void) const; @@ -467,7 +467,7 @@ private: // big one in the middle SoShapeScale* axisCross; SoGroup* axisGroup; - + //stuff needed to draw the fps counter bool fpsEnabled; bool vboEnabled; @@ -480,9 +480,9 @@ private: std::string overrideMode; Gui::Document* guiDocument = nullptr; - + ViewerEventFilter* viewerEventFilter; - + PyObject *_viewerPy; // friends diff --git a/src/Gui/View3DPy.cpp b/src/Gui/View3DPy.cpp index 1c7f1d987d..18cf5985ec 100644 --- a/src/Gui/View3DPy.cpp +++ b/src/Gui/View3DPy.cpp @@ -295,7 +295,7 @@ Py::Object View3DInventorPy::message(const Py::Tuple& args) { const char **ppReturn = 0; char *psMsgStr; - if (!PyArg_ParseTuple(args.ptr(), "s;Message string needed (string)",&psMsgStr)) // convert args: Python->C + if (!PyArg_ParseTuple(args.ptr(), "s;Message string needed (string)",&psMsgStr)) // convert args: Python->C throw Py::Exception(); try { @@ -1100,8 +1100,8 @@ Py::Object View3DInventorPy::getViewDirection(const Py::Tuple& args) Py::Object View3DInventorPy::setViewDirection(const Py::Tuple& args) { PyObject* object; - if (!PyArg_ParseTuple(args.ptr(), "O", &object)) - throw Py::Exception(); + if (!PyArg_ParseTuple(args.ptr(), "O", &object)) + throw Py::Exception(); try { if (PyTuple_Check(object)) { @@ -1182,7 +1182,7 @@ Py::Object View3DInventorPy::getCameraType(const Py::Tuple& args) Py::Object View3DInventorPy::setCameraType(const Py::Tuple& args) { int cameratype=-1; - if (!PyArg_ParseTuple(args.ptr(), "i", &cameratype)) { // convert args: Python->C + if (!PyArg_ParseTuple(args.ptr(), "i", &cameratype)) { // convert args: Python->C char* modename; PyErr_Clear(); if (!PyArg_ParseTuple(args.ptr(), "s", &modename)) @@ -1259,7 +1259,7 @@ Py::Object View3DInventorPy::dump(const Py::Tuple& args) Py::Object View3DInventorPy::dumpNode(const Py::Tuple& args) { PyObject* object; - if (!PyArg_ParseTuple(args.ptr(), "O", &object)) // convert args: Python->C + if (!PyArg_ParseTuple(args.ptr(), "O", &object)) // convert args: Python->C throw Py::Exception(); void* ptr = 0; @@ -1387,7 +1387,7 @@ Py::Object View3DInventorPy::getObjectInfo(const Py::Tuple& args) try { //Note: For gcc (4.2) we need the 'const' keyword to avoid the compiler error: //conversion from 'Py::seqref' to non-scalar type 'Py::Int' requested - //We should report this problem to the PyCXX project as in the documentation an + //We should report this problem to the PyCXX project as in the documentation an //example without the 'const' keyword is used. //Or we can also write Py::Int x(tuple[0]); const Py::Tuple tuple(object); @@ -1494,7 +1494,7 @@ Py::Object View3DInventorPy::getObjectsInfo(const Py::Tuple& args) try { //Note: For gcc (4.2) we need the 'const' keyword to avoid the compiler error: //conversion from 'Py::seqref' to non-scalar type 'Py::Int' requested - //We should report this problem to the PyCXX project as in the documentation an + //We should report this problem to the PyCXX project as in the documentation an //example without the 'const' keyword is used. //Or we can also write Py::Int x(tuple[0]); const Py::Tuple tuple(object); @@ -2287,7 +2287,7 @@ Py::Object View3DInventorPy::addEventCallbackPivy(const Py::Tuple& args) throw Py::TypeError("object is not callable"); } - SoEventCallbackCB* callback = (ex == 1 ? + SoEventCallbackCB* callback = (ex == 1 ? View3DInventorPy::eventCallbackPivyEx : View3DInventorPy::eventCallbackPivy); _view->getViewer()->addEventCallback(*eventId, callback, method); @@ -2329,7 +2329,7 @@ Py::Object View3DInventorPy::removeEventCallbackPivy(const Py::Tuple& args) throw Py::TypeError("object is not callable"); } - SoEventCallbackCB* callback = (ex == 1 ? + SoEventCallbackCB* callback = (ex == 1 ? View3DInventorPy::eventCallbackPivyEx : View3DInventorPy::eventCallbackPivy); _view->getViewer()->removeEventCallback(*eventId, callback, method); @@ -2515,7 +2515,7 @@ Py::Object View3DInventorPy::getActiveObject(const Py::Tuple& args) PyObject *resolve = Py_True; if (!PyArg_ParseTuple(args.ptr(), "s|O", &name,&resolve)) throw Py::Exception(); - + App::DocumentObject *parent = 0; std::string subname; App::DocumentObject* obj = _view->getActiveObject(name,&parent,&subname); @@ -2526,8 +2526,8 @@ Py::Object View3DInventorPy::getActiveObject(const Py::Tuple& args) return Py::asObject(obj->getPyObject()); return Py::TupleN( - Py::asObject(obj->getPyObject()), - Py::asObject(parent->getPyObject()), + Py::asObject(obj->getPyObject()), + Py::asObject(parent->getPyObject()), Py::String(subname.c_str())); } diff --git a/src/Gui/View3DViewerPy.cpp b/src/Gui/View3DViewerPy.cpp index e1a86fb7c7..b134b15a08 100644 --- a/src/Gui/View3DViewerPy.cpp +++ b/src/Gui/View3DViewerPy.cpp @@ -260,7 +260,7 @@ Py::Object View3DInventorViewerPy::seekToPoint(const Py::Tuple& args) else { Py::Int x(tuple[0]); Py::Int y(tuple[1]); - + SbVec2s hitpoint ((long)x,(long)y); _viewer->seekToPoint(hitpoint); } @@ -276,7 +276,7 @@ Py::Object View3DInventorViewerPy::setFocalDistance(const Py::Tuple& args) { float distance; if (!PyArg_ParseTuple(args.ptr(), "f", &distance)) - throw Py::Exception(); + throw Py::Exception(); try { SoCamera* cam = _viewer->getSoRenderManager()->getCamera(); @@ -295,7 +295,7 @@ Py::Object View3DInventorViewerPy::setFocalDistance(const Py::Tuple& args) catch(...) { throw Py::RuntimeError("Unknown C++ exception"); } - + return Py::None(); } @@ -303,7 +303,7 @@ Py::Object View3DInventorViewerPy::getFocalDistance(const Py::Tuple& args) { if (!PyArg_ParseTuple(args.ptr(), "")) throw Py::Exception(); - + try { double d = _viewer->getSoRenderManager()->getCamera()->focalDistance.getValue(); return Py::Float(d); diff --git a/src/Gui/View3DViewerPy.h b/src/Gui/View3DViewerPy.h index 0832f568bf..0418d8bd8a 100644 --- a/src/Gui/View3DViewerPy.h +++ b/src/Gui/View3DViewerPy.h @@ -34,11 +34,11 @@ class View3DInventorViewer; /** * @brief Python interface for View3DInventorViewer - * + * * The interface does not offer all methods the c++ View3DInventorViewer counterpart has, respectively - * also not everything the QuarterWidget and the SoQtQuarterAdaptor offers. It only exposes + * also not everything the QuarterWidget and the SoQtQuarterAdaptor offers. It only exposes * methods with additioanl functionality in comparison to the View3DInventorPy class. Everything that - * can be done from there has no interface here. + * can be done from there has no interface here. */ class View3DInventorViewerPy : public Py::PythonExtension { diff --git a/src/Gui/ViewParams.cpp b/src/Gui/ViewParams.cpp index d0082c2571..248d02c5f7 100644 --- a/src/Gui/ViewParams.cpp +++ b/src/Gui/ViewParams.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/ViewParams.h b/src/Gui/ViewParams.h index 92ac24dd72..cee80eb4fa 100644 --- a/src/Gui/ViewParams.h +++ b/src/Gui/ViewParams.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2018 Zheng, Lei (realthunder) * + * Copyright (c) 2018 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -28,7 +28,7 @@ namespace Gui { -/** Convenient class to obtain view provider related parameters +/** Convenient class to obtain view provider related parameters * * The parameters are under group "User parameter:BaseApp/Preferences/View" */ diff --git a/src/Gui/ViewProvider.cpp b/src/Gui/ViewProvider.cpp index c0538fd33e..ba98ea4d16 100644 --- a/src/Gui/ViewProvider.cpp +++ b/src/Gui/ViewProvider.cpp @@ -312,7 +312,8 @@ QIcon ViewProvider::mergeOverlayIcons (const QIcon & orig) const QIcon overlayedIcon = orig; for (Gui::ViewProviderExtension* ext : vector) { - overlayedIcon = ext->extensionMergeOverlayIcons(overlayedIcon); + if (!ext->ignoreOverlayIcon()) + overlayedIcon = ext->extensionMergeOverlayIcons(overlayedIcon); } return overlayedIcon; @@ -649,6 +650,13 @@ bool ViewProvider::mouseButtonPressed(int button, bool pressed, return false; } +void ViewProvider::setupContextMenu(QMenu* menu, QObject* receiver, const char* method) +{ + auto vector = getExtensionsDerivedFromType(); + for (Gui::ViewProviderExtension* ext : vector) + ext->extensionSetupContextMenu(menu, receiver, method); +} + bool ViewProvider::onDelete(const vector< string >& subNames) { bool del = true; @@ -749,7 +757,7 @@ void ViewProvider::dropObject(App::DocumentObject* obj) { throw Base::RuntimeError("ViewProvider::dropObject: no extension for dropping given object available."); } -bool ViewProvider::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, +bool ViewProvider::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, const char *subname, const std::vector &elements) const { auto vector = getExtensionsDerivedFromType(); @@ -760,8 +768,8 @@ bool ViewProvider::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject return canDropObject(obj); } -std::string ViewProvider::dropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, - const char *subname, const std::vector &elements) +std::string ViewProvider::dropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, + const char *subname, const std::vector &elements) { auto vector = getExtensionsDerivedFromType(); for(Gui::ViewProviderExtension* ext : vector) { @@ -916,7 +924,7 @@ int ViewProvider::partialRender(const std::vector &elements, bool c action.setSecondary(true); for(auto element : elements) { bool hidden = hasHiddenMarker(element.c_str()); - if(hidden) + if(hidden) element.resize(element.size()-hiddenMarker().size()); path->truncate(0); SoDetail *det = 0; @@ -926,7 +934,7 @@ int ViewProvider::partialRender(const std::vector &elements, bool c continue; } FC_LOG("partial render (" << path->getLength() << "): " << element); - if(!hidden) + if(!hidden) action.setType(clear?SoSelectionElementAction::Remove:SoSelectionElementAction::Append); else action.setType(clear?SoSelectionElementAction::Show:SoSelectionElementAction::Hide); diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h index 56a746f378..6543c00ac9 100644 --- a/src/Gui/ViewProvider.h +++ b/src/Gui/ViewProvider.h @@ -83,7 +83,7 @@ enum ViewStatus { }; -/** Convenience smart pointer to wrap coin node. +/** Convenience smart pointer to wrap coin node. * * It is basically boost::intrusive plus implicit pointer conversion to save the * trouble of typing get() all the time. @@ -173,7 +173,7 @@ public: * @param subname: dot separated string reference to the sub element * @param pPath: output coin path leading to the returned element detail * @param append: If true, pPath will be first appended with the root node and - * the mode switch node of this view provider. + * the mode switch node of this view provider. * * @return the coint detail of the subelement * @@ -276,7 +276,7 @@ public: virtual bool canDragAndDropObject(App::DocumentObject*) const; /** Add an object to the view provider by drag and drop */ virtual void dropObject(App::DocumentObject*); - /** Query object dropping with full quanlified name + /** Query object dropping with full qualified name * * Tree view now calls this function instead of canDropObject(), and may * query for objects from other document. The default implementation @@ -298,13 +298,13 @@ public: * * @return Return whether the dropping action is allowed. * */ - virtual bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, + virtual bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, const char *subname, const std::vector &elements) const; /// return a subname referencing the sub-object holding the dropped objects virtual std::string getDropPrefix() const { return std::string(); } - /** Add an object with full quanlified name to the view provider by drag and drop + /** Add an object with full qualified name to the view provider by drag and drop * * @param obj: the object being dropped * @@ -322,7 +322,7 @@ public: * object, which may or may not be the actual dropped object, e.g. it may be * a link. */ - virtual std::string dropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, + virtual std::string dropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, const char *subname, const std::vector &elements); /** Replace an object to the view provider by drag and drop * @@ -393,7 +393,7 @@ public: const std::string getOverrideMode(); //@} - /** @name Color management methods + /** @name Color management methods */ //@{ virtual std::map getElementColors(const char *element=0) const { @@ -458,7 +458,7 @@ public: virtual bool mouseButtonPressed(int button, bool pressed, const SbVec2s &cursorPos, const View3DInventorViewer* viewer); /// set up the context-menu with the supported edit modes - virtual void setupContextMenu(QMenu*, QObject*, const char*) {} + virtual void setupContextMenu(QMenu*, QObject*, const char*); /** @name direct handling methods * This group of methods is to direct influence the @@ -507,7 +507,7 @@ public: void setDefaultMode(int); int getDefaultMode() const; //@} - + virtual void setRenderCacheMode(int); protected: diff --git a/src/Gui/ViewProviderAnnotation.cpp b/src/Gui/ViewProviderAnnotation.cpp index 7859dc7c37..3c5c9fb41a 100644 --- a/src/Gui/ViewProviderAnnotation.cpp +++ b/src/Gui/ViewProviderAnnotation.cpp @@ -68,7 +68,7 @@ const char* ViewProviderAnnotation::RotationAxisEnums[]= {"X","Y","Z",NULL}; PROPERTY_SOURCE(Gui::ViewProviderAnnotation, Gui::ViewProviderDocumentObject) -ViewProviderAnnotation::ViewProviderAnnotation() +ViewProviderAnnotation::ViewProviderAnnotation() { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); unsigned long col = hGrp->GetUnsigned("AnnotationTextColor",4294967295UL); // light grey @@ -191,7 +191,7 @@ void ViewProviderAnnotation::attach(App::DocumentObject* f) SoAnnotation* anno3d = new SoAnnotation(); SoFCSelection* textsep = new SoFCSelection(); - + // set selection/highlight colors float transparency; ParameterGrp::handle hGrp = Gui::WindowParameter::getDefaultParameter()->GetGroup("View"); @@ -217,11 +217,11 @@ void ViewProviderAnnotation::attach(App::DocumentObject* f) textsep->addChild(pLabel); SoFCSelection* textsep3d = new SoFCSelection(); - + // set sel/highlight color here too textsep3d->colorHighlight.setValue(highlightColor); textsep3d->colorSelection.setValue(selectionColor); - + textsep3d->objectName = pcObject->getNameInDocument(); textsep3d->documentName = pcObject->getDocument()->getName(); textsep3d->subElementName = "Main"; @@ -240,7 +240,7 @@ void ViewProviderAnnotation::attach(App::DocumentObject* f) void ViewProviderAnnotation::updateData(const App::Property* prop) { - if (prop->getTypeId() == App::PropertyStringList::getClassTypeId() && + if (prop->getTypeId() == App::PropertyStringList::getClassTypeId() && strcmp(prop->getName(),"LabelText") == 0) { const std::vector lines = static_cast(prop)->getValues(); int index=0; @@ -278,7 +278,7 @@ const char* ViewProviderAnnotationLabel::JustificationEnums[]= {"Left","Right"," PROPERTY_SOURCE(Gui::ViewProviderAnnotationLabel, Gui::ViewProviderDocumentObject) -ViewProviderAnnotationLabel::ViewProviderAnnotationLabel() +ViewProviderAnnotationLabel::ViewProviderAnnotationLabel() { ADD_PROPERTY(TextColor,(1.0f,1.0f,1.0f)); ADD_PROPERTY(BackgroundColor,(0.0f,0.333f,1.0f)); @@ -381,7 +381,7 @@ void ViewProviderAnnotationLabel::attach(App::DocumentObject* f) void ViewProviderAnnotationLabel::updateData(const App::Property* prop) { - if (prop->getTypeId() == App::PropertyStringList::getClassTypeId() && + if (prop->getTypeId() == App::PropertyStringList::getClassTypeId() && strcmp(prop->getName(),"LabelText") == 0) { drawImage(static_cast(prop)->getValues()); } @@ -414,7 +414,7 @@ void ViewProviderAnnotationLabel::setupContextMenu(QMenu* menu, QObject* receive void ViewProviderAnnotationLabel::dragStartCallback(void *, SoDragger *) { // This is called when a manipulator is about to manipulating - Gui::Application::Instance->activeDocument()->openCommand("Transform"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform")); } void ViewProviderAnnotationLabel::dragFinishCallback(void *, SoDragger *) @@ -435,7 +435,7 @@ void ViewProviderAnnotationLabel::dragMotionCallback(void *data, SoDragger *drag bool ViewProviderAnnotationLabel::setEdit(int ModNum) { - Q_UNUSED(ModNum); + Q_UNUSED(ModNum); SoSearchAction sa; sa.setInterest(SoSearchAction::FIRST); sa.setSearchingAll(false); @@ -456,7 +456,7 @@ bool ViewProviderAnnotationLabel::setEdit(int ModNum) void ViewProviderAnnotationLabel::unsetEdit(int ModNum) { - Q_UNUSED(ModNum); + Q_UNUSED(ModNum); SoSearchAction sa; sa.setType(TranslateManip::getClassTypeId()); sa.setInterest(SoSearchAction::FIRST); diff --git a/src/Gui/ViewProviderBuilder.cpp b/src/Gui/ViewProviderBuilder.cpp index 99385a814a..58b8bd54d7 100644 --- a/src/Gui/ViewProviderBuilder.cpp +++ b/src/Gui/ViewProviderBuilder.cpp @@ -36,7 +36,7 @@ using namespace Gui; std::map ViewProviderBuilder::_prop_to_view; -ViewProviderBuilder::ViewProviderBuilder() +ViewProviderBuilder::ViewProviderBuilder() { } @@ -93,7 +93,7 @@ Gui::SoFCSelection* ViewProviderBuilder::createSelection() // -------------------------------------- -ViewProviderColorBuilder::ViewProviderColorBuilder() +ViewProviderColorBuilder::ViewProviderColorBuilder() { } diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index 5ae249139c..0230117675 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -74,11 +74,11 @@ ViewProviderDocumentObject::ViewProviderDocumentObject() { static const char *dogroup = "Display Options"; static const char *sgroup = "Selection"; - + ADD_PROPERTY_TYPE(DisplayMode, ((long)0), dogroup, App::Prop_None, "Set the display mode"); ADD_PROPERTY_TYPE(Visibility, (true), dogroup, App::Prop_None, "Show the object in the 3d view"); ADD_PROPERTY_TYPE(ShowInTree, (true), dogroup, App::Prop_None, "Show the object in the tree view"); - + ADD_PROPERTY_TYPE(SelectionStyle, ((long)0), sgroup, App::Prop_None, "Set the object selection style"); static const char *SelectionStyleEnum[] = {"Shape","BoundBox",0}; SelectionStyle.setEnums(SelectionStyleEnum); @@ -188,7 +188,7 @@ void ViewProviderDocumentObject::onChanged(const App::Property* prop) Visibility.setStatus(App::Property::User2, false); } if (!Visibility.testStatus(App::Property::User1) - && getObject() + && getObject() && getObject()->Visibility.getValue()!=Visibility.getValue()) { // Changing the visibility of a document object will automatically set @@ -483,7 +483,7 @@ PyObject* ViewProviderDocumentObject::getPyObject() return pyViewObject; } -bool ViewProviderDocumentObject::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, +bool ViewProviderDocumentObject::canDropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, const char *subname, const std::vector &elements) const { auto vector = getExtensionsDerivedFromType(); @@ -504,7 +504,7 @@ int ViewProviderDocumentObject::replaceObject( { FC_THROWM(Base::RuntimeError,"Invalid object"); } - + auto obj = getObject(); if(!obj || !obj->getNameInDocument()) FC_THROWM(Base::RuntimeError,"View provider not attached"); @@ -570,7 +570,7 @@ bool ViewProviderDocumentObject::getElementPicked(const SoPickedPoint *pp, std:: auto childRoot = getChildRoot(); int idx; - if(!childRoot || + if(!childRoot || (idx=pcModeSwitch->whichChild.getValue())<0 || pcModeSwitch->getChild(idx)!=childRoot) { @@ -619,7 +619,7 @@ bool ViewProviderDocumentObject::getDetailPath(const char *subname, SoFullPath * if(!vp) return false; auto childRoot = getChildRoot(); - if(!childRoot) + if(!childRoot) path->truncate(len); else { auto idx = pcModeSwitch->whichChild.getValue(); @@ -638,7 +638,7 @@ bool ViewProviderDocumentObject::getDetailPath(const char *subname, SoFullPath * } void ViewProviderDocumentObject::onPropertyStatusChanged( - const App::Property &prop, unsigned long oldStatus) + const App::Property &prop, unsigned long oldStatus) { (void)oldStatus; if(!App::Document::isAnyRestoring() && pcObject && pcObject->getDocument()) diff --git a/src/Gui/ViewProviderDocumentObject.h b/src/Gui/ViewProviderDocumentObject.h index d809814138..3af4173d13 100644 --- a/src/Gui/ViewProviderDocumentObject.h +++ b/src/Gui/ViewProviderDocumentObject.h @@ -78,7 +78,7 @@ public: /// If null is returned then no transaction will be opened. virtual const char* getTransactionText() const override; - virtual bool canDropObjectEx(App::DocumentObject *, App::DocumentObject *, + virtual bool canDropObjectEx(App::DocumentObject *, App::DocumentObject *, const char *, const std::vector &) const override; virtual int replaceObject(App::DocumentObject*, App::DocumentObject*) override; @@ -131,7 +131,7 @@ public: /** Return the linked view object * * This function is mainly used for GUI navigation (e.g. - * StdCmdLinkSelectLinked). + * StdCmdLinkSelectLinked). * * @param subname: output as the subname referencing the linked object * @param recursive: whether to follow the link recursively @@ -185,7 +185,7 @@ protected: * is part of the same document as the object this view provider is * attached to for an front root of \a type. * Before calling this function this view provider has to be attached - * to an object. The method returns after the first front root node + * to an object. The method returns after the first front root node * matches. If no front root node matches, 0 is returned. */ SoNode* findFrontRootOfType(const SoType& type) const; diff --git a/src/Gui/ViewProviderDocumentObjectGroup.cpp b/src/Gui/ViewProviderDocumentObjectGroup.cpp index 6256a96381..711ec667a9 100644 --- a/src/Gui/ViewProviderDocumentObjectGroup.cpp +++ b/src/Gui/ViewProviderDocumentObjectGroup.cpp @@ -84,7 +84,7 @@ QIcon ViewProviderDocumentObjectGroup::getIcon(void) const } /** - * Extracts the associated view providers of the objects of the associated object group group. + * Extracts the associated view providers of the objects of the associated object group group. */ void ViewProviderDocumentObjectGroup::getViewProviders(std::vector& vp) const { diff --git a/src/Gui/ViewProviderDocumentObjectGroup.h b/src/Gui/ViewProviderDocumentObjectGroup.h index 2b853fab99..f78cd676a4 100644 --- a/src/Gui/ViewProviderDocumentObjectGroup.h +++ b/src/Gui/ViewProviderDocumentObjectGroup.h @@ -31,7 +31,7 @@ namespace Gui { -class GuiExport ViewProviderDocumentObjectGroup : public ViewProviderDocumentObject, +class GuiExport ViewProviderDocumentObjectGroup : public ViewProviderDocumentObject, public ViewProviderGroupExtension { PROPERTY_HEADER_WITH_EXTENSIONS(Gui::ViewProviderDocumentObjectGroup); diff --git a/src/Gui/ViewProviderDocumentObjectPyImp.cpp b/src/Gui/ViewProviderDocumentObjectPyImp.cpp index 8d3d299aef..0dba4eff87 100644 --- a/src/Gui/ViewProviderDocumentObjectPyImp.cpp +++ b/src/Gui/ViewProviderDocumentObjectPyImp.cpp @@ -48,8 +48,8 @@ std::string ViewProviderDocumentObjectPy::representation(void) const PyObject* ViewProviderDocumentObjectPy::update(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { getViewProviderDocumentObjectPtr()->updateView(); Py_Return; @@ -73,7 +73,7 @@ void ViewProviderDocumentObjectPy::setObject(Py::Object pyobj) static_cast(*pyobj)->getDocumentObjectPtr()); } -Py::Boolean ViewProviderDocumentObjectPy::getForceUpdate() const +Py::Boolean ViewProviderDocumentObjectPy::getForceUpdate() const { return Py::Boolean(getViewProviderDocumentObjectPtr()->isUpdateForced()); } @@ -96,5 +96,5 @@ PyObject *ViewProviderDocumentObjectPy::getCustomAttributes(const char* /*attr*/ int ViewProviderDocumentObjectPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Gui/ViewProviderDragger.cpp b/src/Gui/ViewProviderDragger.cpp index 66b27b6e54..bf2bc001e1 100644 --- a/src/Gui/ViewProviderDragger.cpp +++ b/src/Gui/ViewProviderDragger.cpp @@ -39,9 +39,9 @@ # include # include # include -# include +# include # include -# include +# include #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... @@ -107,6 +107,7 @@ void ViewProviderDragger::setupContextMenu(QMenu* menu, QObject* receiver, const { QAction* act = menu->addAction(QObject::tr("Transform"), receiver, member); act->setData(QVariant((int)ViewProvider::Transform)); + ViewProviderDocumentObject::setupContextMenu(menu, receiver, member); } ViewProvider *ViewProviderDragger::startEditing(int mode) { @@ -125,7 +126,7 @@ bool ViewProviderDragger::checkLink() { ViewProviderDocumentObject *vpParent = 0; std::string subname; auto doc = Application::Instance->editDocument(); - if(!doc) + if(!doc) return false; doc->getInEdit(&vpParent,&subname); if(!vpParent) @@ -157,29 +158,29 @@ bool ViewProviderDragger::setEdit(int ModNum) SoTransform *tempTransform = new SoTransform(); tempTransform->ref(); updateTransform(placement, tempTransform); - + assert(!csysDragger); csysDragger = new SoFCCSysDragger(); csysDragger->draggerSize.setValue(0.05f); csysDragger->translation.setValue(tempTransform->translation.getValue()); csysDragger->rotation.setValue(tempTransform->rotation.getValue()); - + tempTransform->unref(); - + pcTransform->translation.connectFrom(&csysDragger->translation); pcTransform->rotation.connectFrom(&csysDragger->rotation); - + csysDragger->addStartCallback(dragStartCallback, this); csysDragger->addFinishCallback(dragFinishCallback, this); - + // dragger node is added to viewer's editing root in setEditViewer // pcRoot->insertChild(csysDragger, 0); csysDragger->ref(); - + TaskCSysDragger *task = new TaskCSysDragger(this, csysDragger); Gui::Control().showDialog(task); } - + return true; } @@ -191,7 +192,7 @@ void ViewProviderDragger::unsetEdit(int ModNum) { pcTransform->translation.disconnect(&csysDragger->translation); pcTransform->rotation.disconnect(&csysDragger->rotation); - + // dragger node is added to viewer's editing root in setEditViewer // pcRoot->removeChild(csysDragger); //should delete csysDragger csysDragger->unref(); @@ -238,17 +239,17 @@ void ViewProviderDragger::unsetEditViewer(Gui::View3DInventorViewer* viewer) void ViewProviderDragger::dragStartCallback(void *, SoDragger *) { // This is called when a manipulator is about to manipulating - Gui::Application::Instance->activeDocument()->openCommand("Transform"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform")); } void ViewProviderDragger::dragFinishCallback(void *data, SoDragger *d) { // This is called when a manipulator has done manipulating - + ViewProviderDragger* sudoThis = reinterpret_cast(data); SoFCCSysDragger *dragger = static_cast(d); updatePlacementFromDragger(sudoThis, dragger); - + Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -262,7 +263,7 @@ void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoTh double pMatrix[16]; originalPlacement.toMatrix().getMatrix(pMatrix); Base::Placement freshPlacement = originalPlacement; - + //local cache for brevity. double translationIncrement = draggerIn->translationIncrement.getValue(); double rotationIncrement = draggerIn->rotationIncrement.getValue(); @@ -272,7 +273,7 @@ void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoTh int rCountX = draggerIn->rotationIncrementCountX.getValue(); int rCountY = draggerIn->rotationIncrementCountY.getValue(); int rCountZ = draggerIn->rotationIncrementCountZ.getValue(); - + //just as a little sanity check make sure only 1 field has changed. int numberOfFieldChanged = 0; if (tCountX) numberOfFieldChanged++; @@ -284,12 +285,12 @@ void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoTh if (numberOfFieldChanged == 0) return; assert(numberOfFieldChanged == 1); - + //helper lamdas. auto getVectorX = [&pMatrix]() {return Base::Vector3d(pMatrix[0], pMatrix[4], pMatrix[8]);}; auto getVectorY = [&pMatrix]() {return Base::Vector3d(pMatrix[1], pMatrix[5], pMatrix[9]);}; auto getVectorZ = [&pMatrix]() {return Base::Vector3d(pMatrix[2], pMatrix[6], pMatrix[10]);}; - + if (tCountX) { Base::Vector3d movementVector(getVectorX()); @@ -332,7 +333,7 @@ void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoTh freshPlacement.setRotation(rotation * freshPlacement.getRotation()); geoFeature->Placement.setValue(freshPlacement); } - + draggerIn->clearIncrementCounts(); } diff --git a/src/Gui/ViewProviderDragger.h b/src/Gui/ViewProviderDragger.h index 80119d78c8..e8f247ff35 100644 --- a/src/Gui/ViewProviderDragger.h +++ b/src/Gui/ViewProviderDragger.h @@ -74,7 +74,7 @@ protected: private: static void dragStartCallback(void * data, SoDragger * d); static void dragFinishCallback(void * data, SoDragger * d); - + static void updatePlacementFromDragger(ViewProviderDragger *sudoThis, SoFCCSysDragger *draggerIn); bool checkLink(); diff --git a/src/Gui/ViewProviderExtension.cpp b/src/Gui/ViewProviderExtension.cpp index 96e0ddf131..047b3cedca 100644 --- a/src/Gui/ViewProviderExtension.cpp +++ b/src/Gui/ViewProviderExtension.cpp @@ -29,13 +29,13 @@ #endif #include "ViewProviderExtension.h" -//#include "ViewProviderExtensionPy.h" +#include "ViewProviderExtensionPy.h" using namespace Gui; EXTENSION_PROPERTY_SOURCE(Gui::ViewProviderExtension, App::Extension) -ViewProviderExtension::ViewProviderExtension() +ViewProviderExtension::ViewProviderExtension() { initExtensionType(Gui::ViewProviderExtension::getExtensionClassTypeId()); } @@ -47,13 +47,13 @@ ViewProviderExtension::~ViewProviderExtension() const ViewProviderDocumentObject* ViewProviderExtension::getExtendedViewProvider() const{ - assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())); + assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())); return static_cast(getExtendedContainer()); } ViewProviderDocumentObject* ViewProviderExtension::getExtendedViewProvider() { - assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())); + assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())); return static_cast(getExtendedContainer()); } @@ -61,6 +61,16 @@ void ViewProviderExtension::extensionUpdateData(const App::Property*) { } +PyObject* ViewProviderExtension::getExtensionPyObject(void) { + + if (ExtensionPythonObject.is(Py::_None())){ + // ref counter is set to 1 + auto ext = new ViewProviderExtensionPy(this); + ExtensionPythonObject = Py::asObject(ext); + } + return Py::new_reference_to(ExtensionPythonObject); +} + namespace Gui { EXTENSION_PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderExtensionPython, Gui::ViewProviderExtension) diff --git a/src/Gui/ViewProviderExtension.h b/src/Gui/ViewProviderExtension.h index 37e10518d0..49549a00fb 100644 --- a/src/Gui/ViewProviderExtension.h +++ b/src/Gui/ViewProviderExtension.h @@ -54,8 +54,8 @@ public: virtual bool extensionOnDelete(const std::vector &){ return true;} virtual void extensionBeforeDelete(){} - - virtual std::vector extensionClaimChildren(void) const { + + virtual std::vector extensionClaimChildren(void) const { return std::vector(); } virtual bool extensionCanDragObjects() const { return false; } @@ -65,14 +65,14 @@ public: virtual bool extensionCanDropObject(App::DocumentObject*) const { return true; } virtual bool extensionCanDragAndDropObject(App::DocumentObject*) const { return true; } virtual void extensionDropObject(App::DocumentObject*) { } - virtual bool extensionCanDropObjectEx(App::DocumentObject *, App::DocumentObject *, + virtual bool extensionCanDropObjectEx(App::DocumentObject *, App::DocumentObject *, const char *, const std::vector &) const { return false; } - virtual std::string extensionDropObjectEx(App::DocumentObject *obj, App::DocumentObject *, - const char *, const std::vector &) + virtual std::string extensionDropObjectEx(App::DocumentObject *obj, App::DocumentObject *, + const char *, const std::vector &) { extensionDropObject(obj); return std::string(); } - virtual int extensionReplaceObject(App::DocumentObject* /*oldValue*/, App::DocumentObject* /*newValue*/) + virtual int extensionReplaceObject(App::DocumentObject* /*oldValue*/, App::DocumentObject* /*newValue*/) { return -1; } /// Hides the view provider @@ -89,10 +89,18 @@ public: virtual void extensionReattach(App::DocumentObject* ) { } virtual void extensionSetDisplayMode(const char* ) { } virtual std::vector extensionGetDisplayModes(void) const {return std::vector();} + virtual void extensionSetupContextMenu(QMenu*, QObject*, const char*) {} //update data of extended opject virtual void extensionUpdateData(const App::Property*); + virtual PyObject* getExtensionPyObject(); + void setIgnoreOverlayIcon(bool on) { + m_ignoreOverlayIcon = on; + } + bool ignoreOverlayIcon() const { + return m_ignoreOverlayIcon; + } virtual QIcon extensionMergeOverlayIcons(const QIcon & orig) const {return orig;} virtual void extensionStartRestoring() {} @@ -100,8 +108,9 @@ public: virtual bool extensionGetElementPicked(const SoPickedPoint *, std::string &) const {return false;} virtual bool extensionGetDetailPath(const char *, SoFullPath *, SoDetail *&) const {return false;} - + private: + bool m_ignoreOverlayIcon = false; //Gui::ViewProviderDocumentObject* m_viewBase = nullptr; }; diff --git a/src/Gui/ViewProviderExtensionPy.xml b/src/Gui/ViewProviderExtensionPy.xml new file mode 100644 index 0000000000..f5eb37fc61 --- /dev/null +++ b/src/Gui/ViewProviderExtensionPy.xml @@ -0,0 +1,28 @@ + + + + + + Base class for all view provider extensions + + + + Ignore the overlay icon of an extension + + + + + Ignore the overlay icon of an extension + + + + + diff --git a/src/Gui/ViewProviderExtensionPyImp.cpp b/src/Gui/ViewProviderExtensionPyImp.cpp new file mode 100644 index 0000000000..d5e9f30e3e --- /dev/null +++ b/src/Gui/ViewProviderExtensionPyImp.cpp @@ -0,0 +1,91 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * 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 +#endif + +// inclution of the generated files (generated out of PropertyContainerPy.xml) +#include "ViewProviderExtensionPy.h" +#include "ViewProviderExtensionPy.cpp" + +using namespace Gui; + +// returns a string which represent the object e.g. when printed in python +std::string ViewProviderExtensionPy::representation(void) const +{ + return std::string(""); +} + +PyObject* ViewProviderExtensionPy::setIgnoreOverlayIcon(PyObject *args) +{ + PyObject* ignore; + const char* name = nullptr; + if (!PyArg_ParseTuple(args, "O!s", &PyBool_Type, &ignore, &name)) + return nullptr; + + ViewProviderExtension* ext = getViewProviderExtensionPtr(); + if (name) { + Base::Type type = Base::Type::fromName(name); + ext = dynamic_cast(ext->getExtendedContainer()->getExtension(type, true, true)); + if (!ext) { + PyErr_SetString(PyExc_NameError, "no such extension"); + return nullptr; + } + } + + ext->setIgnoreOverlayIcon(PyObject_IsTrue(ignore) ? true : false); + Py_Return; +} + +PyObject* ViewProviderExtensionPy::ignoreOverlayIcon(PyObject *args) +{ + const char* name = nullptr; + if (!PyArg_ParseTuple(args, "s", &name)) + return nullptr; + + ViewProviderExtension* ext = getViewProviderExtensionPtr(); + if (name) { + Base::Type type = Base::Type::fromName(name); + ext = dynamic_cast(ext->getExtendedContainer()->getExtension(type, true, true)); + if (!ext) { + PyErr_SetString(PyExc_NameError, "no such extension"); + return nullptr; + } + } + + bool ignore = ext->ignoreOverlayIcon(); + return Py_BuildValue("O", (ignore ? Py_True : Py_False)); +} + +PyObject *ViewProviderExtensionPy::getCustomAttributes(const char* /*attr*/) const +{ + return 0; +} + +int ViewProviderExtensionPy::setCustomAttributes(const char* /*attr*/, PyObject * /*obj*/) +{ + return 0; +} diff --git a/src/Gui/ViewProviderExtern.cpp b/src/Gui/ViewProviderExtern.cpp index eb917a214a..54fbae5d88 100644 --- a/src/Gui/ViewProviderExtern.cpp +++ b/src/Gui/ViewProviderExtern.cpp @@ -115,7 +115,7 @@ void ViewProviderExtern::setModeBySoInput(const char* name, SoInput &ivFileInput else { throw Base::RuntimeError("No valid Inventor input"); } - + return; } diff --git a/src/Gui/ViewProviderFeature.cpp b/src/Gui/ViewProviderFeature.cpp index 0cf8496e70..1615b324a4 100644 --- a/src/Gui/ViewProviderFeature.cpp +++ b/src/Gui/ViewProviderFeature.cpp @@ -25,12 +25,12 @@ #ifndef _PreComp_ # include -# include +# include # include # include # include # include -# include +# include #endif #include diff --git a/src/Gui/ViewProviderFeature.h b/src/Gui/ViewProviderFeature.h index ad3906ce7c..3cb026e533 100644 --- a/src/Gui/ViewProviderFeature.h +++ b/src/Gui/ViewProviderFeature.h @@ -24,7 +24,7 @@ #ifndef GUI_VIEWPROVIDER_FEATURE_H #define GUI_VIEWPROVIDER_FEATURE_H -#include +#include #include #include "ViewProviderDocumentObject.h" diff --git a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp index b03ff0823f..572a82322e 100644 --- a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp +++ b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp @@ -75,7 +75,7 @@ std::vector ViewProviderGeoFeatureGroupExtension::extensio for (auto obj: model) { //stuff in another geofeaturegroup is not in the model anyway if (!obj || obj->hasExtension(App::GeoFeatureGroupExtension::getExtensionClassTypeId())) { continue; } - + Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider ( obj ); if (!vp || vp == getExtendedViewProvider()) { continue; } @@ -88,7 +88,7 @@ std::vector ViewProviderGeoFeatureGroupExtension::extensio for(auto obj : model) { if(!obj || !obj->getNameInDocument()) continue; - if(outSet.count(obj)) + if(outSet.count(obj)) obj->setStatus(App::ObjectStatus::GeoExcluded,true); else { obj->setStatus(App::ObjectStatus::GeoExcluded,false); diff --git a/src/Gui/ViewProviderGeometryObject.cpp b/src/Gui/ViewProviderGeometryObject.cpp index bf315e0cf0..2b035ac3c4 100644 --- a/src/Gui/ViewProviderGeometryObject.cpp +++ b/src/Gui/ViewProviderGeometryObject.cpp @@ -39,9 +39,9 @@ # include # include # include -# include +# include # include -# include +# include #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... @@ -90,12 +90,12 @@ ViewProviderGeometryObject::ViewProviderGeometryObject() } else { unsigned long shcol = hGrp->GetUnsigned("DefaultShapeColor",3435973887UL); // light gray (204,204,204) - r = ((shcol >> 24) & 0xff) / 255.0; - g = ((shcol >> 16) & 0xff) / 255.0; + r = ((shcol >> 24) & 0xff) / 255.0; + g = ((shcol >> 16) & 0xff) / 255.0; b = ((shcol >> 8) & 0xff) / 255.0; } - static const char *dogroup = "Display Options"; + static const char *dogroup = "Display Options"; static const char *sgroup = "Selection"; static const char *osgroup = "Object Style"; diff --git a/src/Gui/ViewProviderGeometryObject.h b/src/Gui/ViewProviderGeometryObject.h index 7d693bab38..e0da40eef6 100644 --- a/src/Gui/ViewProviderGeometryObject.h +++ b/src/Gui/ViewProviderGeometryObject.h @@ -72,7 +72,7 @@ public: /** * Returns a list of picked points from the geometry under \a getRoot(). * If \a pickAll is false (the default) only the intersection point closest to the camera will be picked, otherwise - * all intersection points will be picked. + * all intersection points will be picked. */ SoPickedPointList getPickedPoints(const SbVec2s& pos, const View3DInventorViewer& viewer,bool pickAll=false) const; /** diff --git a/src/Gui/ViewProviderGroupExtension.cpp b/src/Gui/ViewProviderGroupExtension.cpp index 29ca221742..fd251d108f 100644 --- a/src/Gui/ViewProviderGroupExtension.cpp +++ b/src/Gui/ViewProviderGroupExtension.cpp @@ -68,7 +68,7 @@ void ViewProviderGroupExtension::extensionDragObject(App::DocumentObject* obj) { Gui::Command::doCommand(Gui::Command::Doc,"App.getDocument(\"%s\").getObject(\"%s\").removeObject(" "App.getDocument(\"%s\").getObject(\"%s\"))", - getExtendedViewProvider()->getObject()->getDocument()->getName(), getExtendedViewProvider()->getObject()->getNameInDocument(), + getExtendedViewProvider()->getObject()->getDocument()->getName(), getExtendedViewProvider()->getObject()->getNameInDocument(), obj->getDocument()->getName(), obj->getNameInDocument() ); } @@ -86,7 +86,7 @@ bool ViewProviderGroupExtension::extensionCanDropObject(App::DocumentObject* obj //we cannot drop thing of this group into it again if (group->hasObject(obj)) - return false; + return false; if (group->allowObject(obj)) return true; @@ -112,7 +112,7 @@ void ViewProviderGroupExtension::extensionDropObject(App::DocumentObject* obj) { std::vector< App::DocumentObject* > ViewProviderGroupExtension::extensionClaimChildren(void) const { - auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); + auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); return std::vector(group->Group.getValues()); } @@ -149,7 +149,7 @@ void ViewProviderGroupExtension::extensionHide(void) { // Property::User1 is used by ViewProviderDocumentObject to mark for // temporary visibility changes. Do not propagate the change to children. if (!getExtendedViewProvider()->isRestoring() - && !getExtendedViewProvider()->Visibility.testStatus(App::Property::User1)) + && !getExtendedViewProvider()->Visibility.testStatus(App::Property::User1)) { auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); for(auto obj : group->Group.getValues()) { @@ -165,10 +165,10 @@ bool ViewProviderGroupExtension::extensionOnDelete(const std::vector< std::strin auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); // If the group is nonempty ask the user if he wants to delete its content if (group->Group.getSize() > 0) { - QMessageBox::StandardButton choice = + QMessageBox::StandardButton choice = QMessageBox::question(getMainWindow(), QObject::tr ( "Delete group content?" ), QObject::tr ( "The %1 is not empty, delete its content as well?") - .arg ( QString::fromUtf8 ( getExtendedViewProvider()->getObject()->Label.getValue () ) ), + .arg ( QString::fromUtf8 ( getExtendedViewProvider()->getObject()->Label.getValue () ) ), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes ); if (choice == QMessageBox::Yes) { diff --git a/src/Gui/ViewProviderGroupExtension.h b/src/Gui/ViewProviderGroupExtension.h index 2023f4e9d9..7c0a026252 100644 --- a/src/Gui/ViewProviderGroupExtension.h +++ b/src/Gui/ViewProviderGroupExtension.h @@ -40,13 +40,13 @@ public: virtual ~ViewProviderGroupExtension(); virtual std::vector extensionClaimChildren(void)const override; - virtual bool extensionCanDragObjects() const override; + virtual bool extensionCanDragObjects() const override; virtual bool extensionCanDragObject(App::DocumentObject*) const override; virtual void extensionDragObject(App::DocumentObject*) override; virtual bool extensionCanDropObjects() const override; virtual bool extensionCanDropObject(App::DocumentObject*) const override; - virtual void extensionDropObject(App::DocumentObject*) override; - + virtual void extensionDropObject(App::DocumentObject*) override; + virtual void extensionHide(void) override; virtual void extensionShow(void) override; diff --git a/src/Gui/ViewProviderLine.cpp b/src/Gui/ViewProviderLine.cpp index 6d81cbcf31..6294d73bf9 100644 --- a/src/Gui/ViewProviderLine.cpp +++ b/src/Gui/ViewProviderLine.cpp @@ -43,7 +43,7 @@ PROPERTY_SOURCE(Gui::ViewProviderLine, Gui::ViewProviderOriginFeature) ViewProviderLine::ViewProviderLine() -{ +{ sPixmap = "Std_Axis"; } diff --git a/src/Gui/ViewProviderLink.cpp b/src/Gui/ViewProviderLink.cpp index a8a298e679..fcc875bbe4 100644 --- a/src/Gui/ViewProviderLink.cpp +++ b/src/Gui/ViewProviderLink.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -187,7 +187,7 @@ public: } LinkInfo(ViewProviderDocumentObject *vp) - :ref(0),pcLinked(vp) + :ref(0),pcLinked(vp) { FC_LOG("new link to " << pcLinked->getObject()->getFullName()); connChangeIcon = vp->signalChangeIcon.connect( @@ -215,7 +215,7 @@ public: } bool isLinked() const { - return pcLinked && pcLinked->getObject() && + return pcLinked && pcLinked->getObject() && pcLinked->getObject()->getNameInDocument(); } @@ -268,7 +268,7 @@ public: if(!isLinked() || !pcLinkedSwitch) return; int index = pcLinkedSwitch->whichChild.getValue(); for(size_t i=0;igetNumChildren(); if((index<0 && i==LinkView::SnapshotChild) || !count) @@ -287,7 +287,7 @@ public: inline void release(){ int r = --ref; assert(r>=0); - if(r==0) + if(r==0) delete this; else if(r==1) { if(pcLinked) { @@ -348,7 +348,7 @@ public: return 0; SoSeparator *root; - if(!isLinked() || !(root=pcLinked->getRoot())) + if(!isLinked() || !(root=pcLinked->getRoot())) return 0; if(sensor.getAttachedNode()!=root) { @@ -368,7 +368,7 @@ public: pcSnapshot->boundingBoxCaching = SoSeparator::OFF; pcSnapshot->renderCaching = SoSeparator::OFF; std::ostringstream ss; - ss << pcLinked->getObject()->getNameInDocument() + ss << pcLinked->getObject()->getNameInDocument() << "(" << type << ')'; pcSnapshot->setName(ss.str().c_str()); pcModeSwitch = new SoSwitch; @@ -437,18 +437,18 @@ public: } void update() { - if(!isLinked() || pcLinked->isRestoring()) + if(!isLinked() || pcLinked->isRestoring()) return; - + updateChildren(); - for(size_t i=0;igetChildRoot()) { @@ -483,17 +483,17 @@ public: this->nodeMap.swap(nodeMap); } - bool getElementPicked(bool addname, int type, - const SoPickedPoint *pp, std::ostream &str) const + bool getElementPicked(bool addname, int type, + const SoPickedPoint *pp, std::ostream &str) const { if(!pp || !isLinked() || !pcLinked->isSelectable()) return false; - if(addname) + if(addname) str << getLinkedName() <<'.'; - + auto pcSwitch = pcSwitches[type]; - if(pcChildGroup && pcSwitch && pcSwitch->whichChild.getValue()>=0 && + if(pcChildGroup && pcSwitch && pcSwitch->whichChild.getValue()>=0 && pcSwitch->getChild(pcSwitch->whichChild.getValue())==pcChildGroup) { SoPath *path = pp->getPath(); @@ -530,8 +530,8 @@ public: return subname; } - bool getDetail(bool checkname, int type, const char* subname, - SoDetail *&det, SoFullPath *path) const + bool getDetail(bool checkname, int type, const char* subname, + SoDetail *&det, SoFullPath *path) const { if(!isLinked()) return false; @@ -641,22 +641,22 @@ public: void slotChangeIcon() { iconMap.clear(); - if(!isLinked()) + if(!isLinked()) return; LinkInfoPtr me(this); - for(auto link : links) + for(auto link : links) link->onLinkedIconChange(me); } QIcon getIcon(QPixmap px) { static int iconSize = -1; - if(iconSize < 0) + if(iconSize < 0) iconSize = QApplication::style()->standardPixmap(QStyle::SP_DirClosedIcon).width(); if(!isLinked()) return QIcon(); - if(px.isNull()) + if(px.isNull()) return pcLinked->getIcon(); QIcon &iconLink = iconMap[px.cacheKey()]; if(iconLink.isNull()) { @@ -710,13 +710,13 @@ void ViewProviderLinkObserver::setLinkVisible(bool visible) { } void ViewProviderLinkObserver::extensionBeforeDelete() { - if(linkInfo) + if(linkInfo) linkInfo->detach(false); } void ViewProviderLinkObserver::extensionReattach(App::DocumentObject *) { if(linkInfo) { - linkInfo->pcLinked = + linkInfo->pcLinked = Base::freecad_dynamic_cast(getExtendedContainer()); linkInfo->update(); } @@ -740,8 +740,8 @@ void ViewProviderLinkObserver::extensionModeSwitchChange() { } void ViewProviderLinkObserver::extensionUpdateData(const App::Property *prop) { - if(linkInfo && linkInfo->pcLinked && linkInfo->pcLinked->getObject() && - prop != &linkInfo->pcLinked->getObject()->Visibility) + if(linkInfo && linkInfo->pcLinked && linkInfo->pcLinked->getObject() && + prop != &linkInfo->pcLinked->getObject()->Visibility) linkInfo->updateData(prop); } @@ -798,7 +798,7 @@ public: return; unlink(); linkInfo = LinkInfo::get(obj,this); - if(linkInfo) + if(linkInfo) pcNode->addChild(linkInfo->getSnapshot(LinkView::SnapshotTransform)); } @@ -853,7 +853,7 @@ public: return; unlink(); linkInfo = LinkInfo::get(obj,this); - if(isLinked()) + if(isLinked()) pcRoot->addChild(linkInfo->getSnapshot(handle.childType)); } @@ -896,12 +896,12 @@ void LinkView::setInvalid(void) { Base::BoundBox3d _getBoundBox(ViewProviderDocumentObject *vpd, SoNode *rootNode) { auto doc = vpd->getDocument(); - if(!doc) + if(!doc) LINK_THROW(Base::RuntimeError,"no document"); Gui::MDIView* view = doc->getViewOfViewProvider(vpd); if(!view) LINK_THROW(Base::RuntimeError,"no view"); - + Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); SoGetBoundingBoxAction bboxAction(viewer->getSoRenderManager()->getViewportRegion()); bboxAction.apply(rootNode); @@ -938,7 +938,7 @@ bool LinkView::isLinked() const{ void LinkView::setDrawStyle(int style, double lineWidth, double pointSize) { if(!pcDrawStyle) { - if(!style) + if(!style) return; pcDrawStyle = new SoDrawStyle; pcDrawStyle->style = SoDrawStyle::FILLED; @@ -1016,7 +1016,7 @@ void LinkView::setLinkViewObject(ViewProviderDocumentObject *vpd, if(!isLinked() || linkInfo->pcLinked != vpd) { unlink(linkInfo); linkInfo = LinkInfo::get(vpd,this); - if(!linkInfo) + if(!linkInfo) return; } subInfo.clear(); @@ -1102,7 +1102,7 @@ void LinkView::setTransform(SoTransform *pcTransform, const Base::Matrix4D &mat) void LinkView::setSize(int _size) { size_t size = _size<0?0:(size_t)_size; - if(childType<0 && size==nodeArray.size()) + if(childType<0 && size==nodeArray.size()) return; resetRoot(); if(!size || childType>=0) { @@ -1145,7 +1145,7 @@ void LinkView::resetRoot() { } void LinkView::setChildren(const std::vector &children, - const boost::dynamic_bitset<> &vis, SnapshotType type) + const boost::dynamic_bitset<> &vis, SnapshotType type) { if(children.empty()) { if(nodeArray.size()) { @@ -1243,7 +1243,7 @@ bool LinkView::isElementVisible(int idx) const { ViewProviderDocumentObject *LinkView::getLinkedView() const { auto link = linkInfo; - if(autoSubLink && subInfo.size()==1) + if(autoSubLink && subInfo.size()==1) link = subInfo.begin()->second->linkInfo; return link?link->pcLinked:0; } @@ -1264,7 +1264,7 @@ std::vector LinkView::getSubNames() const { void LinkView::setNodeType(SnapshotType type, bool sublink) { autoSubLink = sublink; if(nodeType==type) return; - if(type>=SnapshotMax || + if(type>=SnapshotMax || (type<0 && type!=SnapshotContainer && type!=SnapshotContainerTransform)) LINK_THROW(Base::ValueError,"LinkView: invalid node type"); @@ -1285,14 +1285,14 @@ void LinkView::setNodeType(SnapshotType type, bool sublink) { } void LinkView::replaceLinkedRoot(SoSeparator *root) { - if(root==pcLinkedRoot) + if(root==pcLinkedRoot) return; if(nodeArray.empty()) { - if(pcLinkedRoot && root) + if(pcLinkedRoot && root) pcLinkRoot->replaceChild(pcLinkedRoot,root); else if(root) pcLinkRoot->addChild(root); - else + else resetRoot(); }else if(childType<0) { if(pcLinkedRoot && root) { @@ -1318,8 +1318,8 @@ void LinkView::onLinkedUpdateData(LinkInfoPtr info, const App::Property *prop) { if(info!=linkInfo || !linkOwner || !linkOwner->isLinked() || info==linkOwner) return; auto ext = linkOwner->pcLinked->getObject()->getExtensionByType(true); - if (ext && !(prop->getType() & App::Prop_Output) && - !prop->testStatus(App::Property::Output)) + if (ext && !(prop->getType() & App::Prop_Output) && + !prop->testStatus(App::Property::Output)) { // propagate the signalChangedObject to potentially multiple levels // of links, to inform tree view of children change, and other @@ -1398,13 +1398,13 @@ void LinkView::updateLink() { replaceLinkedRoot(linkedRoot); } -bool LinkView::linkGetElementPicked(const SoPickedPoint *pp, std::string &subname) const +bool LinkView::linkGetElementPicked(const SoPickedPoint *pp, std::string &subname) const { std::ostringstream ss; CoinPtr path = pp->getPath(); if(nodeArray.size()) { auto idx = path->findNode(pcLinkRoot); - if(idx<0 || idx+2>=path->getLength()) + if(idx<0 || idx+2>=path->getLength()) return false; auto node = path->getNode(idx+1); auto it = nodeMap.find(node); @@ -1485,7 +1485,7 @@ bool LinkView::getGroupHierarchy(int index, SoFullPath *path) const { return true; } -bool LinkView::linkGetDetailPath(const char *subname, SoFullPath *path, SoDetail *&det) const +bool LinkView::linkGetDetailPath(const char *subname, SoFullPath *path, SoDetail *&det) const { if(!subname || *subname==0) return true; auto len = path->getLength(); @@ -1493,7 +1493,7 @@ bool LinkView::linkGetDetailPath(const char *subname, SoFullPath *path, SoDetail appendPath(path,pcLinkRoot); }else{ int idx = App::LinkBaseExtension::getArrayIndex(subname,&subname); - if(idx<0 || idx>=(int)nodeArray.size()) + if(idx<0 || idx>=(int)nodeArray.size()) return false; auto &info = *nodeArray[idx]; @@ -1503,7 +1503,7 @@ bool LinkView::linkGetDetailPath(const char *subname, SoFullPath *path, SoDetail appendPath(path,info.pcSwitch); appendPath(path,info.pcRoot); - if(*subname == 0) + if(*subname == 0) return true; if(info.isLinked()) { @@ -1525,14 +1525,14 @@ bool LinkView::linkGetDetailPath(const char *subname, SoFullPath *path, SoDetail if(autoSubLink && subInfo.size()==1) nextsub = subname; else{ - if(!boost::algorithm::starts_with(subname,v.first)) + if(!boost::algorithm::starts_with(subname,v.first)) continue; nextsub = subname+v.first.size(); - if(*nextsub != '.') + if(*nextsub != '.') continue; ++nextsub; } - if(*nextsub && sub.subElements.size() && + if(*nextsub && sub.subElements.size() && sub.subElements.find(nextsub)==sub.subElements.end()) break; appendPath(path,sub.pcNode); @@ -1566,7 +1566,7 @@ void LinkView::unlink(LinkInfoPtr info) { else { for(auto &info : nodeArray) { int idx; - if(!info->isLinked() && + if(!info->isLinked() && (idx=info->pcRoot->findChild(pcLinkedRoot))>=0) info->pcRoot->removeChild(idx); } @@ -1579,7 +1579,7 @@ void LinkView::unlink(LinkInfoPtr info) { QIcon LinkView::getLinkedIcon(QPixmap px) const { auto link = linkInfo; - if(autoSubLink && subInfo.size()==1) + if(autoSubLink && subInfo.size()==1) link = subInfo.begin()->second->linkInfo; if(!link || !link->isLinked()) return QIcon(); @@ -1850,7 +1850,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App: if(ext->_getShowElementValue()) updateElementList(ext); - else + else updateDataPrivate(ext,ext->_getElementCountProperty()); // applyColors(); @@ -1888,7 +1888,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App: Application::Instance->getViewProvider(element)); if(!vp) continue; overrideMaterial = overrideMaterial || vp->OverrideMaterial.getValue(); - hasMaterial = overrideMaterial || hasMaterial + hasMaterial = overrideMaterial || hasMaterial || vp->ShapeMaterial.getValue()!=ShapeMaterial.getValue(); materials.push_back(vp->ShapeMaterial.getValue()); overrideMaterials[i] = vp->OverrideMaterial.getValue(); @@ -1903,7 +1903,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App: MaterialList.setStatus(App::Property::User3,true); MaterialList.setValue(materials); MaterialList.setStatus(App::Property::User3,false); - + linkView->setSize(ext->_getElementCountValue()); updateDataPrivate(ext,ext->getVisibilityListProperty()); applyMaterial(); @@ -1911,19 +1911,19 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App: } } }else if(prop==ext->getScaleListProperty() || prop==ext->getPlacementListProperty()) { - if(!prop->testStatus(App::Property::User3) && - linkView->getSize() && - !ext->_getShowElementValue()) + if(!prop->testStatus(App::Property::User3) && + linkView->getSize() && + !ext->_getShowElementValue()) { auto propPlacements = ext->getPlacementListProperty(); auto propScales = ext->getScaleListProperty(); if(propPlacements && linkView->getSize()) { - const auto &touched = + const auto &touched = prop==propScales?propScales->getTouchList():propPlacements->getTouchList(); if(touched.empty()) { for(int i=0;igetSize();++i) { Base::Matrix4D mat; - if(propPlacements->getSize()>i) + if(propPlacements->getSize()>i) mat = (*propPlacements)[i].toMatrix(); if(propScales && propScales->getSize()>i) { Base::Matrix4D s; @@ -1937,7 +1937,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App: if(i<0 || i>=linkView->getSize()) continue; Base::Matrix4D mat; - if(propPlacements->getSize()>i) + if(propPlacements->getSize()>i) mat = (*propPlacements)[i].toMatrix(); if(propScales && propScales->getSize()>i) { Base::Matrix4D s; @@ -2013,7 +2013,7 @@ void ViewProviderLink::applyMaterial() { linkView->setMaterial(-1,&ShapeMaterial.getValue()); else { for(int i=0;igetSize();++i) { - if(MaterialList.getSize()>i && + if(MaterialList.getSize()>i && OverrideMaterialList.getSize()>i && OverrideMaterialList[i]) linkView->setMaterial(i,&MaterialList[i]); else @@ -2068,9 +2068,9 @@ bool ViewProviderLink::isGroup(const App::LinkBaseExtension *ext, bool plainGrou } ViewProvider *ViewProviderLink::getLinkedView( - bool real,const App::LinkBaseExtension *ext) const + bool real,const App::LinkBaseExtension *ext) const { - if(!ext) + if(!ext) ext = getLinkExtension(); auto obj = ext&&real?ext->getTrueLinkedObject(true): getObject()->getLinkedObject(true); @@ -2137,7 +2137,7 @@ void ViewProviderLink::dragObject(App::DocumentObject* obj) { } return; } - if(hasElements(ext)) + if(hasElements(ext)) return; auto linked = getLinkedView(false); if(linked) @@ -2160,8 +2160,8 @@ bool ViewProviderLink::canDropObjects() const { return true; } -bool ViewProviderLink::canDropObjectEx(App::DocumentObject *obj, - App::DocumentObject *owner, const char *subname, +bool ViewProviderLink::canDropObjectEx(App::DocumentObject *obj, + App::DocumentObject *owner, const char *subname, const std::vector &subElements) const { if(pcObject == obj || pcObject == owner) @@ -2182,16 +2182,16 @@ bool ViewProviderLink::canDropObjectEx(App::DocumentObject *obj, return linked->canDropObjectEx(obj,owner,subname,subElements); } } - if(obj->getDocument() != getObject()->getDocument() && + if(obj->getDocument() != getObject()->getDocument() && !freecad_dynamic_cast(ext->getLinkedObjectProperty())) return false; return true; } -std::string ViewProviderLink::dropObjectEx(App::DocumentObject* obj, - App::DocumentObject *owner, const char *subname, - const std::vector &subElements) +std::string ViewProviderLink::dropObjectEx(App::DocumentObject* obj, + App::DocumentObject *owner, const char *subname, + const std::vector &subElements) { auto ext = getLinkExtension(); if (!ext) @@ -2234,7 +2234,7 @@ bool ViewProviderLink::canDragAndDropObject(App::DocumentObject* obj) const { return false; if(!hasSubName) { auto linked = getLinkedView(false,ext); - if(linked) + if(linked) return linked->canDragAndDropObject(obj); } return false; @@ -2267,7 +2267,7 @@ bool ViewProviderLink::getElementPicked(const SoPickedPoint *pp, std::string &su } bool ViewProviderLink::getDetailPath( - const char *subname, SoFullPath *pPath, bool append, SoDetail *&det) const + const char *subname, SoFullPath *pPath, bool append, SoDetail *&det) const { auto ext = getLinkExtension(); if(!ext) return false; @@ -2284,7 +2284,7 @@ bool ViewProviderLink::getDetailPath( return false; } std::string _subname; - if(subname && subname[0] && + if(subname && subname[0] && (isGroup(ext,true) || hasElements(ext) || ext->getElementCountValue())) { int index = ext->getElementIndex(subname,&subname); if(index>=0) { @@ -2318,7 +2318,7 @@ bool ViewProviderLink::linkEdit(const App::LinkBaseExtension *ext) const { ext = getLinkExtension(); if(!ext || (!ext->_getShowElementValue() && ext->_getElementCountValue()) || - hasElements(ext) || + hasElements(ext) || isGroup(ext) || hasSubName) { @@ -2486,7 +2486,7 @@ ViewProvider *ViewProviderLink::startEditing(int mode) { if(mode==ViewProvider::Transform) { if(_pendingTransform && doc) doc->setEditingTransform(_editingTransform); - + if(!initDraggingPlacement()) return 0; if(useCenterballDragger) @@ -2717,7 +2717,7 @@ void ViewProviderLink::dragStartCallback(void *data, SoDragger *) { me->dragCtx->initialPlacement = me->currentDraggingPlacement(); if(!me->callDraggerProxy("onDragStart",false)) { me->dragCtx->cmdPending = true; - me->getDocument()->openCommand("Link Transform"); + me->getDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Link Transform")); }else me->dragCtx->cmdPending = false; } @@ -2870,19 +2870,19 @@ std::map ViewProviderLink::getElementColors(const char } } else if (std::isdigit(subname[0])) { const char *dot = strchr(subname,'.'); - if(dot) + if(dot) offset = dot-subname+1; } } if(isPrefix) { - if(!boost::starts_with(sub.first,subname+offset) + if(!boost::starts_with(sub.first,subname+offset) && !boost::starts_with(sub.second,subname+offset)) continue; }else if(sub.first!=subname+offset && sub.second!=subname+offset) continue; - if(offset) + if(offset) colors.emplace(std::string(subname,offset)+sub.second, OverrideColorList[i]); else colors[sub.second] = OverrideColorList[i]; @@ -2939,7 +2939,7 @@ void ViewProviderLink::setElementColors(const std::map faceColor = v.second; continue; } - + if(element_count && v.first.size() && std::isdigit(v.first[0])) { // In case of array, check if there are override of the same // sub-element for every array element. And collapse those overrides @@ -3116,7 +3116,7 @@ void ViewProviderLink::getPropertyList(std::vector &List) const } ViewProviderDocumentObject *ViewProviderLink::getLinkedViewProvider( - std::string *subname, bool recursive) const + std::string *subname, bool recursive) const { auto self = const_cast(this); auto ext = getLinkExtension(); diff --git a/src/Gui/ViewProviderLink.h b/src/Gui/ViewProviderLink.h index a87e3c723f..f679cccb1d 100644 --- a/src/Gui/ViewProviderLink.h +++ b/src/Gui/ViewProviderLink.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -94,10 +94,10 @@ public: void updateLink(); void setLink(App::DocumentObject *obj, - const std::vector &subs = std::vector()); + const std::vector &subs = std::vector()); void setLinkViewObject(ViewProviderDocumentObject *vpd, - const std::vector &subs = std::vector()); + const std::vector &subs = std::vector()); std::vector getChildren() const; @@ -113,7 +113,7 @@ public: enum SnapshotType { //three type of snapshot to override linked root node: - + //override transform and visibility SnapshotTransform = 0, //override visibility @@ -131,7 +131,7 @@ public: void setNodeType(SnapshotType type, bool sublink=true); void setChildren(const std::vector &children, - const boost::dynamic_bitset<> &vis, SnapshotType type=SnapshotVisible); + const boost::dynamic_bitset<> &vis, SnapshotType type=SnapshotVisible); bool linkGetDetailPath(const char *, SoFullPath *, SoDetail *&) const; bool linkGetElementPicked(const SoPickedPoint *, std::string &) const; @@ -221,9 +221,9 @@ public: void dragObject(App::DocumentObject*) override; bool canDropObjects() const override; bool canDragAndDropObject(App::DocumentObject*) const override; - bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, + bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, const char *subname, const std::vector &subElements) const override; - std::string dropObjectEx(App::DocumentObject*, App::DocumentObject*, + std::string dropObjectEx(App::DocumentObject*, App::DocumentObject*, const char *subname, const std::vector &subElements) override; bool onDelete(const std::vector &) override; diff --git a/src/Gui/ViewProviderLinkPyImp.cpp b/src/Gui/ViewProviderLinkPyImp.cpp index b23f2f742a..b418f0f32f 100644 --- a/src/Gui/ViewProviderLinkPyImp.cpp +++ b/src/Gui/ViewProviderLinkPyImp.cpp @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2017 Zheng, Lei (realthunder) * + * Copyright (c) 2017 Zheng Lei (realthunder) * * * * This file is part of the FreeCAD CAx development system. * * * @@ -79,5 +79,5 @@ PyObject *ViewProviderLinkPy::getCustomAttributes(const char* /*attr*/) const int ViewProviderLinkPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Gui/ViewProviderMaterialObject.cpp b/src/Gui/ViewProviderMaterialObject.cpp index c4a0344cab..9937ed1581 100644 --- a/src/Gui/ViewProviderMaterialObject.cpp +++ b/src/Gui/ViewProviderMaterialObject.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * Copyright (c) 2013 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -49,7 +49,7 @@ PROPERTY_SOURCE(Gui::ViewProviderMaterialObject, Gui::ViewProviderDocumentObject /** * Creates the view provider for an object group. */ -ViewProviderMaterialObject::ViewProviderMaterialObject() +ViewProviderMaterialObject::ViewProviderMaterialObject() { } diff --git a/src/Gui/ViewProviderMaterialObject.h b/src/Gui/ViewProviderMaterialObject.h index 76c4a6b58c..76e890b5aa 100644 --- a/src/Gui/ViewProviderMaterialObject.h +++ b/src/Gui/ViewProviderMaterialObject.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * Copyright (c) 2013 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Gui/ViewProviderMeasureDistance.cpp b/src/Gui/ViewProviderMeasureDistance.cpp index b1f295bab8..17ecf1e554 100644 --- a/src/Gui/ViewProviderMeasureDistance.cpp +++ b/src/Gui/ViewProviderMeasureDistance.cpp @@ -59,7 +59,7 @@ using namespace Gui; PROPERTY_SOURCE(Gui::ViewProviderMeasureDistance, Gui::ViewProviderDocumentObject) -ViewProviderMeasureDistance::ViewProviderMeasureDistance() +ViewProviderMeasureDistance::ViewProviderMeasureDistance() { ADD_PROPERTY(TextColor,(1.0f,1.0f,1.0f)); ADD_PROPERTY(LineColor,(1.0f,1.0f,1.0f)); @@ -171,7 +171,7 @@ void ViewProviderMeasureDistance::attach(App::DocumentObject* pcObject) lineSep->addChild(pCoords); lineSep->addChild(pLines); SoMarkerSet* points = new SoMarkerSet(); - points->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex("CROSS", + points->markerIndex = Gui::Inventor::MarkerBitmaps::getMarkerIndex("CROSS", ViewParams::instance()->getMarkerSize()); points->numPoints=2; lineSep->addChild(points); @@ -265,7 +265,7 @@ int PointMarker::countPoints() const void PointMarker::customEvent(QEvent*) { Gui::Document* doc = Gui::Application::Instance->activeDocument(); - doc->openCommand("Measure distance"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Measure distance")); App::DocumentObject* obj = doc->getDocument()->addObject (App::MeasureDistance::getClassTypeId().getName(),"Distance"); diff --git a/src/Gui/ViewProviderOrigin.h b/src/Gui/ViewProviderOrigin.h index da4810bd6d..e9fd870706 100644 --- a/src/Gui/ViewProviderOrigin.h +++ b/src/Gui/ViewProviderOrigin.h @@ -69,7 +69,7 @@ public: /// Reset the visibility void resetTemporaryVisibility (); ///@} - + virtual bool canDragObjects() const { return false; } diff --git a/src/Gui/ViewProviderOriginGroup.cpp b/src/Gui/ViewProviderOriginGroup.cpp index bb8a959698..a54d768fee 100644 --- a/src/Gui/ViewProviderOriginGroup.cpp +++ b/src/Gui/ViewProviderOriginGroup.cpp @@ -49,6 +49,6 @@ ViewProviderOriginGroup::ViewProviderOriginGroup () initExtension(this); } -ViewProviderOriginGroup::~ViewProviderOriginGroup () +ViewProviderOriginGroup::~ViewProviderOriginGroup () { } diff --git a/src/Gui/ViewProviderOriginGroupExtension.cpp b/src/Gui/ViewProviderOriginGroupExtension.cpp index 495409e8fa..6cfac12db0 100644 --- a/src/Gui/ViewProviderOriginGroupExtension.cpp +++ b/src/Gui/ViewProviderOriginGroupExtension.cpp @@ -66,7 +66,7 @@ std::vector ViewProviderOriginGroupExtension::constructChi auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); if(!group) return children; - + App::DocumentObject *originObj = group->Origin.getValue(); // Origin must be first @@ -100,13 +100,13 @@ void ViewProviderOriginGroupExtension::extensionAttach(App::DocumentObject *pcOb connectChangedObjectApp = adoc->signalChangedObject.connect ( boost::bind ( &ViewProviderOriginGroupExtension::slotChangedObjectApp, this, bp::_1) ); - + connectChangedObjectGui = gdoc->signalChangedObject.connect ( boost::bind ( &ViewProviderOriginGroupExtension::slotChangedObjectGui, this, bp::_1) ); } void ViewProviderOriginGroupExtension::extensionUpdateData( const App::Property* prop ) { - + auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); if ( group && prop == &group->Group ) { updateOriginSize(); @@ -124,7 +124,7 @@ void ViewProviderOriginGroupExtension::slotChangedObjectApp ( const App::Documen void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewProviderDocumentObject& vp) { if ( !vp.isDerivedFrom ( Gui::ViewProviderOriginFeature::getClassTypeId () )) { - // Ignore origins to avoid infinite recursion (not likely in a well-formed document, + // Ignore origins to avoid infinite recursion (not likely in a well-formed document, // but may happen in documents designed in old versions of assembly branch ) auto* group = getExtendedViewProvider()->getObject()->getExtensionByType(); App::DocumentObject *obj = vp.getObject (); @@ -137,12 +137,12 @@ void ViewProviderOriginGroupExtension::slotChangedObjectGui ( const Gui::ViewPro void ViewProviderOriginGroupExtension::updateOriginSize () { auto owner = getExtendedViewProvider()->getObject(); - + if(!owner->getNameInDocument() || owner->isRemoving() || owner->getDocument()->testStatus(App::Document::Restoring)) return; - + auto* group = owner->getExtensionByType(); if(!group) return; @@ -167,13 +167,13 @@ void ViewProviderOriginGroupExtension::updateOriginSize () { } Gui::Document* gdoc = getExtendedViewProvider()->getDocument(); - if(!gdoc) + if(!gdoc) return; - + Gui::MDIView* view = gdoc->getViewOfViewProvider(getExtendedViewProvider()); if(!view) return; - + Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); SoGetBoundingBoxAction bboxAction(viewer->getSoRenderManager()->getViewportRegion()); @@ -188,7 +188,7 @@ void ViewProviderOriginGroupExtension::updateOriginSize () { bboxAction.apply ( vp->getRoot () ); bbox.extendBy ( bboxAction.getBoundingBox () ); }; - + // get the bounding box values SbVec3f max = bbox.getMax(); SbVec3f min = bbox.getMin(); diff --git a/src/Gui/ViewProviderOriginGroupExtension.h b/src/Gui/ViewProviderOriginGroupExtension.h index 4804aa9d80..1a28f7fe4e 100644 --- a/src/Gui/ViewProviderOriginGroupExtension.h +++ b/src/Gui/ViewProviderOriginGroupExtension.h @@ -45,7 +45,7 @@ public: virtual void extensionAttach(App::DocumentObject *pcObject) override; virtual void extensionUpdateData(const App::Property* prop) override; - + void updateOriginSize(); protected: diff --git a/src/Gui/ViewProviderPart.cpp b/src/Gui/ViewProviderPart.cpp index 00c8c5b148..b39fdd109a 100644 --- a/src/Gui/ViewProviderPart.cpp +++ b/src/Gui/ViewProviderPart.cpp @@ -53,7 +53,7 @@ PROPERTY_SOURCE_WITH_EXTENSIONS(Gui::ViewProviderPart, Gui::ViewProviderDragger) * Creates the view provider for an object group. */ ViewProviderPart::ViewProviderPart() -{ +{ initExtension(this); sPixmap = "Geofeaturegroup.svg"; @@ -90,7 +90,7 @@ bool ViewProviderPart::doubleClicked(void) if(!activeDoc) activeDoc = getDocument(); auto activeView = activeDoc->setActiveView(this); - if(!activeView) + if(!activeView) return false; activePart = activeView->getActiveObject (PARTKEY); diff --git a/src/Gui/ViewProviderPlane.cpp b/src/Gui/ViewProviderPlane.cpp index 593d0bb3f7..c93e1b8fd9 100644 --- a/src/Gui/ViewProviderPlane.cpp +++ b/src/Gui/ViewProviderPlane.cpp @@ -43,7 +43,7 @@ PROPERTY_SOURCE(Gui::ViewProviderPlane, Gui::ViewProviderOriginFeature) ViewProviderPlane::ViewProviderPlane() -{ +{ sPixmap = "Std_Plane"; } diff --git a/src/Gui/ViewProviderPyImp.cpp b/src/Gui/ViewProviderPyImp.cpp index 11cae60f63..c8669d99f8 100644 --- a/src/Gui/ViewProviderPyImp.cpp +++ b/src/Gui/ViewProviderPyImp.cpp @@ -129,28 +129,28 @@ PyObject* ViewProviderPy::supportedProperties(PyObject *args) PyObject* ViewProviderPy::show(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { - getViewProviderPtr()->show(); + getViewProviderPtr()->show(); Py_Return; } PY_CATCH; } PyObject* ViewProviderPy::hide(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { - getViewProviderPtr()->hide(); + getViewProviderPtr()->hide(); Py_Return; } PY_CATCH; } PyObject* ViewProviderPy::isVisible(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { return Py_BuildValue("O", (getViewProviderPtr()->isShow() ? Py_True : Py_False)); } PY_CATCH; @@ -275,7 +275,7 @@ PyObject* ViewProviderPy::replaceObject(PyObject *args) { PyObject *oldObj; PyObject *newObj; - if (!PyArg_ParseTuple(args, "O!O!", + if (!PyArg_ParseTuple(args, "O!O!", &App::DocumentObjectPy::Type,&oldObj, &App::DocumentObjectPy::Type,&newObj)) return NULL; @@ -312,11 +312,11 @@ PyObject* ViewProviderPy::addDisplayMode(PyObject * args) PyObject* ViewProviderPy::listDisplayModes(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { - std::vector modes = getViewProviderPtr()->getDisplayModes(); - PyObject* pyList = PyList_New(modes.size()); + std::vector modes = getViewProviderPtr()->getDisplayModes(); + PyObject* pyList = PyList_New(modes.size()); int i=0; for ( std::vector::iterator it = modes.begin(); it != modes.end(); ++it ) { @@ -334,8 +334,8 @@ PyObject* ViewProviderPy::listDisplayModes(PyObject *args) PyObject* ViewProviderPy::toString(PyObject *args) { - if (!PyArg_ParseTuple(args, "")) // convert args: Python->C - return NULL; // NULL triggers exception + if (!PyArg_ParseTuple(args, "")) // convert args: Python->C + return NULL; // NULL triggers exception PY_TRY { std::string buffer = getViewProviderPtr()->toString(); return Py::new_reference_to(Py::String(buffer)); @@ -429,7 +429,7 @@ PyObject* ViewProviderPy::partialRender(PyObject* args) PyObject* ViewProviderPy::getElementColors(PyObject* args) { const char *element = 0; - if (!PyArg_ParseTuple(args, "|s", &element)) + if (!PyArg_ParseTuple(args, "|s", &element)) return 0; Py::Dict dict; @@ -444,7 +444,7 @@ PyObject* ViewProviderPy::getElementColors(PyObject* args) PyObject* ViewProviderPy::setElementColors(PyObject* args) { PyObject *pyObj; - if (!PyArg_ParseTuple(args, "O", &pyObj)) + if (!PyArg_ParseTuple(args, "O", &pyObj)) return 0; if(!PyDict_Check(pyObj)) @@ -473,7 +473,7 @@ PyObject* ViewProviderPy::getElementPicked(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "_p_SoPickedPoint", obj, &ptr, 0); SoPickedPoint *pp = reinterpret_cast(ptr); - if(!pp) + if(!pp) throw Base::TypeError("type must be of coin.SoPickedPoint"); std::string name; if(!getViewProviderPtr()->getElementPicked(pp,name)) @@ -491,7 +491,7 @@ PyObject* ViewProviderPy::getDetailPath(PyObject* args) void *ptr = 0; Base::Interpreter().convertSWIGPointerObj("pivy.coin", "_p_SoPath", path, &ptr, 0); SoPath *pPath = reinterpret_cast(ptr); - if(!pPath) + if(!pPath) throw Base::TypeError("type must be of coin.SoPath"); SoDetail *det = 0; if(!getViewProviderPtr()->getDetailPath( @@ -655,7 +655,7 @@ void ViewProviderPy::setDefaultMode(Py::Int arg) return getViewProviderPtr()->setDefaultMode(arg); } -Py::Boolean ViewProviderPy::getCanRemoveChildrenFromRoot() const +Py::Boolean ViewProviderPy::getCanRemoveChildrenFromRoot() const { return Py::Boolean(getViewProviderPtr()->canRemoveChildrenFromRoot()); } diff --git a/src/Gui/ViewProviderPythonFeature.cpp b/src/Gui/ViewProviderPythonFeature.cpp index 0cd46cd67d..5a46a48b0d 100644 --- a/src/Gui/ViewProviderPythonFeature.cpp +++ b/src/Gui/ViewProviderPythonFeature.cpp @@ -44,10 +44,10 @@ # include # include # include -# include +# include # include -# include -# include +# include +# include #endif #include "ViewProviderDocumentObjectPy.h" @@ -157,7 +157,7 @@ private: // original implementation didn't do that in every case, causing // memory leak. We now simply stores the python object with // reference counting, so no need to worry about deleting - + Py::Object viewObject(const_cast(pe->view)->getPyObject(),true); if(viewObject.ptr() != pe->info.viewObject.ptr()) { if(FC_LOG_INSTANCE.isEnabled(FC_LOGLEVEL_LOG)) @@ -365,7 +365,7 @@ QIcon ViewProviderPythonFeatureImp::getIcon() const wrap.loadGuiModule(); wrap.loadWidgetsModule(); QIcon *picon = wrap.toQIcon(ret.ptr()); - if(picon) + if(picon) return *picon; } } @@ -381,7 +381,7 @@ QIcon ViewProviderPythonFeatureImp::getIcon() const return QIcon(); } -bool ViewProviderPythonFeatureImp::claimChildren(std::vector &children) const +bool ViewProviderPythonFeatureImp::claimChildren(std::vector &children) const { _FC_PY_CALL_CHECK(claimChildren,return(false)); @@ -891,7 +891,7 @@ void ViewProviderPythonFeatureImp::finishRestoring() ViewProviderPythonFeatureImp::ValueT ViewProviderPythonFeatureImp::onDelete(const std::vector & sub) { - FC_PY_CALL_CHECK(onDelete); + FC_PY_CALL_CHECK(onDelete); Base::PyGILStateLocker lock; try { @@ -1263,7 +1263,7 @@ ViewProviderPythonFeatureImp::canDropObjectEx(App::DocumentObject* obj, return Rejected; } -bool ViewProviderPythonFeatureImp::dropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, +bool ViewProviderPythonFeatureImp::dropObjectEx(App::DocumentObject* obj, App::DocumentObject *owner, const char *subname, const std::vector &elements,std::string &ret) { _FC_PY_CALL_CHECK(dropObjectEx, return(false)); @@ -1318,7 +1318,7 @@ ViewProviderPythonFeatureImp::isShow() const } -ViewProviderPythonFeatureImp::ValueT +ViewProviderPythonFeatureImp::ValueT ViewProviderPythonFeatureImp::canRemoveChildrenFromRoot() const { FC_PY_CALL_CHECK(canRemoveChildrenFromRoot); @@ -1362,7 +1362,7 @@ bool ViewProviderPythonFeatureImp::getDropPrefix(std::string &prefix) const { return true; } -ViewProviderPythonFeatureImp::ValueT +ViewProviderPythonFeatureImp::ValueT ViewProviderPythonFeatureImp::replaceObject( App::DocumentObject *oldObj, App::DocumentObject *newObj) { diff --git a/src/Gui/ViewProviderPythonFeature.h b/src/Gui/ViewProviderPythonFeature.h index eba3b6179b..74e7fd8d54 100644 --- a/src/Gui/ViewProviderPythonFeature.h +++ b/src/Gui/ViewProviderPythonFeature.h @@ -109,16 +109,16 @@ public: ValueT dropObject(App::DocumentObject*); /** Return false to force drop only operation for a give object*/ ValueT canDragAndDropObject(App::DocumentObject*) const; - /** Query object dropping with full quanlified name */ - ValueT canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *, + /** Query object dropping with full qualified name */ + ValueT canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *, const char *,const std::vector &elements) const; - /** Add an object with full quanlified name to the view provider by drag and drop */ + /** Add an object with full qualified name to the view provider by drag and drop */ bool dropObjectEx(App::DocumentObject *obj, App::DocumentObject *, const char *, const std::vector &elements, std::string &ret); ValueT replaceObject(App::DocumentObject *, App::DocumentObject *); //@} - bool getLinkedViewProvider(ViewProviderDocumentObject *&res, + bool getLinkedViewProvider(ViewProviderDocumentObject *&res, std::string *subname, bool recursive) const; ValueT canAddToSceneGraph() const; @@ -211,6 +211,8 @@ public: QIcon icon = imp->getIcon(); if (icon.isNull()) icon = ViewProviderT::getIcon(); + else + icon = ViewProviderT::mergeOverlayIcons(icon); return icon; } @@ -405,7 +407,7 @@ public: return ViewProviderT::canDragAndDropObject(obj); } } - virtual bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, + virtual bool canDropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, const char *subname, const std::vector &elements) const override { switch (imp->canDropObjectEx(obj,owner,subname,elements)) { @@ -417,8 +419,8 @@ public: return ViewProviderT::canDropObjectEx(obj,owner,subname,elements); } } - /** Add an object with full quanlified name to the view provider by drag and drop */ - virtual std::string dropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, + /** Add an object with full qualified name to the view provider by drag and drop */ + virtual std::string dropObjectEx(App::DocumentObject *obj, App::DocumentObject *owner, const char *subname, const std::vector &elements) override { App::AutoTransaction committer; diff --git a/src/Gui/WaitCursor.cpp b/src/Gui/WaitCursor.cpp index 43a3cc187e..b441ad8b58 100644 --- a/src/Gui/WaitCursor.cpp +++ b/src/Gui/WaitCursor.cpp @@ -127,7 +127,7 @@ bool WaitCursorP::isModalDialog(QObject* o) const bool WaitCursorP::eventFilter(QObject* o, QEvent* e) { - // Note: This might cause problems when we want to open a modal dialog at the lifetime + // Note: This might cause problems when we want to open a modal dialog at the lifetime // of a WaitCursor instance because the incoming events are still filtered. if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease) { @@ -150,8 +150,8 @@ bool WaitCursorP::eventFilter(QObject* o, QEvent* e) int WaitCursor::instances = 0; /** - * Constructs this object and shows the wait cursor immediately. If you need to open a dialog as - * long as an instance of WaitCursor exists you must call restoreCursor() before and setWaitCursor() + * Constructs this object and shows the wait cursor immediately. If you need to open a dialog as + * long as an instance of WaitCursor exists you must call restoreCursor() before and setWaitCursor() * afterwards because all key events and mouse button events are filtered, otherwise you will run * into strange behaviour. */ diff --git a/src/Gui/WaitCursor.h b/src/Gui/WaitCursor.h index 3761f89562..f3db88d5d2 100644 --- a/src/Gui/WaitCursor.h +++ b/src/Gui/WaitCursor.h @@ -29,8 +29,8 @@ namespace Gui { /** - * This class sets a waitcursor automatically while a slow operation is running. - * Therefore you just have to create an instance of WaitCursor before the time + * This class sets a waitcursor automatically while a slow operation is running. + * Therefore you just have to create an instance of WaitCursor before the time * consuming operation starts. * * \code: @@ -39,7 +39,7 @@ namespace Gui { * ... // slow operation * ... * \endcode - * + * * Sometimes you have two slow operations with some user interactions in between them. * Avoiding to show the waiting cursor then you have to call the methods @ref restoreCursor() * and setWaitCursor manually, like: @@ -55,7 +55,7 @@ namespace Gui { * ... * ... // 2nd slow operation * \endcode - * + * * @author Werner Mayer */ class GuiExport WaitCursor @@ -84,5 +84,5 @@ private: } // namespace Gui -#endif // GUI_WAIT_CURSOR_H +#endif // GUI_WAIT_CURSOR_H diff --git a/src/Gui/WhatsThis.cpp b/src/Gui/WhatsThis.cpp index cb00f01b43..55b57e12f4 100644 --- a/src/Gui/WhatsThis.cpp +++ b/src/Gui/WhatsThis.cpp @@ -63,7 +63,7 @@ Action * StdCmdDescription::createAction(void) void StdCmdDescription::activated(int iMsg) { - Q_UNUSED(iMsg); + Q_UNUSED(iMsg); if ( !inDescriptionMode() ) enterDescriptionMode(); else diff --git a/src/Gui/WidgetFactory.cpp b/src/Gui/WidgetFactory.cpp index 64da98a726..7441d75389 100644 --- a/src/Gui/WidgetFactory.cpp +++ b/src/Gui/WidgetFactory.cpp @@ -449,6 +449,44 @@ QIcon *PythonWrapper::toQIcon(PyObject *pyobj) return 0; } +Py::Object PythonWrapper::fromQObject(QObject* object, const char* className) +{ +#if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) + // Access shiboken/PySide via C++ + // + PyTypeObject * type = getPyTypeObjectForTypeName(); + if (type) { + SbkObjectType* sbk_type = reinterpret_cast(type); + std::string typeName; + if (className) + typeName = className; + else + typeName = object->metaObject()->className(); + PyObject* pyobj = Shiboken::Object::newObject(sbk_type, object, false, false, typeName.c_str()); + return Py::asObject(pyobj); + } + throw Py::RuntimeError("Failed to wrap object"); + +#elif QT_VERSION >= 0x050000 + // Access shiboken2/PySide2 via Python + // + return qt_wrapInstance(object, className, "shiboken2", "PySide2.QtCore", "wrapInstance"); +#else + // Access shiboken/PySide via Python + // + return qt_wrapInstance(object, className, "shiboken", "PySide.QtCore", "wrapInstance"); +#endif + +#if 0 // Unwrapping using sip/PyQt + Q_UNUSED(className); +#if QT_VERSION >= 0x050000 + return qt_wrapInstance(object, "QObject", "sip", "PyQt5.QtCore", "wrapinstance"); +#else + return qt_wrapInstance(object, "QObject", "sip", "PyQt4.Qt", "wrapinstance"); +#endif +#endif +} + Py::Object PythonWrapper::fromQWidget(QWidget* widget, const char* className) { #if defined (HAVE_SHIBOKEN) && defined(HAVE_PYSIDE) @@ -644,7 +682,7 @@ void WidgetFactoryInst::destruct () /** * Creates a widget with the name \a sName which is a child of \a parent. - * To create an instance of this widget once it must has been registered. + * To create an instance of this widget once it must has been registered. * If there is no appropriate widget registered 0 is returned. */ QWidget* WidgetFactoryInst::createWidget (const char* sName, QWidget* parent) const @@ -686,7 +724,7 @@ QWidget* WidgetFactoryInst::createWidget (const char* sName, QWidget* parent) co /** * Creates a widget with the name \a sName which is a child of \a parent. - * To create an instance of this widget once it must has been registered. + * To create an instance of this widget once it must has been registered. * If there is no appropriate widget registered 0 is returned. */ Gui::Dialog::PreferencePage* WidgetFactoryInst::createPreferencePage (const char* sName, QWidget* parent) const @@ -724,9 +762,9 @@ Gui::Dialog::PreferencePage* WidgetFactoryInst::createPreferencePage (const char } /** - * Creates a preference widget with the name \a sName and the preference name \a sPref + * Creates a preference widget with the name \a sName and the preference name \a sPref * which is a child of \a parent. - * To create an instance of this widget once it must has been registered. + * To create an instance of this widget once it must has been registered. * If there is no appropriate widget registered 0 is returned. * After creation of this widget its recent preferences are restored automatically. */ @@ -1396,7 +1434,7 @@ void PyResource::load(const char* name) /** * Makes a connection between the sender widget \a sender and its signal \a signal * of the created resource and Python callback function \a cb. - * If the sender widget does not exist or no resource has been loaded this method returns false, + * If the sender widget does not exist or no resource has been loaded this method returns false, * otherwise it returns true. */ bool PyResource::connect(const char* sender, const char* signal, PyObject* cb) diff --git a/src/Gui/WidgetFactory.h b/src/Gui/WidgetFactory.h index 2a55d75bca..d1d1ecf6eb 100644 --- a/src/Gui/WidgetFactory.h +++ b/src/Gui/WidgetFactory.h @@ -51,6 +51,7 @@ public: bool toCString(const Py::Object&, std::string&); QObject* toQObject(const Py::Object&); QGraphicsItem* toQGraphicsItem(PyObject* ptr); + Py::Object fromQObject(QObject*, const char* className=0); Py::Object fromQWidget(QWidget*, const char* className=0); const char* getWrapperName(QObject*) const; /*! @@ -75,7 +76,7 @@ private: Py::Object loadUi(const Py::Tuple& args); }; -/** +/** * The widget factory provides methods for the dynamic creation of widgets. * To create these widgets once they must be registered to the factory. * To register them use WidgetProducer or any subclasses; to register a @@ -107,7 +108,7 @@ inline WidgetFactoryInst& WidgetFactory() // -------------------------------------------------------------------- /** - * The UiLoader class provides the abitlity to use the widget factory + * The UiLoader class provides the abitlity to use the widget factory * framework of FreeCAD within the framework provided by Qt. This class * extends QUiLoader by the creation of FreeCAD specific widgets. * @author Werner Mayer @@ -122,7 +123,7 @@ public: * Creates a widget of the type \a className with the parent \a parent. * For more details see the documentation to QWidgetFactory. */ - QWidget* createWidget(const QString & className, QWidget * parent=0, + QWidget* createWidget(const QString & className, QWidget * parent=0, const QString& name = QString()); private: QStringList cw; @@ -130,7 +131,7 @@ private: // -------------------------------------------------------------------- -class UiLoaderPy : public Py::PythonExtension +class UiLoaderPy : public Py::PythonExtension { public: static void init_type(void); // announce properties and methods @@ -152,15 +153,15 @@ private: // -------------------------------------------------------------------- /** - * The WidgetProducer class is a value-based template class that provides - * the ability to create widgets dynamically. + * The WidgetProducer class is a value-based template class that provides + * the ability to create widgets dynamically. * \author Werner Mayer */ template class WidgetProducer : public Base::AbstractProducer { public: - /** + /** * Register a special type of widget to the WidgetFactoryInst. */ WidgetProducer () @@ -171,7 +172,7 @@ public: virtual ~WidgetProducer (){} - /** + /** * Creates an instance of the specified widget. */ virtual void* Produce () const @@ -183,15 +184,15 @@ public: // -------------------------------------------------------------------- /** - * The PrefPageProducer class is a value-based template class that provides - * the ability to create preference pages dynamically. + * The PrefPageProducer class is a value-based template class that provides + * the ability to create preference pages dynamically. * \author Werner Mayer */ template class PrefPageProducer : public Base::AbstractProducer { public: - /** + /** * Register a special type of preference page to the WidgetFactoryInst. */ PrefPageProducer (const char* group) @@ -227,7 +228,7 @@ public: class GuiExport PrefPageUiProducer : public Base::AbstractProducer { public: - /** + /** * Register a special type of preference page to the WidgetFactoryInst. */ PrefPageUiProducer (const char* filename, const char* group); @@ -249,7 +250,7 @@ private: class GuiExport PrefPagePyProducer : public Base::AbstractProducer { public: - /** + /** * Register a special type of preference page to the WidgetFactoryInst. */ PrefPagePyProducer (const Py::Object&, const char* group); @@ -266,15 +267,15 @@ private: // -------------------------------------------------------------------- /** - * The CustomPageProducer class is a value-based template class that provides - * the ability to create custom pages dynamically. + * The CustomPageProducer class is a value-based template class that provides + * the ability to create custom pages dynamically. * \author Werner Mayer */ template class CustomPageProducer : public Base::AbstractProducer { public: - /** + /** * Register a special type of customize page to the WidgetFactoryInst. */ CustomPageProducer () @@ -293,7 +294,7 @@ public: virtual ~CustomPageProducer (){} - /** + /** * Creates an instance of the specified widget. */ virtual void* Produce () const @@ -359,10 +360,10 @@ private: * d = Gui.createDialog("test.ui") * \endcode * - * you can create a PyResource object containing the widget. If a relative file name - * is given PyResource looks first in the current working directory and afterwards in + * you can create a PyResource object containing the widget. If a relative file name + * is given PyResource looks first in the current working directory and afterwards in * the home path where FreeCAD resides. - * + * * If the appropriate .ui file cannot be found or creation fails an exception is thrown. * In case the widget in the .ui file does not inherit from QDialog it is embedded in a * \ref ContainerDialog object. diff --git a/src/Gui/Widgets.cpp b/src/Gui/Widgets.cpp index 75d6759d1e..57ccb8c325 100644 --- a/src/Gui/Widgets.cpp +++ b/src/Gui/Widgets.cpp @@ -66,7 +66,7 @@ using namespace Base; CommandIconView::CommandIconView ( QWidget * parent ) : QListWidget(parent) { - connect(this, SIGNAL (currentItemChanged(QListWidgetItem *, QListWidgetItem *)), + connect(this, SIGNAL (currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT (onSelectionChanged(QListWidgetItem *, QListWidgetItem *)) ); } @@ -78,7 +78,7 @@ CommandIconView::~CommandIconView () } /** - * Stores the name of the selected commands for drag and drop. + * Stores the name of the selected commands for drag and drop. */ void CommandIconView::startDrag (Qt::DropActions supportedActions) { @@ -106,7 +106,7 @@ void CommandIconView::startDrag (Qt::DropActions supportedActions) } /** - * This slot is called when a new item becomes current. \a item is the new current item + * This slot is called when a new item becomes current. \a item is the new current item * (or 0 if no item is now current). This slot emits the emitSelectionChanged() * signal for its part. */ @@ -633,8 +633,8 @@ ColorButton::~ColorButton() delete d; } -/** - * Sets the color \a c to the button. +/** + * Sets the color \a c to the button. */ void ColorButton::setColor(const QColor& c) { @@ -643,7 +643,7 @@ void ColorButton::setColor(const QColor& c) update(); } -/** +/** * Returns the current color of the button. */ QColor ColorButton::color() const @@ -716,7 +716,7 @@ void ColorButton::paintEvent (QPaintEvent * e) } } - // overpaint the rectangle to paint icon and text + // overpaint the rectangle to paint icon and text QStyleOptionButton opt; opt.init(this); opt.text = text(); @@ -774,6 +774,7 @@ void ColorButton::onChooseColor() } cd.setCurrentColor(currentColor); + cd.adjustSize(); if (cd.exec() == QDialog::Accepted) { QColor c = cd.selectedColor(); if (c.isValid()) { @@ -1023,7 +1024,7 @@ bool ToolTip::eventFilter(QObject* o, QEvent*e) removeEventFilter(); this->hidden = true; } - else if (e->type() == QEvent::Timer && + else if (e->type() == QEvent::Timer && !this->hidden && displayTime.elapsed() < 5000) { return true; } @@ -1354,8 +1355,8 @@ void LabelEditor::setInputType(InputType t) // -------------------------------------------------------------------- -ExpLineEdit::ExpLineEdit(QWidget* parent, bool expressionOnly) - : QLineEdit(parent), autoClose(expressionOnly) +ExpLineEdit::ExpLineEdit(QWidget* parent, bool expressionOnly) + : QLineEdit(parent), autoClose(expressionOnly) { defaultPalette = palette(); @@ -1372,12 +1373,12 @@ ExpLineEdit::ExpLineEdit(QWidget* parent, bool expressionOnly) setStyleSheet(QString::fromLatin1("QLineEdit { padding-right: %1px } ").arg(iconHeight+frameWidth)); QObject::connect(iconLabel, SIGNAL(clicked()), this, SLOT(openFormulaDialog())); - if(expressionOnly) + if(expressionOnly) QMetaObject::invokeMethod(this, "openFormulaDialog", Qt::QueuedConnection, QGenericReturnArgument()); } bool ExpLineEdit::apply(const std::string& propName) { - + if (!ExpressionBinding::apply(propName)) { if(!autoClose) { QString val = QString::fromUtf8(Base::Interpreter().strToPython(text().toUtf8()).c_str()); @@ -1390,7 +1391,7 @@ bool ExpLineEdit::apply(const std::string& propName) { } void ExpLineEdit::bind(const ObjectIdentifier& _path) { - + ExpressionBinding::bind(_path); int frameWidth = style()->pixelMetric(QStyle::PM_SpinBoxFrameWidth); @@ -1416,7 +1417,7 @@ void ExpLineEdit::setExpression(boost::shared_ptr expr) } void ExpLineEdit::onChange() { - + if (getExpression()) { std::unique_ptr result(getExpression()->eval()); if(result->isDerivedFrom(App::StringExpression::getClassTypeId())) @@ -1511,7 +1512,7 @@ void ExpLineEdit::finishFormulaDialog() box->deleteLater(); - if(autoClose) + if(autoClose) this->deleteLater(); } diff --git a/src/Gui/Widgets.h b/src/Gui/Widgets.h index d8ec8c8007..c27dba24b0 100644 --- a/src/Gui/Widgets.h +++ b/src/Gui/Widgets.h @@ -248,7 +248,7 @@ private: /** * A text label where a url can specified. When the user clicks on the text label the system browser - * gets opened with the specified url. + * gets opened with the specified url. * * This can be used for e.g. in the about dialog where the url of the maintainer of an application * can be specified. @@ -414,7 +414,7 @@ public: LabelEditor (QWidget * parent = 0); virtual ~LabelEditor(); - /** + /** * Returns the text. */ QString text() const; diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp index a0746c9f3c..af56378fb8 100644 --- a/src/Gui/Window.cpp +++ b/src/Gui/Window.cpp @@ -83,8 +83,8 @@ ParameterGrp::handle WindowParameter::getWindowParameter(void) return _handle; } -/** - * Returns a handle to the parameter group to the user parameter +/** + * Returns a handle to the parameter group to the user parameter * under BaseApp/Preferences. */ ParameterGrp::handle WindowParameter::getDefaultParameter(void) diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index 5c0eee3f45..cc3d1bec6a 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -120,7 +120,7 @@ using namespace Gui; * return root; * } * }; - * + * * \endcode * * \subsection customizeWorkbench Customizing the workbench @@ -542,7 +542,7 @@ void StdWorkbench::setupContextMenu(const char* recipient, MenuItem* item) const if (Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0) { *item << "Separator" << "Std_SetAppearance" << "Std_ToggleVisibility" - << "Std_ToggleSelectability" << "Std_TreeSelection" + << "Std_ToggleSelectability" << "Std_TreeSelection" << "Std_RandomColor" << "Separator" << "Std_Delete" << "Std_SendToPythonConsole"; } @@ -551,9 +551,9 @@ void StdWorkbench::setupContextMenu(const char* recipient, MenuItem* item) const { if (Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0) { *item << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" - << "Std_ToggleSelectability" << "Std_TreeSelectAllInstances" << "Separator" - << "Std_SetAppearance" << "Std_RandomColor" << "Separator" - << "Std_Cut" << "Std_Copy" << "Std_Paste" << "Std_Delete" + << "Std_ToggleSelectability" << "Std_TreeSelectAllInstances" << "Separator" + << "Std_SetAppearance" << "Std_RandomColor" << "Separator" + << "Std_Cut" << "Std_Copy" << "Std_Paste" << "Std_Delete" << "Std_SendToPythonConsole" << "Separator"; } } @@ -574,8 +574,8 @@ MenuItem* StdWorkbench::setupMenuBar() const file->setCommand("&File"); *file << "Std_New" << "Std_Open" << "Separator" << "Std_CloseActiveWindow" << "Std_CloseAllWindows" << "Separator" << "Std_Save" << "Std_SaveAs" - << "Std_SaveCopy" << "Std_SaveAll" << "Std_Revert" << "Separator" << "Std_Import" - << "Std_Export" << "Std_MergeProjects" << "Std_ProjectInfo" + << "Std_SaveCopy" << "Std_SaveAll" << "Std_Revert" << "Separator" << "Std_Import" + << "Std_Export" << "Std_MergeProjects" << "Std_ProjectInfo" << "Separator" << "Std_Print" << "Std_PrintPreview" << "Std_PrintPdf" << "Separator" << "Std_RecentFiles" << "Separator" << "Std_Quit"; @@ -584,7 +584,7 @@ MenuItem* StdWorkbench::setupMenuBar() const edit->setCommand("&Edit"); *edit << "Std_Undo" << "Std_Redo" << "Separator" << "Std_Cut" << "Std_Copy" << "Std_Paste" << "Std_DuplicateSelection" << "Separator" - << "Std_Refresh" << "Std_BoxSelection" << "Std_BoxElementSelection" + << "Std_Refresh" << "Std_BoxSelection" << "Std_BoxElementSelection" << "Std_SelectAll" << "Std_Delete" << "Std_SendToPythonConsole" << "Separator" << "Std_Placement" /*<< "Std_TransformManip"*/ << "Std_Alignment" << "Std_Edit" << "Separator" << "Std_DlgPreferences"; @@ -607,7 +607,7 @@ MenuItem* StdWorkbench::setupMenuBar() const // stereo MenuItem* view3d = new MenuItem; view3d->setCommand("&Stereo"); - *view3d << "Std_ViewIvStereoRedGreen" << "Std_ViewIvStereoQuadBuff" + *view3d << "Std_ViewIvStereoRedGreen" << "Std_ViewIvStereoQuadBuff" << "Std_ViewIvStereoInterleavedRows" << "Std_ViewIvStereoInterleavedColumns" << "Std_ViewIvStereoOff" << "Separator" << "Std_ViewIvIssueCamPos"; @@ -621,7 +621,7 @@ MenuItem* StdWorkbench::setupMenuBar() const visu->setCommand("Visibility"); *visu << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" << "Std_SelectVisibleObjects" - << "Separator" << "Std_ToggleObjects" << "Std_ShowObjects" << "Std_HideObjects" + << "Separator" << "Std_ToggleObjects" << "Std_ShowObjects" << "Std_HideObjects" << "Separator" << "Std_ToggleSelectability" << "Separator" << "View_Measure_Toggle_All" << "View_Measure_Clear_All"; @@ -632,14 +632,14 @@ MenuItem* StdWorkbench::setupMenuBar() const << stdviews << "Std_FreezeViews" << "Std_DrawStyle" << "Std_SelBoundingBox" << "Separator" << view3d << zoom << "Std_ViewDockUndockFullscreen" << "Std_AxisCross" << "Std_ToggleClipPlane" - << "Std_TextureMapping" + << "Std_TextureMapping" #ifdef BUILD_VR << "Std_ViewVR" -#endif +#endif << "Separator" << visu << "Std_ToggleVisibility" << "Std_ToggleNavigation" - << "Std_SetAppearance" << "Std_RandomColor" << "Separator" - << "Std_Workbench" << "Std_ToolBarMenu" << "Std_DockViewMenu" << "Separator" + << "Std_SetAppearance" << "Std_RandomColor" << "Separator" + << "Std_Workbench" << "Std_ToolBarMenu" << "Std_DockViewMenu" << "Separator" << "Std_TreeViewActions" << "Std_ViewStatusBar"; @@ -772,7 +772,7 @@ DockWindowItems* StdWorkbench::setupDockWindows() const root->addDockWidget("Std_ComboView", Qt::LeftDockWidgetArea, false, false); root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, true, true); root->addDockWidget("Std_PythonView", Qt::BottomDockWidgetArea, true, true); - + //Dagview through parameter. ParameterGrp::handle group = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("DAGView"); @@ -780,7 +780,7 @@ DockWindowItems* StdWorkbench::setupDockWindows() const bool enabled = group->GetBool("Enabled", false); if (enabled) root->addDockWidget("Std_DAGView", Qt::RightDockWidgetArea, false, false); - + return root; } diff --git a/src/Gui/Workbench.h b/src/Gui/Workbench.h index a5ee834246..46c70b9eeb 100644 --- a/src/Gui/Workbench.h +++ b/src/Gui/Workbench.h @@ -42,10 +42,10 @@ class DockWindowItems; class WorkbenchManager; /** - * This is the base class for the workbench facility. Each FreeCAD module can provide its own - * workbench implementation. The workbench defines which GUI elements (such as toolbars, menus, - * dockable windows, ...) are added to the mainwindow and which gets removed or hidden. - * When a workbench object gets activated the first time the module - it stands for - gets + * This is the base class for the workbench facility. Each FreeCAD module can provide its own + * workbench implementation. The workbench defines which GUI elements (such as toolbars, menus, + * dockable windows, ...) are added to the mainwindow and which gets removed or hidden. + * When a workbench object gets activated the first time the module - it stands for - gets * loaded into RAM. * @author Werner Mayer */ @@ -69,15 +69,15 @@ public: * The default implementation returns an instance of @ref WorkbenchPy. */ PyObject* getPyObject(); - /** Sets up the contextmenu for this workbench. + /** Sets up the contextmenu for this workbench. * The default implementation does nothing. */ virtual void setupContextMenu(const char* recipient,MenuItem*) const; - /** Sets up the contextmenu for the main window for this workbench. + /** Sets up the contextmenu for the main window for this workbench. * The default implementation does nothing. */ virtual void createMainWindowPopupMenu(MenuItem*) const; - /** + /** * Activates the workbench and adds/removes GUI elements. */ bool activate(); @@ -130,7 +130,7 @@ private: }; /** - * The StdWorkbench class defines the standard menus, toolbars, commandbars etc. + * The StdWorkbench class defines the standard menus, toolbars, commandbars etc. * To define own workbenches you should inherit from StdWorkbench instead of Workbench * to have defined the standard GUI elements. * @author Werner Mayer @@ -162,7 +162,7 @@ protected: }; /** - * The BlankWorkbench class defines a complete empty workbench. + * The BlankWorkbench class defines a complete empty workbench. * @author Werner Mayer */ class GuiExport BlankWorkbench : public Workbench @@ -192,7 +192,7 @@ protected: }; /** - * The NoneWorkbench class defines a slim workbench. + * The NoneWorkbench class defines a slim workbench. * @author Werner Mayer */ class GuiExport NoneWorkbench : public StdWorkbench @@ -323,4 +323,4 @@ protected: } // namespace Gui -#endif // GUI_WORKBENCH_H +#endif // GUI_WORKBENCH_H diff --git a/src/Gui/WorkbenchFactory.h b/src/Gui/WorkbenchFactory.h index e137a8e8bf..5f92d03bae 100644 --- a/src/Gui/WorkbenchFactory.h +++ b/src/Gui/WorkbenchFactory.h @@ -31,7 +31,7 @@ namespace Gui { class Workbench; -/** +/** * The workbench factory provides methods for the dynamic creation of * special workbenches for each module. To create these workbenches once * they must be registered through a subclass of WorkbenchProducer. @@ -47,7 +47,7 @@ public: static void destruct (); /** Creates the workbench with \a name. If no such workbench is registered - * 0 is returned. + * 0 is returned. */ Workbench* createWorkbench ( const char* sName ) const; /** Returns a list of all registered workbench classes. */ @@ -68,7 +68,7 @@ inline GuiExport WorkbenchFactoryInst& WorkbenchFactory() // -------------------------------------------------------------------- /** - * The WorkbenchProducer template class allos the registration and the creation of workbench + * The WorkbenchProducer template class allows the registration and the creation of workbench * classes. * @author Werner Mayer */ @@ -88,6 +88,6 @@ public: } }; -} // namespace Gui +} // namespace Gui -#endif // GUI_WORKBENCHFACTORY_H +#endif // GUI_WORKBENCHFACTORY_H diff --git a/src/Gui/WorkbenchManager.cpp b/src/Gui/WorkbenchManager.cpp index 3305c3a19c..ee8466f0d5 100644 --- a/src/Gui/WorkbenchManager.cpp +++ b/src/Gui/WorkbenchManager.cpp @@ -131,7 +131,7 @@ bool WorkbenchManager::activate(const std::string& name, const std::string& clas wb->activate(); return true; } - + return false; } diff --git a/src/Gui/WorkbenchManager.h b/src/Gui/WorkbenchManager.h index 4596271f17..f7482ffc43 100644 --- a/src/Gui/WorkbenchManager.h +++ b/src/Gui/WorkbenchManager.h @@ -34,7 +34,7 @@ class Workbench; * The WorkbenchManager class manages all workbench objects. * @author Werner Mayer */ -class GuiExport WorkbenchManager +class GuiExport WorkbenchManager { public: /** Creates the only instance of the WorkbenchManager. */ @@ -51,7 +51,7 @@ public: */ void removeWorkbench(const std::string& name); /** Returns an instance of the workbench with name \a name. If there is - * no such workbench 0 is returned. + * no such workbench 0 is returned. */ Workbench* getWorkbench (const std::string& name) const; /** Activates the workbench with name \a name. */ @@ -74,4 +74,4 @@ private: } // namespace Gui -#endif // GUI_WORKBENCHMANAGER_H +#endif // GUI_WORKBENCHMANAGER_H diff --git a/src/Gui/WorkbenchPyImp.cpp b/src/Gui/WorkbenchPyImp.cpp index 2cd3001363..3982446ed9 100644 --- a/src/Gui/WorkbenchPyImp.cpp +++ b/src/Gui/WorkbenchPyImp.cpp @@ -67,9 +67,9 @@ PyObject* WorkbenchPy::activate(PyObject *args) return nullptr; PY_TRY { - std::string name = getWorkbenchPtr()->name(); + std::string name = getWorkbenchPtr()->name(); WorkbenchManager::instance()->activate( name, getWorkbenchPtr()->getTypeId().getName() ); - Py_Return; + Py_Return; }PY_CATCH; } @@ -152,5 +152,5 @@ PyObject* WorkbenchPy::getCustomAttributes(const char*) const int WorkbenchPy::setCustomAttributes(const char*, PyObject *) { - return 0; + return 0; } diff --git a/src/Gui/core-gui.dox b/src/Gui/core-gui.dox index 602dacd556..59a191873f 100644 --- a/src/Gui/core-gui.dox +++ b/src/Gui/core-gui.dox @@ -1,6 +1,6 @@ /** \defgroup GUI Gui - * \ingroup CORE - * \brief The Graphical User Interface of FreeCAD and the 3D View + * \ingroup CORE + * \brief The Graphical User Interface of FreeCAD and the 3D View */ /** \namespace Gui diff --git a/src/Gui/lex.SelectionFilter.c b/src/Gui/lex.SelectionFilter.c index 58d3088c8d..1518012aa4 100644 --- a/src/Gui/lex.SelectionFilter.c +++ b/src/Gui/lex.SelectionFilter.c @@ -1,3 +1,23 @@ +/*************************************************************************** + * Copyright (c) 2011 Werner Mayer * + * * + * 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 * + * * + ***************************************************************************/ + #line 2 "lex.SelectionFilter.c" #line 4 "lex.SelectionFilter.c" @@ -509,20 +529,20 @@ char *SelectionFiltertext; /* Copyright (c) 2010 Jürgen Riegel LGPL */ /* flex -o lex.SelectionFilter.c SelectionFilter.l */ - -#include - -#include "stdio.h" - - -/* This disables inclusion of unistd.h, which is not available under Visual C++ - * on Win32. The C++ scanner uses STL streams instead. */ -#define YY_NO_UNISTD_H - -/*** Flex Declarations and Options ***/ -/* change the name of the scanner class. results in "SelectionFilterFlexLexer" */ -/* the manual says "somewhat more optimized" */ -/* no support for include files is planned */ + +#include + +#include "stdio.h" + + +/* This disables inclusion of unistd.h, which is not available under Visual C++ + * on Win32. The C++ scanner uses STL streams instead. */ +#define YY_NO_UNISTD_H + +/*** Flex Declarations and Options ***/ +/* change the name of the scanner class. results in "SelectionFilterFlexLexer" */ +/* the manual says "somewhat more optimized" */ +/* no support for include files is planned */ #line 527 "lex.SelectionFilter.c" #define INITIAL 0 @@ -741,8 +761,8 @@ YY_DECL { #line 30 "SelectionFilter.l" - - + + #line 747 "lex.SelectionFilter.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ @@ -799,55 +819,55 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP #line 33 "SelectionFilter.l" -; +; YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP #line 34 "SelectionFilter.l" -; +; YY_BREAK case 3: YY_RULE_SETUP #line 35 "SelectionFilter.l" -return TSUB; +return TSUB; YY_BREAK case 4: YY_RULE_SETUP #line 36 "SelectionFilter.l" -return TSELECT; +return TSELECT; YY_BREAK case 5: YY_RULE_SETUP #line 37 "SelectionFilter.l" -return TCOUNT; +return TCOUNT; YY_BREAK case 6: YY_RULE_SETUP #line 38 "SelectionFilter.l" -return TSLICE; +return TSLICE; YY_BREAK case 7: YY_RULE_SETUP #line 39 "SelectionFilter.l" -return TNAMESPACE; +return TNAMESPACE; YY_BREAK case 8: YY_RULE_SETUP #line 41 "SelectionFilter.l" -{ - yylval.string = new std::string(SelectionFiltertext); - return TIDENTIFIER; - } +{ + yylval.string = new std::string(SelectionFiltertext); + return TIDENTIFIER; + } YY_BREAK case 9: YY_RULE_SETUP #line 45 "SelectionFilter.l" -{ - long n = strtol (SelectionFiltertext, NULL, 10); - yylval.number = n; - return TNUMBER; - } +{ + long n = strtol (SelectionFiltertext, NULL, 10); + yylval.number = n; + return TNUMBER; + } YY_BREAK case 10: YY_RULE_SETUP diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index 2fb5be2061..f59c1ad04a 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -357,7 +357,7 @@ QVariant PropertyItem::toString(const QVariant& prop) const ss << '['; Py::Sequence seq(pyobj); bool first = true; - size_t i=0; + Py_ssize_t i=0; for (i=0; i<2 && i < seq.size(); ++i) { if (first) first = false; diff --git a/src/Gui/resource.cpp b/src/Gui/resource.cpp index c0c8e74f05..4449b09b3b 100644 --- a/src/Gui/resource.cpp +++ b/src/Gui/resource.cpp @@ -60,7 +60,7 @@ using namespace Gui::Dialog; */ WidgetFactorySupplier::WidgetFactorySupplier() { - // ADD YOUR PREFERENCE PAGES HERE + // ADD YOUR PREFERENCE PAGES HERE // // new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); diff --git a/src/Main/FreeCADGuiPy.cpp b/src/Main/FreeCADGuiPy.cpp index 0fd4dd6653..f82254c5b8 100644 --- a/src/Main/FreeCADGuiPy.cpp +++ b/src/Main/FreeCADGuiPy.cpp @@ -254,7 +254,7 @@ FreeCADGui_embedToWindow(PyObject * /*self*/, PyObject *args) return Py_None; } -struct PyMethodDef FreeCADGui_methods[] = { +struct PyMethodDef FreeCADGui_methods[] = { {"showMainWindow",FreeCADGui_showMainWindow,METH_VARARGS, "showMainWindow() -- Show the main window\n" "If no main window does exist one gets created"}, diff --git a/src/Main/MainCmd.cpp b/src/Main/MainCmd.cpp index 3a70c5132d..e59b734a39 100644 --- a/src/Main/MainCmd.cpp +++ b/src/Main/MainCmd.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2008 * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -19,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2002 * ***************************************************************************/ + #include "../FCConfig.h" #ifdef _PreComp_ diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index 1d75c2d167..411d39ddcc 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2008 * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,17 +10,17 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2002 * ***************************************************************************/ + #include #ifdef _PreComp_ @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -195,7 +196,7 @@ int main( int argc, char ** argv ) App::Application::Config()["Console"] = "0"; App::Application::Config()["LoggingConsole"] = "1"; - // Inits the Application + // Inits the Application #if defined (FC_OS_WIN32) App::Application::init(argc_, argv_.data()); #else @@ -309,6 +310,10 @@ int main( int argc, char ** argv ) e.ReportException(); exit(1); } + catch (const std::exception& e) { + Base::Console().Error("Application unexpectedly terminated: %s\n", e.what()); + exit(1); + } catch (...) { Base::Console().Error("Application unexpectedly terminated\n"); exit(1); @@ -321,7 +326,7 @@ int main( int argc, char ** argv ) // Destruction phase =========================================================== Base::Console().Log("%s terminating...\n",App::Application::Config()["ExeName"].c_str()); - // cleans up + // cleans up App::Application::destruct(); Base::Console().Log("%s completely terminated\n",App::Application::Config()["ExeName"].c_str()); diff --git a/src/Main/MainPy.cpp b/src/Main/MainPy.cpp index d746e58832..88f3b6e5e2 100644 --- a/src/Main/MainPy.cpp +++ b/src/Main/MainPy.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Juergen Riegel (juergen.riegel@web.de) 2008 * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -19,8 +19,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2002 * ***************************************************************************/ + #include #ifdef _PreComp_ diff --git a/src/Main/core-main.dox b/src/Main/core-main.dox index fa4bafaa45..7b6cfffcf4 100644 --- a/src/Main/core-main.dox +++ b/src/Main/core-main.dox @@ -1,4 +1,7 @@ -/** \defgroup MAIN Global application level - * \ingroup CORE - * \brief The Main classes define general application settings +/** \defgroup MAIN Global application level + * \ingroup CORE + * \brief The Main classes define general application settings + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + */ diff --git a/src/Mod/AddonManager/Resources/AddonManager.qrc b/src/Mod/AddonManager/Resources/AddonManager.qrc index ce8a3faedb..5ded416199 100644 --- a/src/Mod/AddonManager/Resources/AddonManager.qrc +++ b/src/Mod/AddonManager/Resources/AddonManager.qrc @@ -27,6 +27,7 @@ icons/GDT_workbench_icon.svg icons/FCGear_workbench_icon.svg icons/Geomatics_workbench_icon.svg + icons/ImportNURBS_workbench_icon.svg icons/InventorLoader_workbench_icon.svg icons/kicadStepUpMod_workbench_icon.svg icons/lattice2_workbench_icon.svg @@ -36,8 +37,10 @@ icons/MeshRemodel_workbench_icon.svg icons/ModernUI_workbench_icon.svg icons/MOOC_workbench_icon.svg + icons/OSE3dPrinter_workbench_icon.svg icons/Part-o-magic_workbench_icon.svg icons/Plot_workbench_icon.svg + icons/POV-Ray-Rendering_workbench_icon.svg icons/pyrate_workbench_icon.svg icons/Reinforcement_workbench_icon.svg icons/Reporting_workbench_icon.svg @@ -51,8 +54,6 @@ icons/WebTools_workbench_icon.svg icons/workfeature_workbench_icon.svg icons/yaml-workspace_workbench_icon.svg - icons/OSE3dPrinter_workbench_icon.svg - icons/ImportNURBS_workbench_icon.svg translations/AddonManager_af.qm translations/AddonManager_ar.qm translations/AddonManager_ca.qm diff --git a/src/Mod/AddonManager/Resources/icons/POV-Ray-Rendering_workbench_icon.svg b/src/Mod/AddonManager/Resources/icons/POV-Ray-Rendering_workbench_icon.svg new file mode 100644 index 0000000000..6931e1e02a --- /dev/null +++ b/src/Mod/AddonManager/Resources/icons/POV-Ray-Rendering_workbench_icon.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_af.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_af.qm index 41bc45eae3..4ca66c9a3b 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_af.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_af.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ar.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ar.qm index 750afe9f6b..0e993ebe56 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_ar.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_ar.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ca.qm index c6fb4a3ad7..d12e3348c1 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_cs.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_cs.qm index 57296383dc..6b4723a3aa 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_de.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_de.qm index db9525f334..087bdce214 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_el.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_el.qm index 61c381619c..044d043719 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_es-ES.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_es-ES.qm index 9dca449afe..85e3cd851b 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_eu.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.qm index 278a83e19b..c3a3a84791 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 8e42ed5cfd..540f1f1100 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_eu.ts @@ -244,12 +244,12 @@ This workbench may no longer be maintained and installing it on a Python 3 system will more than likely result in errors at startup or while in use. - This workbench may no longer be maintained and installing it on a Python 3 system will more than likely result in errors at startup or while in use. + Lan-mahai honek beharbada ez du jadanik mantenimendurik eta Python 3 duen sistema batean instalatzen bada erroreak sortu ditzake bai abioan bai erabiltzen ari denean. User requested updating a Python 2 workbench on a system running Python 3 - - User requested updating a Python 2 workbench on a system running Python 3 - + Erabiltzaileak Python 2 lan-mahai bat eguneratzea eskatu du Python 3 duen sistema batean - @@ -259,17 +259,17 @@ User requested installing a Python 2 workbench on a system running Python 3 - - User requested installing a Python 2 workbench on a system running Python 3 - + Erabiltzaileak Python 2 lan-mahai bat instalatzea eskatu du Python 3 duen sistema batean - Appears to be an issue connecting to the Wiki, therefore cannot retrieve Wiki macro list at this time - Appears to be an issue connecting to the Wiki, therefore cannot retrieve Wiki macro list at this time + Badirudi arazo bat dagoela wikiarekin konektatzean, ezin da atzitu wikiko makroen zerrenda momentu honetan Raw markdown displayed - Raw markdown displayed + Markdown gordina bistaratzen ari da. diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_fi.qm index b89fcbf967..45fcf1c7f3 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_fil.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_fil.qm index b9c33c4909..f351b9e5e1 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_fil.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_fil.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_fr.qm index 69a4e4b4c3..6853f21896 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_gl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_gl.qm index b1c59a86d5..24cac7101f 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_hr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.qm index 37f8a8f43d..3bfc27fc1f 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 95dcdd6eaf..b091723aaa 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_hr.ts @@ -270,7 +270,7 @@ Appears to be an issue connecting to the Wiki, therefore cannot retrieve Wiki macro list at this time - Appears to be an issue connecting to the Wiki, therefore cannot retrieve Wiki macro list at this time + Čini se da je problem povezivanje s Wiki-om, stoga trenutačno ne može dohvatiti popis makronaredbi Wiki @@ -280,7 +280,7 @@ Python Markdown library is missing. - Python Markdown library is missing. + Nedostaje Python Markdown biblioteka. diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_hu.qm index 068138b457..804690cded 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_id.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_id.qm index 7aa77c151d..16731175f4 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_it.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_it.qm index 61844125f7..8f6eb2029e 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_ja.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ja.qm index ecae07697d..2911cd4ddb 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_kab.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_kab.qm index 7ce88201b9..df0fe19f9e 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_kab.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_kab.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ko.qm index 115ea05bfb..60336573b4 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_lt.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_lt.qm index 57ce5c6744..68d521b8f0 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_lt.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_lt.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_nl.qm index 2958d7e3a5..e13dd2d153 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_no.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_no.qm index 025980e98e..7015e809a3 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_no.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_no.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pl.qm index a02c051890..4c2de1b9b3 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_pt-BR.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-BR.qm index 94df53da23..b08bcbfb66 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-PT.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_pt-PT.qm index c7dbdbb22a..02231bd3f0 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_ro.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ro.qm index b54b5c5120..396487bc6e 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_ru.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_ru.qm index c47fc495af..0d58691874 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_sk.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sk.qm index 30a8e6994d..712152b578 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_sk.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_sk.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sl.qm index 391cddb2e9..361fb021e2 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_sr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sr.qm index 384c5cf448..1e35f528e4 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_sv-SE.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_sv-SE.qm index 2a814d11b2..2121a1101d 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_tr.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.qm index daeec77fe6..38bc92334d 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 b00e866601..653fb2a379 100644 --- a/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts +++ b/src/Mod/AddonManager/Resources/translations/AddonManager_tr.ts @@ -24,7 +24,7 @@ The addons that can be installed here are not officially part of FreeCAD, and are not reviewed by the FreeCAD team. Make sure you know what you are installing! - Yüklenebilecek eklentiler FreeCAD'in resmi olarak bir parçası değildir ve FreeCAD takımı tarafından incelenmemektedir. Ne yüklediğinizi bildiğinizden emin olun! + Yüklenebilecek eklentiler FreeCAD'in resmi bir parçası değildir ve FreeCAD takımı tarafından incelenmemektedir. Ne yüklediğinizi bildiğinizden emin olun! diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_uk.qm index 4fbd77a205..a727c6e7ee 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_val-ES.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_val-ES.qm index 4f3768f7e7..2e91358634 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_vi.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_vi.qm index 161fe006dd..c9b03ca067 100644 Binary files a/src/Mod/AddonManager/Resources/translations/AddonManager_vi.qm and b/src/Mod/AddonManager/Resources/translations/AddonManager_vi.qm differ diff --git a/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-CN.qm index 2bf27cb395..3f3d6d9c3f 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-TW.qm b/src/Mod/AddonManager/Resources/translations/AddonManager_zh-TW.qm index 29211ed288..0f1697266b 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/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index ade9c8aa6e..453e75b4eb 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -768,7 +768,7 @@ class InstallWorker(QtCore.QThread): str(self.repos[idx][0]) + "\n") if have_git: self.info_label.emit("Cloning module...") - repo = git.Repo.clone_from(self.repos[idx][1], clonedir, branch="master") + repo = git.Repo.clone_from(self.repos[idx][1], clonedir) # Make sure to clone all the submodules as well if repo.submodules: diff --git a/src/Mod/Arch/Arch.py b/src/Mod/Arch/Arch.py index 05890af2d4..0505e68305 100644 --- a/src/Mod/Arch/Arch.py +++ b/src/Mod/Arch/Arch.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__= "FreeCAD Arch API" +__title__ = "FreeCAD Arch API" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \defgroup ARCH Arch # \ingroup PYTHONWORKBENCHES diff --git a/src/Mod/Arch/ArchAxis.py b/src/Mod/Arch/ArchAxis.py index ea200ca9ee..5816966423 100644 --- a/src/Mod/Arch/ArchAxis.py +++ b/src/Mod/Arch/ArchAxis.py @@ -37,9 +37,9 @@ else: return txt # \endcond -__title__="FreeCAD Axis System" +__title__ = "FreeCAD Axis System" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package ArchAxis # \ingroup ARCH diff --git a/src/Mod/Arch/ArchBuilding.py b/src/Mod/Arch/ArchBuilding.py index 7a47eaf801..a1192c271d 100644 --- a/src/Mod/Arch/ArchBuilding.py +++ b/src/Mod/Arch/ArchBuilding.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2011 Yorik van Havre * #* * @@ -35,9 +34,9 @@ else: return txt # \endcond -__title__="FreeCAD Building" +__title__ = "FreeCAD Building" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package ArchBuilding # \ingroup ARCH diff --git a/src/Mod/Arch/ArchBuildingPart.py b/src/Mod/Arch/ArchBuildingPart.py index 08e8e29f99..ec9a8274ce 100644 --- a/src/Mod/Arch/ArchBuildingPart.py +++ b/src/Mod/Arch/ArchBuildingPart.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2018 Yorik van Havre * #* * @@ -51,9 +50,9 @@ if sys.version_info.major >= 3: # This module provides tools to build BuildingPart objects. # BuildingParts are used to group different Arch objects -__title__="FreeCAD Arch BuildingPart" +__title__ = "FreeCAD Arch BuildingPart" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" BuildingTypes = ['Undefined', diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index bdb87b3494..daba56a160 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2011 Yorik van Havre * #* * @@ -35,13 +34,13 @@ else: return txt # \endcond -__title__="FreeCAD Arch Commands" +__title__ = "FreeCAD Arch Commands" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package ArchCommands # \ingroup ARCH -# \brief Utility functions for theArch Workbench +# \brief Utility functions for the Arch Workbench # # This module provides general functions used by Arch tools # and utility commands @@ -64,7 +63,7 @@ def string_replace(text, pattern, replacement): if sys.version_info.major < 3: text = text.encode("utf8") return text.replace(pattern, replacement) - + def getStringList(objects): '''getStringList(objects): returns a string defining a list @@ -1201,10 +1200,10 @@ def cleanArchSplitter(objects=None): def rebuildArchShape(objects=None): - """rebuildArchShape([objects]): takes the faces from the base shape of the given (or selected + """rebuildArchShape([objects]): takes the faces from the base shape of the given (or selected if objects is None) Arch objects, and tries to rebuild a valid solid from them.""" - import FreeCAD,FreeCADGui,Part - if not objects: + import FreeCAD,Part + if not objects and FreeCAD.GuiUp: objects = FreeCADGui.Selection.getSelection() if not isinstance(objects,list): objects = [objects] diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index 09c625428d..5a9329fa2b 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -27,9 +27,9 @@ Examples TODO put examples here. """ -__title__="FreeCAD Arch Component" +__title__ = "FreeCAD Arch Component" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD,Draft,ArchCommands,math,sys,json,os,ArchIFC,ArchIFCSchema from FreeCAD import Vector @@ -615,6 +615,8 @@ class Component(ArchIFC.IfcProduct): # Get the object's normal. n = DraftGeomUtils.getNormal(shape[0]) + if (not n) or (not n.Length): + n = FreeCAD.Vector(0, 0, 1) # Reverse the normal if the hint vector and the normal vector have more # than a 90 degree angle between them. @@ -779,7 +781,7 @@ class Component(ArchIFC.IfcProduct): subvolume = o.Subvolume.Shape.copy() if hasattr(o,"Placement"): subvolume.Placement = subvolume.Placement.multiply(o.Placement) - + if subvolume: if base.Solids and subvolume.Solids: if placement: diff --git a/src/Mod/Arch/ArchCurtainWall.py b/src/Mod/Arch/ArchCurtainWall.py index 95f43cd4f7..3226d37518 100644 --- a/src/Mod/Arch/ArchCurtainWall.py +++ b/src/Mod/Arch/ArchCurtainWall.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2020 Yorik van Havre * #* * @@ -21,9 +20,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Arch Curtain Wall" +__title__ = "FreeCAD Arch Curtain Wall" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import math,sys import FreeCAD diff --git a/src/Mod/Arch/ArchEquipment.py b/src/Mod/Arch/ArchEquipment.py index 0b3cb650ad..d9645dab88 100644 --- a/src/Mod/Arch/ArchEquipment.py +++ b/src/Mod/Arch/ArchEquipment.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2014 Yorik van Havre * #* * @@ -21,9 +20,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Equipment" +__title__ = "FreeCAD Equipment" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD,Draft,ArchComponent,DraftVecUtils,ArchCommands from FreeCAD import Units diff --git a/src/Mod/Arch/ArchFence.py b/src/Mod/Arch/ArchFence.py index f6ed5d2131..a358c5a694 100644 --- a/src/Mod/Arch/ArchFence.py +++ b/src/Mod/Arch/ArchFence.py @@ -1,3 +1,26 @@ +#***************************************************************************** +#* Copyright (c) 2019 furti * +#* * +#* 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 * +#* * +#***************************************************************************** + +# Fence functionality for the Arch Workbench + import math import FreeCAD @@ -62,7 +85,7 @@ class _Fence(ArchComponent.Component): def __getstate__(self): if hasattr(self, 'sectionFaceNumbers'): return (self.sectionFaceNumbers) - + return None def __setstate__(self, state): @@ -102,8 +125,9 @@ class _Fence(ArchComponent.Component): pathLength, sectionLength, postLength) obj.NumberOfPosts = obj.NumberOfSections + 1 - # We assume that the section was drawn in front view - # We have to rotate the shape down so that it is aligned correctly by the algorithm later on + # We assume that the section was drawn in front view. + # We have to rotate the shape down so that it is aligned + # correctly by the algorithm later on downRotation = FreeCAD.Rotation(FreeCAD.Vector(1, 0, 0), -90) postPlacements = self.calculatePostPlacements( @@ -162,7 +186,7 @@ class _Fence(ArchComponent.Component): shapes = [] # For the colorization algorithm we have to store the number of faces for each section - # It is possible that a section is clipped. Then the number of faces is not equals to the + # It is possible that a section is clipped. Then the number of faces is not equal to the # number of faces in the original section faceNumbers = [] diff --git a/src/Mod/Arch/ArchFloor.py b/src/Mod/Arch/ArchFloor.py index 5ebc04b984..7ebf61a3b4 100644 --- a/src/Mod/Arch/ArchFloor.py +++ b/src/Mod/Arch/ArchFloor.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2011 Yorik van Havre * #* * @@ -51,9 +50,9 @@ else: # Floors are used to group different Arch objects situated # at a same level -__title__="FreeCAD Arch Floor" +__title__ = "FreeCAD Arch Floor" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeFloor(objectslist=None,baseobj=None,name="Floor"): """Obsolete, superseded by ArchBuildingPart.makeFloor. @@ -93,7 +92,7 @@ def makeFloor(objectslist=None,baseobj=None,name="Floor"): class _CommandFloor: - """The command definition for the Arch workbench's gui tool, Arch Floor. + """The command definition for the Arch workbench's gui tool, Arch Floor. A tool for creating Arch floors. @@ -116,7 +115,7 @@ class _CommandFloor: 'ToolTip': QT_TRANSLATE_NOOP("Arch_Floor","Creates a Building Part object that represents a level, including selected objects")} def IsActive(self): - """Determine whether or not the Arch Floor tool is active. + """Determine whether or not the Arch Floor tool is active. Inactive commands are indicated by a greyed-out icon in the menus and toolbars. """ @@ -176,7 +175,7 @@ class _Floor(ArchIFC.IfcProduct): Turns a into a floor object, then takes a list of objects to own as its children. - + The floor can be based off either a group, or a python feature. Learn more about groups here: https://wiki.freecadweb.org/Std_Group @@ -254,7 +253,7 @@ class _Floor(ArchIFC.IfcProduct): def execute(self,obj): """Method run when the object is recomputed. - + Move its children if its placement has changed since the previous recompute. Set any child Walls and Structures to have the height of the floor if they have not Height value set. @@ -341,7 +340,7 @@ class _ViewProviderFloor: """Add display modes' data to the coin scenegraph. Add each display mode as a coin node, whose parent is this view - provider. + provider. Each display mode's node includes the data needed to display the object in that mode. This might include colors of faces, or the draw style of diff --git a/src/Mod/Arch/ArchFrame.py b/src/Mod/Arch/ArchFrame.py index 7be2d02667..af8c87223d 100644 --- a/src/Mod/Arch/ArchFrame.py +++ b/src/Mod/Arch/ArchFrame.py @@ -42,9 +42,9 @@ else: # Frames are objects made of a profile and an object with # edges along which the profile gets extruded -__title__="FreeCAD Arch Frame" +__title__ = "FreeCAD Arch Frame" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeFrame(baseobj,profile,name=translate("Arch","Frame")): diff --git a/src/Mod/Arch/ArchIFC.py b/src/Mod/Arch/ArchIFC.py index f2502b22d1..1ab03aa79f 100644 --- a/src/Mod/Arch/ArchIFC.py +++ b/src/Mod/Arch/ArchIFC.py @@ -1,3 +1,26 @@ +#*************************************************************************** +#* Copyright (c) 2019 Dion Moult * +#* Copyright (c) 2019 Yorik van Havre * +#* Copyright (c) 2020 FreeCAD Developers * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + """This modules sets up and manages the IFC-related properties, types and attributes of Arch/BIM objects. """ @@ -174,7 +197,7 @@ class IfcRoot: def getIfcAttributeSchema(self, ifcTypeSchema, name): """Get the schema of an IFC attribute with the given name. - + Convert the IFC attribute's name from the human readable version Arch uses, and convert it to the less readable name it has in the IFC schema. @@ -260,17 +283,17 @@ class IfcRoot: obj.IfcData = IfcData if attribute["is_enum"]: - obj.addProperty("App::PropertyEnumeration", - attribute["name"], - "IFC Attributes", + obj.addProperty("App::PropertyEnumeration", + attribute["name"], + "IFC Attributes", QT_TRANSLATE_NOOP("App::Property", "Description of IFC attributes are not yet implemented")) setattr(obj, attribute["name"], attribute["enum_values"]) else: import ArchIFCSchema propertyType = "App::" + ArchIFCSchema.IfcTypes[attribute["type"]]["property"] - obj.addProperty(propertyType, - attribute["name"], - "IFC Attributes", + obj.addProperty(propertyType, + attribute["name"], + "IFC Attributes", QT_TRANSLATE_NOOP("App::Property", "Description of IFC attributes are not yet implemented")) def addIfcAttributeValueExpressions(self, obj, attribute): @@ -420,7 +443,7 @@ class IfcRoot: if r in IfcTypes: obj.IfcType = r FreeCAD.Console.PrintMessage("Upgrading "+obj.Label+" IfcRole property to IfcType\n") - + if "IfcAttributes"in obj.PropertiesList: obj.IfcData = obj.IfcAttributes obj.removeProperty("IfcAttributes") diff --git a/src/Mod/Arch/ArchIFCSchema.py b/src/Mod/Arch/ArchIFCSchema.py index 4332d38b12..7a503151e5 100644 --- a/src/Mod/Arch/ArchIFCSchema.py +++ b/src/Mod/Arch/ArchIFCSchema.py @@ -1,3 +1,26 @@ +#*************************************************************************** +#* Copyright (c) 2019 Dion Moult * +#* Copyright (c) 2019 Yorik van Havre * +#* Copyright (c) 2019 FreeCAD Developers * +#* * +#* 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 * +#* * +#*************************************************************************** + """Provides the IFC schema data as dicts, by loading the JSON schema files. Provides the data as IfcContexts, IfcProducts and IfcTypes. @@ -5,11 +28,11 @@ Provides the data as IfcContexts, IfcProducts and IfcTypes. import FreeCAD, os, json -ifcVersions = ["IFC4", "IFC2X3"] +ifcVersions = ["IFC4", "IFC2X3"] IfcVersion = ifcVersions[FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetInt("IfcVersion",0)] with open(os.path.join(FreeCAD.getResourceDir(), "Mod", "Arch", "Presets", -"ifc_contexts_" + IfcVersion + ".json")) as f: +"ifc_contexts_" + IfcVersion + ".json")) as f: IfcContexts = json.load(f) with open(os.path.join(FreeCAD.getResourceDir(), "Mod", "Arch", "Presets", diff --git a/src/Mod/Arch/ArchIFCView.py b/src/Mod/Arch/ArchIFCView.py index 72e0ad66bc..d10c688eaf 100644 --- a/src/Mod/Arch/ArchIFCView.py +++ b/src/Mod/Arch/ArchIFCView.py @@ -142,13 +142,13 @@ class IfcContextUI: def createLineEdit(self, name): """Creates a form with the name specified. - + Parameters ---------- name: str The name of the datapoint within the RepresentationContexts attribute being edited. - + Returns ------- diff --git a/src/Mod/Arch/ArchNesting.py b/src/Mod/Arch/ArchNesting.py index 78c761c827..05e2f3c54f 100644 --- a/src/Mod/Arch/ArchNesting.py +++ b/src/Mod/Arch/ArchNesting.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- - #*************************************************************************** #* Copyright (c) 2017 Yorik van Havre * #* * @@ -431,7 +430,7 @@ class Nester: #for i,p in enumerate(faceverts): # Draft.makeText([str(i)],point=p) return - + if pol.isValid(): nofitpol.append(pol) #Part.show(pol) diff --git a/src/Mod/Arch/ArchPanel.py b/src/Mod/Arch/ArchPanel.py index a763f078df..cde7ef1823 100644 --- a/src/Mod/Arch/ArchPanel.py +++ b/src/Mod/Arch/ArchPanel.py @@ -43,10 +43,9 @@ else: # Panels consist of a closed shape that gets extruded to # produce a flat object. - -__title__="FreeCAD Panel" +__title__ = "FreeCAD Panel" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" # Description l w t diff --git a/src/Mod/Arch/ArchPipe.py b/src/Mod/Arch/ArchPipe.py index 91c91686d6..914634b360 100644 --- a/src/Mod/Arch/ArchPipe.py +++ b/src/Mod/Arch/ArchPipe.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- - #*************************************************************************** #* Copyright (c) 2016 Yorik van Havre * #* * @@ -42,9 +41,9 @@ else: # This module provides tools to build Pipe and Pipe connector objects. # Pipes are tubular objects extruded along a base line. -__title__ = "Arch Pipe tools" +__title__ = "Arch Pipe tools" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makePipe(baseobj=None,diameter=0,length=0,placement=None,name="Pipe"): @@ -248,7 +247,7 @@ class _ArchPipe(ArchComponent.Component): import Draft if Draft.getType(obj.Base) == "BezCurve": v1 = obj.Base.Placement.multVec(obj.Base.Points[1])-w.Vertexes[0].Point - else: + else: v1 = w.Vertexes[1].Point-w.Vertexes[0].Point v2 = DraftGeomUtils.getNormal(p) rot = FreeCAD.Rotation(v2,v1) diff --git a/src/Mod/Arch/ArchPrecast.py b/src/Mod/Arch/ArchPrecast.py index 00a3af0163..80dfbc4056 100644 --- a/src/Mod/Arch/ArchPrecast.py +++ b/src/Mod/Arch/ArchPrecast.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__= "FreeCAD Precast concrete module" +__title__ = "FreeCAD Precast concrete module" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" """This module contains tools to build basic precast concrete elements: Beams, pillars, slabs and panels""" @@ -867,7 +867,7 @@ class _PrecastTaskPanel: self.valueTread = FreeCADGui.UiLoader().createWidget("Gui::InputField") self.grid.addWidget(self.labelTread,18,0,1,1) self.grid.addWidget(self.valueTread,18,1,1,1) - + # signals/slots QtCore.QObject.connect(self.valueChamfer,QtCore.SIGNAL("valueChanged(double)"),self.setChamfer) QtCore.QObject.connect(self.valueDentLength,QtCore.SIGNAL("valueChanged(double)"),self.setDentLength) diff --git a/src/Mod/Arch/ArchProfile.py b/src/Mod/Arch/ArchProfile.py index 77cefe47f2..3a5b8fdc73 100644 --- a/src/Mod/Arch/ArchProfile.py +++ b/src/Mod/Arch/ArchProfile.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__= "FreeCAD Profile" +__title__ = "FreeCAD Profile" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package ArchProfile # \ingroup ARCH @@ -109,7 +109,7 @@ def makeProfile(profile=[0,'REC','REC100x100','R',100,100]): class Arch_Profile: - + """The FreeCAD Arch_Profile command definition""" def GetResources(self): diff --git a/src/Mod/Arch/ArchProject.py b/src/Mod/Arch/ArchProject.py index ac8b5b9894..863e15f88c 100644 --- a/src/Mod/Arch/ArchProject.py +++ b/src/Mod/Arch/ArchProject.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2011 Yorik van Havre * #* * @@ -44,9 +43,9 @@ else: # # This module provides tools to build Project objects. -__title__="FreeCAD Project" +__title__ = "FreeCAD Project" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeProject(sites=None, name="Project"): """Create an Arch project. @@ -81,12 +80,12 @@ def makeProject(sites=None, name="Project"): return obj class _CommandProject: - """The command definition for the Arch workbench's gui tool, Arch Project. + """The command definition for the Arch workbench's gui tool, Arch Project. A tool for creating Arch projects. Creates a project from the objects selected by the user that have the Site - IfcType, if any. + IfcType, if any. Find documentation on the end user usage of Arch Project here: https://wiki.freecadweb.org/Arch_Project @@ -100,7 +99,7 @@ class _CommandProject: 'ToolTip': QT_TRANSLATE_NOOP("Arch_Project", "Creates a project entity aggregating the selected sites.")} def IsActive(self): - """Determine whether or not the Arch Project tool is active. + """Determine whether or not the Arch Project tool is active. Inactive commands are indicated by a greyed-out icon in the menus and toolbars. """ @@ -110,7 +109,7 @@ class _CommandProject: """Executed when Arch Project is called. Create a project from the objects selected by the user that have the - Site IfcType, if any. + Site IfcType, if any. """ selection = FreeCADGui.Selection.getSelection() diff --git a/src/Mod/Arch/ArchRebar.py b/src/Mod/Arch/ArchRebar.py index 585898b3c6..592c5b96a3 100644 --- a/src/Mod/Arch/ArchRebar.py +++ b/src/Mod/Arch/ArchRebar.py @@ -43,9 +43,9 @@ else: # Rebars (or Reinforcing Bars) are metallic bars placed # inside concrete structures to reinforce them. -__title__="FreeCAD Rebar" +__title__ = "FreeCAD Rebar" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeRebar(baseobj=None,sketch=None,diameter=None,amount=1,offset=None,name="Rebar"): diff --git a/src/Mod/Arch/ArchReference.py b/src/Mod/Arch/ArchReference.py index 9d02d522c5..8010ebe6e9 100644 --- a/src/Mod/Arch/ArchReference.py +++ b/src/Mod/Arch/ArchReference.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Arch External Reference" +__title__ = "FreeCAD Arch External Reference" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD @@ -171,7 +171,7 @@ class ArchReference: self.reload = False def getFile(self,obj,filename=None): - + "gets a valid file, if possible" if not filename: @@ -202,7 +202,7 @@ class ArchReference: return filename def getPartsList(self,obj,filename=None): - + "returns a list of Part-based objects in a FCStd file" parts = {} @@ -291,9 +291,9 @@ class ArchReference: return None def splitall(self,path): - + "splits a path between its components" - + allparts = [] while 1: parts = os.path.split(path) @@ -369,7 +369,7 @@ class ViewProviderArchReference: return None def updateData(self,obj,prop): - + if (prop == "Shape") and hasattr(obj.ViewObject,"UpdateColors") and obj.ViewObject.UpdateColors: if obj.Shape and not obj.Shape.isNull(): colors = obj.Proxy.getColors(obj) @@ -379,7 +379,7 @@ class ViewProviderArchReference: todo.delay(self.recolorize,obj.ViewObject) def recolorize(self,vobj): - + if hasattr(vobj,"DiffuseColor") and hasattr(vobj,"UpdateColors") and vobj.UpdateColors: vobj.DiffuseColor = vobj.DiffuseColor @@ -460,7 +460,7 @@ class ViewProviderArchReference: FreeCAD.openDocument(self.Object.File) def loadInventor(self,obj): - + "loads an openinventor file and replace the root node of this object" # check inventor contents @@ -481,7 +481,7 @@ class ViewProviderArchReference: flatlines = lwnode shaded = lwnode.getChild(0) wireframe = lwnode.getChild(1) - + # check node contents rootnode = obj.ViewObject.RootNode if rootnode.getNumChildren() < 3: @@ -503,7 +503,7 @@ class ViewProviderArchReference: switch.replaceChild(2,wireframe) def unloadInventor(self,obj): - + "restore original nodes" if (not hasattr(self,"orig_flatlines")) or (not self.orig_flatlines): @@ -523,18 +523,18 @@ class ViewProviderArchReference: FreeCAD.Console.PrintError("Invalid root node in "+obj.Label+"\n") return - # replace root node of object + # replace root node of object switch.replaceChild(0,self.orig_flatlines) switch.replaceChild(1,self.orig_shaded) switch.replaceChild(2,self.orig_wireframe) - + # discard old content self.orig_flatlines = None self.orig_shaded = None self.orig_wireframe = None def getInventorString(self,obj): - + "locates and loads an iv file saved together with an object, if existing" filename = obj.Proxy.getFile(obj) diff --git a/src/Mod/Arch/ArchRoof.py b/src/Mod/Arch/ArchRoof.py index b7c1533c7d..cb81df88a5 100644 --- a/src/Mod/Arch/ArchRoof.py +++ b/src/Mod/Arch/ArchRoof.py @@ -54,7 +54,7 @@ else: __title__ = "FreeCAD Roof" __author__ = "Yorik van Havre", "Jonathan Wiedemann" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def adjust_list_len (lst, newLn, val): @@ -806,7 +806,7 @@ class _Roof(ArchComponent.Component): base = self.shps.pop() for s in self.shps: base = base.fuse(s) - base = self.processSubShapes(obj, base) + base = self.processSubShapes(obj, base, pl) self.applyShape(obj, base, pl, allownosolid = True) ## subVolume @@ -819,7 +819,7 @@ class _Roof(ArchComponent.Component): self.sub.Placement = pl elif base: - base = self.processSubShapes(obj, base) + base = self.processSubShapes(obj, base, pl) self.applyShape(obj, base, pl, allownosolid = True) else: FreeCAD.Console.PrintMessage(translate("Arch", "Unable to create a roof")) diff --git a/src/Mod/Arch/ArchSchedule.py b/src/Mod/Arch/ArchSchedule.py index 5eecf12acc..9a11a60e5f 100644 --- a/src/Mod/Arch/ArchSchedule.py +++ b/src/Mod/Arch/ArchSchedule.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2015 Yorik van Havre * #* * @@ -47,7 +46,7 @@ else: __title__ = "Arch Schedule" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" verbose = True # change this for silent recomputes diff --git a/src/Mod/Arch/ArchSite.py b/src/Mod/Arch/ArchSite.py index 116fdc47e4..b75ba6c665 100644 --- a/src/Mod/Arch/ArchSite.py +++ b/src/Mod/Arch/ArchSite.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2011 Yorik van Havre * #* * @@ -47,9 +46,9 @@ else: # Sites are containers for Arch objects, and also define a # terrain surface -__title__="FreeCAD Site" +__title__= "FreeCAD Site" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeSite(objectslist=None,baseobj=None,name="Site"): diff --git a/src/Mod/Arch/ArchSpace.py b/src/Mod/Arch/ArchSpace.py index 6de3ea2da6..344902f162 100644 --- a/src/Mod/Arch/ArchSpace.py +++ b/src/Mod/Arch/ArchSpace.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2013 Yorik van Havre * #* * @@ -21,9 +20,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Arch Space" +__title__= "FreeCAD Arch Space" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" SpaceTypes = [ "Undefined", @@ -715,7 +714,7 @@ class _ViewProviderSpace(ArchComponent.ViewProviderComponent): self.label.whichChild = 0 else: self.label.whichChild = -1 - + elif prop == "ShapeColor": if hasattr(vobj,"ShapeColor"): self.fmat.diffuseColor.setValue((vobj.ShapeColor[0],vobj.ShapeColor[1],vobj.ShapeColor[2])) diff --git a/src/Mod/Arch/ArchStairs.py b/src/Mod/Arch/ArchStairs.py index 4aa8084092..fa511ce7e9 100644 --- a/src/Mod/Arch/ArchStairs.py +++ b/src/Mod/Arch/ArchStairs.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Arch Stairs" +__title__= "FreeCAD Arch Stairs" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD,ArchComponent,ArchCommands,Draft,DraftVecUtils,math,ArchPipe diff --git a/src/Mod/Arch/ArchStructure.py b/src/Mod/Arch/ArchStructure.py index 63a691d4a4..2166a235a8 100644 --- a/src/Mod/Arch/ArchStructure.py +++ b/src/Mod/Arch/ArchStructure.py @@ -48,9 +48,9 @@ else: # elements that have a structural function, that is, that # support other parts of the building. -__title__="FreeCAD Structure" +__title__= "FreeCAD Structure" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" #Reads preset profiles and categorizes them @@ -116,7 +116,7 @@ def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structur elif height and not length: obj.Width = w obj.Length = h - + if not height and not length: obj.IfcType = "Undefined" elif obj.Length > obj.Height: @@ -344,7 +344,7 @@ class _CommandStructure: self.Activated() def _createItemlist(self, baselist): - + "create nice labels for presets in the task panel" ilist=[] @@ -739,7 +739,7 @@ class _Structure(ArchComponent.Component): if obj.Base.Shape.Solids: return None elif obj.Base.Shape.Faces: - if not DraftGeomUtils.isCoplanar(obj.Base.Shape.Faces,tolerance=0.01): + if not DraftGeomUtils.isCoplanar(obj.Base.Shape.Faces,tol=0.01): return None else: base,placement = self.rebase(obj.Base.Shape) diff --git a/src/Mod/Arch/ArchTruss.py b/src/Mod/Arch/ArchTruss.py index e4b22f6be0..fa5743894d 100644 --- a/src/Mod/Arch/ArchTruss.py +++ b/src/Mod/Arch/ArchTruss.py @@ -1,5 +1,4 @@ # -*- coding: utf8 -*- - #*************************************************************************** #* Copyright (c) 2020 Yorik van Havre * #* * @@ -21,9 +20,9 @@ #* * #*************************************************************************** -__title__="FreeCAD Arch Truss" +__title__ = "FreeCAD Arch Truss" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import math,sys import FreeCAD diff --git a/src/Mod/Arch/ArchVRM.py b/src/Mod/Arch/ArchVRM.py index b3b6445b3b..a4f9d38466 100644 --- a/src/Mod/Arch/ArchVRM.py +++ b/src/Mod/Arch/ArchVRM.py @@ -46,21 +46,21 @@ class Renderer: """ Creates a renderer with a default Draft WorkingPlane Use like this: - + import ArchVRM p = ArchVRM.Renderer() p.add(App.ActiveDocument.ActiveObject) p.sort() p.buildDummy() """ - + self.reset() if wp: self.wp = wp else: import WorkingPlane self.wp = WorkingPlane.plane() - + if DEBUG: print("Renderer initialized on " + str(self.wp)) def __str__(self): @@ -155,7 +155,7 @@ class Renderer: def reorient(self): "reorients the faces on the WP" #print("VRM: start reorient") - if not self.faces: + if not self.faces: return self.faces = [self.projectFace(f) for f in self.faces] if self.sections: @@ -167,7 +167,7 @@ class Renderer: def removeHidden(self): "removes faces pointing outwards" - if not self.faces: + if not self.faces: return faces = [] for f in self.faces: @@ -218,7 +218,7 @@ class Renderer: v2 = self.wp.getLocalCoords(edge.Vertexes[-1].Point) return Part.LineSegment(v1,v2).toShape() return edge - + def flattenFace(self,face): "Returns a face where all vertices have Z = 0" wires = [] @@ -281,10 +281,10 @@ class Renderer: def isInside(self,vert,face): "Returns True if the vert is inside the face in Z projection" - + if not face: return False - + # http://paulbourke.net/geometry/insidepoly/ count = 0 p = self.wp.getLocalCoords(vert.Point) @@ -307,10 +307,10 @@ class Renderer: "Checks if face1 overlaps face2 in Z direction" face1 = self.flattenFace(face1) face2 = self.flattenFace(face2) - + if (not face1) or (not face2): return False - + # first we check if one of the verts is inside the other face for v in face1[0].Vertexes: if self.isInside(v,face2): @@ -648,4 +648,4 @@ class Renderer: svg += '"/>\n' svg += '\n' return svg - + diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index f63eb347f0..3eaa17934d 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -53,9 +53,9 @@ else: # usually vertical, typically obtained by giving a thickness to a base line, # then extruding it vertically. -__title__="FreeCAD Wall" +__title__ = "FreeCAD Wall" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def makeWall(baseobj=None,height=None,length=None,width=None,align="Center",face=None,name=None): """Create a wall based on a given object, and returns the generated wall. @@ -1241,14 +1241,14 @@ class _Wall(ArchComponent.Component): # in some corner case != getSortedClusters() elif obj.Base.isDerivedFrom("Sketcher::SketchObject"): self.basewires = [] - skGeom = obj.Base.Geometry + skGeom = obj.Base.GeometryFacadeList skGeomEdges = [] skPlacement = obj.Base.Placement # Get Sketch's placement to restore later for i in skGeom: if not i.Construction: # support Line, Arc, Circle for Sketch as Base at the moment - if isinstance(i, (Part.LineSegment, Part.Circle, Part.ArcOfCircle)): - skGeomEdgesI = i.toShape() + if isinstance(i.Geometry, (Part.LineSegment, Part.Circle, Part.ArcOfCircle)): + skGeomEdgesI = i.Geometry.toShape() skGeomEdges.append(skGeomEdgesI) for cluster in Part.getSortedClusters(skGeomEdges): clusterTransformed = [] @@ -1269,15 +1269,15 @@ class _Wall(ArchComponent.Component): else: self.basewires = obj.Base.Shape.Wires - # Found case that after sorting below, direction of + # Found case that after sorting below, direction of # edges sorted are not as 'expected' thus resulted in - # bug - e.g. a Dwire with edges/vertexes in clockwise - # order, 1st vertex is Forward as expected. After - # sorting below, edges sorted still in clockwise order - # - no problem, but 1st vertex of each edge become + # bug - e.g. a Dwire with edges/vertexes in clockwise + # order, 1st vertex is Forward as expected. After + # sorting below, edges sorted still in clockwise order + # - no problem, but 1st vertex of each edge become # Reverse rather than Forward. - # See FC discussion - + # See FC discussion - # https://forum.freecadweb.org/viewtopic.php?f=23&t=48275&p=413745#p413745 #self.basewires = [] diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index f61daf4742..a9642a6117 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -48,9 +48,9 @@ else: # of wires, and that can be inserted into other Arch objects, # by defining a volume that gets subtracted from them. -__title__="FreeCAD Window" +__title__ = "FreeCAD Window" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" # presets WindowPartTypes = ["Frame","Solid panel","Glass panel","Louvre"] @@ -475,7 +475,7 @@ class _CommandWindow: self.im.show() if i == 0: self.im.load(":/ui/ParametersWindowFixed.svg") - elif i == 1: + elif i in [1,8]: self.im.load(":/ui/ParametersWindowSimple.svg") elif i == 6: self.im.load(":/ui/ParametersDoorGlass.svg") @@ -1119,6 +1119,56 @@ class _ViewProviderWindow(ArchComponent.ViewProviderComponent): ccol = (ccol[0],ccol[1],ccol[2],t) return ccol + def setupContextMenu(self,vobj,menu): + + if hasattr(self,"Object"): + from PySide import QtCore,QtGui + import Draft_rc + action1 = QtGui.QAction(QtGui.QIcon(":/icons/Arch_Window_Tree.svg"),"Invert opening direction",menu) + QtCore.QObject.connect(action1,QtCore.SIGNAL("triggered()"),self.invertOpening) + menu.addAction(action1) + action2 = QtGui.QAction(QtGui.QIcon(":/icons/Arch_Window_Tree.svg"),"Invert hinge position",menu) + QtCore.QObject.connect(action2,QtCore.SIGNAL("triggered()"),self.invertHinge) + menu.addAction(action2) + + def invertOpening(self): + + """swaps the opening modes found in this window""" + + pairs = [["Mode"+str(i),"Mode"+str(i+1)] for i in range(1,len(WindowOpeningModes),2)] + self.invertPairs(pairs) + + def invertHinge(self): + + """swaps the hinges found in this window""" + + pairs = [["Edge6","Edge8"],["Edge5","Edge7"]] + self.invertPairs(pairs) + + def invertPairs(self,pairs): + + """scans the WindowParts of this window and swaps the two elements of each pair, if found""" + + if hasattr(self,"Object"): + windowparts = self.Object.WindowParts + nparts = [] + for part in windowparts: + for pair in pairs: + if pair[0] in part: + part = part.replace(pair[0],pair[1]) + break + elif pair[1] in part: + part = part.replace(pair[1],pair[0]) + break + nparts.append(part) + if nparts != self.Object.WindowParts: + self.Object.WindowParts = nparts + FreeCAD.ActiveDocument.recompute() + else: + FreeCAD.Console.PrintWarning(translate("Arch","This window has no defined opening")+"\n") + + + class _ArchWindowTaskPanel: '''The TaskPanel for Arch Windows''' @@ -1184,6 +1234,18 @@ class _ArchWindowTaskPanel: self.delButton.setMaximumSize(QtCore.QSize(70,40)) self.delButton.setEnabled(False) + # invert buttons + self.invertOpeningButton = QtGui.QPushButton(self.baseform) + self.invertOpeningButton.setIcon(QtGui.QIcon(":/icons/Arch_Window_Tree.svg")) + self.invertOpeningButton.clicked.connect(self.invertOpening) + self.grid.addWidget(self.invertOpeningButton, 5, 0, 1, 7) + self.invertOpeningButton.setEnabled(False) + self.invertHingeButton = QtGui.QPushButton(self.baseform) + self.invertHingeButton.setIcon(QtGui.QIcon(":/icons/Arch_Window_Tree.svg")) + self.invertHingeButton.clicked.connect(self.invertHinge) + self.grid.addWidget(self.invertHingeButton, 6, 0, 1, 7) + self.invertHingeButton.setEnabled(False) + # add new ui = FreeCADGui.UiLoader() @@ -1366,6 +1428,11 @@ class _ArchWindowTaskPanel: self.retranslateUi(self.baseform) self.basepanel.obj = self.obj self.basepanel.update() + for wp in self.obj.WindowParts: + if ("Edge" in wp) and ("Mode" in wp): + self.invertOpeningButton.setEnabled(True) + self.invertHingeButton.setEnabled(True) + break def addElement(self): @@ -1579,11 +1646,22 @@ class _ArchWindowTaskPanel: self.addp5.setToolTip(QtGui.QApplication.translate("Arch", "If this is checked, the default Offset value of this window will be added to the value entered here", None)) self.field6.setText(QtGui.QApplication.translate("Arch", "Get selected edge", None)) self.field6.setToolTip(QtGui.QApplication.translate("Arch", "Press to retrieve the selected edge", None)) + self.invertOpeningButton.setText(QtGui.QApplication.translate("Arch", "Invert opening direction", None)) + self.invertHingeButton.setText(QtGui.QApplication.translate("Arch", "Invert hinge position", None)) for i in range(len(WindowPartTypes)): self.field2.setItemText(i, QtGui.QApplication.translate("Arch", WindowPartTypes[i], None)) for i in range(len(WindowOpeningModes)): self.field7.setItemText(i, QtGui.QApplication.translate("Arch", WindowOpeningModes[i], None)) + def invertOpening(self): + + if self.obj: + self.obj.ViewObject.Proxy.invertOpening() + + def invertHinge(self): + + if self.obj: + self.obj.ViewObject.Proxy.invertHinge() if FreeCAD.GuiUp: diff --git a/src/Mod/Arch/ArchWindowPresets.py b/src/Mod/Arch/ArchWindowPresets.py index 6074a00d58..ab0f3f9ca2 100644 --- a/src/Mod/Arch/ArchWindowPresets.py +++ b/src/Mod/Arch/ArchWindowPresets.py @@ -26,7 +26,7 @@ from draftutils.translate import translate WindowPresets = ["Fixed", "Open 1-pane", "Open 2-pane", "Sash 2-pane", - "Sliding 2-pane", "Simple door", "Glass door", "Sliding 4-pane"] + "Sliding 2-pane", "Simple door", "Glass door", "Sliding 4-pane", "Awning"] def makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,placement=None): @@ -86,6 +86,33 @@ def makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,placement=None s.addConstraint(Sketcher.Constraint('Vertical',idx+5)) s.addConstraint(Sketcher.Constraint('Vertical',idx+7)) + def simpleFrame(s,width,height,h1,h2,tol): + + "creates a simple frame with constraints" + + p1 = Vector(h1+tol,h1+tol,0) + p2 = Vector(width-(h1+tol),h1+tol,0) + p3 = Vector(width-(h1+tol),height-(h1+tol),0) + p4 = Vector(h1+tol,height-(h1+tol),0) + p5 = Vector(h1+h2,h1+h2,0) + p6 = Vector(width-(h1+h2),h1+h2,0) + p7 = Vector(width-(h1+h2),height-(h1+h2),0) + p8 = Vector(h1+h2,height-(h1+h2),0) + addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8) + s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2)) + s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2)) + s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2)) + s.addConstraint(Sketcher.Constraint('DistanceY',14,1,10,1,h2)) + s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol)) + s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol)) + s.addConstraint(Sketcher.Constraint('DistanceX',10,1,6,1,tol)) + s.addConstraint(Sketcher.Constraint('DistanceY',10,1,6,1,tol)) + if h2 == h1: + s.renameConstraint(39,'Frame5') + s.renameConstraint(40,'Frame6') + s.renameConstraint(42,'Frame7') + s.renameConstraint(41,'Frame8') + def outerFrame(s,width,height,h1,w1,o1): p1 = Vector(0,0,0) @@ -145,28 +172,7 @@ def makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,placement=None elif windowtype == "Open 1-pane": wp = outerFrame(s,width,height,h1,w1,o1) - p1 = Vector(h1+tol,h1+tol,0) - p2 = Vector(width-(h1+tol),h1+tol,0) - p3 = Vector(width-(h1+tol),height-(h1+tol),0) - p4 = Vector(h1+tol,height-(h1+tol),0) - p5 = Vector(h1+h2,h1+h2,0) - p6 = Vector(width-(h1+h2),h1+h2,0) - p7 = Vector(width-(h1+h2),height-(h1+h2),0) - p8 = Vector(h1+h2,height-(h1+h2),0) - addFrame(s,p1,p2,p3,p4,p5,p6,p7,p8) - s.addConstraint(Sketcher.Constraint('DistanceX',8,1,12,1,h2)) - s.addConstraint(Sketcher.Constraint('DistanceY',8,1,12,1,h2)) - s.addConstraint(Sketcher.Constraint('DistanceX',14,1,10,1,h2)) - s.addConstraint(Sketcher.Constraint('DistanceY',14,1,10,1,h2)) - s.addConstraint(Sketcher.Constraint('DistanceX',4,1,8,1,tol)) - s.addConstraint(Sketcher.Constraint('DistanceY',4,1,8,1,tol)) - s.addConstraint(Sketcher.Constraint('DistanceX',10,1,6,1,tol)) - s.addConstraint(Sketcher.Constraint('DistanceY',10,1,6,1,tol)) - if h2 == h1: - s.renameConstraint(39,'Frame5') - s.renameConstraint(40,'Frame6') - s.renameConstraint(42,'Frame7') - s.renameConstraint(41,'Frame8') + simpleFrame(s,width,height,h1,h2,tol) fw = str(w2) if w2 == w1: fw = "0.00+V" @@ -430,6 +436,17 @@ def makeWindowPreset(windowtype,width,height,h1,h2,h3,w1,w2,o1,o2,placement=None wp.extend(["RightMostFrame","Frame","Wire8,Wire9",fw,str(o2)+"+V"]) wp.extend(["RightMostGlass","Glass panel","Wire9",str(w2/gla),str(o2+w2/2)+"+V"]) + elif windowtype == "Awning": + + wp = outerFrame(s,width,height,h1,w1,o1) + simpleFrame(s,width,height,h1,h2,tol) + fw = str(w2) + if w2 == w1: + fw = "0.00+V" + wp.extend(["InnerFrame","Frame","Wire2,Wire3,Edge7,Mode1",fw,str(o2)+"+V"]) + wp.extend(["InnerGlass","Glass panel","Wire3",str(w2/gla),str(o2+w2/2)+"+V"]) + + elif windowtype == "Simple door": wp = doorFrame(s,width,height,h1,w1,o1) diff --git a/src/Mod/Arch/Init.py b/src/Mod/Arch/Init.py index 884d62d40d..b0ad6d0bf7 100644 --- a/src/Mod/Arch/Init.py +++ b/src/Mod/Arch/Init.py @@ -22,6 +22,7 @@ # add import/export types FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC") FreeCAD.addExportType("Industry Foundation Classes (*.ifc)","exportIFC") +FreeCAD.addExportType("Industry Foundation Classes - IFCJSON (*.ifcJSON)","exportIFC") FreeCAD.addImportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") FreeCAD.addExportType("Wavefront OBJ - Arch module (*.obj)","importOBJ") FreeCAD.addExportType("WebGL file (*.html)","importWebGL") diff --git a/src/Mod/Arch/InitGui.py b/src/Mod/Arch/InitGui.py index d6317f3efd..56a3ce01fe 100644 --- a/src/Mod/Arch/InitGui.py +++ b/src/Mod/Arch/InitGui.py @@ -1,4 +1,3 @@ -"""Initialization of the Arch workbench (graphical interface).""" # *************************************************************************** # * Copyright (c) 2011 Yorik van Havre * # * * @@ -19,6 +18,9 @@ # * USA * # * * # *************************************************************************** + +"""Initialization of the Arch workbench (graphical interface).""" + import os import FreeCAD import FreeCADGui diff --git a/src/Mod/Arch/OfflineRenderingUtils.py b/src/Mod/Arch/OfflineRenderingUtils.py index e6c1c08c4b..bfd1776779 100755 --- a/src/Mod/Arch/OfflineRenderingUtils.py +++ b/src/Mod/Arch/OfflineRenderingUtils.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- - #*************************************************************************** #* Copyright (c) 2019 Yorik van Havre * #* * @@ -249,7 +248,7 @@ def saveDiffuseColor(colorlist): else: return bytes((i,)) # if too many colors, bail out and use only the first one for now... - if len(colorlist) > 254: + if len(colorlist) > 254: colorlist = colorlist[:1] print("debug: too many colors, reducing") output = tochr(len(colorlist))+3*tochr(0) diff --git a/src/Mod/Arch/Resources/translations/Arch.ts b/src/Mod/Arch/Resources/translations/Arch.ts index f27b6793e6..fee8679006 100644 --- a/src/Mod/Arch/Resources/translations/Arch.ts +++ b/src/Mod/Arch/Resources/translations/Arch.ts @@ -203,12 +203,12 @@ - + The linked object - + The line width of the rendered objects @@ -593,27 +593,27 @@ - + The rendering mode to use - + If cut geometry is shown or not - + If cut geometry is filled or not - + The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model @@ -1038,12 +1038,12 @@ - + The line color of the projected objects - + The color of the cut faces (if turned on) @@ -3203,37 +3203,37 @@ Floor creation aborted. - + Section plane settings - + Objects seen by this section plane: - + Section plane placement: - + Rotate X - + Rotate Y - + Rotate Z - + Resize @@ -3384,42 +3384,42 @@ You can change that in the preferences. - + Remove highlighted objects from the list above - + Add selected - + Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis - + Rotates the plane along the Y axis - + Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_af.qm b/src/Mod/Arch/Resources/translations/Arch_af.qm index 6db8990779..7f605d782d 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_af.qm and b/src/Mod/Arch/Resources/translations/Arch_af.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_af.ts b/src/Mod/Arch/Resources/translations/Arch_af.ts index 5929e7402c..67a1dd8d65 100644 --- a/src/Mod/Arch/Resources/translations/Arch_af.ts +++ b/src/Mod/Arch/Resources/translations/Arch_af.ts @@ -204,12 +204,12 @@ Die normale extrusie rigting van hierdie voorwerp (behou (0,0,0) vir outomatiese normaallyn) - + The linked object Die geskakelde objek - + The line width of the rendered objects Die lyn breedte van die ingeklede voorwerpe @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_ar.qm b/src/Mod/Arch/Resources/translations/Arch_ar.qm index 00f28fcde7..118d1fcd65 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ar.qm and b/src/Mod/Arch/Resources/translations/Arch_ar.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ar.ts b/src/Mod/Arch/Resources/translations/Arch_ar.ts index 9e2a695e8e..0ff97cbcfd 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ar.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ar.ts @@ -204,12 +204,12 @@ إتجاه البثق العادي لهذا الكائن (يبقي (0،0،0) بالنسبة للتلقائي العادي) - + The linked object الكائن المرتبط - + The line width of the rendered objects عرض الخط من الكائنات المطلية @@ -594,27 +594,27 @@ عرض القطع في في عرض ثلاثي الأبعاد - + The rendering mode to use وضع تقديم للاستخدام - + If cut geometry is shown or not إذا تم عرض اقتطاع الهندسة أم لا - + If cut geometry is filled or not إذا تم ملء اقتطاع الهندسة أم لا - + The size of the texts inside this object حجم النصوص داخل هذا الكائن - + If checked, source objects are displayed regardless of being visible in the 3D model إذا تم تحديدها، يتم عرض مصدر الكائنات بغض النظر عن كونها مرئية في نموذج 3D @@ -1039,12 +1039,12 @@ لائحة سُمك الطبقات - + The line color of the projected objects لون خط الأجسام المتوقعة - + The color of the cut faces (if turned on) لون أسطح القطع (إذا كانت مشغلة) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected اضف اختيارك - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_ca.qm b/src/Mod/Arch/Resources/translations/Arch_ca.qm index 4c812ac804..31da8079c9 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ca.qm and b/src/Mod/Arch/Resources/translations/Arch_ca.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ca.ts b/src/Mod/Arch/Resources/translations/Arch_ca.ts index 6d95dc7542..64847a5a8f 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ca.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ca.ts @@ -204,12 +204,12 @@ La direcció d'extrusió normal d'aquest objecte (mantín (0,0,0) per a automàtica) - + The linked object L'objecte enllaçat - + The line width of the rendered objects L'amplària de la línia dels objectes renderitzats @@ -594,27 +594,27 @@ Mostra el tall en la vista 3D - + The rendering mode to use El mode de renderització que s'ha d'utilitzar - + If cut geometry is shown or not Si es mostra o no la geometria de tall - + If cut geometry is filled or not Si s'ompli o no la geometria de tall - + The size of the texts inside this object La mida dels textos dins d'aquest objecte - + If checked, source objects are displayed regardless of being visible in the 3D model Si està marcada, els objectes d'origen es mostren independentment que siguen visibles en el model 3D @@ -1039,12 +1039,12 @@ La llista dels gruixos de capa - + The line color of the projected objects El color de la línia dels objectes projectats - + The color of the cut faces (if turned on) El color de les cares retallades (si està activat) @@ -3204,37 +3204,37 @@ Floor creation aborted. Crear referències externes - + Section plane settings Configuració del pla de secció - + Objects seen by this section plane: Objectes vists per aquest pla de secció: - + Section plane placement: Posicionament del pla de secció: - + Rotate X Rotar X - + Rotate Y Rotar Y - + Rotate Z Rotar Z - + Resize Redimensionar @@ -3388,42 +3388,42 @@ You can change that in the preferences. Podeu col·locar qualsevol cosa en un objecte Construcció excepte els objectes Lloc i Construcció ja que els objectes Construcció no els accepta. Els objectes Lloc i Construcció s'eliminaran de la selecció. Podeu canviar això en les preferències. - + Remove highlighted objects from the list above Elimina els objectes ressaltats de la llista anterior - + Add selected Afig el seleccionat - + Add selected object(s) to the scope of this section plane Afegeix l'objecte o els objectes seleccionats a l'àmbit d'aquest pla de secció - + Rotates the plane along the X axis Gira el pla al llarg de l'eix X - + Rotates the plane along the Y axis Gira el pla al llarg de l'eix Y - + Rotates the plane along the Z axis Gira el pla al llarg de l'eix Z - + Resizes the plane to fit the objects in the list above Canvia la mida del pla per a ajustar els objectes en la llista anterior - + Centers the plane on the objects in the list above Centra el pla sobre els objectes de la llista anterior diff --git a/src/Mod/Arch/Resources/translations/Arch_cs.qm b/src/Mod/Arch/Resources/translations/Arch_cs.qm index 37b83cd8f6..226fcc2d15 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_cs.qm and b/src/Mod/Arch/Resources/translations/Arch_cs.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_cs.ts b/src/Mod/Arch/Resources/translations/Arch_cs.ts index 3980009116..9dfce4cfce 100644 --- a/src/Mod/Arch/Resources/translations/Arch_cs.ts +++ b/src/Mod/Arch/Resources/translations/Arch_cs.ts @@ -204,12 +204,12 @@ Normálový směr vytažení tohoto objektu (pro (0,0,0) automatická normála) - + The linked object Propojený objekt - + The line width of the rendered objects Tloušťka čar vykreslených objektů @@ -594,27 +594,27 @@ Zobrazit řez v 3D pohledu - + The rendering mode to use Režim vykreslování - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object Velikost textů uvnitř tohoto objektu - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Přidat vybrané - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_de.qm b/src/Mod/Arch/Resources/translations/Arch_de.qm index c954553b06..150541439f 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 eceaa3ae4d..e5bd260753 100644 --- a/src/Mod/Arch/Resources/translations/Arch_de.ts +++ b/src/Mod/Arch/Resources/translations/Arch_de.ts @@ -204,12 +204,12 @@ Die normalisierte Extrusionsrichtung dieses Objekts (behalte (0,0,0) für automatische Normale) - + The linked object Das verknüpfte Objekt - + The line width of the rendered objects Die Linienbreite der gerenderten Objekte @@ -594,27 +594,27 @@ Zeigen Sie den Schnitt in der 3D-Ansicht - + The rendering mode to use Der zu verwendende Rendering-Modus - + If cut geometry is shown or not Ob die Schnittgeometrie angezeigt wird oder nicht - + If cut geometry is filled or not Ob die schnitt Geometrie gefüllt ist oder nicht - + The size of the texts inside this object Die Textgröße in diesem Objekt - + If checked, source objects are displayed regardless of being visible in the 3D model Wenn aktiviert, werden Quellobjekte angezeigt, unabhängig davon, ob sie im 3D-Modell sichtbar sind @@ -1039,12 +1039,12 @@ Die Liste der Schichtdicken - + The line color of the projected objects Linienfarbe projizierter Objekte - + The color of the cut faces (if turned on) Die Farbe der Schnittflächen (sofern aktiviert) @@ -3205,37 +3205,37 @@ Floor creation aborted. Externe Referenz erstellen - + Section plane settings Einstellungen Schnittebene - + Objects seen by this section plane: Objekte, die von dieser Schnittebene gesehen werden: - + Section plane placement: Platzierung der Schnittebene: - + Rotate X Drehen X - + Rotate Y Drehen Y - + Rotate Z Drehen Z - + Resize Größe ändern @@ -3390,42 +3390,42 @@ Grundstücks- und Gebäudeobjekte werden aus der Auswahl entfernt. Sie können das in den Einstellungen ändern. - + Remove highlighted objects from the list above Markierte Objekte aus der oben genannten Liste entfernen - + Add selected Auswahl hinzufügen - + Add selected object(s) to the scope of this section plane Ausgewählte Objekte in den Bereich dieser Schnittebene hinzufügen - + Rotates the plane along the X axis Rotiert die Ebene entlang X-Achse - + Rotates the plane along the Y axis Rotiert die Ebene entlang Y-Achse - + Rotates the plane along the Z axis Rotiert die Ebene entlang Z-Achse - + Resizes the plane to fit the objects in the list above Ändert die Ausdehnung der Ebene, um sie den Objekten in der oben genannten Liste anzupassen - + Centers the plane on the objects in the list above Verschiebt die Ebene, in die Mitte der in der oben genannten Liste befindlichen Objekte diff --git a/src/Mod/Arch/Resources/translations/Arch_el.qm b/src/Mod/Arch/Resources/translations/Arch_el.qm index e77761f287..2cd4619c39 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_el.qm and b/src/Mod/Arch/Resources/translations/Arch_el.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_el.ts b/src/Mod/Arch/Resources/translations/Arch_el.ts index 0eda3ced25..a4a3779a9a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_el.ts +++ b/src/Mod/Arch/Resources/translations/Arch_el.ts @@ -204,12 +204,12 @@ Η κανονική διεύθυνση επέκτασης αυτού του αντικειμένου (κρατήστε το (0,0,0) για αυτόματη κανονική επιλογή) - + The linked object Το συνδεδεμένο αντικείμενο - + The line width of the rendered objects Το πλάτος γραμμής των παρεχόμενων αντικειμένων @@ -594,27 +594,27 @@ Εμφανίστε την περικοπή σε τρισδιάστατη προβολή - + The rendering mode to use Η λειτουργία αποτύπωσης προς χρήση - + If cut geometry is shown or not Αν η κομμένη γεωμετρική οντότητα απεικονίζεται ή όχι - + If cut geometry is filled or not Αν η κομμένη γεωμετρική οντότητα είναι γεμάτη ή όχι - + The size of the texts inside this object Το μέγεθος των κειμένων μέσα σε αυτό το αντικείμενο - + If checked, source objects are displayed regardless of being visible in the 3D model Εάν επιλεχθούν, τα πηγαία αντικείμενα εμφανίζονται ανεξάρτητα από το αν είναι ορατά στο τρισδιάστατο μοντέλο @@ -1039,12 +1039,12 @@ Η λίστα με τα πάχη στρωμάτων - + The line color of the projected objects Το χρώμα γραμμής των προβεβλημένων αντικειμένων - + The color of the cut faces (if turned on) Το χρώμα των κομμένων όψεων (αν είναι ενεργοποιημένο) @@ -3210,37 +3210,37 @@ Floor creation aborted. Δημιουργία εξωτερικής αναφοράς - + Section plane settings Section plane settings - + Objects seen by this section plane: Αντικείμενα που φαίνονται από αυτό το επίπεδο τομής: - + Section plane placement: Section plane placement: - + Rotate X Περιστροφή Υ - + Rotate Y Περιστροφή Υ - + Rotate Z Περιστροφή Ζ - + Resize Αλλαγή μεγέθους @@ -3397,42 +3397,42 @@ You can change that in the preferences. Αυτό μπορείτε να το αλλάξετε στις προτιμήσεις. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Προσθήκη επιλεγμένων - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Περιστρέψτε το επίπεδο στον άξονα X - + Rotates the plane along the Y axis Περιστρέψτε το επίπεδο στον άξονα Y - + Rotates the plane along the Z axis Περιστρέψτε το επίπεδο στον άξονα Z - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_es-ES.qm b/src/Mod/Arch/Resources/translations/Arch_es-ES.qm index a8a0861a35..23a53cc050 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 27d828e44d..0e69c452e2 100644 --- a/src/Mod/Arch/Resources/translations/Arch_es-ES.ts +++ b/src/Mod/Arch/Resources/translations/Arch_es-ES.ts @@ -204,12 +204,12 @@ Dirección de extrusión normal de este objeto (mantener (0,0,0) para normal automática) - + The linked object El objeto vinculado - + The line width of the rendered objects La anchura de la línea de los objetos renderizados @@ -594,27 +594,27 @@ Mostrar el corte en la vista 3D - + The rendering mode to use El modo de renderizado a utilizar - + If cut geometry is shown or not Si la geometría de corte se muestra o no - + If cut geometry is filled or not Si el corte de la geometría está lleno o no - + The size of the texts inside this object El tamaño de los textos dentro de este objeto - + If checked, source objects are displayed regardless of being visible in the 3D model Si está marcada, se muestran objetos de origen sin importar ser visible en el modelo 3D @@ -1039,12 +1039,12 @@ La lista de espesores por capa - + The line color of the projected objects El color de línea de los objetos proyectados - + The color of the cut faces (if turned on) El color de las caras cortadas (si está encendido) @@ -1956,12 +1956,12 @@ The color of this material when cut - The color of this material when cut + El color de este material cuando se corta The list of angles of the roof segments - The list of angles of the roof segments + La lista de ángulos de los segmentos de techo @@ -1971,7 +1971,7 @@ The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + La lista de IDs de los perfiles relativos de los segmentos del techo @@ -1986,12 +1986,12 @@ The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + La lista de alturas calculadas de los segmentos de techo The face number of the base object used to build the roof - The face number of the base object used to build the roof + El número de caras del objeto base utilizado para construir el techo @@ -2006,12 +2006,12 @@ Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Especifica si la dirección del techo debe ser invertida Show the label in the 3D view - Show the label in the 3D view + Mostrar la etiqueta en la vista 3D @@ -3209,37 +3209,37 @@ Floor creation aborted. Crear refencia externa - + Section plane settings Ajustes de plano de sección - + Objects seen by this section plane: Objetos vistos por esta seccion del plano: - + Section plane placement: Ubicación de plano de sección: - + Rotate X Rotar X - + Rotate Y Rotar Y - + Rotate Z Rotar Z - + Resize Redimensionar @@ -3394,42 +3394,42 @@ Objetos de Sitio y de Edificio serán removidos de la selección. Tu puedes cambiar esto en las preferencias. - + Remove highlighted objects from the list above Eliminar objetos resaltados de la lista anterior - + Add selected Añadir la selección - + Add selected object(s) to the scope of this section plane Añadir objeto(s) seleccionado al alcance de este plano de sección - + Rotates the plane along the X axis Rota el plano a lo largo del eje X - + Rotates the plane along the Y axis Rota el plano a lo largo del eje Y - + Rotates the plane along the Z axis Rota el plano a lo largo del eje Z - + Resizes the plane to fit the objects in the list above Redimensiona el plano para encajar los objetos en la lista anterior - + Centers the plane on the objects in the list above Centra el plano en los objetos de la lista anterior @@ -3804,7 +3804,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Color de Sección diff --git a/src/Mod/Arch/Resources/translations/Arch_eu.qm b/src/Mod/Arch/Resources/translations/Arch_eu.qm index ade8ad82e3..41c20f2b05 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_eu.qm and b/src/Mod/Arch/Resources/translations/Arch_eu.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_eu.ts b/src/Mod/Arch/Resources/translations/Arch_eu.ts index 3f0078525f..305be82497 100644 --- a/src/Mod/Arch/Resources/translations/Arch_eu.ts +++ b/src/Mod/Arch/Resources/translations/Arch_eu.ts @@ -204,12 +204,12 @@ Objektu honen estrusio-norabide normala (mantendu (0,0,0) normal automatikorako) - + The linked object Estekatutako objektua - + The line width of the rendered objects Errendatutako objektuen lerro-luzera @@ -594,27 +594,27 @@ Erakutsi moztea 3D bistan - + The rendering mode to use Erabiliko den errendatze-modua - + If cut geometry is shown or not Mozte-geometria erakutsiko den ala ez - + If cut geometry is filled or not Mozte-geometria beteta dagoen ala ez - + The size of the texts inside this object Objektu honen barruko testuen tamaina - + If checked, source objects are displayed regardless of being visible in the 3D model Markatuta badago, iturburu-objektuak erakutsi egingo dira, 3D ereduan ikusgarriak izan zein ez @@ -1039,12 +1039,12 @@ Geruza-lodieren zerrenda - + The line color of the projected objects Proiektatutako objektuen lerro-kolorea - + The color of the cut faces (if turned on) Mozte-aurpegien kolorea (aktibatuta badago) @@ -1956,62 +1956,62 @@ The color of this material when cut - The color of this material when cut + Material honen kolorea mozten denean The list of angles of the roof segments - The list of angles of the roof segments + Teilatu-segmentuen angeluen zerrenda The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + Teilatu-segmentuen luzera-proiekzio horizontalen zerrenda The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + Teilatu-segmentuen profil erlatiboen IDen zerrenda The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + Teilatu-segmentuen lodieren zerrenda The list of overhangs of the roof segments - The list of overhangs of the roof segments + Teilatu-segmentuen hegalen zerrenda The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + Teilatu-segmentuen altuera kalkulatuen zerrenda The face number of the base object used to build the roof - The face number of the base object used to build the roof + Teilatua eraikitzeko erabili den oinarri-objektuaren aurpegi kopurua The total length of the ridges and hips of the roof - The total length of the ridges and hips of the roof + Teilatuaren gailurren eta isurkien luzera totala The total length of the borders of the roof - The total length of the borders of the roof + Teilatuaren ertzen luzera totala Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Teilatuaren norabidea irauli behar den ala ez zehazten du Show the label in the 3D view - Show the label in the 3D view + Erakutsi etiketa 3D bistan @@ -3211,37 +3211,37 @@ Solairuaren sorrera utzi egin da. Sortu kanpoko erreferentzia - + Section plane settings Sekzio-planoaren ezarpenak - + Objects seen by this section plane: Sekzio-plano honek ikusten dituen objektuak: - + Section plane placement: Sekzio-planoaren kokapena: - + Rotate X Biratu X - + Rotate Y Biratu Y - + Rotate Z Biratu Z - + Resize Aldatu tamaina @@ -3398,42 +3398,42 @@ Guneak eta eraikinak hautapenetik kendu egingo dira. Portaera hori aldatu egin daiteke hobespenetan. - + Remove highlighted objects from the list above Kendu nabarmendutako objektuak goiko zerrendatik - + Add selected Gehitu hautatuak - + Add selected object(s) to the scope of this section plane Gehitu hautatutako objektua(k) sekzio-plano honen esparrura - + Rotates the plane along the X axis Planoa X ardatzean biratzen du - + Rotates the plane along the Y axis Planoa Y ardatzean biratzen du - + Rotates the plane along the Z axis Planoa Z ardatzean biratzen du - + Resizes the plane to fit the objects in the list above Planoa goiko zerrendako objektuekin doitzeko biratzen du - + Centers the plane on the objects in the list above Planoa goiko zerrendako objektuetan zentratzen du @@ -3685,17 +3685,17 @@ Portaera hori aldatu egin daiteke hobespenetan. If Angle = 0 and Run = 0 then the profile is identical to the relative profile. If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. If Run = 0 then the run is calculated so that the height is the same as the relative profile. - Parameters of the roof profiles : -* Angle : slope in degrees relative to the horizontal. -* Run : horizontal distance between the wall and the ridge. -* Thickness : thickness of the roof. -* Overhang : horizontal distance between the eave and the wall. -* Height : height of the ridge above the base (calculated automatically). -* IdRel : Id of the relative profile used for automatic calculations. + Teilatu-profilen parametroak : +* Angelua : maila, graduetan horizontalarekiko. +* Distantzia : distantzia horizontala paretaren eta gailurraren artean. +* Lodiera : teilatuaren lodiera. +* Hegala : distantzia horizontala hegalaren eta paretaren artean. +* Altuera : gailurraren altuera oinarriaren gainetik (automatikoki kalkulatua). +* IdRel : Kalkulu automatikoetarako erabilitako profil erlatiboaren Ida. --- -If Angle = 0 and Run = 0 then the profile is identical to the relative profile. -If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. -If Run = 0 then the run is calculated so that the height is the same as the relative profile. +Angelua = 0 eta Distantzia = 0 badira, orduan profila eta profil erlatiboa berdinak dira. +Angelua = 0 bada, orduan angelua kalkulatzen da altuera profil erlatiboaren berdina izan dadin. +Distantzia = 0 bada, orduan distantzia kalkulatzen da altuera profil erlatiboaren berdina izan dadin. @@ -3808,7 +3808,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Sekzioaren kolorea @@ -4850,7 +4850,7 @@ Utzi hutsik dokumentuko objektu guztiak erabili daitezen. Unnamed schedule - Unnamed schedule + Izenik gabeko programazioa diff --git a/src/Mod/Arch/Resources/translations/Arch_fi.qm b/src/Mod/Arch/Resources/translations/Arch_fi.qm index 600fd2d0d8..1c9bd09e7e 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_fi.qm and b/src/Mod/Arch/Resources/translations/Arch_fi.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_fi.ts b/src/Mod/Arch/Resources/translations/Arch_fi.ts index a19678f737..3269c687ab 100644 --- a/src/Mod/Arch/Resources/translations/Arch_fi.ts +++ b/src/Mod/Arch/Resources/translations/Arch_fi.ts @@ -204,12 +204,12 @@ The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The linked object The linked object - + The line width of the rendered objects The line width of the rendered objects @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Lisää valitut - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_fil.qm b/src/Mod/Arch/Resources/translations/Arch_fil.qm index e9bcd939af..90ad26da80 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_fil.qm and b/src/Mod/Arch/Resources/translations/Arch_fil.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_fil.ts b/src/Mod/Arch/Resources/translations/Arch_fil.ts index 9fb6acec62..47b347add3 100644 --- a/src/Mod/Arch/Resources/translations/Arch_fil.ts +++ b/src/Mod/Arch/Resources/translations/Arch_fil.ts @@ -204,12 +204,12 @@ Ang normal na direksyon ng extrusion ng bagay na ito (keep (0,0,0) para sa automatic normal) - + The linked object Ang naka-link na bagay - + The line width of the rendered objects Ang lapad ng linya ng rendered na mga bagay @@ -594,27 +594,27 @@ Ipakita ang hiwa sa tatlong dimensyong tanaw - + The rendering mode to use Ang maglalapat sa paraan ng paggamit - + If cut geometry is shown or not Kapag hiniwa ang heometriya ito ba ay magpapakita o hindi - + If cut geometry is filled or not Kapag hiniwa ang heometriya ito ba ay tambak o hindi - + The size of the texts inside this object Ang sukat ng mga teksto sa loob ng bagay na ito - + If checked, source objects are displayed regardless of being visible in the 3D model Kapag tsek, ang pinagmulan ng bagay ay ipamalas ng hindi alintana ang pagiging tatlong dimensyong modelo na nakikita @@ -1039,12 +1039,12 @@ Ang listahan ng mga hanay thicknesses - + The line color of the projected objects Ang kulay ng linya ng inaasahang layunin - + The color of the cut faces (if turned on) Ang kulay ng mga mukha ng cut (kung naka-on) @@ -3210,37 +3210,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3397,42 +3397,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Idagdag ang mga napili - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_fr.qm b/src/Mod/Arch/Resources/translations/Arch_fr.qm index fbcf368935..ab4b31cc1b 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 0a3a922672..b9e30b2095 100644 --- a/src/Mod/Arch/Resources/translations/Arch_fr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_fr.ts @@ -204,12 +204,12 @@ La direction d'extrusion normale de cet objet (mettre (0,0,0) pour normale automatique) - + The linked object L’objet lié - + The line width of the rendered objects La largeur de la ligne des objets rendus @@ -594,27 +594,27 @@ Montrer la coupe dans la vue 3D - + The rendering mode to use Le mode de rendu à utiliser - + If cut geometry is shown or not Si la géométrie de la coupe est affichée ou non - + If cut geometry is filled or not Si la géométrie de la coupe est remplie ou non - + The size of the texts inside this object La taille des textes à l’intérieur de cet objet - + If checked, source objects are displayed regardless of being visible in the 3D model Si cochée, les objets source sont affichés quelle que soit leur visibilité dans le modèle 3D @@ -1039,12 +1039,12 @@ La liste des épaisseurs de couche - + The line color of the projected objects La couleur de la ligne des objets projetés - + The color of the cut faces (if turned on) La couleur des faces coupées (si activé) @@ -1956,62 +1956,62 @@ The color of this material when cut - The color of this material when cut + La couleur de ce matériau lorsqu'il est coupé The list of angles of the roof segments - The list of angles of the roof segments + La liste des angles des segments de toit The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + La liste des longueurs des projections horizontales pour chaque pan de toit The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + La liste des IDs des profils relatifs aux segments de toit The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + La liste des épaisseurs des segments de toit The list of overhangs of the roof segments - The list of overhangs of the roof segments + La liste des surplombs des segments de toit The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + La liste des hauteurs calculées des segments de toit The face number of the base object used to build the roof - The face number of the base object used to build the roof + Le numéro de face de l'objet de base utilisé pour construire le toit The total length of the ridges and hips of the roof - The total length of the ridges and hips of the roof + La longueur totale des faîtages et des arêtiers du toit The total length of the borders of the roof - The total length of the borders of the roof + La longueur totale des bordures du toit Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Spécifie si le sens du toit doit être inversé Show the label in the 3D view - Show the label in the 3D view + Afficher le libellé dans la vue 3D @@ -3207,37 +3207,37 @@ Création de plancher abandonnée. Créer une référence externe - + Section plane settings Réglage du plan de coupe - + Objects seen by this section plane: Objets vus dans ce plan de coupe : - + Section plane placement: Emplacement du plan de coupe : - + Rotate X Rotation X - + Rotate Y Rotation Y - + Rotate Z Rotation Z - + Resize Redimensionner @@ -3388,42 +3388,42 @@ You can change that in the preferences. Vous pouvez mettre n’importe quoi sauf les objets Emplacement et Bâtiment dans un objet Bâtiment. Les objets Bâtiment ne sont pas autorisés à accepter un objet Emplacement ou Bâtiment. Les objets Site ou Bâtiment seront supprimés de la sélection. Vous pouvez modifier cela dans les préférences. - + Remove highlighted objects from the list above Supprimer les objets en surbrillance de la liste ci-dessus - + Add selected Ajouter la sélection - + Add selected object(s) to the scope of this section plane Ajouter un(des) objet(s) sélectionné(s) au champ d'application de ce plan de coupe - + Rotates the plane along the X axis Rotation du plan autour de l'axe X - + Rotates the plane along the Y axis Rotation du plan autour de l'axe Y - + Rotates the plane along the Z axis Rotation du plan autour de l'axe Z - + Resizes the plane to fit the objects in the list above Redimensionner le plan pour l'adapter aux objets de la liste ci-dessus - + Centers the plane on the objects in the list above Centrer le plan sur les objets de la liste ci-dessus @@ -3675,17 +3675,17 @@ You can change that in the preferences. If Angle = 0 and Run = 0 then the profile is identical to the relative profile. If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. If Run = 0 then the run is calculated so that the height is the same as the relative profile. - Parameters of the roof profiles : -* Angle : slope in degrees relative to the horizontal. -* Run : horizontal distance between the wall and the ridge. -* Thickness : thickness of the roof. -* Overhang : horizontal distance between the eave and the wall. -* Height : height of the ridge above the base (calculated automatically). -* IdRel : Id of the relative profile used for automatic calculations. + Paramètres des profils du toit : +* Angle : pente en degrés par rapport à l'horizontale. +* Course : distance entre le mur et le faîtage. +* Épaisseur : épaisseur du côté du toit. +* Port-à-faux : distance entre l'avant-toit et le mur. +* Hauteur : hauteur du faîtage au-dessus de la sole (calculé automatiquement) +* IdRel : Id du profil relatif pour les calculs automatiques. --- -If Angle = 0 and Run = 0 then the profile is identical to the relative profile. -If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. -If Run = 0 then the run is calculated so that the height is the same as the relative profile. +Si Angle = 0 et Course = 0 alors le profil est identique au profil relatif. +Si Angle = 0 alors l'angle est calculé de sorte que la hauteur soit la même que celle du profil relatif. +Si Course = 0 alors la course est calculée de façon à ce que la hauteur du profil soit la même que celle du profil relatif. @@ -3798,7 +3798,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Couleur de la section @@ -4836,7 +4836,7 @@ Leave blank to use all objects from the document Unnamed schedule - Unnamed schedule + Planification non nommée diff --git a/src/Mod/Arch/Resources/translations/Arch_gl.qm b/src/Mod/Arch/Resources/translations/Arch_gl.qm index 6e319d385d..f71c2a39eb 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_gl.qm and b/src/Mod/Arch/Resources/translations/Arch_gl.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_gl.ts b/src/Mod/Arch/Resources/translations/Arch_gl.ts index 7a9d5990ce..d46c8859c2 100644 --- a/src/Mod/Arch/Resources/translations/Arch_gl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_gl.ts @@ -204,12 +204,12 @@ A dirección de extrusión normal deste obxecto (manter (0,0,0) para normal automática) - + The linked object O obxecto ligado - + The line width of the rendered objects A largura da liña dos obxectos renderizados @@ -594,27 +594,27 @@ Amosar o corte na visualización 3D - + The rendering mode to use O xeito de renderización para usar - + If cut geometry is shown or not Se se amosa ou non a xeometría do corte - + If cut geometry is filled or not Se se enche ou non a xeometría do corte - + The size of the texts inside this object O tamaño dos textos dentro deste obxecto - + If checked, source objects are displayed regardless of being visible in the 3D model Se é marcada, os obxectos de orixe amósanse independentemente de seren visibles no modelo 3D @@ -1039,12 +1039,12 @@ Lista dos grosores de capa - + The line color of the projected objects Cor de liña dos obxectos proxectados - + The color of the cut faces (if turned on) Cor das caras talladas (se está activado) @@ -3208,37 +3208,37 @@ Floor creation aborted. Crear referencia externa - + Section plane settings Axustes do plano de corte - + Objects seen by this section plane: Obxectos vistos por este plano de corte: - + Section plane placement: Situación do Plano de corte: - + Rotate X Rotar X - + Rotate Y Rotar Y - + Rotate Z Rotar Z - + Resize Redimensionar @@ -3394,42 +3394,42 @@ Obxectos Sitio e Edificio serán removidos dende a selección. Podes trocar esas preferencias. - + Remove highlighted objects from the list above Remover obxectos destacados dende a lista de enriba - + Add selected Engadir escolma - + Add selected object(s) to the scope of this section plane Engadir obxecto(s) escolmados ao ámbito de aplicación deste plano de sección - + Rotates the plane along the X axis Rotar o plano ao longo do eixe X - + Rotates the plane along the Y axis Rotar o plano ao longo do eixe Y - + Rotates the plane along the Z axis Rotar o plano ao longo do eixe Z - + Resizes the plane to fit the objects in the list above Redimensiona o plano para que os obxectos da lista de enriba collan - + Centers the plane on the objects in the list above Centra o plano na lista de obxectos de enriba diff --git a/src/Mod/Arch/Resources/translations/Arch_hr.qm b/src/Mod/Arch/Resources/translations/Arch_hr.qm index 1c25eca25d..30c5c2222f 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_hr.qm and b/src/Mod/Arch/Resources/translations/Arch_hr.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_hr.ts b/src/Mod/Arch/Resources/translations/Arch_hr.ts index 6477a622bb..e27b010e6d 100644 --- a/src/Mod/Arch/Resources/translations/Arch_hr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_hr.ts @@ -204,12 +204,12 @@ Smjer normalnog istiskivanja objekta (zadrži (0,0,0) za automatsko normalno) - + The linked object Povezani objekt - + The line width of the rendered objects Širine crte iscrtanih objekata @@ -594,27 +594,27 @@ Prikaži presjek u 3D pogledu - + The rendering mode to use Mod iscrtavanja koji se koristi - + If cut geometry is shown or not Da li je geometrija rezanja prikazana ili ne - + If cut geometry is filled or not Da li je geometrija rezanja ispunjena ili ne - + The size of the texts inside this object Veličina tekstova unutar ovog objekta - + If checked, source objects are displayed regardless of being visible in the 3D model Ako je označeno, izvorni objekti prikazuju se bez obzira jesu li vidljivi u 3D modelu @@ -1039,12 +1039,12 @@ Lista debljina slojeva - + The line color of the projected objects Boja linije projiciranih objekata - + The color of the cut faces (if turned on) Boja za lice rezanja (ako je uključeno) @@ -1975,62 +1975,76 @@ The color of this material when cut - The color of this material when cut + Boja ovog materijala pri rezanju + + The list of angles of the roof segments - The list of angles of the roof segments + Popis kutova krovnih segmenata + + The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + Popis vodoravnih projekcija duljine segmenata krova + + The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + Popis ID-a relativnih profila krovnih segmenata + + The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + Popis debljina krovnih segmenata The list of overhangs of the roof segments - The list of overhangs of the roof segments + Popis prevjesa krovnih segmenata The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + Popis izračunatih visina krovnih segmenata The face number of the base object used to build the roof - The face number of the base object used to build the roof + Broj lica osnovnog objekta koji se koristi za izgradnju krova + + The total length of the ridges and hips of the roof - The total length of the ridges and hips of the roof + Ukupna duljina grebena i bokova krova The total length of the borders of the roof - The total length of the borders of the roof + Ukupna duljina granica krova + + Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Određuje treba li okretati smjer krova + + Show the label in the 3D view - Show the label in the 3D view + Prikaži oznaku u 3D pogledu @@ -3230,37 +3244,37 @@ Stvaranje zgrade prekinuto. Stvaranje vanjske reference - + Section plane settings Postavke odsječka ravni - + Objects seen by this section plane: Objekti viđeni sa ovog djela ravni: - + Section plane placement: Položaj odsječka ravni: - + Rotate X Rotiraj X - + Rotate Y Rotiraj Y - + Rotate Z Rotiraj Z - + Resize Promjena veličine @@ -3417,42 +3431,42 @@ Parcela i Zgrada uklanjaju se iz odabira. To možete promijeniti u postavkama. - + Remove highlighted objects from the list above Ukloni istaknute objekte sa liste iznad - + Add selected Dodaj odabrano - + Add selected object(s) to the scope of this section plane Dodajte odabrane objekte u područje ovog djela ravni - + Rotates the plane along the X axis Rotiraj ravninu uzduž X osi - + Rotates the plane along the Y axis Rotiraj ravninu uzduž Y osi - + Rotates the plane along the Z axis Rotiraj ravninu uzduž Z osi - + Resizes the plane to fit the objects in the list above Promijeni veličinu ravnine radi postavljanja objekata na gornji popis - + Centers the plane on the objects in the list above Centrira ravninu na objekte na gornjem popisu @@ -3712,17 +3726,17 @@ To možete promijeniti u postavkama. If Angle = 0 and Run = 0 then the profile is identical to the relative profile. If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. If Run = 0 then the run is calculated so that the height is the same as the relative profile. - Parameters of the roof profiles : -* Angle : slope in degrees relative to the horizontal. -* Run : horizontal distance between the wall and the ridge. -* Thickness : thickness of the roof. -* Overhang : horizontal distance between the eave and the wall. -* Height : height of the ridge above the base (calculated automatically). -* IdRel : Id of the relative profile used for automatic calculations. + Parametri krovnih profila: +* Kut: nagib u stupnjevima u odnosu na vodoravno. +* Raspon do sredine (Run): vodoravna udaljenost između zida i grebena. +* Debljina: debljina krova. +* Prevjes: vodoravna udaljenost između strehe i zida. +* Visina: visina grebena iznad podnožja (izračunava se automatski). +* IdRel: Id relativnog profila koji se koristi za automatske izračune. --- -If Angle = 0 and Run = 0 then the profile is identical to the relative profile. -If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. -If Run = 0 then the run is calculated so that the height is the same as the relative profile. +Ako je Angle = 0 i Run = 0, tada je profil identičan relativnom profilu. +Ako je Kut = 0, tada se kut izračunava tako da je visina jednaka relativnom profilu. +Ako je Run = 0, tada se proračun izračunava tako da je visina jednaka relativnom profilu. @@ -3835,7 +3849,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Boja odjeljka @@ -4882,7 +4896,7 @@ Ostavite prazno da biste koristili sve predmete iz dokumenta Unnamed schedule - Unnamed schedule + Neimenovani raspored diff --git a/src/Mod/Arch/Resources/translations/Arch_hu.qm b/src/Mod/Arch/Resources/translations/Arch_hu.qm index 29fb7f96a5..bbccaed5af 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 f7d5328c0c..6612c423c0 100644 --- a/src/Mod/Arch/Resources/translations/Arch_hu.ts +++ b/src/Mod/Arch/Resources/translations/Arch_hu.ts @@ -204,12 +204,12 @@ Ennek az objektumnak a normál kihúzás iránya (automatikus normál (0,0,0) megtartása) - + The linked object A kapcsolt objektum - + The line width of the rendered objects A megjelenített objektumok vonalvastagsága @@ -594,27 +594,27 @@ A vágás 3D-s nézetének megjelenítése - + The rendering mode to use A használandó igazító mód - + If cut geometry is shown or not Ha a levágott geometria megjelenik vagy sem - + If cut geometry is filled or not Ha a levágott geometria kitöltött vagy sem - + The size of the texts inside this object A szöveg vastagsága ebben az objektumban - + If checked, source objects are displayed regardless of being visible in the 3D model Ha be van jelölve, a forrásobjektumok megjelenik függetlenül attól, hogy látható legyen, a 3D-s modellben @@ -1039,12 +1039,12 @@ A réteg vastagságok listája - + The line color of the projected objects A vetített objektumok vonal színe - + The color of the cut faces (if turned on) Vágott felületek színe (ha be van kapcsolva) @@ -1956,62 +1956,62 @@ The color of this material when cut - The color of this material when cut + A színe ennek az anyagnak, ha vágott The list of angles of the roof segments - The list of angles of the roof segments + Tető szegmensek szögeinek listája The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + Tető szegmensek vízszintes hossz vetületeinek listája The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + Tető szegmensek relatív profilojai azonosítóinak listája The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + Tető szegmensek vastagságának listája The list of overhangs of the roof segments - The list of overhangs of the roof segments + Tető szegmensek túlnyúlásainak listája The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + Tetőszakaszok számított magasságainak listája The face number of the base object used to build the roof - The face number of the base object used to build the roof + A tető építéséhez használt alapobjektum felületeinek száma The total length of the ridges and hips of the roof - The total length of the ridges and hips of the roof + A tető orom éleknek és tető éleknek a teljes hossza The total length of the borders of the roof - The total length of the borders of the roof + A tetőhöz tartozó szegélyeknek a teljes hossza Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Megadja, hogy a tető irányát tükrözni kell-e Show the label in the 3D view - Show the label in the 3D view + A címke megjelenítése 3D nézetben @@ -3211,37 +3211,37 @@ Padló létrehozása megszakítva. Külső hivatkozás készítése - + Section plane settings Metszősík beállítások - + Objects seen by this section plane: Metszősík által látható tárgyak: - + Section plane placement: Metszősík elhelyezése: - + Rotate X Forgatás X - + Rotate Y Forgatás Y - + Rotate Z Forgatás Z - + Resize Átméretezés @@ -3398,42 +3398,42 @@ Telek és épület objektumok el lesznek távolítva a kijelölésből. Módosíthatja ezt a beállításokban. - + Remove highlighted objects from the list above Kijelölt elemek eltávolítása a fenti listából - + Add selected Kiválasztott hozzáadása - + Add selected object(s) to the scope of this section plane Kijelölt elem(ek) hozzáadása a metszősík hatóköréhez - + Rotates the plane along the X axis Sík forgatása az X tengely körül - + Rotates the plane along the Y axis Sík forgatása az Y tengely körül - + Rotates the plane along the Z axis Sík forgatása a Z tengely körül - + Resizes the plane to fit the objects in the list above Sík átméretezése a fenti listában szereplő elemekre - + Centers the plane on the objects in the list above Sík középpontja a fenti listában szereplő elemeken @@ -3685,17 +3685,17 @@ Módosíthatja ezt a beállításokban. If Angle = 0 and Run = 0 then the profile is identical to the relative profile. If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. If Run = 0 then the run is calculated so that the height is the same as the relative profile. - Parameters of the roof profiles : -* Angle : slope in degrees relative to the horizontal. -* Run : horizontal distance between the wall and the ridge. -* Thickness : thickness of the roof. -* Overhang : horizontal distance between the eave and the wall. -* Height : height of the ridge above the base (calculated automatically). -* IdRel : Id of the relative profile used for automatic calculations. + A tetőprofilok paraméterei: +* Szög: lejtés fokban a vízszinteshez képest. +* Futás: vízszintes távolság a fal és a gerinc között. +* Vastagság: a tető vastagsága. +* Túlnyúlás: vízszintes távolság az eresz és a fal között. +* Magasság: a gerinc magassága az alap felett (automatikusan kiszámított). +* IdRel: Az automatikus számításokhoz használt relatív profil azonosítója. --- -If Angle = 0 and Run = 0 then the profile is identical to the relative profile. -If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. -If Run = 0 then the run is calculated so that the height is the same as the relative profile. +Ha szög = 0 és Futás = 0, akkor a profil megegyezik a relatív profillal. +Ha szög = 0, akkor a szöget úgy kell kiszámítani, hogy a magasság megegyezik a relatív profillal. +Ha Futás = 0, akkor a futás kiszámítása úgy történik, hogy a magasság megegyezik a relatív profillal. @@ -3808,7 +3808,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Szakasz színe @@ -4850,7 +4850,7 @@ Hagyja üresen a dokumentum összes objektumának használatát Unnamed schedule - Unnamed schedule + Névtelen ütemezés diff --git a/src/Mod/Arch/Resources/translations/Arch_id.qm b/src/Mod/Arch/Resources/translations/Arch_id.qm index 2003381a29..961fdb931f 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_id.qm and b/src/Mod/Arch/Resources/translations/Arch_id.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_id.ts b/src/Mod/Arch/Resources/translations/Arch_id.ts index da711c27bc..1da271a972 100644 --- a/src/Mod/Arch/Resources/translations/Arch_id.ts +++ b/src/Mod/Arch/Resources/translations/Arch_id.ts @@ -204,12 +204,12 @@ Arah normal ekstrusi objek ini (tetap (0,0,0) untuk otomatis normal) - + The linked object Objek terkait - + The line width of the rendered objects Lebar garis benda-benda yang diberikan @@ -594,27 +594,27 @@ Menunjukkan potongan dalam tampilan 3D - + The rendering mode to use Mode penyiapan yang dipakai - + If cut geometry is shown or not Jika potongan geometri digunakan atau tidak - + If cut geometry is filled or not Jika potongan geometri diisi atau tidak - + The size of the texts inside this object Ukuran teks didalam objek ini - + If checked, source objects are displayed regardless of being visible in the 3D model Kalau dicentang, sumber objek ditampilkan tanpa memperhatikan untuk menjadi tampil dalam model 3D @@ -1039,12 +1039,12 @@ Daftar dari lapisan ketebalan - + The line color of the projected objects Warna garis benda-benda yang diproyeksikan - + The color of the cut faces (if turned on) Warna permukaan potong (jika diaktifkan) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Tambahkan yang dipilih - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_it.qm b/src/Mod/Arch/Resources/translations/Arch_it.qm index 02b118ee58..fc90f312d0 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_it.qm and b/src/Mod/Arch/Resources/translations/Arch_it.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_it.ts b/src/Mod/Arch/Resources/translations/Arch_it.ts index 06920e4402..bacf561ca5 100644 --- a/src/Mod/Arch/Resources/translations/Arch_it.ts +++ b/src/Mod/Arch/Resources/translations/Arch_it.ts @@ -204,12 +204,12 @@ La direzione di estrusione normale di questo oggetto (lasciare (0, 0,0) per normale in automatico) - + The linked object L'oggetto collegato - + The line width of the rendered objects La larghezza della linea degli oggetti resi @@ -594,27 +594,27 @@ Visualizza la sezione nella vista 3D - + The rendering mode to use La modalità di rendering da utilizzare - + If cut geometry is shown or not Se la geometria di taglio è visualizzata o meno - + If cut geometry is filled or not Se la geometria deve essere riempita o non - + The size of the texts inside this object La dimensione dei testi all'interno di questo oggetto - + If checked, source objects are displayed regardless of being visible in the 3D model Se selezionata, gli oggetti di origine vengono visualizzati indipendentemente dall'essere visibili nel modello 3D @@ -1039,12 +1039,12 @@ L'elenco degli spessori degli strati - + The line color of the projected objects Il colore della linea degli oggetti proiettati - + The color of the cut faces (if turned on) Il colore delle facce tagliate (se attivato) @@ -3208,37 +3208,37 @@ Floor creation aborted. Crea riferimenti esterni - + Section plane settings Impostazioni del piano di sezione - + Objects seen by this section plane: Oggetti visti in questo piano di sezione: - + Section plane placement: Posizione del piano di sezione: - + Rotate X Rotazione X - + Rotate Y Rotazione Y - + Rotate Z Rotazione Z - + Resize Ridimensiona @@ -3392,42 +3392,42 @@ Gli oggetti Sito e Edificio saranno rimossi dalla selezione. È possibile modificare questa impostazione nelle preferenze. - + Remove highlighted objects from the list above Rimuovi gli oggetti evidenziati dalla lista precedente - + Add selected Aggiungi la selezione - + Add selected object(s) to the scope of this section plane Aggiungi oggetto(i) selezionato(i) allo spazio di questo piano sezione - + Rotates the plane along the X axis Ruota il piano lungo l'asse X - + Rotates the plane along the Y axis Ruota il piano lungo l'asse Y - + Rotates the plane along the Z axis Ruota il piano lungo l'asse Z - + Resizes the plane to fit the objects in the list above Ridimensiona il piano per adattare gli oggetti nella lista precedente - + Centers the plane on the objects in the list above Centra il piano sugli oggetti nella lista precedente diff --git a/src/Mod/Arch/Resources/translations/Arch_ja.qm b/src/Mod/Arch/Resources/translations/Arch_ja.qm index dc0e84bec8..9bf45aa193 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ja.qm and b/src/Mod/Arch/Resources/translations/Arch_ja.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ja.ts b/src/Mod/Arch/Resources/translations/Arch_ja.ts index 1e34f5c84e..0f58549296 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ja.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ja.ts @@ -204,12 +204,12 @@ このオブジェクトの法線押し出し方向(法線自動設定を行う場合は(0,0,0)のままにしてください) - + The linked object リンクされたオブジェクト - + The line width of the rendered objects 描画オブジェクトの線の幅 @@ -594,27 +594,27 @@ 3Dビューでカットを表示 - + The rendering mode to use 使用するレンダリングモード - + If cut geometry is shown or not カット・ジオメトリーを表示するかどうか - + If cut geometry is filled or not カット・ジオメトリーを塗りつぶすかどうか - + The size of the texts inside this object このオブジェクト内部のテキストの幅 - + If checked, source objects are displayed regardless of being visible in the 3D model チェックされている場合、ソースオブジェクトが3Dモデル内で表示されているかどうかに関わらず表示されます。 @@ -1039,12 +1039,12 @@ レイヤー厚みのリスト - + The line color of the projected objects 投影オブジェクトの線の色 - + The color of the cut faces (if turned on) カット面の色(有効な場合) @@ -3211,37 +3211,37 @@ Floor creation aborted. 外部参照を作成 - + Section plane settings 断面平面の設定 - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X X軸で回転 - + Rotate Y Y軸で回転 - + Rotate Z Z軸で回転 - + Resize リサイズ @@ -3395,42 +3395,42 @@ You can change that in the preferences. この動作はユーザー設定から変更できます。 - + Remove highlighted objects from the list above リスト上からハイライトしたオブジェクトを削除します - + Add selected 選択追加 - + Add selected object(s) to the scope of this section plane 選択したオブジェクト(複数可) をこの断面平面のスコープに追加 - + Rotates the plane along the X axis X軸に沿って平面を回転 - + Rotates the plane along the Y axis Y軸に沿って平面を回転 - + Rotates the plane along the Z axis Z軸に沿って平面を回転 - + Resizes the plane to fit the objects in the list above リスト上のオブジェクトがフィットするように平面のサイズを変更します - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_kab.qm b/src/Mod/Arch/Resources/translations/Arch_kab.qm index 133d413602..0e796451e0 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_kab.qm and b/src/Mod/Arch/Resources/translations/Arch_kab.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_kab.ts b/src/Mod/Arch/Resources/translations/Arch_kab.ts index 4f903ff3dd..def63424ea 100644 --- a/src/Mod/Arch/Resources/translations/Arch_kab.ts +++ b/src/Mod/Arch/Resources/translations/Arch_kab.ts @@ -204,12 +204,12 @@ The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The linked object The linked object - + The line width of the rendered objects The line width of the rendered objects @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_ko.qm b/src/Mod/Arch/Resources/translations/Arch_ko.qm index 895bc78838..08746c4b79 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ko.qm and b/src/Mod/Arch/Resources/translations/Arch_ko.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ko.ts b/src/Mod/Arch/Resources/translations/Arch_ko.ts index f9b9418b04..91891d6eef 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ko.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ko.ts @@ -204,12 +204,12 @@ 객체의 일반적인 돌출 방향(자동의 경우 (0,0,0)를 유지) - + The linked object 연결된 개체 - + The line width of the rendered objects The line width of the rendered objects @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings 단면 설정 - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_lt.qm b/src/Mod/Arch/Resources/translations/Arch_lt.qm index f6efd62d88..3f8ee2434e 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_lt.qm and b/src/Mod/Arch/Resources/translations/Arch_lt.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_lt.ts b/src/Mod/Arch/Resources/translations/Arch_lt.ts index b7431380fc..f2a34bf2cf 100644 --- a/src/Mod/Arch/Resources/translations/Arch_lt.ts +++ b/src/Mod/Arch/Resources/translations/Arch_lt.ts @@ -204,12 +204,12 @@ Šio objekto išstūmimo krypties normalė (palikite (0,0,0) automatiniam normalės parinkimui) - + The linked object Susietas objektas - + The line width of the rendered objects Atvaizduotų objektų linijos storis @@ -594,27 +594,27 @@ Rodyti pjūvį 3D vaizde - + The rendering mode to use Naudoti atvaizdavimo būdą - + If cut geometry is shown or not Jeigu iškirpta geometrija yra vaizduojama arba ne - + If cut geometry is filled or not Jeigu iškirpta geometrija yra užpildyta arba ne - + The size of the texts inside this object Rašmenų dydis šio objekto viduje - + If checked, source objects are displayed regardless of being visible in the 3D model Jeigu patikrinta, šaltinio objektai yra vaizduojami neatsižvelgiant į tai kaip jie rodomi 3D modelyje @@ -1039,12 +1039,12 @@ Sluoksnio storių sąrašas - + The line color of the projected objects Projekciniuose vaizduose rodomo objekto linijų spalva - + The color of the cut faces (if turned on) Pjūvyje rodomų paviršių spalva (jeigu įjungta) @@ -3210,37 +3210,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3397,42 +3397,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_nl.qm b/src/Mod/Arch/Resources/translations/Arch_nl.qm index d95ea11495..7aedd5be49 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_nl.qm and b/src/Mod/Arch/Resources/translations/Arch_nl.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_nl.ts b/src/Mod/Arch/Resources/translations/Arch_nl.ts index 881230b702..38e9cafcd6 100644 --- a/src/Mod/Arch/Resources/translations/Arch_nl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_nl.ts @@ -204,12 +204,12 @@ De normale extrusierichting van dit opject (houd (0,0,0) voor automatische normaal) - + The linked object Het gekoppelde object - + The line width of the rendered objects De lijndikte van de weergegeven objecten @@ -594,27 +594,27 @@ Toon de snede in 3D-weergave - + The rendering mode to use De rendermethode te gebruiken - + If cut geometry is shown or not Na het knippen zal de geometrie wel of niet worden weergegeven - + If cut geometry is filled or not Na het knippen zal de geometrie wel of niet worden weergegeven - + The size of the texts inside this object De grootte van de teksten binnen dit object - + If checked, source objects are displayed regardless of being visible in the 3D model Indien aangevinkt, worden bronobjecten weergegeven ongeacht de zichtbaarheid in het 3D-model @@ -1039,12 +1039,12 @@ De lijst met diktes van lagen - + The line color of the projected objects De lijnkleur van de geprojecteerde objecten - + The color of the cut faces (if turned on) De kleur van de oppervlaktes van de doorsnede (indien ingeschakeld) @@ -3210,37 +3210,37 @@ Vloer object wordt niet gemaakt. Maak externe verwijzing - + Section plane settings Doorsnede instellingen - + Objects seen by this section plane: Objecten zichtbaar in deze doorsnede: - + Section plane placement: Plaats doorsnede: - + Rotate X Rotatie X - + Rotate Y Rotatie Y - + Rotate Z Rotatie Z - + Resize Grootte aanpassen @@ -3397,42 +3397,42 @@ Een bouwterrein en gebouwobjecten zullen uit de selectie verwijderd worden. Dat kan veranderd worden in de voorkeuren. - + Remove highlighted objects from the list above Verwijder de gemarkeerde objecten uit de bovenstaande lijst - + Add selected Voeg geselecteerde toe - + Add selected object(s) to the scope of this section plane Voeg het(de) geselecteerde object(en) toe aan het bereik van dit sectievlak - + Rotates the plane along the X axis Draait het vlak langs de X-as - + Rotates the plane along the Y axis Draait het vlak langs de Y-as - + Rotates the plane along the Z axis Draait het vlak langs de Z-as - + Resizes the plane to fit the objects in the list above Past de grootte van het vlak aan om te passen aan de objecten in de bovenstaande lijst - + Centers the plane on the objects in the list above Centreert het vlak op de objecten in de bovenstaande lijst diff --git a/src/Mod/Arch/Resources/translations/Arch_no.qm b/src/Mod/Arch/Resources/translations/Arch_no.qm index fc94155e08..cb1291e408 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_no.qm and b/src/Mod/Arch/Resources/translations/Arch_no.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_no.ts b/src/Mod/Arch/Resources/translations/Arch_no.ts index c55b459de7..f2fad48bbd 100644 --- a/src/Mod/Arch/Resources/translations/Arch_no.ts +++ b/src/Mod/Arch/Resources/translations/Arch_no.ts @@ -204,12 +204,12 @@ The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The linked object The linked object - + The line width of the rendered objects The line width of the rendered objects @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_pl.qm b/src/Mod/Arch/Resources/translations/Arch_pl.qm index ac7d13021c..c482278e77 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 c8f32a08dc..e3ed9bfef7 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pl.ts @@ -204,12 +204,12 @@ Normalny kierunek wytłaczania tego obiektu (utrzymaj (0,0,0) dla typowego automatycznie) - + The linked object Obiekt połączony - + The line width of the rendered objects Gruboć linii renderowanych obiektów @@ -594,27 +594,27 @@ Pokaż cięcie w widoku 3D - + The rendering mode to use Tryb renderowania - + If cut geometry is shown or not Jeżeli pokazana jest geometria cięcia, czy nie - + If cut geometry is filled or not Jeśli geometria cięcia jest wypełniona lub nie - + The size of the texts inside this object Rozmiar tekstów wewnątrz tego obiektu - + If checked, source objects are displayed regardless of being visible in the 3D model Jeśli jest zaznaczone, obiekty źródłowe są wyświetlane niezależnie od tego, czy są widoczne w modelu 3D @@ -1039,12 +1039,12 @@ Lista grubości warstw - + The line color of the projected objects Kolor linii rzutowanych obiektów - + The color of the cut faces (if turned on) Kolor przyciętych powierzchni (jeśli jest włączony) @@ -1166,7 +1166,7 @@ An optional custom bubble number - Opcjonalny numer chmurki + Opcjonalny numer chmurki z adnotacją @@ -1176,7 +1176,7 @@ Where to add bubbles to this axis: Start, end, both or none - Gdzie dodać pęcherzyki do tej osi: Początek, koniec, jedno i drugie lub żadne z wymienionych + Gdzie dodać oznaczenia balonikowe dla osi: Początek, koniec, oba lub brak @@ -1326,7 +1326,7 @@ The base file this component is built upon - The base file this component is built upon + Plik bazowy, na którym zbudowany jest komponent @@ -1341,12 +1341,12 @@ If true, the colors from the linked file will be kept updated - If true, the colors from the linked file will be kept updated + Jeśli prawda, kolory z połączonego pliku będą aktualizowane The objects that must be considered by this section plane. Empty means the whole document. - The objects that must be considered by this section plane. Empty means the whole document. + Obiekty, które muszą być uwzględnione w tej płaszczyźnie przekroju. Jeśli pole pozostanie puste, cały dokument zostanie uwzględniony. @@ -1366,7 +1366,7 @@ The street and house number of this site, with postal box or apartment number if needed - The street and house number of this site, with postal box or apartment number if needed + Ulica i numer domu danej lokalizacji, z kodem pocztowym lub numerem mieszkania w razie potrzeby @@ -1391,7 +1391,7 @@ The width of a Landing (Second edge and after - First edge follows Width property) - The width of a Landing (Second edge and after - First edge follows Width property) + Szerokość Spocznika (Druga krawędź i dalej - Pierwsza krawędź jest zgodna z ustawieniem Szerokości) @@ -1406,7 +1406,7 @@ The depth of the treads of these stairs - Enforced regardless of Length or edge's Length - The depth of the treads of these stairs - Enforced regardless of Length or edge's Length + Głębokość stopni schodów - Wymuszona niezależnie od Długości lub Długości krawędzi @@ -1796,7 +1796,7 @@ The way the referenced objects are included in the current document. 'Normal' includes the shape, 'Transient' discards the shape when the object is switched off (smaller filesize), 'Lightweight' does not import the shape but only the OpenInventor representation - The way the referenced objects are included in the current document. 'Normal' includes the shape, 'Transient' discards the shape when the object is switched off (smaller filesize), 'Lightweight' does not import the shape but only the OpenInventor representation + Sposób, w jaki obiekty, do których istnieją odniesienia, są dołączone w bieżącym dokumencie. „Normalny” zawiera kształt, „Przejściowy” odrzuca kształt, gdy obiekt jest wyłączony (mniejszy rozmiar pliku), „Lekki” nie importuje kształtu, a jedynie reprezentację OpenInventor @@ -1856,22 +1856,22 @@ The width of the main top and bottom elements of the truss - The width of the main top and bottom elements of the truss + Szerokość głównego górnego i dolnego elementu kratownicy The type of the middle element of the truss - The type of the middle element of the truss + Typ środkowego elementu kratownicy The direction of the rods - The direction of the rods + Kierunek prętów The diameter or side of the rods - The diameter or side of the rods + Średnica lub bok prętów @@ -1881,7 +1881,7 @@ If the truss has a rod at its endpoint or not - If the truss has a rod at its endpoint or not + Wskazuje, czy kratownica zakończona jest prętem, czy nie @@ -1891,7 +1891,7 @@ This overrides Width attribute to set width of each segment of wall. Ignored if Base object provides Widths information, with getWidths() method. (The 1st value override 'Width' attribute for 1st segment of wall; if a value is zero, 1st value of 'OverrideWidth' will be followed) - This overrides Width attribute to set width of each segment of wall. Ignored if Base object provides Widths information, with getWidths() method. (The 1st value override 'Width' attribute for 1st segment of wall; if a value is zero, 1st value of 'OverrideWidth' will be followed) + Nadpisuje atrybut szerokości poszczególnych segmentów ściany. Nie zostanie uwzględnione, jeśli obiekt podstawowy zawiera już informacje o szerokościach, dane metodą getWidths(). (Pierwsza wartość zastępuje atrybut 'Szerokość' dla pierwszego segmentu ściany; jeśli wartość jest równa zeru, pierwsza wartość 'Nadpisana' zostanie użyta) @@ -1956,12 +1956,12 @@ The color of this material when cut - The color of this material when cut + Kolor materiału w przekroju The list of angles of the roof segments - The list of angles of the roof segments + Lista nachyleń segmentów dachu @@ -2001,17 +2001,17 @@ The total length of the borders of the roof - The total length of the borders of the roof + Całkowita długość kalenic dachu Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Określa, czy należy odwrócić nachylenie dachu Show the label in the 3D view - Show the label in the 3D view + Pokaż etykietę w widoku 3D @@ -2079,12 +2079,12 @@ contains a non-closed solid - zawiera niezamknięte stałe + zawiera niezamkniętą bryłę contains faces that are not part of any solid - zawiera fronty, które nie są częścią żadnych stałych + zawiera fronty, które nie należą do żadnej bryły @@ -2184,7 +2184,7 @@ This mesh is an invalid solid - Ta siatka nie jest poprawna + Ta siatka nie jest poprawną bryłą @@ -3070,7 +3070,7 @@ Tworzenie Budynku zostało przerwane. Property - Właściwości + Własność @@ -3211,37 +3211,37 @@ Tworzenie Piętra zostało przerwane. Stwórz zewnętrzne odniesienie - + Section plane settings Ustawienia płaszczyzny przekroju - + Objects seen by this section plane: Obiekty widoczene w tej płaszczyźnie przekroju: - + Section plane placement: Umiejscowienie płaszczyzny przekroju: - + Rotate X Obróć X - + Rotate Y Obróć Y - + Rotate Z Obróć Z - + Resize Zmień rozmiar @@ -3256,10 +3256,10 @@ Tworzenie Piętra zostało przerwane. Site is not allowed to accept any other object besides Building. Other objects will be removed from the selection. Note: You can change that in the preferences. - Proszę wybierać tylko obiekty Budynki albo nic! -Budowa nie może akceptować innego obiektu niż Budynek. + Wybierz tylko obiekty typu Budynek albo nie zaznaczaj niczego! +Lokalizacja nie może zawierać innego obiektu niż Budynek. Inne obiekty zostaną usunięte z zaznaczenia. -Możesz to zmienić w preferencjach. +Uwaga: Możesz to zmienić w preferencjach. @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Usuń podświetlone obiekty z listy powyżej - + Add selected Dodaj wybrane - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Obróć płaszczyznę względem osi X - + Rotates the plane along the Y axis Obróć płaszczyznę względem osi Y - + Rotates the plane along the Z axis Obróć płaszczyznę względem osi Z - + Resizes the plane to fit the objects in the list above Zmień rozmiar płaszczyzny, aby dopasować obiekty z powyższej listy - + Centers the plane on the objects in the list above Wyśrodkuje płaszczyznę na obiektach znajdujących się powyżej @@ -3555,7 +3555,7 @@ You can change that in the preferences. Curtain Wall - Curtain Wall + Ściana osłonowa @@ -3565,7 +3565,7 @@ You can change that in the preferences. Create Curtain Wall - Create Curtain Wall + Utwórz ścianę osłonową @@ -3630,7 +3630,7 @@ You can change that in the preferences. Choose which field provides shapes elevations: - Choose which field provides shapes elevations: + Wybierz, który z obszarów zawiera kształty elewacji: @@ -3808,7 +3808,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Kolor przekroju @@ -3829,7 +3829,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Add component - Dodaj składnik + Dodaj komponent @@ -3964,7 +3964,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Curtain Wall - Curtain Wall + Ściana osłonowa @@ -4773,7 +4773,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Property - Właściwości + Własność @@ -4813,7 +4813,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Add selection - Add selection + Dodaj wybrane @@ -5716,7 +5716,7 @@ Jeśli ta opcja jest zaznaczona, podczas łączenia dwóch podobnych ścian ich IFC2X3 - IFC2X3 + IFC2X3 @@ -5746,7 +5746,7 @@ Jeśli ta opcja jest zaznaczona, podczas łączenia dwóch podobnych ścian ich Dashdot - Dashdot + Kreska - kropka @@ -5771,7 +5771,7 @@ Jeśli ta opcja jest zaznaczona, podczas łączenia dwóch podobnych ścian ich Use material color as shape color - Use material color as shape color + Użyj koloru materiału jako koloru kształtu @@ -5797,9 +5797,9 @@ a Footprint display mode If this is selected, the "Open BimServer in browser" button will open the Bim Server interface in an external browser instead of the FreeCAD web workbench - If this is selected, the "Open BimServer in browser" -button will open the Bim Server interface in an external browser -instead of the FreeCAD web workbench + Jeśli zostanie wybrana ta opcja, "Otwórz BimServer w przeglądarce". +spowoduje otwarcie interfejsu Bim Server w zewnętrznej przeglądarce +zamiast w środowisku pracy Web programu FreeCAD diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-BR.qm b/src/Mod/Arch/Resources/translations/Arch_pt-BR.qm index 5fb444f0a4..073d072c77 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_pt-BR.qm and b/src/Mod/Arch/Resources/translations/Arch_pt-BR.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts b/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts index 74cc6dc8b8..e0c1cb5aa2 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pt-BR.ts @@ -204,12 +204,12 @@ A direção normal de extrusão deste objeto (mantenha (0,0,0) para normal automática) - + The linked object O objeto vinculado - + The line width of the rendered objects A largura da linha dos objetos renderizadas @@ -594,27 +594,27 @@ Mostrar o corte na vista 3D - + The rendering mode to use O modo de renderização a ser usado - + If cut geometry is shown or not Se a geometria cortada é mostrada ou não - + If cut geometry is filled or not Se a geometria cortada é preenchida ou não - + The size of the texts inside this object O tamanho dos textos dentro deste objeto - + If checked, source objects are displayed regardless of being visible in the 3D model Se esta casa estiver marcada, objetos fonte serão exibidos mesmo se estão invisíveis na vista 3D @@ -1039,12 +1039,12 @@ A lista de espessuras das camadas - + The line color of the projected objects A cor da linha dos objetos projetados - + The color of the cut faces (if turned on) A cor das faces cortadas (se ativado) @@ -3207,37 +3207,37 @@ Floor creation aborted. Criar referência externa - + Section plane settings Configurações do plano de corte - + Objects seen by this section plane: Objetos vistos por este plano de corte: - + Section plane placement: Localizador deste plano de corte: - + Rotate X Rotação X - + Rotate Y Rotação Y - + Rotate Z Rotação Z - + Resize Redimensionar @@ -3388,42 +3388,42 @@ You can change that in the preferences. Em um objeto do tipo Edificação, você pode colocar qualquer objeto, exceto: Sítio, Edificação. Objetos destes tipos serão removidos da seleção. Você pode mudar isso nas preferências. - + Remove highlighted objects from the list above Remover objetos destacados da lista acima - + Add selected Adicionar selecionados - + Add selected object(s) to the scope of this section plane Adicionar objeto(s) selecionado(s) ao escopo deste plano de secção - + Rotates the plane along the X axis Rotacionar o plano ao longo do eixo X - + Rotates the plane along the Y axis Rotacionar o plano ao longo do eixo Y - + Rotates the plane along the Z axis Rotacionar o plano ao longo do eixo Z - + Resizes the plane to fit the objects in the list above Redimensiona o plano para que os objetos da lista acima caibam - + Centers the plane on the objects in the list above Centraliza o plano na lista de objetos acima diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-PT.qm b/src/Mod/Arch/Resources/translations/Arch_pt-PT.qm index fee6af109a..f1a2abcac9 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_pt-PT.qm and b/src/Mod/Arch/Resources/translations/Arch_pt-PT.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts b/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts index be288d1e6b..e37ead86c0 100644 --- a/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts +++ b/src/Mod/Arch/Resources/translations/Arch_pt-PT.ts @@ -204,12 +204,12 @@ A direção normal de extrusão deste objeto (mantenha (0,0,0) para normal automática) - + The linked object O objeto ligado - + The line width of the rendered objects A espessura da linha dos objetos renderizados @@ -594,27 +594,27 @@ Mostrar o corte na vista 3D - + The rendering mode to use O modo de renderização a ser usado - + If cut geometry is shown or not Se a geometria cortada é mostrada ou não - + If cut geometry is filled or not Se a geometria cortada é preenchida ou não - + The size of the texts inside this object O tamanho dos textos dentro deste objeto - + If checked, source objects are displayed regardless of being visible in the 3D model Se marcado, objetos são mostrados independente de estarem visível no modelo 3D @@ -1039,12 +1039,12 @@ A lista de espessuras das camadas - + The line color of the projected objects A cor da linha dos objetos projetados - + The color of the cut faces (if turned on) A cor das faces cortadas (se ativado) @@ -1746,32 +1746,32 @@ The number of diagonal mullions - The number of diagonal mullions + O número de mainéis diagonais The size of the diagonal mullions, if any, if no profile is used - The size of the diagonal mullions, if any, if no profile is used + O tamanho dos mainéis diagonais, se existirem e se nenhum perfil for usado A profile for diagonal mullions, if any (disables horizontal mullion size) - A profile for diagonal mullions, if any (disables horizontal mullion size) + Um perfil para mainéis diagonais, se existirem (desativa o tamanho de mainel horizontal) The number of panels - The number of panels + Número de painéis The thickness of the panels - The thickness of the panels + Espessura dos painéis Swaps horizontal and vertical lines - Swaps horizontal and vertical lines + Troca as linhas horizontais e verticais @@ -3209,37 +3209,37 @@ Floor creation aborted. Criar referência externa - + Section plane settings Configurações do plano de corte - + Objects seen by this section plane: Objetos vistos por este plano de corte: - + Section plane placement: Posição do plano de corte: - + Rotate X Rodar X - + Rotate Y Rodar Y - + Rotate Z Rodar Z - + Resize Redimensionar @@ -3393,42 +3393,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Adicionar selecionados - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_ro.qm b/src/Mod/Arch/Resources/translations/Arch_ro.qm index b581b2ca8a..4635c8244d 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_ro.qm and b/src/Mod/Arch/Resources/translations/Arch_ro.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_ro.ts b/src/Mod/Arch/Resources/translations/Arch_ro.ts index 306d6ae8da..8ad574e60c 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ro.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ro.ts @@ -204,12 +204,12 @@ Direcția normala de extrudare a acestui obiect (păstrează (0,0,0) pentru normare automata) - + The linked object Obiectul corelat - + The line width of the rendered objects Lățimea liniei ale obiectelor redate @@ -594,27 +594,27 @@ Arată secțiunea în vizualizarea 3D - + The rendering mode to use Modul de redare de utilizat - + If cut geometry is shown or not Dacă geometria secțiunii este afișată sau nu - + If cut geometry is filled or not Dacă geometria secțiunii este umplută sau nu - + The size of the texts inside this object Dimensiunea textelor în interiorul acestui obiect - + If checked, source objects are displayed regardless of being visible in the 3D model În cazul în care bifat, sursa de obiecte sunt afişată indiferent dacă sunt vizibile sau nu în modelul 3D @@ -1039,12 +1039,12 @@ Lista de grosimi de strat - + The line color of the projected objects Culoarea obiectelor proiectate - + The color of the cut faces (if turned on) Culoarea tăiate feţele (dacă este activată) @@ -1671,7 +1671,7 @@ If true, the object's label is displayed - If true, the object's label is displayed + Dacă este adevărat, eticheta obiectului este afișată @@ -3205,37 +3205,37 @@ Floor creation aborted. Creează o referință externă - + Section plane settings Reglarea planului de secțiune - + Objects seen by this section plane: Obiect vizualizat în acest plan: - + Section plane placement: Amplasamentul planului de secțiune: - + Rotate X Rotaţie X - + Rotate Y Rotaţie Y - + Rotate Z Rotaţie Z - + Resize Redimensionați @@ -3386,42 +3386,42 @@ You can change that in the preferences. Puteți pune orice, în afară de Site, Obiecte de construcție, într-un obiect Construcție. Obiectele Construcție nu au voie să accepte un obiect Site sau obiecte Construcție. Site-ul și Obiectele Construcția vor fi eliminate din selecție. Puteți modifica acest lucru în preferințe. - + Remove highlighted objects from the list above Eliminați obiectele evidențiate din lista de mai sus - + Add selected Adaugă Selecția - + Add selected object(s) to the scope of this section plane Adăugați obiectul(ele) selectate la spațiul planului de sețiune - + Rotates the plane along the X axis Rotiți planul în jurul axei Y - + Rotates the plane along the Y axis Rotiți planul în jurul axei X - + Rotates the plane along the Z axis Rotiți planul în jurul axei Z - + Resizes the plane to fit the objects in the list above Redimensionează planul pentru a se potrivi la obiectele din lista de mai sus - + Centers the plane on the objects in the list above Centrează planul pentru a se potrivi pe obiectele din lista de mai sus diff --git a/src/Mod/Arch/Resources/translations/Arch_ru.qm b/src/Mod/Arch/Resources/translations/Arch_ru.qm index 443eea1092..5e5f9a9c4b 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 def12eca15..152361ceb7 100644 --- a/src/Mod/Arch/Resources/translations/Arch_ru.ts +++ b/src/Mod/Arch/Resources/translations/Arch_ru.ts @@ -204,12 +204,12 @@ Направление выдавливания объекта (оставить (0,0,0) для автоматического определения) - + The linked object Связанный объект - + The line width of the rendered objects Толщина линии отрисованных объектов @@ -594,27 +594,27 @@ Показать сечение в трёхмерном виде - + The rendering mode to use Используемый режим визуализации - + If cut geometry is shown or not Показывать ли сечение геометрии или нет - + If cut geometry is filled or not Делать ли заливку обрезанной геометрии или нет - + The size of the texts inside this object Размер текста внутри объекта - + If checked, source objects are displayed regardless of being visible in the 3D model Если флажок установлен, исходные объекты отображаются независимо от видимости в 3D-модели @@ -1039,12 +1039,12 @@ Список толщин слоя - + The line color of the projected objects Цвет линии проецируемых объектов - + The color of the cut faces (if turned on) Цвет сечения граней (если включен) @@ -3212,37 +3212,37 @@ Floor creation aborted. Создать внешнюю ссылку - + Section plane settings Настройки плоскости сечения - + Objects seen by this section plane: Объекты, видимые плоскостью сечения: - + Section plane placement: Размещение плоскости сечения: - + Rotate X Повернуть по X - + Rotate Y Повернуть по Y - + Rotate Z Повернуть по Z - + Resize Изменить размер @@ -3399,42 +3399,42 @@ You can change that in the preferences. Вы можете изменить это в настройках. - + Remove highlighted objects from the list above Удалите выделенные объекты из списка выше - + Add selected Добавить выбранное - + Add selected object(s) to the scope of this section plane Добавить выбранный объект(ы) в область этой плоскости сечения - + Rotates the plane along the X axis Поворачивает плоскость вдоль оси X - + Rotates the plane along the Y axis Поворачивает плоскость вдоль оси Y - + Rotates the plane along the Z axis Поворачивает плоскость вдоль оси Z - + Resizes the plane to fit the objects in the list above Изменяет плоскость по размеру объектов в списке - + Centers the plane on the objects in the list above Центровать плоскость по объектам в списке diff --git a/src/Mod/Arch/Resources/translations/Arch_sk.qm b/src/Mod/Arch/Resources/translations/Arch_sk.qm index 563da5fbdd..182db3b5a6 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_sk.qm and b/src/Mod/Arch/Resources/translations/Arch_sk.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_sk.ts b/src/Mod/Arch/Resources/translations/Arch_sk.ts index 755d33c0d3..5cd564f62a 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sk.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sk.ts @@ -204,12 +204,12 @@ The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The linked object Prepojený objekt - + The line width of the rendered objects The line width of the rendered objects @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_sl.qm b/src/Mod/Arch/Resources/translations/Arch_sl.qm index f5a1135777..0b41c0ef7f 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_sl.qm and b/src/Mod/Arch/Resources/translations/Arch_sl.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_sl.ts b/src/Mod/Arch/Resources/translations/Arch_sl.ts index bdc419219b..a724b6e057 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sl.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sl.ts @@ -204,12 +204,12 @@ Normala smeri izrivanja tega predmeta (pustite (0,0,0) za samodejno smer) - + The linked object Povezani predmet - + The line width of the rendered objects Debelina črte izrisanih predmetov @@ -594,27 +594,27 @@ Prikaži prerez v pogledu 3D - + The rendering mode to use Uporabljen način prikaza - + If cut geometry is shown or not Če je rezna geometrija prikazana ali ne - + If cut geometry is filled or not Če je rezna geometrija polnjena ali ne - + The size of the texts inside this object Velikost pisave znotraj predmeta - + If checked, source objects are displayed regardless of being visible in the 3D model Kadar obkljukano, izvori predmetov so prikazani ne glede na to ali so vidni v 3D modelu @@ -1039,12 +1039,12 @@ Seznam debeline slojev - + The line color of the projected objects Barva črt preslikanih predmetov - + The color of the cut faces (if turned on) Barva rezanih ploskev (če je vklopljeno) @@ -1681,7 +1681,7 @@ A slot to save the inventor representation of this object, if enabled - A slot to save the inventor representation of this object, if enabled + Mesto za shranjevanje predstavitve Inventor tega predmeta, če je mogoče @@ -1956,62 +1956,62 @@ The color of this material when cut - The color of this material when cut + Barva tega meriala v prerezu The list of angles of the roof segments - The list of angles of the roof segments + Seznam kotov strešnih odsekov The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + Seznam vodoravnih preslikav dolžin strešnih odsekov The list of IDs of the relative profiles of the roof segments - The list of IDs of the relative profiles of the roof segments + Seznam določilnikov odnosnih presekov strešnih odsekov The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + Seznam debelin strešnih odsekov The list of overhangs of the roof segments - The list of overhangs of the roof segments + Seznam napuščev strešnih odsekov The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + Seznam izračunanih višin strešnih odsekov The face number of the base object used to build the roof - The face number of the base object used to build the roof + Število ploskev osnovnega predmeta, uporabljenega za izdelavo strehe The total length of the ridges and hips of the roof - The total length of the ridges and hips of the roof + Skupna dolžina slemen in grebenov strehe The total length of the borders of the roof - The total length of the borders of the roof + Skupna dolžina robov strehe Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Določa ali naj se smer strehe obrne Show the label in the 3D view - Show the label in the 3D view + Prikaži oznako v 3D pogledu @@ -2304,7 +2304,7 @@ Merge Wall - Združi zid + Združi steno @@ -2314,7 +2314,7 @@ Merge Walls - Združi zidove + Združi stene @@ -3210,37 +3210,37 @@ Ustvarjanje etaže prekinjeno. Ustvari zunanji sklic - + Section plane settings Nastavitve prerezne ravnine - + Objects seen by this section plane: Predmeti, vidni v prerezni ravnini: - + Section plane placement: Umestitev prerezne ravnine: - + Rotate X Zavrti X - + Rotate Y Zavrti Y - + Rotate Z Zavrti Z - + Resize Spremeni velikost @@ -3396,42 +3396,42 @@ Stavba ne sprejema Lokacije in Stavbe, zato bodo ti predmeti izvzeti iz izbora. To lahko spremenite v nastavitvah. - + Remove highlighted objects from the list above Odstrani označene predmete z zgornjega seznama - + Add selected Dodaj izbrane - + Add selected object(s) to the scope of this section plane Dodaj izbrene predmete v območje te presečne ravnine - + Rotates the plane along the X axis Zasuka ravnino okrog osi X - + Rotates the plane along the Y axis Zasuka ravnino okrog osi Y - + Rotates the plane along the Z axis Zasuka ravnino okrog osi Z - + Resizes the plane to fit the objects in the list above Prevelikosti ravnino tako, da se bo prilega predmetom z zgornjega seznama - + Centers the plane on the objects in the list above Usredini ravnino na predmete z zgornjega seznama @@ -3628,7 +3628,7 @@ To lahko spremenite v nastavitvah. Choose which field provides shapes elevations: - Choose which field provides shapes elevations: + Označite polje za nárise oblik: @@ -3683,17 +3683,17 @@ To lahko spremenite v nastavitvah. If Angle = 0 and Run = 0 then the profile is identical to the relative profile. If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. If Run = 0 then the run is calculated so that the height is the same as the relative profile. - Parameters of the roof profiles : -* Angle : slope in degrees relative to the horizontal. -* Run : horizontal distance between the wall and the ridge. -* Thickness : thickness of the roof. -* Overhang : horizontal distance between the eave and the wall. -* Height : height of the ridge above the base (calculated automatically). -* IdRel : Id of the relative profile used for automatic calculations. + Določilke strešnih presekov: +* Naklon: nagib v stopinjah glede na vodoravnico. +* Vodoravni korak: vodoravna razdalja med steno in slemenom. +* Debelina: debelina strehe. +* Napušč: razdalja med kapom in steno. +* Višina: višina slemena nad izhodiščem (samodejno izračunano). +* IdRel: Določilnik odnosnega preseka za samodejne izračune. --- -If Angle = 0 and Run = 0 then the profile is identical to the relative profile. -If Angle = 0 then the angle is calculated so that the height is the same as the relative profile. -If Run = 0 then the run is calculated so that the height is the same as the relative profile. +Če je Naklon = 0 in Dolžina = 0, potem je presek enak odnosnemu preseku. +Če je Naklon = 0, potem je naklon izračunan tako, da je višina enaka višini odnosnega preseka. +Če je Vodoravni korak = 0, potem je vodoravni korak izračunan tako, da je višina enaka višini odnosnega preseka. @@ -3806,7 +3806,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Barva prereza @@ -4147,7 +4147,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Merge Walls - Združi zidove + Združi stene @@ -4848,7 +4848,7 @@ Pustite prazno, če želite uporabiti vse predmete v dokumentu Unnamed schedule - Unnamed schedule + Brezimen popis diff --git a/src/Mod/Arch/Resources/translations/Arch_sr.qm b/src/Mod/Arch/Resources/translations/Arch_sr.qm index 2d65b8f0c6..ee7c34401f 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_sr.qm and b/src/Mod/Arch/Resources/translations/Arch_sr.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_sr.ts b/src/Mod/Arch/Resources/translations/Arch_sr.ts index 2c749c72dc..31b862debf 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sr.ts @@ -204,12 +204,12 @@ The normal extrusion direction of this object (keep (0,0,0) for automatic normal) - + The linked object The linked object - + The line width of the rendered objects The line width of the rendered objects @@ -466,12 +466,12 @@ Wall thickness - Wall thickness + Дебљина зида Width of the beam - Width of the beam + Дебљина греде @@ -594,27 +594,27 @@ Show the cut in the 3D view - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ The list of layer thicknesses - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3212,37 +3212,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3399,42 +3399,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_sv-SE.qm b/src/Mod/Arch/Resources/translations/Arch_sv-SE.qm index 1b841bd5f8..debe3a30e7 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_sv-SE.qm and b/src/Mod/Arch/Resources/translations/Arch_sv-SE.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts b/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts index 7f99f28f67..8ba4adfcd3 100644 --- a/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts +++ b/src/Mod/Arch/Resources/translations/Arch_sv-SE.ts @@ -204,12 +204,12 @@ Extruderingsriktningsnormalen för detta objekt (låt vara på (0,0,0) för automatisk normal) - + The linked object Det länkade objektet - + The line width of the rendered objects Linjebredden hos de renderade objekten @@ -594,27 +594,27 @@ Visa trimningen i 3D-vyn - + The rendering mode to use Renderingsläget att använda - + If cut geometry is shown or not Om trimmad geometri ska visas eller inte - + If cut geometry is filled or not Om trimmad geometri ska vara fylld eller inte - + The size of the texts inside this object Storleken på texterna inuti detta objekt - + If checked, source objects are displayed regardless of being visible in the 3D model Om detta är ikryssat kommer källobjekt visas oavsett synlighet i 3D-modellen @@ -1039,12 +1039,12 @@ Listan över lagertjocklekar - + The line color of the projected objects Linjefärgen för de projicerade objekten - + The color of the cut faces (if turned on) Färgen på de trimmade ytorna (om aktiverat) @@ -3211,37 +3211,37 @@ Skapande av våning avbruten. Skapa extern referens - + Section plane settings Inställningar för sektionsplan - + Objects seen by this section plane: Objekt sedda av detta sektionsplan: - + Section plane placement: Section plane placement: - + Rotate X Rotera X - + Rotate Y Rotera Y - + Rotate Z Rotera Z - + Resize Ändra storlek @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Lägg till markerad - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_tr.qm b/src/Mod/Arch/Resources/translations/Arch_tr.qm index 6b396d5b2d..8d82083dfd 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_tr.qm and b/src/Mod/Arch/Resources/translations/Arch_tr.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_tr.ts b/src/Mod/Arch/Resources/translations/Arch_tr.ts index fbc0ec8897..38e0d076d8 100644 --- a/src/Mod/Arch/Resources/translations/Arch_tr.ts +++ b/src/Mod/Arch/Resources/translations/Arch_tr.ts @@ -204,12 +204,12 @@ Bu objenin bormal ekstrüzyon yönü ( Otomatik tanımlamak için (0,0,0) olarak ayarlayın) - + The linked object Bağlantı - + The line width of the rendered objects Render edilen objenin çizgi kalınlığı @@ -594,27 +594,27 @@ Kesmeyi 3D görünümde gösterin - + The rendering mode to use Kullanılacak işleme modu - + If cut geometry is shown or not Kesme geometrisi gösterilse veya gösterilmezse - + If cut geometry is filled or not Kesim geometrisi doldurulmuş veya doldurulmamışsa - + The size of the texts inside this object Bu nesnenin içindeki metinlerin boyutu - + If checked, source objects are displayed regardless of being visible in the 3D model İşaretlenirse, görünür olmasına bakılmaksızın kaynak nesneler 3D modelde görüntülenir @@ -1039,12 +1039,12 @@ Katman kalınlıklarının listesi - + The line color of the projected objects Yansıtılan nesnelerin rengi - + The color of the cut faces (if turned on) Kesme renk (açık değilse) karşı karşıya @@ -1956,17 +1956,17 @@ The color of this material when cut - The color of this material when cut + Kesildiği zaman bu malzemenin rengi The list of angles of the roof segments - The list of angles of the roof segments + Çatı bölümlerinin açılarının listesi The list of horizontal length projections of the roof segments - The list of horizontal length projections of the roof segments + Çatı bölümlerinin yatay uzunluk projeksiyonlarının listesi @@ -1976,17 +1976,17 @@ The list of thicknesses of the roof segments - The list of thicknesses of the roof segments + Çatı bölümlerinin kalınlık listesi The list of overhangs of the roof segments - The list of overhangs of the roof segments + Çatı bölümlerinin çıkıntılarının listesi The list of calculated heights of the roof segments - The list of calculated heights of the roof segments + Çatı bölümlerinin hesaplanan yüksekliklerinin listesi @@ -2001,17 +2001,17 @@ The total length of the borders of the roof - The total length of the borders of the roof + Çatının sınırlarının toplam uzunluğu Specifies if the direction of the roof should be flipped - Specifies if the direction of the roof should be flipped + Çatının yönünün çevrilip çevrilmeyeceğini belirtir Show the label in the 3D view - Show the label in the 3D view + Etiketi 3B görünümde göster @@ -2449,7 +2449,7 @@ Thickness (mm) - Kalınlığı (mm) + Kalınlık (mm) @@ -3211,37 +3211,37 @@ Zemin oluşturma işlemi iptal edildi. Harici referans oluştur - + Section plane settings Seçim düzlemi ayarları - + Objects seen by this section plane: Bu seçim düzlemi tarafından görülen nesneler: - + Section plane placement: Seçim düzlemi yerleşimi: - + Rotate X Döndür X - + Rotate Y Döndür Y - + Rotate Z Döndür Z - + Resize Yeniden boyutlandır @@ -3398,42 +3398,42 @@ Site, yapı ve zemin nesneleri seçimden kaldırılacaktır. Bunu tercihlerde değiştirebilirsiniz. - + Remove highlighted objects from the list above Yukarıdaki listede yer alan vurgulanmış nesneleri kaldır - + Add selected Seçileni ekle - + Add selected object(s) to the scope of this section plane Seçili nesne(leri) bu bölüm düzleminin kapsamına ekle - + Rotates the plane along the X axis Düzlemi X ekseni boyunca döndür - + Rotates the plane along the Y axis Düzlemi Y ekseni boyunca döndür - + Rotates the plane along the Z axis Düzlemi Z ekseni boyunca döndür - + Resizes the plane to fit the objects in the list above Yukarıdaki listede yer alan nesneleri düzlem üzerinde yeniden boyutlandır - + Centers the plane on the objects in the list above Yukarıdaki listede yer alan nesneleri düzlem üzerinde merkezle @@ -3808,7 +3808,7 @@ If Run = 0 then the run is calculated so that the height is the same as the rela Section Color - Section Color + Bölüm Rengi diff --git a/src/Mod/Arch/Resources/translations/Arch_uk.qm b/src/Mod/Arch/Resources/translations/Arch_uk.qm index 9e35a2fa80..5d08d856fe 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_uk.qm and b/src/Mod/Arch/Resources/translations/Arch_uk.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_uk.ts b/src/Mod/Arch/Resources/translations/Arch_uk.ts index fd8a3176c5..789884ae99 100644 --- a/src/Mod/Arch/Resources/translations/Arch_uk.ts +++ b/src/Mod/Arch/Resources/translations/Arch_uk.ts @@ -204,12 +204,12 @@ Нормальний напрямок видавлювання для цього об'єкта (залишити (0,0,0) для завдання автоматичної нормалі) - + The linked object Пов'язаний об'єкт - + The line width of the rendered objects Товщина лінії відтворюваних об'єктів @@ -436,12 +436,12 @@ The spacing between the holes of this element - The spacing between the holes of this element + Відстань між отворами елемента The length of the down floor of this element - The length of the down floor of this element + Довжина нижньої частини елемента @@ -594,27 +594,27 @@ Показати розріз в 3D перегляді - + The rendering mode to use The rendering mode to use - + If cut geometry is shown or not If cut geometry is shown or not - + If cut geometry is filled or not If cut geometry is filled or not - + The size of the texts inside this object The size of the texts inside this object - + If checked, source objects are displayed regardless of being visible in the 3D model If checked, source objects are displayed regardless of being visible in the 3D model @@ -1039,12 +1039,12 @@ Перелік товщин шарів - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) The color of the cut faces (if turned on) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_val-ES.qm b/src/Mod/Arch/Resources/translations/Arch_val-ES.qm index de9c299116..17be173ce5 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_val-ES.qm and b/src/Mod/Arch/Resources/translations/Arch_val-ES.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_val-ES.ts b/src/Mod/Arch/Resources/translations/Arch_val-ES.ts index a19bb9f36b..6e00659afa 100644 --- a/src/Mod/Arch/Resources/translations/Arch_val-ES.ts +++ b/src/Mod/Arch/Resources/translations/Arch_val-ES.ts @@ -204,12 +204,12 @@ La direcció d'extrusió normal d'aquest objecte (mantín (0,0,0) per a automàtica) - + The linked object L'objecte enllaçat - + The line width of the rendered objects L'amplària de la línia dels objectes renderitzats @@ -594,27 +594,27 @@ Mostra el tall en la vista 3D - + The rendering mode to use El mode de renderització que s'ha d'utilitzar - + If cut geometry is shown or not Si es mostra o no la geometria de tall - + If cut geometry is filled or not Si s'ompli o no la geometria de tall - + The size of the texts inside this object La mida dels textos dins d'aquest objecte - + If checked, source objects are displayed regardless of being visible in the 3D model Si està marcada, els objectes d'origen es mostren independentment que siguen visibles en el model 3D @@ -1039,12 +1039,12 @@ La llista dels gruixos de capa - + The line color of the projected objects El color de la línia dels objectes projectats - + The color of the cut faces (if turned on) El color de les cares retallades (si està activat) @@ -3204,37 +3204,37 @@ Floor creation aborted. Crea una referència externa - + Section plane settings Configuració del pla de secció - + Objects seen by this section plane: Objectes vistos en aquest pla de secció: - + Section plane placement: Posicionament del pla de secció: - + Rotate X Gira X - + Rotate Y Gira Y - + Rotate Z Gira Z - + Resize Canvia la mida @@ -3385,42 +3385,42 @@ You can change that in the preferences. Podeu col·locar qualsevol cosa en un objecte Construcció excepte els objectes Lloc i Construcció ja que els objectes Construcció no els accepta. Els objectes Lloc i Construcció s'eliminaran de la selecció. Podeu canviar açò en les preferències. - + Remove highlighted objects from the list above Elimina els objectes ressaltats de la llista anterior - + Add selected Afig el seleccionat - + Add selected object(s) to the scope of this section plane Afig l'objecte o els objectes seleccionats a l'àmbit d'aquest pla de secció - + Rotates the plane along the X axis Gira el pla al llarg de l'eix X - + Rotates the plane along the Y axis Gira el pla al llarg de l'eix Y - + Rotates the plane along the Z axis Gira el pla al llarg de l'eix Z - + Resizes the plane to fit the objects in the list above Canvia la mida del pla per a ajustar els objectes en la llista anterior - + Centers the plane on the objects in the list above Centra el pla sobre els objectes de la llista anterior diff --git a/src/Mod/Arch/Resources/translations/Arch_vi.qm b/src/Mod/Arch/Resources/translations/Arch_vi.qm index 2730c9b66f..e8661c3bac 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_vi.qm and b/src/Mod/Arch/Resources/translations/Arch_vi.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_vi.ts b/src/Mod/Arch/Resources/translations/Arch_vi.ts index e55f9d3836..c9cb505bfc 100644 --- a/src/Mod/Arch/Resources/translations/Arch_vi.ts +++ b/src/Mod/Arch/Resources/translations/Arch_vi.ts @@ -204,12 +204,12 @@ Hướng đùn thông thường của đối tượng này (giữ mặc định ở (0,0,0)) - + The linked object Đối tượng được liên kết - + The line width of the rendered objects Độ dày của các đối tượng được hiển thị @@ -594,27 +594,27 @@ Hiển thị vết cắt ở chế độ xem 3D - + The rendering mode to use Chế độ hình chiếu để sử dụng - + If cut geometry is shown or not Nếu hình cắt có được hiển thị hay không - + If cut geometry is filled or not Nếu hình cắt có được lấp đầy hay không - + The size of the texts inside this object Kích thước của các văn bản bên trong bộ phận này - + If checked, source objects are displayed regardless of being visible in the 3D model Nếu được chọn, các đối tượng sẽ hiển thị bất kể chúng có hiển thị trong mô hình 3D hay không @@ -1039,12 +1039,12 @@ Danh sách của chiều dày các lớp - + The line color of the projected objects Màu đường của các đối tượng được chiếu - + The color of the cut faces (if turned on) Màu sắc của các mặt cắt (nếu kích hoạt) @@ -3210,37 +3210,37 @@ Việc tạo tầng bị gián đoạn. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3397,42 +3397,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Thêm đối tượng đã chọn - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-CN.qm b/src/Mod/Arch/Resources/translations/Arch_zh-CN.qm index e8af97ca27..0640ef5fdd 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_zh-CN.qm and b/src/Mod/Arch/Resources/translations/Arch_zh-CN.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts b/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts index 183e0c11ae..40dc06a76d 100644 --- a/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts +++ b/src/Mod/Arch/Resources/translations/Arch_zh-CN.ts @@ -204,12 +204,12 @@ 该对象的法向拉伸方向((0,0,0)表示自动法向) - + The linked object 链接的对象 - + The line width of the rendered objects 着色对象的线宽 @@ -594,27 +594,27 @@ 在3D 视图中显示修剪 - + The rendering mode to use 要使用的渲染模式 - + If cut geometry is shown or not 几何属性是否显示 - + If cut geometry is filled or not 几何属性是否填充 - + The size of the texts inside this object 此对象内文本的大小 - + If checked, source objects are displayed regardless of being visible in the 3D model 如果选中, 则无论在3D 模型中是否可见, 都将显示源对象 @@ -1039,12 +1039,12 @@ 层厚度列表 - + The line color of the projected objects 投影对象的线条颜色 - + The color of the cut faces (if turned on) 剪切面的颜色 (如果打开) @@ -3210,37 +3210,37 @@ Floor creation aborted. 创建外部引用 - + Section plane settings 截面平面设置 - + Objects seen by this section plane: 剖面中所看到的对象: - + Section plane placement: 截面平面放置: - + Rotate X 沿 X 轴旋转 - + Rotate Y 旋转 Y - + Rotate Z 绕Z轴旋转 - + Resize 调整尺寸 @@ -3397,42 +3397,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected 添加所选 - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-TW.qm b/src/Mod/Arch/Resources/translations/Arch_zh-TW.qm index 70dbd452ca..441b0faea2 100644 Binary files a/src/Mod/Arch/Resources/translations/Arch_zh-TW.qm and b/src/Mod/Arch/Resources/translations/Arch_zh-TW.qm differ diff --git a/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts b/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts index 24e183e4b4..157090c9e9 100644 --- a/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts +++ b/src/Mod/Arch/Resources/translations/Arch_zh-TW.ts @@ -204,12 +204,12 @@ 該對象的法向拉伸方向(保持 (0,0,0) 表示自動法向) - + The linked object 鏈接的對象 - + The line width of the rendered objects 著色對象的線寬 @@ -594,27 +594,27 @@ 在3 D 視圖中顯示修剪 - + The rendering mode to use 要使用的渲染模式 - + If cut geometry is shown or not 是否顯示修剪幾何 - + If cut geometry is filled or not 修剪幾何是否填充 - + The size of the texts inside this object 此對象內文本的大小 - + If checked, source objects are displayed regardless of being visible in the 3D model 如果選中,則無論在 3D 模型中是否可見,都將顯示源對象 @@ -1039,12 +1039,12 @@ 層厚度清單 - + The line color of the projected objects The line color of the projected objects - + The color of the cut faces (if turned on) 修剪面的顏色 (如果打開) @@ -3211,37 +3211,37 @@ Floor creation aborted. Create external reference - + Section plane settings Section plane settings - + Objects seen by this section plane: Objects seen by this section plane: - + Section plane placement: Section plane placement: - + Rotate X Rotate X - + Rotate Y Rotate Y - + Rotate Z Rotate Z - + Resize Resize @@ -3398,42 +3398,42 @@ Site and Building objects will be removed from the selection. You can change that in the preferences. - + Remove highlighted objects from the list above Remove highlighted objects from the list above - + Add selected Add selected - + Add selected object(s) to the scope of this section plane Add selected object(s) to the scope of this section plane - + Rotates the plane along the X axis Rotates the plane along the X axis - + Rotates the plane along the Y axis Rotates the plane along the Y axis - + Rotates the plane along the Z axis Rotates the plane along the Z axis - + Resizes the plane to fit the objects in the list above Resizes the plane to fit the objects in the list above - + Centers the plane on the objects in the list above Centers the plane on the objects in the list above diff --git a/src/Mod/Arch/TestArch.py b/src/Mod/Arch/TestArch.py index 6e71b68dff..07c07b974c 100644 --- a/src/Mod/Arch/TestArch.py +++ b/src/Mod/Arch/TestArch.py @@ -1,5 +1,3 @@ -# Unit test for the Arch module - #*************************************************************************** #* Copyright (c) 2013 Yorik van Havre * #* * @@ -23,6 +21,8 @@ #* * #***************************************************************************/ +# Unit test for the Arch module + import os import unittest diff --git a/src/Mod/Arch/exportIFC.py b/src/Mod/Arch/exportIFC.py index df8a55a28d..5d3b491d97 100644 --- a/src/Mod/Arch/exportIFC.py +++ b/src/Mod/Arch/exportIFC.py @@ -53,9 +53,9 @@ from draftutils.messages import _msg, _err if FreeCAD.GuiUp: import FreeCADGui -__title__ = "FreeCAD IFC export" +__title__ = "FreeCAD IFC export" __author__ = ("Yorik van Havre", "Jonathan Wiedemann", "Bernd Hahnebach") -__url__ = "https://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" # Save the Python open function because it will be redefined if open.__module__ in ['__builtin__', 'io']: @@ -195,6 +195,16 @@ def export(exportList, filename, colors=None, preferences=None): "Visit https://wiki.freecadweb.org/IfcOpenShell " "to learn about installing it.") return + if filename.lower().endswith("json"): + import json + try: + from ifcjson import ifc2json5a + except: + try: + import ifc2json5a + except: + _err("Error: Unable to locate ifc2json5a module. Aborting.") + return starttime = time.time() @@ -479,7 +489,7 @@ def export(exportList, filename, colors=None, preferences=None): ifctype = "IfcBuildingElementProxy" # getting the representation - + # ignore the own shape for assembly objects skipshape = False if assemblyElements: @@ -1534,7 +1544,10 @@ def export(exportList, filename, colors=None, preferences=None): filename = decode(filename) - 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 @@ -1542,7 +1555,7 @@ def export(exportList, filename, colors=None, preferences=None): os.remove(templatefile) - if preferences['DEBUG'] and ifcbin.compress: + if preferences['DEBUG'] and ifcbin.compress and (not filename.lower().endswith("json")): f = pyopen(filename,"r") s = len(f.read().split("\n")) f.close() @@ -1637,12 +1650,12 @@ def getIfcTypeFromObj(obj): if not "::" in ifctype: ifctype = "Ifc" + ifctype - elif ifctype == "App::DocumentObjctGroup": + elif ifctype == "IfcApp::DocumentObjctGroup": ifctype = "IfcGroup" else: # it makes no sense to return IfcPart::Cylinder for a Part::Cylinder # this is not a ifctype at all - ifctype = None + ifctype = None # print("Return value of getIfcTypeFromObj: {}".format(ifctype)) return ifctype @@ -2364,6 +2377,7 @@ def getText(field,obj): result = result.encode("utf8") return result + def getAxisContext(ifcfile): """gets or creates an axis context""" @@ -2379,6 +2393,7 @@ def getAxisContext(ifcfile): nctx = ifcfile.createIfcGeometricRepresentationSubContext('Axis','Model',None,None,None,None,ctx,None,"MODEL_VIEW",None); return nctx + def createAxis(ifcfile,obj,preferences): """Creates an axis for a given wall, if applicable""" @@ -2391,3 +2406,25 @@ def createAxis(ifcfile,obj,preferences): axis = ifcfile.createIfcShapeRepresentation(ctx,'Axis','Curve2D',[curve]) return axis return None + + +def writeJson(filename,ifcfile): + + """writes an .ifcjson file""" + + import json + try: + from ifcjson import ifc2json5a + except: + try: + import ifc2json5a + except: + print("Error: Unable to locate ifc2json5a module. Aborting.") + return + print("Converting IFC to JSON...") + jsonfile = ifc2json5a.IFC2JSON5a(ifcfile).spf2Json() + f = pyopen(filename,'w') + s = json.dumps(jsonfile,indent=4) + #print("json:",s) + f.write(s) + f.close() diff --git a/src/Mod/Arch/exportIFCHelper.py b/src/Mod/Arch/exportIFCHelper.py index 4b8c98cff7..fb113e6ab0 100644 --- a/src/Mod/Arch/exportIFCHelper.py +++ b/src/Mod/Arch/exportIFCHelper.py @@ -38,10 +38,10 @@ def getObjectsOfIfcType(objects, ifcType): def writeUnits(ifcfile,unit="metre"): - + """adds additional units settings to the given ifc file if needed""" # so far, only metre or foot possible (which is all revit knows anyway) - + if unit == "foot": d1 = ifcfile.createIfcDimensionalExponents(1,0,0,0,0,0,0); d2 = ifcfile.createIfcMeasureWithUnit(ifcfile.createIfcRatioMeasure(0.3048),ifcfile[13]) @@ -395,7 +395,7 @@ class recycler: if self.compress: self.psas[key] = c return c - + def createIfcRectangleProfileDef(self,name,mode,pt,b,h): key = "RECT"+str(name)+str(mode)+str(pt)+str(b)+str(h) if self.compress and self.mergeProfiles and key in self.profiledefs: diff --git a/src/Mod/Arch/import3DS.py b/src/Mod/Arch/import3DS.py index 9942aa9a8a..11d1a0c6fb 100644 --- a/src/Mod/Arch/import3DS.py +++ b/src/Mod/Arch/import3DS.py @@ -1,5 +1,5 @@ #*************************************************************************** -#* Copyright (c) 2016 Yorik van Havre * +#* Copyright (c) 2016 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) * @@ -22,9 +22,9 @@ from __future__ import print_function import os,FreeCAD,Mesh -__title__="FreeCAD 3DS importer" +__title__ = "FreeCAD 3DS importer" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" DEBUG = True @@ -45,11 +45,11 @@ def check3DS(): return False else: return True - + def open(filename): "called when freecad wants to open a file" - if not check3DS(): + if not check3DS(): return docname = (os.path.splitext(os.path.basename(filename))[0]).encode("utf8") doc = FreeCAD.newDocument(docname) @@ -61,7 +61,7 @@ def open(filename): def insert(filename,docname): "called when freecad wants to import a file" - if not check3DS(): + if not check3DS(): return try: doc = FreeCAD.getDocument(docname) diff --git a/src/Mod/Arch/importDAE.py b/src/Mod/Arch/importDAE.py index a8036fd62d..35a49e8083 100644 --- a/src/Mod/Arch/importDAE.py +++ b/src/Mod/Arch/importDAE.py @@ -34,9 +34,9 @@ else: # # This module provides tools to import and export Collada (.dae) files. -__title__="FreeCAD Collada importer" +__title__ = "FreeCAD Collada importer" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" DEBUG = True @@ -47,9 +47,9 @@ except NameError: pass def checkCollada(): - + "checks if collada if available" - + global collada COLLADA = None try: @@ -59,12 +59,12 @@ def checkCollada(): return False else: return True - - + + def triangulate(shape): - + "triangulates the given face" - + p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") mesher = p.GetInt("ColladaMesher",0) tessellation = p.GetFloat("ColladaTessellation",1.0) @@ -83,12 +83,12 @@ def triangulate(shape): SegPerRadius=segsperradius,SecondOrder=secondorder,Optimize=optimize, AllowQuad=allowquads).Topology - + def open(filename): "called when freecad wants to open a file" - if not checkCollada(): + if not checkCollada(): return docname = (os.path.splitext(os.path.basename(filename))[0]).encode("utf8") doc = FreeCAD.newDocument(docname) @@ -102,7 +102,7 @@ def insert(filename,docname): "called when freecad wants to import a file" - if not checkCollada(): + if not checkCollada(): return try: doc = FreeCAD.getDocument(docname) @@ -129,9 +129,9 @@ def decode(name): def read(filename): - + "reads a DAE file" - + global col col = collada.Collada(filename, ignore=[collada.DaeUnsupportedError]) # Read the unitmeter info from dae file and compute unit to convert to mm @@ -186,12 +186,12 @@ def read(filename): def export(exportList,filename,tessellation=1,colors=None): - + """export(exportList,filename,tessellation=1,colors=None) -- exports FreeCAD contents to a DAE file. colors is an optional dictionary of objName:shapeColorTuple or objName:diffuseColorList elements to be used in non-GUI mode if you want to be able to export colors. Tessellation is used when breaking curved surfaces into triangles.""" - + if not checkCollada(): return p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") scale = p.GetFloat("ColladaScalingFactor",1.0) diff --git a/src/Mod/Arch/importGBXML.py b/src/Mod/Arch/importGBXML.py index 86a6a92466..3c54de64e8 100644 --- a/src/Mod/Arch/importGBXML.py +++ b/src/Mod/Arch/importGBXML.py @@ -19,9 +19,9 @@ #* * #*************************************************************************** -__title__= "FreeCAD GbXml exporter" +__title__ = "FreeCAD GbXml exporter" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import os,FreeCAD,Draft @@ -32,15 +32,15 @@ else: def translate(ctx,txt): return txt # \endcond - + ## @package importGBXML # \ingroup ARCH # \brief GBXML file format exporter # # This module provides tools to export GBXML files. - + def export(objectslist,filename): - + if len(objectslist) != 1: FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") return @@ -48,13 +48,13 @@ def export(objectslist,filename): if Draft.getType(site) != "Site": FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")+"\n") return - + filestream = pyopen(filename,"wb") - + # header filestream.write( '\n' ) filestream.write( '\n' % FreeCAD.Version()[0]+FreeCAD.Version()[1]+FreeCAD.Version()[2] ) - filestream.write( '\n' % (building.Name,building.BuildingType) ) filestream.write( ' $f\n' % str(building.Area.getValueAs("m^2")) ) - + # spaces for space in Draft.getObjectsOfType(Draft.get_group_contents(building.Group, addgroups=True), "Space"): @@ -100,7 +100,7 @@ def export(objectslist,filename): filestream.write( ' $f\n' % space.Area.getValueAs("m^2") ) filestream.write( ' $f\n' % FreeCAD.Units.Quantity(space.Shape.Volume,FreeCAD.Units.Volume).getValueAs("m^3") ) filestream.write( ' \n' % space.Name ) - + # shells for solid in space.Shape.Solids: filestream.write( ' \n' ) @@ -116,7 +116,7 @@ def export(objectslist,filename): filestream.write( ' \n' ) filestream.write( ' \n' ) filestream.write( ' \n' ) - + # surfaces for i,face in enumerate(space.Shape.Faces): filestream.write( ' \n' ) filestream.write( ' \n' ) filestream.write( ' \n' ) - + filestream.write( ' \n' ) - + filestream.write( ' \n' ) - + filestream.write( '\n' ) - + filestream.write( '' ) -''' +''' 18000.00000 Lab corridor @@ -179,7 +179,7 @@ def export(objectslist,filename): - + @@ -206,19 +206,19 @@ def export(objectslist,filename): - - - - + + + + 21E2 ... repeat - - - + + + Floor @@ -268,8 +268,8 @@ def export(objectslist,filename): - - + + Surface 4 @@ -415,7 +415,7 @@ def export(objectslist,filename): - + ... repeat diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index f873f4c591..60959f17a7 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -49,9 +49,9 @@ from draftutils.messages import _msg, _err if FreeCAD.GuiUp: import FreeCADGui as Gui -__title__ = "FreeCAD IFC importer - Enhanced ifcopenshell-only version" +__title__ = "FreeCAD IFC importer - Enhanced IfcOpenShell-only version" __author__ = ("Yorik van Havre", "Jonathan Wiedemann", "Bernd Hahnebach") -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" DEBUG = False # Set to True to see debug messages. Otherwise, totally silent ZOOMOUT = True # Set to False to not zoom extents after import diff --git a/src/Mod/Arch/importIFCHelper.py b/src/Mod/Arch/importIFCHelper.py index 7f980276c1..abf2e937d7 100644 --- a/src/Mod/Arch/importIFCHelper.py +++ b/src/Mod/Arch/importIFCHelper.py @@ -453,7 +453,7 @@ def getColorFromStyledItem(styled_item): # this is an error in the IFC file in my opinion else: # never seen an ifc with more than one Styles in IfcStyledItem - # the above seams to only apply for IFC2x3, IFC4 can have them + # the above seams to only apply for IFC2x3, IFC4 can have them # see https://forum.freecadweb.org/viewtopic.php?f=39&t=33560&p=437056#p437056 # Get the `IfcPresentationStyleAssignment`, there should only be one, diff --git a/src/Mod/Arch/importOBJ.py b/src/Mod/Arch/importOBJ.py index 5135ecbac3..af43fe55c8 100644 --- a/src/Mod/Arch/importOBJ.py +++ b/src/Mod/Arch/importOBJ.py @@ -248,10 +248,10 @@ def export(exportList,filename,colors=None): outfile.write("f" + f + "\n") outfile.close() FreeCAD.Console.PrintMessage(translate("Arch","Successfully written") + " " + decode(filename) + "\n") - if materials: + if materials: outfile = pythonopen(filenamemtl,"w") outfile.write("# FreeCAD v" + ver[0] + "." + ver[1] + " build" + ver[2] + " Arch module\n") - outfile.write("# http://www.freecadweb.org\n") + outfile.write("# https://www.freecadweb.org\n") kinds = {"AmbientColor":"Ka ","DiffuseColor":"Kd ","SpecularColor":"Ks ","EmissiveColor":"Ke ","Transparency":"Tr "} done = [] # store names to avoid duplicates for mat in materials: diff --git a/src/Mod/Arch/importSH3D.py b/src/Mod/Arch/importSH3D.py index 37b351c9ce..31ebe74c8f 100644 --- a/src/Mod/Arch/importSH3D.py +++ b/src/Mod/Arch/importSH3D.py @@ -20,9 +20,9 @@ #*************************************************************************** from __future__ import print_function -__title__ = "FreeCAD SweetHome3D importer" +__title__ = "FreeCAD SweetHome3D Importer" __author__ = "Yorik van Havre" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import os,zipfile,xml.sax,FreeCAD,Part,Draft,Arch,Mesh,tempfile,math,Sketcher @@ -46,7 +46,7 @@ def open(filename): FreeCAD.ActiveDocument = doc read(filename) return doc - + def insert(filename,docname): "called when freecad wants to import a file" @@ -74,7 +74,7 @@ def decode(name): def read(filename): "reads the file and creates objects in the active document" - + z = zipfile.ZipFile(filename) homexml = z.read("Home.xml") handler = SH3DHandler(z) @@ -105,15 +105,15 @@ def read(filename): class SH3DHandler(xml.sax.ContentHandler): def __init__(self,z): - + self.makeIndividualWalls = False self.z = z self.windows = [] self.furniture = [] self.lines = {} - + def startElement(self, tag, attributes): - + if tag == "wall": name = attributes["id"] p1 = FreeCAD.Vector(float(attributes["xStart"])*10,float(attributes["yStart"])*10,0) @@ -127,7 +127,7 @@ class SH3DHandler(xml.sax.ContentHandler): wall.Label = name else: self.lines.setdefault(str(thickness)+";"+str(height),[]).append(line) - + elif tag == "pieceOfFurniture": name = attributes["name"] data = self.z.read(attributes["model"]) @@ -156,7 +156,7 @@ class SH3DHandler(xml.sax.ContentHandler): obj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",name) obj.Mesh = m self.furniture.append(obj) - + elif tag == "doorOrWindow": name = attributes["name"] data = self.z.read(attributes["model"]) diff --git a/src/Mod/Arch/importSHP.py b/src/Mod/Arch/importSHP.py index f31a6e78fb..304a439859 100644 --- a/src/Mod/Arch/importSHP.py +++ b/src/Mod/Arch/importSHP.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- #*************************************************************************** -#* * #* Copyright (c) 2020 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * @@ -53,7 +52,7 @@ def insert(filename,docname,record=None): if not checkShapeFileLibrary(): return - + import shapefile import Part @@ -61,7 +60,7 @@ def insert(filename,docname,record=None): # doc at https://github.com/GeospatialPython/pyshp shp = shapefile.Reader(filename) - + # check which record to use for elevation if not record: fields = ["None"] + [field[0] for field in shp.fields] @@ -74,7 +73,7 @@ def insert(filename,docname,record=None): fields) if reply[1] and reply[0] != "None": record = reply[0] - + # build shapes shapes = [] for shaperec in shp.shapeRecords(): @@ -114,7 +113,7 @@ def insert(filename,docname,record=None): FreeCAD.Console.PrintWarning(translate("Arch","No shape found in this file")+"\n") def getFields(filename): - + """returns the fields found in the given file""" if not checkShapeFileLibrary(): @@ -124,7 +123,7 @@ def getFields(filename): return [field[0] for field in shp.fields] def checkShapeFileLibrary(): - + """Looks for and/or installs the ShapeFile library""" try: @@ -135,10 +134,10 @@ def checkShapeFileLibrary(): import addonmanager_utilities import FreeCADGui from PySide import QtGui - reply = QtGui.QMessageBox.question(FreeCADGui.getMainWindow(), - translate("Arch","Shapefile module not found"), + reply = QtGui.QMessageBox.question(FreeCADGui.getMainWindow(), + translate("Arch","Shapefile module not found"), translate("Arch","The shapefile python library was not found on your system. Would you like to download it now from https://github.com/GeospatialPython/pyshp? It will be placed in your macros folder."), - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: u = addonmanager_utilities.urlopen(url) diff --git a/src/Mod/Arch/importWebGL.py b/src/Mod/Arch/importWebGL.py index 046d78d11d..f8d2e27cea 100644 --- a/src/Mod/Arch/importWebGL.py +++ b/src/Mod/Arch/importWebGL.py @@ -52,7 +52,7 @@ if open.__module__ in ['__builtin__','io']: pythonopen = open # \ingroup ARCH # \brief FreeCAD WebGL Exporter # -# This module provides tools to export HTML files containing the +# This module provides tools to export HTML files containing the # exported objects in WebGL format and a simple three.js-based viewer. disableCompression = False # Compress object data before sending to JS @@ -807,4 +807,4 @@ def baseEncode( arr ): output.append( buffer ) if len(buffer) > longest: longest = len(buffer) output = [('{:>'+str(longest)+'}').format(x) for x in output] # pad each element - return str(longest) + ('').join(output) + return str(longest) + ('').join(output) \ No newline at end of file diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_af.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_af.qm index d651be8f81..0dcd86e45b 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_af.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_af.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ar.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ar.qm index 70a1f5348d..cc86d89836 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ar.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ar.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ca.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ca.qm index b5a25df20a..6e7e048786 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ca.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ca.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_cs.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_cs.qm index fa99e6455b..32882f789d 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_cs.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_cs.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_de.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_de.qm index 9c745a1bf6..68f0024237 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_de.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_de.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_el.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_el.qm index 343ab2ea8c..6f28d1a3cd 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_el.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_el.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_es-ES.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_es-ES.qm index fec2d10e22..4e64dd02a3 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_es-ES.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_es-ES.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_eu.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_eu.qm index b6cd24fe1b..66bed897f3 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_eu.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_eu.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.qm index 4f95e67344..10e0620b1d 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fil.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fil.qm index c0028bfeeb..d690ac86a5 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fil.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fil.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.qm index ad4b8cdf87..17b7edb863 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_gl.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_gl.qm index 2e2a621eaa..a1891a33d4 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_gl.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_gl.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.qm index d37fe5bfce..d15d60322b 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_hu.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_hu.qm index e154878505..635fd55258 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_hu.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_hu.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_id.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_id.qm index c0df1a383b..c797852643 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_id.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_id.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_it.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_it.qm index fbbfff7c08..5d82a2d89e 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_it.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_it.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ja.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ja.qm index a7cb952769..a6960d8f93 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ja.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ja.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_kab.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_kab.qm index ea6007e333..33242d2a69 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_kab.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_kab.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ko.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ko.qm index 8dfd66f1e8..ebb47e2b33 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ko.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ko.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_lt.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_lt.qm index 2665286b12..dc5496a745 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_lt.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_lt.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.qm index 56546d393f..849bdefa88 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_no.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_no.qm index 727a3e9272..6eb34a4bd1 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_no.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_no.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pl.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pl.qm index a4a8800603..411001b94d 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pl.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pl.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-BR.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-BR.qm index 06afbfe3b4..6c8832ae0a 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-BR.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-BR.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-PT.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-PT.qm index 6cbd272ab3..d584dcad21 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-PT.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_pt-PT.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ro.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ro.qm index 5faa6f3315..4c7594e083 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ro.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ro.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.qm index fda2b167b4..53e9926512 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sk.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sk.qm index 16519f898a..d16730a8cf 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sk.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sk.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sl.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sl.qm index d6b6f98e57..2f560fa0ce 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sl.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sl.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sr.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sr.qm index b839cff56a..544e781047 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sr.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sr.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sv-SE.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sv-SE.qm index ee8dc84244..510c7f6c8c 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_sv-SE.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_sv-SE.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_tr.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_tr.qm index 8a6c27578b..ed2d9d6a3e 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_tr.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_tr.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.qm index 34ff3777b5..97f021f518 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_val-ES.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_val-ES.qm index 21436f8e30..0aca5fe3ce 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_val-ES.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_val-ES.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_vi.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_vi.qm index 50875158d5..47bbfba245 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_vi.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_vi.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-CN.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-CN.qm index eb7204573c..36cc92cd38 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-CN.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-CN.qm differ diff --git a/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-TW.qm b/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-TW.qm index 54d1017eb3..b81c24bc14 100644 Binary files a/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-TW.qm and b/src/Mod/Assembly/Gui/Resources/translations/Assembly_zh-TW.qm differ diff --git a/src/Mod/Draft/App/dxf.cpp b/src/Mod/Draft/App/dxf.cpp index 2bb8eb5f93..68df930de8 100644 --- a/src/Mod/Draft/App/dxf.cpp +++ b/src/Mod/Draft/App/dxf.cpp @@ -194,7 +194,7 @@ double CDxfRead::mm( double value ) const { if(m_measurement_inch) { - value *= 0.0393700787401575; + value *= 25.4; } switch(m_eUnits) diff --git a/src/Mod/Draft/CMakeLists.txt b/src/Mod/Draft/CMakeLists.txt index b684d6f33d..8ba6ce8e71 100644 --- a/src/Mod/Draft/CMakeLists.txt +++ b/src/Mod/Draft/CMakeLists.txt @@ -268,6 +268,7 @@ SET(Draft_GUI_tools draftguitools/gui_dimension_ops.py draftguitools/gui_lineslope.py draftguitools/gui_layers.py + draftguitools/gui_setstyle.py ${Creator_tools} ${Modifier_tools} draftguitools/README.md diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index 73a6c6288e..d1ce906ed2 100644 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -91,6 +91,7 @@ from draftgeoutils.edges import (findEdge, from draftgeoutils.faces import (concatenate, getBoundary, isCoplanar, + is_coplanar, bind, cleanFaces, removeSplitter) diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index f6af7743fb..0b34c1ad1e 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -20,7 +20,7 @@ #* * #*************************************************************************** -__title__="FreeCAD Draft Workbench - GUI part" +__title__ = "FreeCAD Draft Workbench - GUI part" __author__ = "Yorik van Havre " __url__ = "https://www.freecadweb.org" @@ -152,7 +152,7 @@ class DraftTaskPanel: class DraftToolBar: """The Draft Task panel UI - Draft Toolbar is the main ui of the Draft Module. Once displayed as a + Draft Toolbar is the main ui of the Draft Module. Once displayed as a toolbar, now it define the ui of the Task Panel. Toolbar become obsolete due to lack of manteinence and was disabled by default in February 2020. @@ -167,11 +167,14 @@ class DraftToolBar: self.taskmode = 1 # Draft.getParam("UiMode",1) # taskmode = 0 was used by draft toolbar that is now obsolete. # print("taskmode: ",str(self.taskmode)) + + # OBSOLETE BUT STILL USED BY SOME ADDONS AND MACROS self.paramcolor = Draft.getParam("color",255)>>8 self.color = QtGui.QColor(self.paramcolor) self.facecolor = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View").GetUnsigned("DefaultShapeColor",4294967295)>>8 self.linewidth = Draft.getParam("linewidth",2) self.fontsize = Draft.getParam("textheight",0.20) + self.paramconstr = Draft.getParam("constructioncolor",746455039)>>8 self.constrMode = False self.continueMode = False @@ -489,6 +492,7 @@ class DraftToolBar: QtCore.QObject.connect(self.textValue,QtCore.SIGNAL("textChanged()"),self.checkEnterText) QtCore.QObject.connect(self.textOkButton,QtCore.SIGNAL("clicked()"),self.sendText) QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("returnPressed()"),self.setFocus) + # Draft Edit UI obsolete due to introduction of incommand context menu # QtCore.QObject.connect(self.addButton,QtCore.SIGNAL("toggled(bool)"),self.setAddMode) # QtCore.QObject.connect(self.delButton,QtCore.SIGNAL("toggled(bool)"),self.setDelMode) @@ -496,6 +500,7 @@ class DraftToolBar: # QtCore.QObject.connect(self.tangentButton,QtCore.SIGNAL("toggled(bool)"),self.setTangentMode) # QtCore.QObject.connect(self.symmetricButton,QtCore.SIGNAL("toggled(bool)"),self.setSymmetricMode) # QtCore.QObject.connect(self.arc3PtButton,QtCore.SIGNAL("toggled(bool)"),self.setArc3PtMode) + QtCore.QObject.connect(self.finishButton,QtCore.SIGNAL("pressed()"),self.finish) QtCore.QObject.connect(self.closeButton,QtCore.SIGNAL("pressed()"),self.closeLine) QtCore.QObject.connect(self.wipeButton,QtCore.SIGNAL("pressed()"),self.wipeLine) @@ -545,35 +550,44 @@ class DraftToolBar: self.wplabel.setText(translate("draft","Side")) else: self.wplabel.setText(translate("draft","Auto")) - self.constrButton = self._pushbutton("constrButton", self.toptray, hide=False, icon='Draft_Construction',checkable=True,square=True) - self.constrColor = QtGui.QColor(self.paramconstr) - self.colorButton = self._pushbutton("colorButton",self.bottomtray, hide=False,square=True) - self.colorPix = QtGui.QPixmap(16,16) - self.colorPix.fill(self.color) - self.colorButton.setIcon(QtGui.QIcon(self.colorPix)) - self.facecolorButton = self._pushbutton("facecolorButton",self.bottomtray, hide=False,square=True) - self.facecolorPix = QtGui.QPixmap(16,16) - self.facecolorPix.fill(QtGui.QColor(self.facecolor)) - self.facecolorButton.setIcon(QtGui.QIcon(self.facecolorPix)) p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/General") bsize = p.GetInt("ToolbarIconSize",24)+2 - self.widthButton = self._spinbox("widthButton", self.bottomtray, val=self.linewidth,hide=False,size=(bsize * 2,bsize)) - self.widthButton.setSuffix("px") - self.fontsizeButton = self._spinbox("fontsizeButton",self.bottomtray, val=self.fontsize,vmax=999, hide=False,double=True,size=(bsize * 4,bsize)) + + # OBSOLETE - replaced by style button + #self.colorButton = self._pushbutton("colorButton",self.bottomtray, hide=False,square=True) + #self.colorPix = QtGui.QPixmap(16,16) + #self.colorPix.fill(self.color) + #self.colorButton.setIcon(QtGui.QIcon(self.colorPix)) + #self.facecolorButton = self._pushbutton("facecolorButton",self.bottomtray, hide=False,square=True) + #self.facecolorPix = QtGui.QPixmap(16,16) + #self.facecolorPix.fill(QtGui.QColor(self.facecolor)) + #self.facecolorButton.setIcon(QtGui.QIcon(self.facecolorPix)) + #self.widthButton = self._spinbox("widthButton", self.bottomtray, val=self.linewidth,hide=False,size=(bsize * 2,bsize)) + #self.widthButton.setSuffix("px") + #self.fontsizeButton = self._spinbox("fontsizeButton",self.bottomtray, val=self.fontsize,vmax=999, hide=False,double=True,size=(bsize * 4,bsize)) + #self.applyButton = self._pushbutton("applyButton", self.toptray, hide=False, icon='Draft_Apply',square=True) + + self.styleButton = self._pushbutton("stylebutton", self.toptray, icon='Draft_Apply',hide=False,width=120) + self.setStyleButton() + + self.constrButton = self._pushbutton("constrButton", self.toptray, hide=False, icon='Draft_Construction',checkable=True,square=True) + self.constrColor = QtGui.QColor(self.paramconstr) self.autoGroupButton = self._pushbutton("autoGroup",self.bottomtray,icon=":/icons/button_invalid.svg",hide=False,width=120) self.autoGroupButton.setText("None") self.autoGroupButton.setFlat(True) - self.applyButton = self._pushbutton("applyButton", self.toptray, hide=False, icon='Draft_Apply',square=True) QtCore.QObject.connect(self.wplabel,QtCore.SIGNAL("pressed()"),self.selectplane) - QtCore.QObject.connect(self.colorButton,QtCore.SIGNAL("pressed()"),self.getcol) - QtCore.QObject.connect(self.facecolorButton,QtCore.SIGNAL("pressed()"),self.getfacecol) - QtCore.QObject.connect(self.widthButton,QtCore.SIGNAL("valueChanged(int)"),self.setwidth) - QtCore.QObject.connect(self.fontsizeButton,QtCore.SIGNAL("valueChanged(double)"),self.setfontsize) - QtCore.QObject.connect(self.applyButton,QtCore.SIGNAL("pressed()"),self.apply) + QtCore.QObject.connect(self.styleButton,QtCore.SIGNAL("pressed()"),self.setstyle) QtCore.QObject.connect(self.constrButton,QtCore.SIGNAL("toggled(bool)"),self.toggleConstrMode) QtCore.QObject.connect(self.autoGroupButton,QtCore.SIGNAL("pressed()"),self.runAutoGroup) + # OBSOLETE - replaced by style button + #QtCore.QObject.connect(self.colorButton,QtCore.SIGNAL("pressed()"),self.getcol) + #QtCore.QObject.connect(self.facecolorButton,QtCore.SIGNAL("pressed()"),self.getfacecol) + #QtCore.QObject.connect(self.widthButton,QtCore.SIGNAL("valueChanged(int)"),self.setwidth) + #QtCore.QObject.connect(self.fontsizeButton,QtCore.SIGNAL("valueChanged(double)"),self.setfontsize) + #QtCore.QObject.connect(self.applyButton,QtCore.SIGNAL("pressed()"),self.apply) + QtCore.QTimer.singleShot(2000,self.retranslateTray) # delay so translations get a chance to load def setupStyle(self): @@ -622,12 +636,15 @@ class DraftToolBar: self.continueCmd.setText(translate("draft", "Continue")+" ("+inCommandShortcuts["Continue"][0]+")") self.occOffset.setToolTip(translate("draft", "If checked, an OCC-style offset will be performed instead of the classic offset")) self.occOffset.setText(translate("draft", "&OCC-style offset")) + + # OBSOLETE # self.addButton.setToolTip(translate("draft", "Add points to the current object")) # self.delButton.setToolTip(translate("draft", "Remove points from the current object")) # self.sharpButton.setToolTip(translate("draft", "Make Bezier node sharp")) # self.tangentButton.setToolTip(translate("draft", "Make Bezier node tangent")) # self.symmetricButton.setToolTip(translate("draft", "Make Bezier node symmetric")) # self.arc3PtButton.setToolTip(translate("draft", "Toggle radius and angles arc editing")) + self.undoButton.setText(translate("draft", "&Undo (CTRL+Z)")) self.undoButton.setToolTip(translate("draft", "Undo the last segment")) self.closeButton.setText(translate("draft", "Close")+" ("+inCommandShortcuts["Close"][0]+")") @@ -677,14 +694,18 @@ class DraftToolBar: def retranslateTray(self,widget=None): self.wplabel.setToolTip(translate("draft", "Current working plane")+":"+self.wplabel.text()) + self.styleButton.setToolTip(translate("draft", "Change default style for new objects")) self.constrButton.setToolTip(translate("draft", "Toggle construction mode")) - self.colorButton.setToolTip(translate("draft", "Current line color")) - self.facecolorButton.setToolTip(translate("draft", "Current face color")) - self.widthButton.setToolTip(translate("draft", "Current line width")) - self.fontsizeButton.setToolTip(translate("draft", "Current font size")) - self.applyButton.setToolTip(translate("draft", "Apply to selected objects")) self.autoGroupButton.setToolTip(translate("draft", "Autogroup off")) + # OBSOLETE - replaced by style button + #self.colorButton.setToolTip(translate("draft", "Current line color")) + #self.facecolorButton.setToolTip(translate("draft", "Current face color")) + #self.widthButton.setToolTip(translate("draft", "Current line width")) + #self.fontsizeButton.setToolTip(translate("draft", "Current font size")) + #self.applyButton.setToolTip(translate("draft", "Apply to selected objects")) + + #--------------------------------------------------------------------------- # Interface modes #--------------------------------------------------------------------------- @@ -913,12 +934,15 @@ class DraftToolBar: self.isRelative.hide() self.hasFill.hide() self.finishButton.hide() + + # OBSOLETE # self.addButton.hide() # self.delButton.hide() # self.sharpButton.hide() # self.tangentButton.hide() # self.symmetricButton.hide() # self.arc3PtButton.hide() + self.undoButton.hide() self.closeButton.hide() self.wipeButton.hide() @@ -1083,6 +1107,7 @@ class DraftToolBar: self.continueCmd.show() def modUi(self): + self.undoButton.hide() self.isCopy.show() self.isSubelementMode.show() p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") @@ -1176,6 +1201,8 @@ class DraftToolBar: def getcol(self): """opens a color picker dialog""" + print("draft: warning: getcol() is obsolete") + return oldColor = self.color self.color=QtGui.QColorDialog.getColor(self.color) if not QtGui.QColor.isValid(self.color): #user canceled @@ -1200,6 +1227,8 @@ class DraftToolBar: def getfacecol(self): """opens a color picker dialog""" + print("draft: warning: getfacecol() is obsolete") + return oldColor = self.facecolor self.facecolor=QtGui.QColorDialog.getColor(self.facecolor) if not QtGui.QColor.isValid(self.facecolor): #user canceled @@ -1218,6 +1247,8 @@ class DraftToolBar: i.ViewObject.ShapeColor = col def setwidth(self,val): + print("draft: warning: setwidth() is obsolete") + return self.linewidth = float(val) if Draft.getParam("saveonexit",False): Draft.setParam("linewidth",int(val)) @@ -1226,6 +1257,8 @@ class DraftToolBar: i.ViewObject.LineWidth = float(val) def setfontsize(self,val): + print("draft: warning: setfontsize() is obsolete") + return self.fontsize = float(val) if Draft.getParam("saveonexit",False): Draft.setParam("textheight",float(val)) @@ -1240,6 +1273,8 @@ class DraftToolBar: self.fillmode = bool(val) def apply(self): + print("draft: warning: apply() is obsolete") + return for i in FreeCADGui.Selection.getSelection(): Draft.formatObject(i) @@ -1652,9 +1687,20 @@ class DraftToolBar: g = ((color>>16)&0xFF)/255 b = ((color>>8)&0xFF)/255 elif type == "ui": + print("draft: deprecation warning: Do not use getDefaultColor(\"ui\") anymore - use getDefaultColor(\"line\") instead.") r = float(self.color.red()/255.0) g = float(self.color.green()/255.0) b = float(self.color.blue()/255.0) + elif type == "line": + color = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View").GetUnsigned("DefaultShapeLineColor",255) + r = ((color>>24)&0xFF)/255 + g = ((color>>16)&0xFF)/255 + b = ((color>>8)&0xFF)/255 + elif type == "text": + color = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetUnsigned("DefaultTextColor",255) + r = ((color>>24)&0xFF)/255 + g = ((color>>16)&0xFF)/255 + b = ((color>>8)&0xFF)/255 elif type == "face": color = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View").GetUnsigned("DefaultShapeColor",4294967295) r = ((color>>24)&0xFF)/255 @@ -1720,6 +1766,37 @@ class DraftToolBar: def selectplane(self): FreeCADGui.runCommand("Draft_SelectPlane") + def setstyle(self): + FreeCADGui.runCommand("Draft_SetStyle") + + def setStyleButton(self): + "sets icon and text on the style button" + linecolor = QtGui.QColor(Draft.getParam("color",255)>>8) + facecolor = QtGui.QColor(FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View").GetUnsigned("DefaultShapeColor",4294967295)>>8) + im = QtGui.QImage(32,32,QtGui.QImage.Format_ARGB32) + im.fill(QtCore.Qt.transparent) + pt = QtGui.QPainter(im) + pt.setPen(QtGui.QPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine, QtCore.Qt.FlatCap)) + pt.setBrush(QtGui.QBrush(linecolor, QtCore.Qt.SolidPattern)) + pts = [QtCore.QPointF(4.0,4.0),QtCore.QPointF(4.0,26.0),QtCore.QPointF(26.0,4.0)] + pt.drawPolygon(pts,QtCore.Qt.OddEvenFill) + pt.setBrush(QtGui.QBrush(facecolor, QtCore.Qt.SolidPattern)) + pts = [QtCore.QPointF(28.0,28.0),QtCore.QPointF(8.0,28.0),QtCore.QPointF(28.0,8.0)] + pt.drawPolygon(pts,QtCore.Qt.OddEvenFill) + pt.end() + icon = QtGui.QIcon(QtGui.QPixmap.fromImage(im)) + linewidth = Draft.getParam("linewidth",2) + fontsize = Draft.getParam("textheight",0.20) + txt = str(linewidth)+"px | "+FreeCAD.Units.Quantity(fontsize,FreeCAD.Units.Length).UserString + self.styleButton.setIcon(icon) + self.styleButton.setText(txt) + + # FOR BACKWARDS COMPATIBILITY + self.color = linecolor + self.facecolor = facecolor + self.linewidth = linewidth + self.fontsize = fontsize + def popupMenu(self,llist,ilist=None,pos=None): """pops up a menu filled with the given list""" self.groupmenu = QtGui.QMenu() @@ -1978,7 +2055,7 @@ class DraftToolBar: self.setWatchers() if hasattr(self,"tray"): self.tray.show() - else: # self.taskmode == 0 Draft toolbar is obsolete and has been disabled (February 2020) + else: # self.taskmode == 0 Draft toolbar is obsolete and has been disabled (February 2020) self.draftWidget.setVisible(True) self.draftWidget.toggleViewAction().setVisible(True) diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index 05a5cdfd30..f7ec8bdc1e 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -76,6 +76,7 @@ if not hasattr(FreeCAD, "DraftWorkingPlane"): # --------------------------------------------------------------------------- import draftguitools.gui_edit import draftguitools.gui_selectplane +import draftguitools.gui_setstyle import draftguitools.gui_planeproxy from draftguitools.gui_lineops import FinishLine from draftguitools.gui_lineops import CloseLine diff --git a/src/Mod/Draft/Resources/Draft.qrc b/src/Mod/Draft/Resources/Draft.qrc index 86c265d758..f914187b7f 100644 --- a/src/Mod/Draft/Resources/Draft.qrc +++ b/src/Mod/Draft/Resources/Draft.qrc @@ -181,5 +181,6 @@ ui/TaskSelectPlane.ui ui/TaskShapeString.ui ui/dialog_AnnotationStyleEditor.ui + ui/TaskPanel_SetStyle.ui diff --git a/src/Mod/Draft/Resources/translations/Draft.ts b/src/Mod/Draft/Resources/translations/Draft.ts index 7b94ad5ce2..62454d2bca 100644 --- a/src/Mod/Draft/Resources/translations/Draft.ts +++ b/src/Mod/Draft/Resources/translations/Draft.ts @@ -844,6 +844,216 @@ value by using the [ and ] keys while drawing lines + + + Style settings + + + + + Text color + + + + + Shape color + + + + + Line width + + + + + The color of faces + + + + + The type of dimension arrows + + + + + Dot + + + + + Circle + + + + + Arrow + + + + + Tick + + + + + Tick-2 + + + + + The color of texts and dimension texts + + + + + The size of texts and dimension texts + + + + + Show unit + + + + + Line color + + + + + The size of dimension arrows + + + + + The font to use for texts and dimensions + + + + + The line style + + + + + Solid + + + + + Dashed + + + + + Dotted + + + + + DashDot + + + + + Text size + + + + + Unit override + + + + + If the unit siffix is shown on dimension texts or not + + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + + The transparency of faces + + + + + % + + + + + Transparency + + + + + Display mode + + + + + Text font + + + + + Arrow size + + + + + The display mode for faces + + + + + Flat Lines + + + + + Wireframe + + + + + Shaded + + + + + Points + + + + + Draw style + + + + + The color of lines + + + + + Arrow style + + + + + px + + + + + Apply to selected objects + + Gui::Dialog::DlgSettingsDraft @@ -2234,202 +2444,177 @@ This value is the maximum segment length. draft - + Draft Command Bar - + Toggle construction mode - - Current line color - - - - - Current face color - - - - - Current line width - - - - - Current font size - - - - - Apply to selected objects - - - - + Autogroup off - + active command: - + None - + Active Draft command - + X coordinate of next point - + X - + Y - + Z - + Y coordinate of next point - + Z coordinate of next point - + Enter point - + Enter a new point with the given coordinates - + Length - + Angle - + Length of current segment - + Angle of current segment - + Radius - + Radius of Circle - + If checked, command will not finish until you press the command button again - + If checked, an OCC-style offset will be performed instead of the classic offset - + &OCC-style offset - + Sides - + Number of sides - + Offset - + Auto - + Text string to draw - + String - + Height of text - + Height - + Intercharacter spacing - + Tracking - + Full path to font file: - + Open a FileChooser for font file @@ -2439,132 +2624,132 @@ This value is the maximum segment length. - + DWire - + Circle - + Center X - + Arc - + Point - + Label - + Distance - + Trim - + Pick Object - + Edit - + Global X - + Global Y - + Global Z - + Local X - + Local Y - + Local Z - + Invalid Size value. Using 200.0. - + Invalid Tracking value. Using 0. - + Please enter a text string. - + Select a Font file - + Please enter a font file. - + Autogroup: - + Faces - + Remove - + Add - + Facebinder elements @@ -2579,7 +2764,7 @@ This value is the maximum segment length. - + Copy @@ -2596,17 +2781,17 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Relative - + Continue - + Close @@ -2651,7 +2836,7 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Select edge @@ -2666,7 +2851,7 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Wipe @@ -2681,67 +2866,67 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Check this to lock the current angle - + Coordinates relative to last point or absolute - + Filled - + Finish - + Finishes the current drawing or editing operation - + &Undo (CTRL+Z) - + Undo the last segment - + Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point - + Set WP - + Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2751,12 +2936,12 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Modify subelements - + If checked, subelements will be modified instead of entire objects @@ -2781,12 +2966,12 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2806,32 +2991,32 @@ To enabled FreeCAD to download these libraries, answer Yes. - + Create text - + Press this button to create the text object, or finish your text with two blank lines - + Center Y - + Center Z - + Offset distance - + Trim distance @@ -2840,6 +3025,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire + + + Change default style for new objects + + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_af.qm b/src/Mod/Draft/Resources/translations/Draft_af.qm index e5bf6014fb..7610ad31d6 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_af.qm and b/src/Mod/Draft/Resources/translations/Draft_af.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_af.ts b/src/Mod/Draft/Resources/translations/Draft_af.ts index 3c152bf5c8..ac932228ff 100644 --- a/src/Mod/Draft/Resources/translations/Draft_af.ts +++ b/src/Mod/Draft/Resources/translations/Draft_af.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Line width + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Dot + + + + Circle + Sirkel + + + + Arrow + Arrow + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Line color + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Solid + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + Arrow size + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Draadwerk + + + + Shaded + Shaded + + + + Points + Punte + + + + Draw style + Tekenstyl + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Pas toe op gekose voorwerpe + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - Pas toe op gekose voorwerpe - - - + Autogroup off Autogroup off - + active command: aktiewe opdrag: - + None Geen - + Active Draft command Aktiewe Tekening bevel - + X coordinate of next point X-koördinaat van die volgende punt - + X X - + Y Y - + Z Z - + Y coordinate of next point Y-koördinaat van die volgende punt - + Z coordinate of next point Z-koördinaat van die volgende punt - + Enter point Enter point - + Enter a new point with the given coordinates Enter a new point with the given coordinates - + Length Lengte - + Angle Hoek - + Length of current segment Length of current segment - + Angle of current segment Angle of current segment - + Radius Radius - + Radius of Circle Radius van die sirkel - + If checked, command will not finish until you press the command button again As dit gemerk is, sal die opdrag nie voltooi word totdat jy die bevel weer gee nie - + If checked, an OCC-style offset will be performed instead of the classic offset Indien gekies, sal 'n OCC-styl verskuiwing gedoen word in plaas van die klassieke verskuiwing - + &OCC-style offset &OCC-styl verskuiwing - + Sides Sides - + Number of sides Aantal sye - + Offset Verplasing - + Auto Auto - + Text string to draw Text string to draw - + String String - + Height of text Height of text - + Height Hoogte - + Intercharacter spacing Intercharacter spacing - + Tracking Tracking - + Full path to font file: Full path to font file: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2498,132 +2683,132 @@ This value is the maximum segment length. Lyn - + DWire DWire - + Circle Sirkel - + Center X Sentreer X - + Arc Boog - + Point Punt - + Label Label - + Distance Afstand - + Trim Vernou - + Pick Object Kies voorwerp - + Edit Wysig - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. Invalid Size value. Using 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Please enter a text string. - + Select a Font file Select a Font file - + Please enter a font file. Please enter a font file. - + Autogroup: Autogroup: - + Faces Vlakke - + Remove Verwyder - + Add Voeg by - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. BezCurve - + Copy Kopieer @@ -2662,17 +2847,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Maak toe @@ -2717,7 +2902,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2732,7 +2917,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2747,67 +2932,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Voltooi - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2817,12 +3002,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2847,12 +3032,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2872,32 +3057,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Skep teks - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2906,6 +3091,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Wire + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ar.qm b/src/Mod/Draft/Resources/translations/Draft_ar.qm index 04c0fdc64a..c335d39303 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_ar.qm and b/src/Mod/Draft/Resources/translations/Draft_ar.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_ar.ts b/src/Mod/Draft/Resources/translations/Draft_ar.ts index 6fa2b090fd..bde0756e44 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ar.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ar.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines الخطوط + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + عرض الخط + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + نقطة + + + + Circle + دائرة + + + + Arrow + سهم + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + عرض الوحدات + + + + Line color + لون الخط + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + الخط المراد استخدامه للنصوص والأبعاد + + + + The line style + The line style + + + + Solid + صلب + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + تجاوز الوحدة + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + الشفافية + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + حجم السهم + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Wireframe + + + + Shaded + مظلل + + + + Points + النقط + + + + Draw style + Draw style + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + تطبيق على الكائنات المحددة + Gui::Dialog::DlgSettingsDraft @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle construction mode - - Current line color - لون الخط الحالي - - - - Current face color - لون الوجه الحالي - - - - Current line width - عرض الخط الحالي - - - - Current font size - حجم الخط الحالي - - - - Apply to selected objects - تطبيق على الكائنات المحددة - - - + Autogroup off إيقاف المجموعة التلقائية - + active command: الأمر النشط: - + None لا يوجد - + Active Draft command Active Draft command - + X coordinate of next point X تنسيق النقطة التالية - + X X - + Y Y - + Z Z - + Y coordinate of next point Y تنسيق النقطة التالية - + Z coordinate of next point Z تنسيق النقطة التالية - + Enter point أدخل نقطة - + Enter a new point with the given coordinates أدخل نقطة جديدة مع إحداثيات معينة - + Length الطول - + Angle الزاوية - + Length of current segment طول القطاع الحالي - + Angle of current segment زاوية الجزء الحالي - + Radius نصف القطر - + Radius of Circle نصف قطر الدائرة - + If checked, command will not finish until you press the command button again إذا تم تحديده، لن ينتهي الأمر حتى تضغط على زر الأمر مرة أخرى - + If checked, an OCC-style offset will be performed instead of the classic offset إذا تم تحديده، فسيتم إجراء إزاحة على نمط OCC بدلا من الإزاحة الكلاسيكية - + &OCC-style offset & نمط الإزاحة OCC - + Sides الجانبين - + Number of sides عدد من الجانبين - + Offset إزاحة - + Auto تلقائي - + Text string to draw السلسلة النصية التي سيتم رسمها - + String سلسلة - + Height of text ارتفاع النص - + Height الارتفاع - + Intercharacter spacing Intercharacter spacing - + Tracking تباعد الحروف - + Full path to font file: Full path to font file: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2501,132 +2686,132 @@ This value is the maximum segment length. خط - + DWire DWire - + Circle دائرة - + Center X Center X - + Arc قوس - + Point نقطة - + Label عنوان - + Distance Distance - + Trim Trim - + Pick Object Pick Object - + Edit تعديل - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. قيمة الحجم غير صالحة. إستعمال 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. المرجو إدخال سلسلة نصية. - + Select a Font file قم بإختيار ملف الخط - + Please enter a font file. المرجو ادخال ملف خط. - + Autogroup: Autogroup: - + Faces وجوه - + Remove إزالة - + Add إضافة - + Facebinder elements Facebinder elements @@ -2641,7 +2826,7 @@ This value is the maximum segment length. BezCurve - + Copy نسخ @@ -2665,17 +2850,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close إغلاق @@ -2720,7 +2905,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge قم بإختيار حافة @@ -2735,7 +2920,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2750,67 +2935,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle قم بهذا الإختيار لقفل الزاوية الحالية - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish إنهاء - + Finishes the current drawing or editing operation يقوم بإنهاء عملية الرسم أو التعديل الحالية - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line يقوم بإنهاء وإغلاق الخط الحالي - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2820,12 +3005,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2850,12 +3035,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2875,32 +3060,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text إنشاء نص - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2909,6 +3094,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Wire + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ca.qm b/src/Mod/Draft/Resources/translations/Draft_ca.qm index ccffccf79d..cc03a297f5 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 e5df8a79a8..f9c7d04805 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ca.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ca.ts @@ -868,6 +868,216 @@ valor mitjançant les tecles [ i ] mentre es dibuixa lines línies + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Amplada de línia + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punt + + + + Circle + Cercle + + + + Arrow + Fletxa + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostra les unitats + + + + Line color + Color de línia + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Font a emprar per a textos i dimensions + + + + The line style + The line style + + + + Solid + Sòlid + + + + Dashed + Discontínua + + + + Dotted + Puntejada + + + + DashDot + Guió punt + + + + Text size + Text size + + + + Unit override + Substitució d'unitat + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparència + + + + Display mode + Mode de visualització + + + + Text font + Text font + + + + Arrow size + Mida de la fletxa + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Filferro + + + + Shaded + Ombrejat + + + + Points + Punts + + + + Draw style + Estil de dibuix + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + S'apliquen a objectes seleccionats + Gui::Dialog::DlgSettingsDraft @@ -2265,202 +2475,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Activar/desactivar el mode de construcció - - Current line color - Color de la línia actual - - - - Current face color - Color de la cara actual - - - - Current line width - Amplada de la línia actual - - - - Current font size - Mida de la font de text actual - - - - Apply to selected objects - S'apliquen a objectes seleccionats - - - + Autogroup off Desactivar Auto-agrupar - + active command: ordre actiu: - + None Cap - + Active Draft command Comandament actiu d'esborrany - + X coordinate of next point X coordenada del punt següent - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y del punt següent - + Z coordinate of next point Coordenada Z del punt següent - + Enter point Entri el punt - + Enter a new point with the given coordinates Subministri un nou punt amb les coordenades donades - + Length Longitud - + Angle Angle - + Length of current segment Longitud del segment actual - + Angle of current segment Angle del segment actual - + Radius Radi - + Radius of Circle Radi del cercle - + If checked, command will not finish until you press the command button again Si està marcada, comanda no acabarà fins que es premi el botó de comanda una altra vegada - + If checked, an OCC-style offset will be performed instead of the classic offset Si està marcada, es realitzarà una compensació OCC estil en lloc de la compensació clàssic - + &OCC-style offset &OCC estil compensar (ofset) - + Sides Costats - + Number of sides Nombre de costats - + Offset Equidistancia (ofset) - + Auto Auto - + Text string to draw Cadena de text a dibuixar - + String Cadena - + Height of text Alçada del text - + Height Alçària - + Intercharacter spacing Espaiat de Inter-caràcter - + Tracking Seguiment - + Full path to font file: Ruta d'acces completa al arxiu font: - + Open a FileChooser for font file Obrir un selector de fitxers per a arxiu de font @@ -2470,132 +2655,132 @@ This value is the maximum segment length. Línia - + DWire DWire - + Circle Cercle - + Center X Centre X - + Arc Arc - + Point Punt - + Label Etiqueta - + Distance Distance - + Trim Retallar - + Pick Object Designar objecte - + Edit Edita - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. Valor de mida no vàlid. Utilitzant 200.0. - + Invalid Tracking value. Using 0. Valor de seguiment no és vàlid. Utilitzant 0. - + Please enter a text string. Si us plau, introduïu una cadena de text. - + Select a Font file Seleccioneu un fitxer de tipus de lletra - + Please enter a font file. Si us plau, introduïu un fitxer de tipus de lletra. - + Autogroup: Auto-agrupar: - + Faces Cares - + Remove Elimina - + Add Afig - + Facebinder elements Elements de lligam de cares @@ -2610,7 +2795,7 @@ This value is the maximum segment length. Corba de Bézier - + Copy Copia @@ -2633,17 +2818,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí. - + Relative Relatiu - + Continue Continua - + Close Tanca @@ -2688,7 +2873,7 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Restricciò Z - + Select edge Selecciona l'aresta @@ -2703,7 +2888,7 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Mode de Llargària - + Wipe Neteja @@ -2718,67 +2903,67 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Canvia cíclicament l'ajust d'un objecte - + Check this to lock the current angle Marqueu aquesta casella per a blocar l'angle actual - + Coordinates relative to last point or absolute Coordenades relatives a l'últim punt o absolutes - + Filled Emplenat - + Finish Finalitza - + Finishes the current drawing or editing operation Acaba el dibuix actual o l'operació d'edició - + &Undo (CTRL+Z) &Desfés (CTRL+Z) - + Undo the last segment Desfés l'últim segment - + Finishes and closes the current line Finalitza i tanca la línia actual - + Wipes the existing segments of this line and starts again from the last point Esborra els segments existents d'aquesta línia i comença de nou desde l'últim punt - + Set WP Definir el pla de treball - + Reorients the working plane on the last segment Reorienta el pla de treball de l'últim segment - + Selects an existing edge to be measured by this dimension Selecciona una aresta existent per a mesurar-la amb aquesta dimensió - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Si està activada, els objectes es copiaran en lloc de moure's. Preferències->Esborrany->Mode de còpia global per a mantenir aquest mode en les ordres següents @@ -2788,12 +2973,12 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Mode sub-element - + Modify subelements Modifica els sub-elements - + If checked, subelements will be modified instead of entire objects Si està marcat, els sub-elements es modificaran en lloc dels objectes sencers @@ -2818,12 +3003,12 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Costat - + Current working plane Pla de treball actual - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Marqui això si l'objecte te d'aparèixer com ple, cas contrari apareixerà com estructura filferro. No està disponible si l'opció de preferència de Draft 'Usar primitives de peça' està habilitada @@ -2843,32 +3028,32 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Activa/desactiva el proper ajust - + Create text Crear text - + Press this button to create the text object, or finish your text with two blank lines Premeu aquest botó per a crear l’objecte de text o finalitzeu el vostre text amb dues línies en blanc - + Center Y Centra Y - + Center Z Centra Z - + Offset distance Distància de separació - + Trim distance Distància de retall @@ -2877,6 +3062,11 @@ Per permetre que FreeCAD descarregui aquestes llibreries respongui Sí.Wire Cable + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_cs.qm b/src/Mod/Draft/Resources/translations/Draft_cs.qm index 900514de62..86b66c08e8 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 dc026fcad5..57b1087962 100644 --- a/src/Mod/Draft/Resources/translations/Draft_cs.ts +++ b/src/Mod/Draft/Resources/translations/Draft_cs.ts @@ -878,6 +878,216 @@ value by using the [ and ] keys while drawing lines čar + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Tloušťka čáry + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Tečka + + + + Circle + Kruh + + + + Arrow + Šipka + + + + Tick + Fajfka + + + + Tick-2 + Fajfka-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Zobrazit jednotky + + + + Line color + Barva čáry + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Písmo používané pro texty a rozměry + + + + The line style + The line style + + + + Solid + Těleso + + + + Dashed + Čárkovaný + + + + Dotted + Tečkovaný + + + + DashDot + Čárka tečka + + + + Text size + Text size + + + + Unit override + Přepsat jednotky + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Průhlednost + + + + Display mode + Styl zobrazení + + + + Text font + Text font + + + + Arrow size + Velikost šipky + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Drátěný + + + + Shaded + Stínované + + + + Points + Body + + + + Draw style + Styl kreslení + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + použít na vybrané objekty + Gui::Dialog::DlgSettingsDraft @@ -2290,202 +2500,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Příkazový panel Návrhu - + Toggle construction mode Přepnout konstrukční mód - - Current line color - Současná barva čáry - - - - Current face color - Aktuální barva plochy - - - - Current line width - Aktuální šířka čáry - - - - Current font size - Aktuální velikost písma - - - - Apply to selected objects - použít na vybrané objekty - - - + Autogroup off Automatické seskupování vypnuto - + active command: aktivní příkaz: - + None Žádný - + Active Draft command aktivní příkaz návrhu - + X coordinate of next point X souřadnice dalšího bodu - + X X - + Y Y - + Z Z - + Y coordinate of next point Y souřadnice dalšího bodu - + Z coordinate of next point Z souřadnice dalšího bodu - + Enter point Zadejte bod - + Enter a new point with the given coordinates Zadejte nový bod s danými souřadnicemi - + Length Délka - + Angle Úhel - + Length of current segment Délka aktuálního segmentu - + Angle of current segment Úhel aktuálního segmentu - + Radius Poloměr - + Radius of Circle Poloměr kruhu - + If checked, command will not finish until you press the command button again Je-li zaškrtnuto, příkaz se nedokončí, dokud nestisknete znovu na příkazové tlačítko - + If checked, an OCC-style offset will be performed instead of the classic offset Je-li zaškrtnuto, bude uplatněn OCC-styl odsazení namísto klasického odsazení - + &OCC-style offset &OCC-styl odstupu - + Sides Strany - + Number of sides Počet stran - + Offset Odstup - + Auto Automaticky - + Text string to draw Textový řetězec k vykreslení - + String Řetězec - + Height of text Výška textu - + Height Výška - + Intercharacter spacing Rozestupy mezi znaky - + Tracking Sledování - + Full path to font file: Úplná cesta k souboru písma: - + Open a FileChooser for font file Otevře dialogové okno pro výběr souboru písma @@ -2495,132 +2680,132 @@ This value is the maximum segment length. Čára - + DWire DWire - + Circle Kruh - + Center X Střed X - + Arc oblouk - + Point Bod - + Label Label - + Distance Distance - + Trim Oříznout - + Pick Object Vybrat objekt - + Edit Upravit - + Global X Globální X - + Global Y Globální Y - + Global Z Globální Z - + Local X Lokální X - + Local Y Lokální Y - + Local Z Lokální Z - + Invalid Size value. Using 200.0. Neplatná hodnota velikosti. Použito 200,0. - + Invalid Tracking value. Using 0. Neplatná hodnota sledování. Použito 0. - + Please enter a text string. Vložte textový řetězec, prosím. - + Select a Font file Vyberte soubor písma - + Please enter a font file. Vložte, prosím, soubor písma. - + Autogroup: Automatické seskupování: - + Faces Plochy - + Remove Odstranit - + Add Přidat - + Facebinder elements Svázané plochy @@ -2635,7 +2820,7 @@ This value is the maximum segment length. Beziérova křivka - + Copy Kopírovat @@ -2658,17 +2843,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Chcete umožnit FreeCADu stáhnout tyto knihovny? - + Relative Relativní - + Continue Pokračovat - + Close Zavřít @@ -2713,7 +2898,7 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Omezit Z - + Select edge Výběr hrany @@ -2728,7 +2913,7 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Režim délky - + Wipe Vyčistit @@ -2743,67 +2928,67 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Cyklovat přichycený objekt - + Check this to lock the current angle Zaškrtněte pro uzamčení aktuálního úhlu - + Coordinates relative to last point or absolute Souřadnice vzhledem k poslednímu bodu nebo absolutní - + Filled Vyplněné - + Finish Dokončit - + Finishes the current drawing or editing operation Dokončí aktuální kreslicí nebo upravovací operaci - + &Undo (CTRL+Z) Zpět (CTRL+Z) - + Undo the last segment Vrátit zpět poslední segment - + Finishes and closes the current line Dokončí a uzavře aktuální čáru - + Wipes the existing segments of this line and starts again from the last point Vymaže dosavadní segmenty této čáry a začne znovu z posledního bodu - + Set WP Nastavit PR - + Reorients the working plane on the last segment Přeorientuje pracovní rovinu na poslední segment - + Selects an existing edge to be measured by this dimension Vybere existující hranu pro změření touto kótou - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Je-li zaškrtnuto, objekty budou kopírovány namísto přesunutí. Nastavení -> Draft -> Globální režim kopírování přednastaví tento mód pro další příkazy @@ -2813,12 +2998,12 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2843,12 +3028,12 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2868,32 +3053,32 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Toggle near snap on/off - + Create text Vytvoř text - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2902,6 +3087,11 @@ Chcete umožnit FreeCADu stáhnout tyto knihovny? Wire Křivka + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_de.qm b/src/Mod/Draft/Resources/translations/Draft_de.qm index dbf5e4c34e..7b6509afb6 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 9f32d15236..70822f2bb5 100644 --- a/src/Mod/Draft/Resources/translations/Draft_de.ts +++ b/src/Mod/Draft/Resources/translations/Draft_de.ts @@ -867,13 +867,223 @@ value by using the [ and ] keys while drawing Grid extension - Grid extension + Raster-Erweiterung lines Linien + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Linienbreite + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punkt + + + + Circle + Kreis + + + + Arrow + Pfeil + + + + Tick + Senkrechter Strich + + + + Tick-2 + Schrägstrich + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Einheit anzeigen + + + + Line color + Linienfarbe + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Die Schriftart für Text- und Maßeinträge + + + + The line style + The line style + + + + Solid + Vollkörper + + + + Dashed + Gestrichelt + + + + Dotted + Gepunktet + + + + DashDot + Strich-Punkt + + + + Text size + Text size + + + + Unit override + Einheit überschreiben + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Tranparenz + + + + Display mode + Anzeigemodus + + + + Text font + Text font + + + + Arrow size + Pfeilgröße + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Drahtgitter + + + + Shaded + Schattiert + + + + Points + Punkte + + + + Draw style + Zeichenstil + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Auf selektierte Objekte anwenden + Gui::Dialog::DlgSettingsDraft @@ -2234,27 +2444,27 @@ Dieser Wert ist die maximale Segmentlänge. Override unit - Override unit + Einheit überschreiben By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Wenn Sie dieses Feld leer lassen, wird die in FreeCAD voreingestellte Maßeinheit verwendet. Durch Eingabe einer Maßeinheit wie m oder cm, werden die Maße in dieser Einheit angezeigt. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + Die Auflösung, um die Muster zu zeichnen. Standardwert ist 128. Höhere Werte geben bessere Auflösungen, niedrigere Werte machen das Zeichnen schneller Hatch Pattern default size - Hatch Pattern default size + Schraffurmuster Standardgröße The default size of hatch patterns - The default size of hatch patterns + Die Standardgröße der Schraffurmuster @@ -2286,202 +2496,177 @@ Dieser Wert ist die maximale Segmentlänge. draft - + Draft Command Bar Entwurfsbefehlsleiste - + Toggle construction mode Konstruktionsmodus umschalten - - Current line color - Aktuelle Linienfarbe - - - - Current face color - Derzeitige Face Farbe - - - - Current line width - Aktuelle Linienbreite - - - - Current font size - Aktuelle Schriftgröße - - - - Apply to selected objects - Auf selektierte Objekte anwenden - - - + Autogroup off Autogruppe aus - + active command: aktiver Befehl: - + None Kein - + Active Draft command Aktiver Draft-Befehl - + X coordinate of next point X-Koordinate des nächsten Punktes - + X X - + Y Y - + Z Z - + Y coordinate of next point Y-Koordinate des nächsten Punktes - + Z coordinate of next point Z-Koordinate des nächsten Punktes - + Enter point Punkt eingeben - + Enter a new point with the given coordinates Einen neuen Punkt mit gegebenen Koordinaten eingeben - + Length Länge - + Angle Winkel - + Length of current segment Länge des aktuellen Abschnitts - + Angle of current segment Winkel des aktuellen Abschnittes - + Radius Radius - + Radius of Circle Kreisradius - + If checked, command will not finish until you press the command button again Falls aktiviert, wird Befehl nicht beendet bis Sie den Befehlsknopf nochmals drüchen - + If checked, an OCC-style offset will be performed instead of the classic offset Verwende OCC Versatz statt klassischem Versatz - + &OCC-style offset OCC Versatz - + Sides Seiten - + Number of sides Anzahl der Seiten - + Offset Versetzen - + Auto Automatisch - + Text string to draw Zu zeichnende Textzeichenkette - + String Zeichenkette - + Height of text Höhe des Textes - + Height Höhe - + Intercharacter spacing Zeichenabstand - + Tracking Verfolgung - + Full path to font file: Vollständiger Pfad zur Schriftdatei: - + Open a FileChooser for font file Schriftartendatei auswählen @@ -2491,132 +2676,132 @@ Dieser Wert ist die maximale Segmentlänge. Linie - + DWire Polygonzug - + Circle Kreis - + Center X Mittelpunkt X - + Arc Kreisbogen - + Point Punkt - + Label Bezeichnung - + Distance Abstand - + Trim Beschneiden - + Pick Object Objekt wählen - + Edit Bearbeiten - + Global X Globales X - + Global Y Globales Y - + Global Z Globales Z - + Local X Lokales X - + Local Y Lokales Y - + Local Z Lokales Z - + Invalid Size value. Using 200.0. Ungültiger Größenwert. 200,0 wird verwendet. - + Invalid Tracking value. Using 0. Ungültiger Wert für Laufweite. Verwende stattdessen 0. - + Please enter a text string. Bitte geben Sie eine Textzeichenkette ein. - + Select a Font file Wählen Sie eine Schriftartdatei aus - + Please enter a font file. Bitte geben Sie eine Schriftdatei an. - + Autogroup: Autogruppe: - + Faces Flächen - + Remove Entfernen - + Add Hinzufügen - + Facebinder elements Flächen-Verbund-Elemente @@ -2631,7 +2816,7 @@ Dieser Wert ist die maximale Segmentlänge. BezCurve - + Copy Kopieren @@ -2653,17 +2838,17 @@ oder laden Sie diese Bibliotheken manuell herunter, wie unter folgendem Link erk Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken zu gestatten. - + Relative Relativ - + Continue Fortsetzen - + Close Schließen @@ -2708,7 +2893,7 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Beschränke Z - + Select edge Kante auswählen @@ -2723,7 +2908,7 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Längenmodus - + Wipe Radieren @@ -2738,67 +2923,67 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Kreis-Einrast-Objekt - + Check this to lock the current angle Aktivieren, um den aktuellen Winkel zu sperren - + Coordinates relative to last point or absolute Koordinaten relativ oder absolut zum letzten Punkt - + Filled Befüllt - + Finish Fertig - + Finishes the current drawing or editing operation Beendet die aktuelle Zeichen- oder Bearbeitungsoperation - + &Undo (CTRL+Z) Rückgängig (Strg+Z) - + Undo the last segment Letztes Segment rückgängig machen - + Finishes and closes the current line Beendet und schliesst die aktuelle Linie - + Wipes the existing segments of this line and starts again from the last point Löscht vorhandene Segmente dieser Linie und beginnt nochmals vom letzten Punkt - + Set WP Arbeitsebene festlegen - + Reorients the working plane on the last segment Orientiert die Arbeitsebene an dem letzten Segment neu - + Selects an existing edge to be measured by this dimension Zur Auswahl einer vorhandenen Kante, die bemaßt werden soll - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Falls Aktiviert, werden Objekte kopiert anstatt verschoben. Einstellungen -> Draft -> Globaler Kopiermodus, um diesen Modus in den nächsten Befehlen beizubehalten @@ -2808,12 +2993,12 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Subelement-Modus - + Modify subelements Subelemente ändern - + If checked, subelements will be modified instead of entire objects Wenn aktiviert, werden Subelemente anstatt ganzer Objekte geändert @@ -2838,12 +3023,12 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Seite - + Current working plane Aktuelle Arbeitsebene - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Dies auswählen um das Objekt als gefüllt erscheinen zu lassen, andernfalls wird es als Drahtgitter dargestellt. Ist nicht verfügbar, wenn die Skizzen-Einstellung 'Verwende primitive Teile' aktiviert ist @@ -2863,32 +3048,32 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Ein-/Ausschalten des Einrastens in der Nähe - + Create text Text erstellen - + Press this button to create the text object, or finish your text with two blank lines Drücken Sie diese Schaltfläche, um das Textobjekt zu erstellen, oder beenden Sie Ihren Text mit zwei leeren Zeilen - + Center Y Mittelpunkt Y - + Center Z Mittelpunkt Z - + Offset distance Versatzabstand - + Trim distance Abstand trimmen @@ -2897,6 +3082,11 @@ Antworten Sie mit "Ja", um FreeCAD den automatischen Download der Bibliotheken z Wire Kantenzug + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_el.qm b/src/Mod/Draft/Resources/translations/Draft_el.qm index f57e70f9e5..79b70e6882 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 4462f74577..68f991c7f8 100644 --- a/src/Mod/Draft/Resources/translations/Draft_el.ts +++ b/src/Mod/Draft/Resources/translations/Draft_el.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines γραμμές + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Πλάτος γραμμής + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Τελεία + + + + Circle + Κύκλος + + + + Arrow + Βέλος + + + + Tick + Σημειώστε + + + + Tick-2 + Σημειώστε-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Χρώμα γραμμής + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Στερεό + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + Παύλα-Τελεία + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Διαφάνεια + + + + Display mode + Λειτουργία προβολής + + + + Text font + Text font + + + + Arrow size + Μέγεθος βέλους + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Σκελετός + + + + Shaded + Σκιασμένη + + + + Points + Σημεία + + + + Draw style + Τύπος μορφοποίησης σχεδίασης + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Εφαρμόστε στα επιλεγμένα αντικείμενα + Gui::Dialog::DlgSettingsDraft @@ -2295,202 +2505,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Γραμμή Εντολών Προσχεδίου - + Toggle construction mode Εναλλαγή λειτουργίας κατασκευής - - Current line color - Τρέχον χρώμα γραμμής - - - - Current face color - Τρέχον χρώμα όψης - - - - Current line width - Τρέχον πλάτος γραμμής - - - - Current font size - Τρέχον μέγεθος γραμματοσειράς - - - - Apply to selected objects - Εφαρμόστε στα επιλεγμένα αντικείμενα - - - + Autogroup off Απενεργοποίηση Αυτόματης Ομαδοποίησης - + active command: ενεργή εντολή: - + None Κανένα - + Active Draft command Ενεργή εντολή Προσχεδίου - + X coordinate of next point Συντεταγμένη X του επόμενου σημείου - + X X - + Y Y - + Z Z - + Y coordinate of next point Συντεταγμένη Y του επόμενου σημείου - + Z coordinate of next point Συντεταγμένη Ζ του επόμενου σημείου - + Enter point Εισάγετε σημείο - + Enter a new point with the given coordinates Εισάγετε ένα νέο σημείο με τις δεδομένες συντεταγμένες - + Length Μήκος - + Angle Γωνία - + Length of current segment Μήκος του τρέχοντος τμήματος - + Angle of current segment Γωνία του τρέχοντος τμήματος - + Radius Ακτίνα - + Radius of Circle Ακτίνα Κύκλου - + If checked, command will not finish until you press the command button again Αν έχει επιλεχθεί, η εντολή δεν θα ολοκληρωθεί έως ότου πιέσετε ξανά το πλήκτρο εντολής - + If checked, an OCC-style offset will be performed instead of the classic offset Αν έχει επιλεχθεί, μια μετατόπιση τύπου μορφοποίησης OCC θα εκτελεστεί αντί της κλασσικής μετατόπισης - + &OCC-style offset Μετατόπιση τύπου μορφοποίησης &OCC - + Sides Πλευρές - + Number of sides Αριθμός πλευρών - + Offset Μετατοπίστε - + Auto Αυτόματο - + Text string to draw Συμβολοσειρά κειμένου σχεδίασης - + String Συμβολοσειρά - + Height of text Ύψος κειμένου - + Height Ύψος - + Intercharacter spacing Κενό μεταξύ των χαρακτήρων - + Tracking Απόσταση Γραμμάτων - + Full path to font file: Πλήρης διαδρομή για το αρχείο γραμματοσειράς: - + Open a FileChooser for font file Άνοιγμα ενός Επιλογέα Αρχείων για το αρχείο γραμματοσειράς @@ -2500,132 +2685,132 @@ This value is the maximum segment length. Γραμμή - + DWire Σύρμα προσχεδίου - + Circle Κύκλος - + Center X Κέντρο X - + Arc Τόξο - + Point Σημείο - + Label Ετικέτα - + Distance Distance - + Trim Περικοπή - + Pick Object Διαλέξτε Αντικείμενο - + Edit Επεξεργασία - + Global X Καθολικό X - + Global Y Καθολικό Y - + Global Z Καθολικό Z - + Local X Τοπικό X - + Local Y Τοπικό Y - + Local Z Τοπικό Z - + Invalid Size value. Using 200.0. Μη έγκυρη τιμή Μεγέθους. Θα χρησιμοποιηθεί η τιμή 200.0. - + Invalid Tracking value. Using 0. Μη έγκυρη τιμή Απόστασης Γραμμάτων. Θα χρησιμοποιηθεί η τιμή 0. - + Please enter a text string. Παρακαλώ εισάγετε μια συμβολοσειρά κειμένου. - + Select a Font file Επιλέξτε ένα αρχείο Γραμματοσειράς - + Please enter a font file. Παρακαλώ εισάγετε ένα αρχείο γραμματοσειράς. - + Autogroup: Αυτόματη Ομαδοποίηση: - + Faces Όψεις - + Remove Αφαίρεση - + Add Προσθήκη - + Facebinder elements Στοιχεία σύνθεσης όψεων @@ -2640,7 +2825,7 @@ This value is the maximum segment length. Καμπύλη Bezier - + Copy Αντιγραφή @@ -2664,17 +2849,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Για να επιτρέψετε στο FreeCAD να κατεβάσει αυτές τις βιβλιοθήκες, απαντήστε Ναι. - + Relative Σχετικό - + Continue Συνεχίστε - + Close Κλείσιμο @@ -2719,7 +2904,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Περιορίστε Z - + Select edge Επιλέξτε ακμή @@ -2734,7 +2919,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Λειτουργία μήκους - + Wipe Εκκαθαρίστε @@ -2749,67 +2934,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Cycle snap object - + Check this to lock the current angle Επιλέξτε αυτό για να κλειδώσετε την τρέχουσα γωνία - + Coordinates relative to last point or absolute Συντεταγμένες σχετικές με το τελευταίο σημείο ή απόλυτες - + Filled Γεμάτο - + Finish Ολοκλήρωση - + Finishes the current drawing or editing operation Ολοκληρώνει την τρέχουσα σχεδίαση ή λειτουργία επεξεργασίας - + &Undo (CTRL+Z) %Αναίρεση (CTRL+Z) - + Undo the last segment Αναιρέστε το τελευταίο τμήμα - + Finishes and closes the current line Ολοκληρώνει και κλείνει την τρέχουσα γραμμή - + Wipes the existing segments of this line and starts again from the last point Εκκαθαρίζει τα υπάρχοντα τμήματα αυτής της γραμμής και ξαναρχίζει από το τελευταίο σημείο - + Set WP Ορίστε WP - + Reorients the working plane on the last segment Αναπροσανατολίζει το επίπεδο εργασίας στο τελευταίο τμήμα - + Selects an existing edge to be measured by this dimension Επιλέγει μια υπάρχουσα ακμή για να μετρηθεί από αυτήν την διάσταση - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2819,12 +3004,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2849,12 +3034,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2874,32 +3059,32 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Toggle near snap on/off - + Create text Δημιουργία κειμένου - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2908,6 +3093,11 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wire Σύρμα + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_es-ES.qm b/src/Mod/Draft/Resources/translations/Draft_es-ES.qm index 55eb9416dd..9815adb992 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 a0bd09246e..8807a6b8f3 100644 --- a/src/Mod/Draft/Resources/translations/Draft_es-ES.ts +++ b/src/Mod/Draft/Resources/translations/Draft_es-ES.ts @@ -870,13 +870,223 @@ usando las teclas [ y ] mientras dibuja Grid extension - Grid extension + Extensión de cuadrícula lines Líneas + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Ancho de la línea + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punto + + + + Circle + Circunferencia + + + + Arrow + Flecha + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostrar unidad + + + + Line color + Color de línea + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + La fuente a usar para textos y dimensiones + + + + The line style + The line style + + + + Solid + Sólido + + + + Dashed + Discontinua + + + + Dotted + Discontinua + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Ignorar unidad + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparencia + + + + Display mode + Modo de visualización + + + + Text font + Text font + + + + Arrow size + Tamaño de flecha + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Modelo de alambres + + + + Shaded + Sombreado + + + + Points + Puntos + + + + Draw style + Estilo de dibujo + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplicar a los objetos seleccionados + Gui::Dialog::DlgSettingsDraft @@ -2237,27 +2447,27 @@ Este valor es la longitud máxima del segmento. Override unit - Override unit + Ignorar unidad By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Al dejar este campo en blanco, las medidas de dimensión se mostrarán en la unidad actual definida en FreeCAD. Al indicar aquí una unidad como m o cm, puede forzar que se muestren nuevas dimensiones en esa unidad. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + La resolución para dibujar los patrones. El valor predeterminado es 128. Valores más altos dan mejores resoluciones, valores más bajos hacen que el dibujo sea más rápido Hatch Pattern default size - Hatch Pattern default size + Tamaño predeterminado del Patrón de Rayado The default size of hatch patterns - The default size of hatch patterns + El tamaño por defecto de los patrones de rayado @@ -2289,202 +2499,177 @@ Este valor es la longitud máxima del segmento. draft - + Draft Command Bar Barra de comandos del borrador - + Toggle construction mode Cambiar a modo de construcción - - Current line color - Color de línea actual - - - - Current face color - Color de cara actual - - - - Current line width - Ancho de línea actual - - - - Current font size - Tamaño de fuente actual - - - - Apply to selected objects - Aplicar a los objetos seleccionados - - - + Autogroup off Desactivar Auto-agrupar - + active command: Comando activo: - + None Ninguno - + Active Draft command Activar comando de boceto - + X coordinate of next point Coordenada X del siguiente punto - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y del siguiente punto - + Z coordinate of next point Coordenada Z del siguiente punto - + Enter point Suministrar punto - + Enter a new point with the given coordinates Suministre un nuevo punto con las coordenadas dadas - + Length Longitud - + Angle Ángulo - + Length of current segment Longitud del segmento actual - + Angle of current segment Ángulo del segmento actual - + Radius Radio - + Radius of Circle radio de la circunferencia - + If checked, command will not finish until you press the command button again Si está activado, el comando no terminará hasta que vuelva a pulsar el botón de comando - + If checked, an OCC-style offset will be performed instead of the classic offset Si marcado, una offset estilo OCC será realizada en vez del offset clásico - + &OCC-style offset Salida estilo OCC - + Sides Lados - + Number of sides Número de lados - + Offset Equidistancia - + Auto Auto - + Text string to draw Cadena de texto para dibujar - + String Cadena de texto - + Height of text Altura de texto - + Height Altura - + Intercharacter spacing Espacio entre caracteres - + Tracking Seguimiento - + Full path to font file: Ruta de acceso completa al archivo de fuente: - + Open a FileChooser for font file Abrir un Selector de ficheros para el archivo de fuente @@ -2494,132 +2679,132 @@ Este valor es la longitud máxima del segmento. Línea - + DWire DWire - + Circle Circunferencia - + Center X Centro X - + Arc Arco - + Point Punto - + Label Etiqueta - + Distance Distancia - + Trim Recortar - + Pick Object Designar objeto - + Edit Editar - + Global X Global X - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Valor no válido de tamaño. Usando 200.0. - + Invalid Tracking value. Using 0. Valor de seguimiento no válido. Usando 0. - + Please enter a text string. Por favor, introduzca una cadena de texto. - + Select a Font file Seleccione un archivo de fuente - + Please enter a font file. Por favor, introduzca un fichero de fuente. - + Autogroup: Auto-agrupar: - + Faces Caras - + Remove Quitar - + Add Añadir - + Facebinder elements Elementos Facebinder @@ -2634,7 +2819,7 @@ Este valor es la longitud máxima del segmento. CurvaBezier - + Copy Copiar @@ -2656,17 +2841,17 @@ O descargar estas bibliotecas manualmente, como se explica en https://github.com Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si. - + Relative Relativo - + Continue Continuar - + Close Cerrar @@ -2711,7 +2896,7 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Restringir Z - + Select edge Seleccionar arista @@ -2726,7 +2911,7 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Modo longitud - + Wipe Limpieza @@ -2741,67 +2926,67 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Objeto de ajuste de ciclo - + Check this to lock the current angle Mira para bloquear el ángulo actual - + Coordinates relative to last point or absolute Coordenadas en relación con el último punto o absoluto - + Filled Relleno - + Finish Terminado - + Finishes the current drawing or editing operation Termina el dibujo actual u operación de edición - + &Undo (CTRL+Z) &Deshacer (Ctrl+Z) - + Undo the last segment Deshacer el tramo anterior - + Finishes and closes the current line Finalizar y cerrar la línea actual - + Wipes the existing segments of this line and starts again from the last point Limpia los segmentos existentes de esta línea y empieza de nuevo desde el último punto - + Set WP Configurar WP - + Reorients the working plane on the last segment Reorienta el plano de trabajo en el último segmento - + Selects an existing edge to be measured by this dimension Selecciona una arista existente para ser medido por esta cota - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Si está marcado, los objetos se copiarán en lugar de moverlos. Preferencias -> Draft-> Modo de copia global para mantener este modo en los siguientes comandos @@ -2811,12 +2996,12 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Modo Subelemento - + Modify subelements Modificar subelementos - + If checked, subelements will be modified instead of entire objects Si está marcado, los subelementos serán modificados en lugar de objetos enteros @@ -2841,12 +3026,12 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Lado - + Current working plane Plano de trabajo actual - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Marque esto si el objeto debe aparecer como lleno, de lo contrario aparecerá como una estructura alámbrica. No está disponible si la opción de preferencia de Draft 'Usar primitivos de pieza' está habilitada @@ -2866,32 +3051,32 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Alternar cerca del cierre / apagado - + Create text Crear texto - + Press this button to create the text object, or finish your text with two blank lines Presione este botón para crear el objeto de texto, o termine su texto con dos líneas en blanco - + Center Y Centro Y - + Center Z Centro Z - + Offset distance Distancia de desplazamiento - + Trim distance Recortar distancia @@ -2900,6 +3085,11 @@ Para habilitar a FreeCAD la descarga de estas bibliotecas, responder Si.Wire Alambre + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_eu.qm b/src/Mod/Draft/Resources/translations/Draft_eu.qm index dcfcbda84f..a02a35db2f 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 bc62a473af..7ececb85b4 100644 --- a/src/Mod/Draft/Resources/translations/Draft_eu.ts +++ b/src/Mod/Draft/Resources/translations/Draft_eu.ts @@ -862,13 +862,223 @@ value by using the [ and ] keys while drawing Grid extension - Grid extension + Saretaren hedadura lines lerroak + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Lerro-zabalera + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Puntua + + + + Circle + Zirkulua + + + + Arrow + Gezia + + + + Tick + Tika + + + + Tick-2 + Tika-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Erakutsi unitatea + + + + Line color + Lerro-kolorea + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Testuetarako eta kotetarako erabiliko den letra-tipoa + + + + The line style + The line style + + + + Solid + Solidoa + + + + Dashed + Marratua + + + + Dotted + Puntukatua + + + + DashDot + MarraPuntua + + + + Text size + Text size + + + + Unit override + Unitatea gainidaztea + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Gardentasuna + + + + Display mode + Bistaratze modua + + + + Text font + Text font + + + + Arrow size + Gezi-tamaina + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Alanbre-bilbea + + + + Shaded + Itzaldurarekin + + + + Points + Puntuak + + + + Draw style + Marrazte-estiloa + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplikatu hautatutako objektuei + Gui::Dialog::DlgSettingsDraft @@ -1835,7 +2045,7 @@ Horren azpiko diferentziak dituzten balioak horretarako berdintzen dira. Balio h Cycle Snap - Txandakatu atxikitzea + Ziklo-atxikitzea @@ -2228,27 +2438,27 @@ Balio hau segmentu-luzera maximoa da. Override unit - Override unit + Gainidatzi unitatea By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Eremu hau hutsik uzten bada, koten neurketak FreeCADek definitutako uneko unitatean erakutsiko dira. Hemen unitate bat adierazten bada, adibidez m edo cm, kota berriak unitate horretan erakutsi daitezen behartu daiteke. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + Ereduak marrazteko erabiliko den bereizmena. Balio lehenetsia 128 da. Balio altuagoek bereizmen hobeak ematen dituzte, balio baxuagoek marraztea azkartzen dute Hatch Pattern default size - Hatch Pattern default size + Itzaleztadura-ereduaren tamaina lehenetsia The default size of hatch patterns - The default size of hatch patterns + Itzaleztadura-ereduaren tamaina lehenetsia @@ -2280,202 +2490,177 @@ Balio hau segmentu-luzera maximoa da. draft - + Draft Command Bar Zirriborroen komando-barra - + Toggle construction mode Txandakatu eraikuntza modua - - Current line color - Uneko lerro-kolorea - - - - Current face color - Uneko aurpegi-kolorea - - - - Current line width - Uneko lerro-kolorea - - - - Current font size - Uneko letra-tamaina - - - - Apply to selected objects - Aplikatu hautatutako objektuei - - - + Autogroup off Talde automatikoa desgaituta - + active command: Komando aktiboa: - + None Bat ere ez - + Active Draft command Zirriborro-komando aktiboa - + X coordinate of next point Hurrengo puntuaren X koordenatua - + X X - + Y Y - + Z Z - + Y coordinate of next point Hurrengo puntuaren Y koordenatua - + Z coordinate of next point Hurrengo puntuaren Z koordenatua - + Enter point Sartu puntua - + Enter a new point with the given coordinates Sartu emandako koordenatuak dituen puntu berri bat - + Length Luzera - + Angle Angelua - + Length of current segment Uneko segmentuaren luzera - + Angle of current segment Uneko segmentuaren angelua - + Radius Erradioa - + Radius of Circle Zirkuluaren erradioa - + If checked, command will not finish until you press the command button again Markatuta badago, komandoa ez da amaituko komando-botoia berriro sakatzen duzun arte - + If checked, an OCC-style offset will be performed instead of the classic offset Markatuta badago, OCC estiloko desplazamendua egingo da, desplazamendu klasikoa egingo da - + &OCC-style offset &OCC estiloko desplazamendua - + Sides Aldeak - + Number of sides Alde kopurua - + Offset Desplazamendua - + Auto Automatikoa - + Text string to draw Marraztuko den testu-katea - + String Katea - + Height of text Testuaren altuera - + Height Altuera - + Intercharacter spacing Karaktereen arteko tartea - + Tracking Jarraipena - + Full path to font file: Letra-tipoaren fitxategiaren bide osoa: - + Open a FileChooser for font file Ireki fitxategi-hautatzaile bat letra-tipoa aukeratzeko @@ -2485,132 +2670,132 @@ Balio hau segmentu-luzera maximoa da. Lerroa - + DWire DWire - + Circle Zirkulua - + Center X X zentroa - + Arc Arkua - + Point Puntua - + Label Etiketa - + Distance Distantzia - + Trim Muxarratu - + Pick Object Aukeratu objektua - + Edit Editatu - + Global X X globala - + Global Y Y globala - + Global Z Z globala - + Local X X lokala - + Local Y Y lokala - + Local Z Z lokala - + Invalid Size value. Using 200.0. Baliogabeko tamaina-balioa. 200.0 erabiliko da. - + Invalid Tracking value. Using 0. Jarraipen-balio baliogabea. 0 erabiltzen. - + Please enter a text string. Sartu testu-kate bat. - + Select a Font file Hautatu letra-tipo fitxategi bat - + Please enter a font file. Sartu letra-tipo fitxategi bat. - + Autogroup: Talde automatikoa: - + Faces Aurpegiak - + Remove Kendu - + Add Gehitu - + Facebinder elements Aurpegi-zorro elementuak @@ -2625,7 +2810,7 @@ Balio hau segmentu-luzera maximoa da. Bezier kurba - + Copy Kopiatu @@ -2649,17 +2834,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'. - + Relative Erlatiboa - + Continue Jarraitu - + Close Itxi @@ -2704,7 +2889,7 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Murriztu Z - + Select edge Hautatu ertza @@ -2719,7 +2904,7 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Luzera modua - + Wipe Garbitu @@ -2731,70 +2916,70 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'. Cycle snap object - Txandakatu atzikitze-objektua + Ziklo-atxikitzeko objektua - + Check this to lock the current angle Markatu hau uneko angelua blokeatzeko - + Coordinates relative to last point or absolute Azken puntuarekiko erlatiboak diren edo absolutuak diren koordenatuak - + Filled Beteta - + Finish Amaitu - + Finishes the current drawing or editing operation Uneko marrazte- edo editatze-eragiketa amaitzen du - + &Undo (CTRL+Z) &Desegin (Ctrl+Z) - + Undo the last segment Desegin azken segmentua - + Finishes and closes the current line Uneko lerroa amaitzen eta ixten du - + Wipes the existing segments of this line and starts again from the last point Lerro honetan dauden segmentuak garbitzen ditu eta berriro hasten da azken puntutik - + Set WP Ezarri WPa - + Reorients the working plane on the last segment Laneko planoaren orientazioa aldatzen du azken segmentuan - + Selects an existing edge to be measured by this dimension Kota honek neurtuko duen eta lehendik dagoen ertz bat hautatzen du - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Markatuta badago, objektuak kopiatu egingo dira, ez mugitu. 'Hobespenak -> Zirriborroa -> Kopiatze modu globala' modu hau hurrengo komandoetan mantendu nahi bada @@ -2804,12 +2989,12 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Azpi-elementuen modua - + Modify subelements Aldatu azpi-elementuak - + If checked, subelements will be modified instead of entire objects Hautatuta badaude, azpi-elementuek objektu osoa ordeztuko dute @@ -2834,12 +3019,12 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Aldea - + Current working plane Uneko laneko planoa - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Markatu hau objektuak beteta agertu behar badu, bestela alanbre-bilbe gisa agertuko da. Ez dago erabilgarri zirriborroen 'Erabili piezen jatorrizkoak' aukera gaituta badago. @@ -2856,35 +3041,35 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'. Toggle near snap on/off - Aktibatu/desaktibatu atxikitzea + Aktibatu/desaktibatu atxikitze hurbila - + Create text Sortu testua - + Press this button to create the text object, or finish your text with two blank lines Sakatu botoi hau testu-objektua sortzeko, edo amaitu zure testua bi lerro zurirekin - + Center Y Y zentroa - + Center Z Z zentroa - + Offset distance Desplazamendu-distantzia - + Trim distance Muxarratze-distantzia @@ -2893,6 +3078,11 @@ FreeCADek liburutegi horiek deskarga ditzan gaitzeko, erantzun 'Bai'.Wire Alanbrea + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_fi.qm b/src/Mod/Draft/Resources/translations/Draft_fi.qm index b7477436cc..98a6c45813 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 edf6d389dc..61d2040885 100644 --- a/src/Mod/Draft/Resources/translations/Draft_fi.ts +++ b/src/Mod/Draft/Resources/translations/Draft_fi.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines rivit + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Viivan leveys + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Piste + + + + Circle + Ympyrä + + + + Arrow + Nuoli + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Viivan väri + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Monitahokas + + + + Dashed + Katkoviiva + + + + Dotted + Pisteviiva + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Läpinäkyvyys + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + Nuolen koko + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Rautalankamalli + + + + Shaded + Varjostettu + + + + Points + Pisteet + + + + Draw style + Piirrostyyli + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Käytä valittuihin kohteisiin + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Vedos komentopalkki - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - Käytä valittuihin kohteisiin - - - + Autogroup off Autogroup off - + active command: aktiivinen komento: - + None Ei mitään - + Active Draft command Aktiivinen vedos-komento - + X coordinate of next point X-koordinaatin seuraava kohta - + X X - + Y Y - + Z Z - + Y coordinate of next point Y-koordinaatin seuraava kohta - + Z coordinate of next point Z-koordinaatin seuraava kohta - + Enter point Enter point - + Enter a new point with the given coordinates Enter a new point with the given coordinates - + Length Pituus - + Angle Kulma - + Length of current segment Nykyisen segmentin pituus - + Angle of current segment Nykyisen segmentin kulma - + Radius Säde - + Radius of Circle Ympyrän säde - + If checked, command will not finish until you press the command button again Jos valintaruutu on valittuna, komento ei ole valmis, ennenkuin painat komentopainiketta uudelleen - + If checked, an OCC-style offset will be performed instead of the classic offset Jos valittuna, niin OCC-tyylin siirtymä tehdään klassisen siirtymän sijaan - + &OCC-style offset &OCC-tyylin siirtymä - + Sides Sivut - + Number of sides Sivujen lukumäärä - + Offset Siirtymä - + Auto Automaattinen - + Text string to draw Merkkijono piirrokseen - + String Merkkijono - + Height of text Tekstin korkeus - + Height Korkeus - + Intercharacter spacing Kirjaimien väli - + Tracking Seuranta - + Full path to font file: Fonttitiedoston koko kansiopolku: - + Open a FileChooser for font file Avaa TiedostonValitsin fontti-tiedostoa varten @@ -2498,132 +2683,132 @@ This value is the maximum segment length. Viiva - + DWire DLanka - + Circle Ympyrä - + Center X Keskitä X - + Arc Kaari - + Point Piste - + Label Label - + Distance Etäisyys - + Trim rajaa - + Pick Object Valitse objekti - + Edit Muokkaa - + Global X Yleinen X - + Global Y Yleinen Y - + Global Z Yleinen Z - + Local X Paikallinen X - + Local Y Paikallinen Y - + Local Z Paikallinen Z - + Invalid Size value. Using 200.0. Koon arvo ei kelpaa. Käytetään 200,0. - + Invalid Tracking value. Using 0. Seuranta-arvo ei kelpaa. Käytetään 0. - + Please enter a text string. Kirjoita merkkijono. - + Select a Font file Valitse fontti-tiedosto - + Please enter a font file. Anna fonttitiedosto. - + Autogroup: Autogroup: - + Faces Pinnat - + Remove Poista - + Add Lisää - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. BezCurve - + Copy Kopio @@ -2662,17 +2847,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Sulje @@ -2717,7 +2902,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2732,7 +2917,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2747,67 +2932,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Valmis - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2817,12 +3002,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2847,12 +3032,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2872,32 +3057,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Luo tekstiä - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2906,6 +3091,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Lanka + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_fil.qm b/src/Mod/Draft/Resources/translations/Draft_fil.qm index 71d210bf67..4914139f12 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_fil.qm and b/src/Mod/Draft/Resources/translations/Draft_fil.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_fil.ts b/src/Mod/Draft/Resources/translations/Draft_fil.ts index 8658f34bf5..68206cee7c 100644 --- a/src/Mod/Draft/Resources/translations/Draft_fil.ts +++ b/src/Mod/Draft/Resources/translations/Draft_fil.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines hanay + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Lapad ng linya + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Dot + + + + Circle + Sirkulo + + + + Arrow + Palaso + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Kulay ng linya + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Solid + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Aninag + + + + Display mode + Anyo ng display + + + + Text font + Text font + + + + Arrow size + Sukat ng palaso + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Wireframe + + + + Shaded + May kulay + + + + Points + Mga point + + + + Draw style + Istilo ng Guhit + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Mag-apply sa mga napiling bagay + Gui::Dialog::DlgSettingsDraft @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Planong Command Bar - + Toggle construction mode Magpalipat-lipat sa mode ng konstruksiyon - - Current line color - Kulay ng kasalukuyang linya - - - - Current face color - Karániwan kulay ng mukha - - - - Current line width - Lapad ng kasalukuyang linya - - - - Current font size - Kasalukuyang laki ng harapan - - - - Apply to selected objects - Mag-apply sa mga napiling bagay - - - + Autogroup off I-off ang Autogroup - + active command: aktibong command: - + None Wala - + Active Draft command Aktibong Draft command - + X coordinate of next point X Kaayos ng susunod na punto - + X Exis - + Y Y - + Z Z - + Y coordinate of next point Y ayos ng susunod na punto - + Z coordinate of next point Z Kaayos ng susunod na Dulo - + Enter point Ipasok ang dulo - + Enter a new point with the given coordinates Magpasok ng isang bagong dulo sa ibinigay na mga kaayos - + Length Haba - + Angle Anggulo - + Length of current segment Haba ng kasalukuyang Bahagi ng isang kabilugan - + Angle of current segment Anggulo ng kasalukuyang Bahagi ng isang kabilugan - + Radius Guhit na mulâ sa gitnâ hanggang sa gilid ng bilog - + Radius of Circle Guhit na mulâ sa gitnâ hanggang sa gilid ng bilog of Circle - + If checked, command will not finish until you press the command button again Kung nasusuri, ang command ay hindi matapos hanggang sa pindutin mo muli ang command button - + If checked, an OCC-style offset will be performed instead of the classic offset Kung naka-check, ang isang offset na estilo ng OCC ay gagawa sa halip na ang classic na offset - + &OCC-style offset &Offset ng estilo ng OCC - + Sides Mga gilid - + Number of sides Bilang ng mga panig - + Offset Tabingi - + Auto Kusa - + Text string to draw Teksto ng string upang gumuhit - + String String - + Height of text Kataasan ng teksto - + Height Taas - + Intercharacter spacing Intercharacter espasyo - + Tracking Pag-sunod - + Full path to font file: Buong landas sa file ng harap: - + Open a FileChooser for font file Buksan ang isang paghahanapan ng file para sa file ng font @@ -2501,133 +2686,133 @@ This value is the maximum segment length. Guhit - + DWire Dkawad - + Circle Sirkulo - + Center X Kalahatian x - + Arc Arko - + Point Dunggot - + Label Magtanda - + Distance Distance - + Trim Mahusay - + Pick Object Pumili ng layon - + Edit I-edit - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Pampook na x - + Local Y Pampook na y - + Local Z Pampook na x - + Invalid Size value. Using 200.0. Di-wastong halaga ng Sukat. Paggamit ng 200.0. - + Invalid Tracking value. Using 0. Di-wastong halaga ng Pagsubaybay. Paggamit ng 0. - + Please enter a text string. Mangyaring maglagay ng tali sa teksto. - + Select a Font file Pumili ng harap file - + Please enter a font file. Mangyaring magpasok ng isang font na file. - + Autogroup: Autogroup: - + Faces Faces - + Remove Ihiwalay - + Add Magdugtong - + Facebinder elements Mga pasimulang aral ng Facebinder @@ -2642,7 +2827,7 @@ Pampook na x BezCurve - + Copy Kopya @@ -2666,17 +2851,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. - + Relative Relative - + Continue Continue - + Close Sarado @@ -2721,7 +2906,7 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Restrict Z - + Select edge Select edge @@ -2736,7 +2921,7 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Length mode - + Wipe Wipe @@ -2751,67 +2936,67 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Tapos na - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2821,12 +3006,12 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2851,12 +3036,12 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2876,32 +3061,32 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Toggle near snap on/off - + Create text Lumikha ng teksto - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2910,6 +3095,11 @@ Upang ma-enable ang FreeCAD upang kupyahin ang mga aklatang ito, sagutin ang Oo. Wire Wire + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_fr.qm b/src/Mod/Draft/Resources/translations/Draft_fr.qm index 54fb43eb96..06039b7222 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 34de8a16cc..5cb20f6418 100644 --- a/src/Mod/Draft/Resources/translations/Draft_fr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_fr.ts @@ -216,7 +216,7 @@ The distance that the dimension line is additionally extended - The distance that the dimension line is additionally extended + La longueur supplémentaire à la dimension de la ligne @@ -869,13 +869,223 @@ en utilisant les touches [ et ] lors du dessin Grid extension - Grid extension + Extension de la grille lines lignes + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Largeur de ligne + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Point + + + + Circle + Cercle + + + + Arrow + Flèche + + + + Tick + Cocher + + + + Tick-2 + Oblique 2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Afficher les unités + + + + Line color + Couleur de ligne + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Police à utiliser pour les textes et les cotes + + + + The line style + The line style + + + + Solid + Solide + + + + Dashed + Tirets + + + + Dotted + Pointillés + + + + DashDot + Tiret point + + + + Text size + Text size + + + + Unit override + Substitution d’unité + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparence + + + + Display mode + Mode d'affichage + + + + Text font + Text font + + + + Arrow size + Taille de la flèche + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Filaire + + + + Shaded + Ombré + + + + Points + Points + + + + Draw style + Style de représentation + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Appliquer aux objets sélectionnés + Gui::Dialog::DlgSettingsDraft @@ -2039,7 +2249,7 @@ Notez que ce n'est pas entièrement supporté et que de nombreux objets ne seron Controls pick radius of edit nodes - Controls pick radius of edit nodes + Contrôle le rayon de sélection des nœuds d'édition @@ -2235,27 +2445,27 @@ Cette valeur est la longueur maximale du segment. Override unit - Override unit + Remplacer l'unité By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + En laissant ce champ vide, les mesures de dimension seront affichées dans l'unité actuelle définie dans FreeCAD. En indiquant ici une unité telle que m ou cm, vous pouvez forcer l'affichage des nouvelles dimensions dans cette unité. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + La résolution pour dessiner les patrons. La valeur par défaut est 128. Des valeurs plus élevées donnent de meilleures résolutions, des valeurs plus basses rendent le dessin plus rapide Hatch Pattern default size - Hatch Pattern default size + Taille par défaut du motif des hachures The default size of hatch patterns - The default size of hatch patterns + La taille par défaut des motifs de hachures @@ -2287,202 +2497,177 @@ Cette valeur est la longueur maximale du segment. draft - + Draft Command Bar Barre de commandes Draft - + Toggle construction mode Basculer en mode construction - - Current line color - Couleur de la ligne - - - - Current face color - Couleur de face actuelle - - - - Current line width - Largeur de la ligne actuelle - - - - Current font size - Taille de caractère actuelle - - - - Apply to selected objects - Appliquer aux objets sélectionnés - - - + Autogroup off Autogroup désactivé - + active command: commande active : - + None Aucun - + Active Draft command Commande active - + X coordinate of next point Coordonnée X du prochain point - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordonnée Y du prochain point - + Z coordinate of next point Coordonnée Z du prochain point - + Enter point Entrez le point - + Enter a new point with the given coordinates Entrez un nouveau point avec les coordonnées données - + Length Longueur - + Angle Angle - + Length of current segment Longueur du segment actuel - + Angle of current segment Angle du segment actuel - + Radius Rayon - + Radius of Circle Rayon du cercle - + If checked, command will not finish until you press the command button again Si cette case est cochée, la commande ne se terminera que si vous appuyez à nouveau sur son icône - + If checked, an OCC-style offset will be performed instead of the classic offset Si coché, un décalage de type OCC sera effectué au lieu du décalage classique - + &OCC-style offset Décalage de type &OCC - + Sides Côtés - + Number of sides Nombre de côtés - + Offset Décalage - + Auto Plan de travail - + Text string to draw Chaîne de texte à dessiner - + String Chaîne - + Height of text Hauteur du texte - + Height Hauteur - + Intercharacter spacing Espacement entre les caractères - + Tracking Crénage - + Full path to font file: Chemin d'accès complet au fichier de police : - + Open a FileChooser for font file Ouvre une boîte de dialogue pour choisir le fichier de police @@ -2492,132 +2677,132 @@ Cette valeur est la longueur maximale du segment. Ligne - + DWire Filaire - + Circle Cercle - + Center X Centre X - + Arc Arc - + Point Point - + Label Étiquette - + Distance Distance - + Trim Ajuster - + Pick Object Choisir un objet - + Edit Éditer - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Valeur de taille non valide. Utilisation de 200,0. - + Invalid Tracking value. Using 0. Valeur non valide de crénage. Utilisation de 0. - + Please enter a text string. Veuillez entrer une chaîne de texte. - + Select a Font file Sélectionnez un fichier de police - + Please enter a font file. Veuillez entrer un fichier de police s'il vous plaît - + Autogroup: Autogroup : - + Faces Faces - + Remove Enlever - + Add Ajouter - + Facebinder elements Surfaces liées: éléments @@ -2632,7 +2817,7 @@ Cette valeur est la longueur maximale du segment. Courbe de Bézier - + Copy Copie @@ -2649,17 +2834,17 @@ To enabled FreeCAD to download these libraries, answer Yes. Les bibliothèques d'importation/exportation DXF nécessaires FreeCAD pour manipuler le format DXF ne se trouvaient pas sur ce système. Il vous faut soit activer FreeCAD télécharger ces bibliothèques : plan de travail de charge projet 1 - 2 - Menu Edition > Préférences > Import-Export > DXF > activer les téléchargements ou télécharger ces bibliothèques manuellement, comme expliqué sur https://github.com/yorikvanhavre/Draft-dxf-importer pour FreeCAD activé pour télécharger ces bibliothèques, répondre Oui. - + Relative Relative - + Continue Continuer - + Close Fermer @@ -2704,7 +2889,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restreindre les Z - + Select edge Sélectionnez les arêtes @@ -2719,7 +2904,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Mode de longueur - + Wipe Effacer @@ -2734,67 +2919,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Alterner entre différents accrochages - + Check this to lock the current angle Cochez cette case pour verrouiller l’angle actuel - + Coordinates relative to last point or absolute Coordonnées par rapport au dernier point ou absolue - + Filled Rempli - + Finish Terminer - + Finishes the current drawing or editing operation Termine le dessin courant ou opération d’édition - + &Undo (CTRL+Z) & Annuler (CTRL + Z) - + Undo the last segment Annuler le dernier segment - + Finishes and closes the current line Finitions et ferme la ligne courante - + Wipes the existing segments of this line and starts again from the last point Essuie les tronçons existants de cette ligne et reprend à partir du dernier point - + Set WP Définir le plan de travail - + Reorients the working plane on the last segment Réoriente le plan de travail sur le dernier segment - + Selects an existing edge to be measured by this dimension Sélectionne une arête existante qui sera mesurée par cette cote - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Si activé, les objets seront copiés au lieu de déplacés. Préférences-> esquisses-> mode de copie globale pour garder ce mode dans les prochaines commandes @@ -2804,12 +2989,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Mode sous-élément - + Modify subelements Modifier les sous-éléments - + If checked, subelements will be modified instead of entire objects Si coché, les sous-éléments seront modifiés plutôt que les objets en entier @@ -2834,12 +3019,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Côté - + Current working plane Plan de travail actuel - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Cochez ceci si l'objet doit apparaître comme rempli, sinon il apparaîtra comme filaire. Non disponible si l'option de préférence Draft 'Utiliser les Primitives de partie' est activée @@ -2859,32 +3044,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Activer ou désactiver l'accrochage de proximité - + Create text Insérer du texte - + Press this button to create the text object, or finish your text with two blank lines Appuyez sur ce bouton pour créer l'objet texte, ou terminez votre texte avec deux lignes vides - + Center Y Centre Y - + Center Z Centre Z - + Offset distance Distance de décalage - + Trim distance Distance de coupe @@ -2893,6 +3078,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Fil + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_gl.qm b/src/Mod/Draft/Resources/translations/Draft_gl.qm index 009336870e..7c78fd28f4 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 46ad460ab7..4a47e339dd 100644 --- a/src/Mod/Draft/Resources/translations/Draft_gl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_gl.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines liñas + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Largura da liña + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punto + + + + Circle + Círculo + + + + Arrow + Frecha + + + + Tick + Tick + + + + Tick-2 + Diagonal-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Cor de liña + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Sólido + + + + Dashed + Liña de trazo + + + + Dotted + Liña de puntos + + + + DashDot + TrazoPunto + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparencia + + + + Display mode + Xeito de visualización + + + + Text font + Text font + + + + Arrow size + Tamaño das frechas + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Trama de arames + + + + Shaded + Sombreado + + + + Points + Puntos + + + + Draw style + Estilo de debuxo + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplicar os obxectos escolmados + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Liña de comandos de Bosquexo - + Toggle construction mode Alternar a modo de construción - - Current line color - Cor da liña actual - - - - Current face color - Cor de face actual - - - - Current line width - Largura de liña actual - - - - Current font size - Tamaño de fonte actual - - - - Apply to selected objects - Aplicar os obxectos escolmados - - - + Autogroup off Auto-agrupar desactivado - + active command: comando activo: - + None Ningún - + Active Draft command Comando activo - + X coordinate of next point Coordenada X do seguinte punto - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y do seguinte punto - + Z coordinate of next point Coordenada Z do seguinte punto - + Enter point Inserir punto - + Enter a new point with the given coordinates Inserir un novo punto coas coordenadas dadas - + Length Lonxitude - + Angle Ángulo - + Length of current segment Lonxitude do segmento actual - + Angle of current segment Ángulo do segmento actual - + Radius Raio - + Radius of Circle Raio do círculo - + If checked, command will not finish until you press the command button again Se isto está marcado, non ha rematar o comando hasta que volva premer o botón do comando de novo - + If checked, an OCC-style offset will be performed instead of the classic offset Se isto está marcado, hase facer un desprazamento de tipo OCC, no canto dun desprazamento clásico - + &OCC-style offset Desprazamento de tipo &OCC - + Sides Lados - + Number of sides Número de lados - + Offset Separación - + Auto Automático - + Text string to draw Cadea de texto para debuxar - + String Cadea de texto - + Height of text Altura do texto - + Height Altura - + Intercharacter spacing Espazado entre caracteres - + Tracking Seguimento - + Full path to font file: Ruta completa ao ficheiro fonte: - + Open a FileChooser for font file Abrir unha xanela de diálogo para escolmar o ficheiro fonte @@ -2498,132 +2683,132 @@ This value is the maximum segment length. Liña - + DWire Aramado - + Circle Círculo - + Center X Centro X - + Arc Arco - + Point Punto - + Label Etiqueta - + Distance Distance - + Trim Tallar - + Pick Object Escolmar obxecto - + Edit Editar - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Valor de tamaño non válido. Usando 200.0. - + Invalid Tracking value. Using 0. Valor de seguimento non válido. Usando 0. - + Please enter a text string. Por favor, insira un texto. - + Select a Font file Escolme un ficheiro de fontes - + Please enter a font file. Por favor, insira un ficheiro de fonte. - + Autogroup: Auto-agrupar: - + Faces Faces - + Remove Rexeitar - + Add Engadir - + Facebinder elements Elementos de Xuntacaras @@ -2638,7 +2823,7 @@ This value is the maximum segment length. Curva Bezier - + Copy Copiar @@ -2660,17 +2845,17 @@ Ou baixe estas bibliotecas manualmente, conforme se explica en https://github.co Para permitir o FreeCAD a descarga destas bibliotecas, responda Si. - + Relative Relativa - + Continue Continúa - + Close Pechar @@ -2715,7 +2900,7 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Restrinxir Z - + Select edge Escolma bordo @@ -2730,7 +2915,7 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Modo lonxitude - + Wipe Limpeza @@ -2745,67 +2930,67 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Obxecto de forzado de ciclo - + Check this to lock the current angle Comproba isto para bloquear o ángulo actual - + Coordinates relative to last point or absolute Coordenadas relativas ao último punto ou absolutas - + Filled Raiado - + Finish Rematar - + Finishes the current drawing or editing operation Remata a operación de debuxo ou edición actual - + &Undo (CTRL+Z) &Desfacer (CTRL+Z) - + Undo the last segment Desfacer o segmento anterior - + Finishes and closes the current line Rematar e pechar a liña actual - + Wipes the existing segments of this line and starts again from the last point Borra os segmentos existentes desta liña e comeza de novo dende o último punto - + Set WP Conxunto WP - + Reorients the working plane on the last segment Reorienta o plano de traballo sobre o último segmento - + Selects an existing edge to be measured by this dimension Escolma un bordo existente a ser medido por este acoutamento - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Se isto está activado, os obxectos serán copiados no lugar de moverse. Preferencias -> Borrador -> Copia global para manter este modo en próximos comandos @@ -2815,12 +3000,12 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Modo subelemento - + Modify subelements Modificar subelementos - + If checked, subelements will be modified instead of entire objects Se está marcado, sub elementos modificaranse no lugar de obxectos enteiros @@ -2845,12 +3030,12 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Lado - + Current working plane Actual plano de traballo - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Comproba se este obxecto pode aparecer como un raiado, ou desexas que apareza como trama de arames. Non dispoñible en opcións preferencias se Draft 'Use as Primitivas Part' está desactivada @@ -2870,32 +3055,32 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Toggle near snap on/off - + Create text Facer un texto - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2904,6 +3089,11 @@ Para permitir o FreeCAD a descarga destas bibliotecas, responda Si.Wire Arame + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_hr.qm b/src/Mod/Draft/Resources/translations/Draft_hr.qm index dc6cdbebba..88bdb689fb 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 34730a78a1..7e54a25928 100644 --- a/src/Mod/Draft/Resources/translations/Draft_hr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_hr.ts @@ -909,6 +909,216 @@ tijekom crtanja pomoću tipki [i] lines linije + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Širina linije + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Točka + + + + Circle + Krug + + + + Arrow + Strelica + + + + Tick + Okomita crtica + + + + Tick-2 + Okomita crtica-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Prikaži jedinice mjere + + + + Line color + Boja linije + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Pismo (font) koji se koristi za tekst i dimenzije + + + + The line style + The line style + + + + Solid + Čvrsto tijelo + + + + Dashed + Iscrtkano + + + + Dotted + Točkasto + + + + DashDot + Crtica Točka + + + + Text size + Text size + + + + Unit override + Mijenja jedinicu mjere + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Prozirnost + + + + Display mode + Način prikaza + + + + Text font + Text font + + + + Arrow size + Veličina strelice + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Žičana mreža + + + + Shaded + Osijenčeno + + + + Points + Točke + + + + Draw style + Stil crtanja + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Primijeni na odabrane objekte + Gui::Dialog::DlgSettingsDraft @@ -2342,202 +2552,177 @@ Ova vrijednost je maksimalna duljina segmenta. draft - + Draft Command Bar Naredbene trake nacrta - + Toggle construction mode Uključivanje/isključivanje konstrukcijskog moda - - Current line color - Aktualna boja linije - - - - Current face color - Aktualna boja lica - - - - Current line width - Aktualna širina linije - - - - Current font size - Trenutna veličina slova - - - - Apply to selected objects - Primijeni na odabrane objekte - - - + Autogroup off Auto grupa isključena - + active command: aktivna naredba: - + None Prazno - + Active Draft command Aktivna naredbu nacrta - + X coordinate of next point X koordinate sljedeće točke - + X X - + Y Y - + Z Z - + Y coordinate of next point Y koordinate sljedeće točke - + Z coordinate of next point Z koordinate sljedeće točke - + Enter point Unesi točku - + Enter a new point with the given coordinates Unesite novu točku s danim koordinatama - + Length Dužina - + Angle Kut - + Length of current segment Dužina aktualnog odjeljka - + Angle of current segment Kut aktualnog odjeljka - + Radius Radijus - + Radius of Circle Radijus kruga - + If checked, command will not finish until you press the command button again Ako je označeno, naredba neće završiti sve dok se ponovno ne pritisnete gumb naredbe - + If checked, an OCC-style offset will be performed instead of the classic offset Ako je označeno, pomak u OCC stilu izvršiti će se umjesto klasičnog pomaka - + &OCC-style offset pomak u &OCC-stilu - + Sides Strane - + Number of sides Broj strana - + Offset Pomak - + Auto Automatski - + Text string to draw Tekst za crtanje - + String Tekst (string) - + Height of text Visina teksta - + Height Visina - + Intercharacter spacing Unutrašnji razmak između znakova - + Tracking Praćenje - + Full path to font file: Cijeli put do datoteke pisma: - + Open a FileChooser for font file Otvorite FileChooser za datoteku fonta @@ -2547,132 +2732,132 @@ Ova vrijednost je maksimalna duljina segmenta. Linija - + DWire DWire - + Circle Krug - + Center X Centar X - + Arc Luk - + Point Točka - + Label Oznaka - + Distance Udaljenost - + Trim Skrati - + Pick Object Odaberite objekt - + Edit Uredi - + Global X Globalno X - + Global Y Globalno Y - + Global Z Globalno Z - + Local X Lokalno X - + Local Y Lokalno Y - + Local Z Lokalno Z - + Invalid Size value. Using 200.0. Pogrešna veličina vrijednosti. Koristit će se 200.0. - + Invalid Tracking value. Using 0. Pogrešna veličina vrijednosti. Koristit će se 0. - + Please enter a text string. Molimo vas, unesite tekst poruke. - + Select a Font file Odaberite datoteku pisma - + Please enter a font file. Molim unesite datoteku pisma. - + Autogroup: AutomatskaGrupa: - + Faces Plohe - + Remove Ukloniti - + Add Dodaj - + Facebinder elements Povezana-lica elementi @@ -2687,7 +2872,7 @@ Ova vrijednost je maksimalna duljina segmenta. BezierKrivulja - + Copy Kopiraj @@ -2711,17 +2896,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes). - + Relative Relativno - + Continue Nastavi - + Close Zatvori @@ -2766,7 +2951,7 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Ograničeno Z - + Select edge Odaberite rub @@ -2781,7 +2966,7 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Dužina mod - + Wipe Obriši @@ -2796,67 +2981,67 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Kružni Privuci objekt - + Check this to lock the current angle Uključi za zaključavanje aktualnog kuta - + Coordinates relative to last point or absolute Koordinate u odnosu na zadnju točku ili apsolutne - + Filled Ispunjeno - + Finish Završiti - + Finishes the current drawing or editing operation Završava aktualni crtež ili uređuje operacije - + &Undo (CTRL+Z) &Poništi (CTRL + Z) - + Undo the last segment Poništiti posljednji segment - + Finishes and closes the current line Završi i zatvori aktualnu liniju - + Wipes the existing segments of this line and starts again from the last point Briše postojeće segmente ovog retka i počinje ponovo od zadnje točke - + Set WP Postavljanje WP - + Reorients the working plane on the last segment Preusmjerava radnu ravninu na posljednji segment - + Selects an existing edge to be measured by this dimension Odabire postojeći rub za mjerenje sa ovom dimenzijom - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Ako je označeno, objekti će se kopirati umjesto premještanja. Postavke-> Nacrt-> Globalno kopiranje mod da bi zadržao ovaj mod u sljedećim naredbama @@ -2866,12 +3051,12 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Pod-element mod - + Modify subelements Izmjene pod-elemenata - + If checked, subelements will be modified instead of entire objects Ako je označeno, pod-elementi će se mijenjati umjesto cijelih objekata @@ -2896,12 +3081,12 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Strana - + Current working plane Aktualna radna ravnina - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Označite ako se objekt treba pojaviti kao ispunjen, jer će se u protivnom pojaviti kao žičana mreža. Nije dostupno ako je omogućena opcija postavki Nacrta 'Koristi se primitivni dio' @@ -2921,32 +3106,32 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).uključi / isključi privuci u blizini - + Create text Napravi tekst - + Press this button to create the text object, or finish your text with two blank lines Pritisnite ovaj gumb da biste stvorili tekstualni objekt ili dovršite tekst s dva prazna retka - + Center Y Centar Y - + Center Z Centar Z - + Offset distance Udaljenost pomaka - + Trim distance Udaljenost skraćivanja @@ -2955,6 +3140,11 @@ Da bi odobrio FreeCAD-u preuzimanje ove biblioteke, odgovori sa Da (Yes).Wire Žica + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_hu.qm b/src/Mod/Draft/Resources/translations/Draft_hu.qm index d2973e2e5e..cab2beb787 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 850689f740..e04f33937d 100644 --- a/src/Mod/Draft/Resources/translations/Draft_hu.ts +++ b/src/Mod/Draft/Resources/translations/Draft_hu.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines vonalak + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Vonalvastagság + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Pont + + + + Circle + Kör + + + + Arrow + Nyíl + + + + Tick + Jelölők + + + + Tick-2 + Jelölők-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mértékegység megjelenítés + + + + Line color + Vonalszín + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + A szövegekhez és méretekhez használt betűtípus + + + + The line style + The line style + + + + Solid + Szilárd test + + + + Dashed + Szaggatott + + + + Dotted + Pontozott + + + + DashDot + Pontvonal + + + + Text size + Text size + + + + Unit override + Mértékegység felülírás + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Áttetszőség + + + + Display mode + Megjelenítési mód + + + + Text font + Text font + + + + Arrow size + Nyíl méret + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Drótváz + + + + Shaded + Árnyékolt + + + + Points + Pontok + + + + Draw style + Rajzolási stílus + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Alkalmazza a kijelölt objektumokon + Gui::Dialog::DlgSettingsDraft @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Tervezet parancssor - + Toggle construction mode Építési mód váltása - - Current line color - Aktuális vonal szín - - - - Current face color - Aktuális felület szín - - - - Current line width - Aktuális vonalvastagság - - - - Current font size - Aktuális betűméret - - - - Apply to selected objects - Alkalmazza a kijelölt objektumokon - - - + Autogroup off Autócsoport kikapcsolása - + active command: aktív parancs: - + None Egyik sem - + Active Draft command Aktív tervezési parancs - + X coordinate of next point Következő pont X koordinátája - + X X - + Y Y - + Z Z - + Y coordinate of next point Következő pont Y koordinátája - + Z coordinate of next point Következő pont Z koordinátája - + Enter point Pont megadása - + Enter a new point with the given coordinates Adjon meg egy új pontot a megadott koordinátákkal - + Length Hossz - + Angle Szög - + Length of current segment Aktuális szakasz hossza - + Angle of current segment Aktuális szakasz szöge - + Radius Sugár - + Radius of Circle A kör sugara - + If checked, command will not finish until you press the command button again Ha be van jelölve, a parancs nem fejeződik be, amíg újra meg nem nyomja a parancs gombot - + If checked, an OCC-style offset will be performed instead of the classic offset Ha kijelölt, egy OCC-stílusú eltolás lesz végrehajtva a klasszikus eltolás helyett - + &OCC-style offset OCC-stílusú eltolás - + Sides Oldalak - + Number of sides Oldalak száma - + Offset Eltolás - + Auto Automatikus - + Text string to draw Szöveges karakterlánc rajzolás - + String Karakterlánc - + Height of text Szöveg magassága - + Height Magasság - + Intercharacter spacing Karakteren belüli távolság - + Tracking Léptetés - + Full path to font file: Betűtípus fájl teljes elérési útja: - + Open a FileChooser for font file Nyissa meg a FájlKiválasztót a betűtípus fájlhoz @@ -2501,132 +2686,132 @@ This value is the maximum segment length. Vonal - + DWire Terv-vonal - + Circle Kör - + Center X Közép X - + Arc Ív - + Point Pont - + Label Címke - + Distance Távolság - + Trim Vágás - + Pick Object Objektum kiválasztás - + Edit Szerkesztés - + Global X Globális X - + Global Y Globális Y - + Global Z Globális Z - + Local X Helyi X - + Local Y Helyi Y - + Local Z Helyi Z - + Invalid Size value. Using 200.0. Érvénytelen méret érték. Használja 200.0. - + Invalid Tracking value. Using 0. Léptetés értéke érvénytelen. Használja 0. - + Please enter a text string. Adjon meg egy szöveges karakterláncot. - + Select a Font file Válasszon ki egy betűtípus fájlt - + Please enter a font file. Kérjük, írja be a betűtípus fájlt. - + Autogroup: Autogroup: - + Faces Felületek - + Remove Törlés - + Add Hozzáad - + Facebinder elements Felülettároló elemek @@ -2641,7 +2826,7 @@ This value is the maximum segment length. BézGörbe - + Copy Másolás @@ -2665,17 +2850,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. - + Relative Relatív - + Continue Tovább - + Close Bezárás @@ -2720,7 +2905,7 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Z korlátozása - + Select edge Válassza ki az élt @@ -2735,7 +2920,7 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Hosszanti mód - + Wipe Radíroz @@ -2750,67 +2935,67 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Illesztés objektumok váltogatása - + Check this to lock the current angle Jelölje be az aktuális szög lezárásához - + Coordinates relative to last point or absolute Előző ponthoz viszonyított vagy abszolút koordináták - + Filled Kitöltött - + Finish Befejezés - + Finishes the current drawing or editing operation Befejezi az aktuális rajz vagy szerkesztési műveletet - + &Undo (CTRL+Z) Visszavonás (CTRL + Z) - + Undo the last segment Utolsó szegmens visszavonása - + Finishes and closes the current line A folyamatban lévő vonal befejezése és lezárása - + Wipes the existing segments of this line and starts again from the last point Kiradírozza a meglévő szegmenst ebből a vonalból és ismét az utolsó ponttól kezdi - + Set WP WP beállítás - + Reorients the working plane on the last segment A munkasíkot átállítja az utolsó szegmensen - + Selects an existing edge to be measured by this dimension Ezzel a mérettel történő méréshez válasszon ki egy létező élt - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Ha ki van jelölve, az objektumok másolva lesznek mozgatás helyett. A Beállítások -> Vázlat -> Globális másolás mód a későbbi parancsok esetén @@ -2820,12 +3005,12 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Alelem mód - + Modify subelements Alelemek módosítása - + If checked, subelements will be modified instead of entire objects Ha be van jelölve, az al-elemek lesznek módosítva a teljes tárgy helyett @@ -2850,12 +3035,12 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Oldal - + Current working plane Jelenlegi munka sík - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Jelölje be ezt, ha az objektumnak kitöltöttként kell megjelennie, máskülönben drótvázként fog megjelenni. Nem érhető el, ha a "Rész-primitívek használata" beállítás engedélyezve van @@ -2875,32 +3060,32 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Toggle near snap on/off - + Create text Szöveg létrehozása - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2909,6 +3094,11 @@ A FreeCAD letöltésének bekapcsolásához válassza az "Igen"-t. Wire Drótháló + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_id.qm b/src/Mod/Draft/Resources/translations/Draft_id.qm index 584b4b758c..be7d51a96c 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 fef25d9f2f..bcba6096a0 100644 --- a/src/Mod/Draft/Resources/translations/Draft_id.ts +++ b/src/Mod/Draft/Resources/translations/Draft_id.ts @@ -877,6 +877,216 @@ value by using the [ and ] keys while drawing lines garis + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Lebar garis + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Dot + + + + Circle + Lingkaran + + + + Arrow + Panah + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Tampilkan satuan + + + + Line color + Line warna + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Font yang digunakan untuk teks dan dimensi + + + + The line style + The line style + + + + Solid + Padat + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Penggantian unit + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparansi + + + + Display mode + Mode tampilan + + + + Text font + Text font + + + + Arrow size + Panah ukuran + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Bingkai kawat + + + + Shaded + Berbayang + + + + Points + Points + + + + Draw style + Menggambar gaya + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Terapkan ke objek yang dipilih + Gui::Dialog::DlgSettingsDraft @@ -2291,202 +2501,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle mode konstruksi - - Current line color - Warna garis saat ini - - - - Current face color - Warna wajah saat ini - - - - Current line width - Lebar baris saat ini - - - - Current font size - Ukuran font saat ini - - - - Apply to selected objects - Terapkan ke objek yang dipilih - - - + Autogroup off Autogroup mati - + active command: perintah aktif: - + None Tidak ada - + Active Draft command Perintah Aktif Rancang - + X coordinate of next point Koordinat titik X berikutnya - + X X - + Y Y - + Z Z - + Y coordinate of next point Koordinat titik Y berikutnya - + Z coordinate of next point Koordinat titik Z berikutnya - + Enter point Masukkan titik - + Enter a new point with the given coordinates Masukkan sebuah titik yang baru dengan koordinat tertentu - + Length Panjangnya - + Angle Sudut - + Length of current segment Panjang segmen saat ini - + Angle of current segment Sudut segmen saat ini - + Radius Jari-jari - + Radius of Circle Jari-jari lingkaran - + If checked, command will not finish until you press the command button again Jika dicentang, perintah tidak akan selesai sampai Anda menekan tombol perintah lagi - + If checked, an OCC-style offset will be performed instead of the classic offset Jika dicentang, offset gaya OCC akan dilakukan alih-alih offset klasik - + &OCC-style offset & Offset gaya OCC - + Sides Sisi - + Number of sides Jumlah sisi - + Offset Mengimbangi - + Auto Mobil - + Text string to draw String teks untuk menggambar - + String Tali - + Height of text Tinggi teks - + Height Tinggi - + Intercharacter spacing Jarak antar karakte - + Tracking Pelacakan - + Full path to font file: Jalur penuh ke file font: - + Open a FileChooser for font file Buka FileChooser untuk file font @@ -2496,132 +2681,132 @@ This value is the maximum segment length. Garis - + DWire DWire - + Circle Lingkaran - + Center X Pusat X - + Arc Busur - + Point Titik - + Label Label - + Distance Distance - + Trim Memangkas - + Pick Object Ambil Objek - + Edit Edit - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Lokal X - + Local Y Lokal Y - + Local Z Lokal Z - + Invalid Size value. Using 200.0. Nilai ukuran tidak valid Menggunakan 200.0. - + Invalid Tracking value. Using 0. Nilai Pelacakan tidak valid Menggunakan 0. - + Please enter a text string. Harap masukkan string teks. - + Select a Font file Pilih file Font - + Please enter a font file. Silahkan masukkan file font. - + Autogroup: Autogroup: - + Faces Wajah - + Remove Menghapus - + Add Menambahkan - + Facebinder elements Elemen facebinder @@ -2636,7 +2821,7 @@ This value is the maximum segment length. BezCurve - + Copy Salinan @@ -2655,17 +2840,17 @@ To enabled FreeCAD to download these libraries, answer Yes. 2 - Menu Edit> Preferences> Import-Export> DXF> Aktifkan unduhan Atau unduh pustaka ini secara manual, seperti yang dijelaskan di https://github.com/yorikvanhavre/Draft- dxf-importer Untuk mengaktifkan FreeCAD mendownload library ini, jawab Yes. - + Relative Relative - + Continue Continue - + Close Dekat @@ -2710,7 +2895,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2725,7 +2910,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2740,67 +2925,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Selesai - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2810,12 +2995,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2840,12 +3025,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2865,32 +3050,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Buat teks - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2899,6 +3084,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Kawat + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_it.qm b/src/Mod/Draft/Resources/translations/Draft_it.qm index a328fda6d1..f62d0427a2 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 3e035ed549..0a904e7e39 100644 --- a/src/Mod/Draft/Resources/translations/Draft_it.ts +++ b/src/Mod/Draft/Resources/translations/Draft_it.ts @@ -872,13 +872,223 @@ utilizzando i tasti [ e ] durante il disegno Grid extension - Grid extension + Estensione griglia lines linee + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Spessore linea + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punto + + + + Circle + Cerchio + + + + Arrow + Freccia + + + + Tick + Tratto + + + + Tick-2 + Tratto obliquo 2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostra le unità di misura + + + + Line color + Colore della linea + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Il carattere da utilizzare per testi e quote + + + + The line style + The line style + + + + Solid + Solido + + + + Dashed + Tratteggiato + + + + Dotted + Puntinato + + + + DashDot + Tratto punto + + + + Text size + Text size + + + + Unit override + Sostituzione di unità + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Trasparenza + + + + Display mode + Modalità di visualizzazione + + + + Text font + Text font + + + + Arrow size + Dimensione freccia + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Reticolo + + + + Shaded + Ombreggiato + + + + Points + Punti + + + + Draw style + Stile di disegno + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Applica agli oggetti selezionati + Gui::Dialog::DlgSettingsDraft @@ -2241,27 +2451,27 @@ Questo valore è la lunghezza massima del segmento. Override unit - Override unit + Sovrascrivi unità By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Lasciando vuoto questo campo, le misure delle dimensioni saranno mostrate nell'unità corrente definita in FreeCAD. Indicando un'unità qui come m o cm, è possibile forzare la visualizzazione delle nuove dimensioni in quell'unità. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + La risoluzione in cui disegnare i motivi. Il valore predefinito è 128. Valori maggiori danno risoluzioni migliori, valori minori rendono più veloce il disegno Hatch Pattern default size - Hatch Pattern default size + Dimensione predefinita del modello di tratteggio The default size of hatch patterns - The default size of hatch patterns + La dimensione predefinita dei modelli di tratteggio @@ -2293,202 +2503,177 @@ Questo valore è la lunghezza massima del segmento. draft - + Draft Command Bar Barra dei comandi Draft - + Toggle construction mode Attiva/Disattiva la modalità costruzione - - Current line color - Colore attuale della linea - - - - Current face color - Colore attuale della faccia - - - - Current line width - Larghezza attuale della riga - - - - Current font size - Dimensione attuale del carattere - - - - Apply to selected objects - Applica agli oggetti selezionati - - - + Autogroup off Disattiva auto-gruppo - + active command: comando attivo: - + None Nessuno - + Active Draft command Comando Draft attivo - + X coordinate of next point Coordinata X del prossimo punto - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordinata Y del prossimo punto - + Z coordinate of next point Coordinata Z del prossimo punto - + Enter point Inserisci punto - + Enter a new point with the given coordinates Inserisce un nuovo punto con le coordinate date - + Length Lunghezza - + Angle Angolo - + Length of current segment Lunghezza del segmento corrente - + Angle of current segment Angolo del segmento corrente - + Radius Raggio - + Radius of Circle Raggio del Cerchio - + If checked, command will not finish until you press the command button again Se spuntato, il comando non termina finché non si preme nuovamente il pulsante di comando - + If checked, an OCC-style offset will be performed instead of the classic offset Se spuntato, viene eseguito un offset in stile OCC invece dell'offset classico - + &OCC-style offset &Offset in stile OCC - + Sides Lati - + Number of sides Numero di lati - + Offset Offset - + Auto Auto - + Text string to draw Stringa di testo da disegnare - + String Stringa - + Height of text Altezza del testo - + Height Altezza - + Intercharacter spacing Spaziatura intercarattere - + Tracking Crenatura - + Full path to font file: Percorso completo del file di font: - + Open a FileChooser for font file Apre un finestra per selezionare un file di font @@ -2498,132 +2683,132 @@ Questo valore è la lunghezza massima del segmento. Linea - + DWire Polilinea - + Circle Cerchio - + Center X Centro X - + Arc Arco - + Point Punto - + Label Etichetta - + Distance Distanza - + Trim Taglia - + Pick Object Scegliere un Oggetto - + Edit Modifica - + Global X X globale - + Global Y Y globale - + Global Z Z globale - + Local X X locale - + Local Y Y locale - + Local Z Z locale - + Invalid Size value. Using 200.0. Dimensione non valida. Uso 200.0. - + Invalid Tracking value. Using 0. Valore di crenatura non valido. Utilizzato 0. - + Please enter a text string. Inserire una stringa di testo. - + Select a Font file Seleziona un file di font - + Please enter a font file. Inserire un file di font. - + Autogroup: Auto-gruppo: - + Faces Facce - + Remove Rimuovi - + Add Aggiungi - + Facebinder elements Elementi di Facebinder @@ -2638,7 +2823,7 @@ Questo valore è la lunghezza massima del segmento. Curva di Bezier - + Copy Copia @@ -2659,17 +2844,17 @@ Oppure scaricare queste librerie manualmente, come spiegato su https://github.co Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì. - + Relative Relativo - + Continue Continua - + Close Chiudi @@ -2714,7 +2899,7 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Restringi Z - + Select edge Seleziona bordo @@ -2729,7 +2914,7 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Modalità di lunghezza - + Wipe Pulisci @@ -2744,67 +2929,67 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Scorri oggetti per lo snap - + Check this to lock the current angle Selezionare questa casella per bloccare l'angolo corrente - + Coordinates relative to last point or absolute Coordinate relative all'ultimo punto o assolute - + Filled Riempito - + Finish Termina - + Finishes the current drawing or editing operation Termina il disegno corrente o l'operazione di modifica - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Annulla l'ultimo segmento - + Finishes and closes the current line Finisce e chiude la linea corrente - + Wipes the existing segments of this line and starts again from the last point Pulisce i segmenti esistenti di questa linea e ricomincia dall'ultimo punto - + Set WP Imposta il piano di lavoro - + Reorients the working plane on the last segment Riorienta il piano di lavoro sull'ultimo segmento - + Selects an existing edge to be measured by this dimension Seleziona un bordo esistente da misurare in questa quotatura - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Se selezionata, gli oggetti verranno copiati anziché spostati. Preferenze-> Draft-> Modalità di copia globale per mantenere questa modalità nei prossimi comandi @@ -2814,12 +2999,12 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Modalità sottoelemento - + Modify subelements Modifica i sottoelementi - + If checked, subelements will be modified instead of entire objects Se selezionato, saranno modificati i sottoelementi invece degli oggetti completi @@ -2844,12 +3029,12 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Lato - + Current working plane Piano di lavoro attuale - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Selezionare se l'oggetto deve apparire riempito, altrimenti apparirà come reticolo. Non è disponibile se l'opzione delle preferenze Draft 'Usa le primitive di Part' è abilitata @@ -2869,32 +3054,32 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Attiva/disattiva l'aggancio vicino a - + Create text Testo - + Press this button to create the text object, or finish your text with two blank lines Premere questo pulsante per creare l'oggetto di testo, o terminare il testo con due righe vuote - + Center Y Centro Y - + Center Z Centro Z - + Offset distance Distanza di offset - + Trim distance Distanza di taglio @@ -2903,6 +3088,11 @@ Per abilitare FreeCAD a scaricare queste librerie, rispondere Sì.Wire Filo + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ja.qm b/src/Mod/Draft/Resources/translations/Draft_ja.qm index c2a78b32e6..6f31f24185 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 f8f64e3174..64a3a8f4a7 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ja.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ja.ts @@ -111,7 +111,7 @@ Show lines - 線分を表示 + Show lines @@ -872,6 +872,216 @@ value by using the [ and ] keys while drawing lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + ライン幅 + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + + + + + Circle + + + + + Arrow + 矢印 + + + + Tick + 目盛 + + + + Tick-2 + 目盛り-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + 単位を表示 + + + + Line color + 線の色 + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + テキストと寸法に用いられるフォント + + + + The line style + The line style + + + + Solid + ソリッド + + + + Dashed + 破線 + + + + Dotted + 点線 + + + + DashDot + 一点鎖線 + + + + Text size + Text size + + + + Unit override + 単位の上書き + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + 透明度 + + + + Display mode + 表示モード + + + + Text font + Text font + + + + Arrow size + 矢印のサイズ + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + ワイヤ フレーム + + + + Shaded + シェーディング + + + + Points + 点群 + + + + Draw style + 描画スタイル + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + 選択したオブジェクトに適用します。 + Gui::Dialog::DlgSettingsDraft @@ -2277,202 +2487,177 @@ This value is the maximum segment length. draft - + Draft Command Bar ドラフトコマンドバー - + Toggle construction mode 補助モードの切り替え - - Current line color - 現在の線の色 - - - - Current face color - 現在の面の色 - - - - Current line width - 現在の線幅 - - - - Current font size - 現在のフォントサイズ - - - - Apply to selected objects - 選択したオブジェクトに適用します。 - - - + Autogroup off オートグループ無効 - + active command: アクティブコマンド: - + None なし - + Active Draft command アクティブドラフトコマンド - + X coordinate of next point 次の点の X 座標 - + X X - + Y Y - + Z Z - + Y coordinate of next point 次の点の Y 座標 - + Z coordinate of next point 次の点の Z 座標 - + Enter point 点の入力 - + Enter a new point with the given coordinates 指定された座標に新しい点を入力 - + Length 長さ - + Angle 角度 - + Length of current segment 現在のセグメントの長さ - + Angle of current segment 現在のセグメントの角度 - + Radius 半径 - + Radius of Circle 円の半径 - + If checked, command will not finish until you press the command button again チェックされている場合、再びコマンドボタンを押すまでコマンドが終了しなくなります - + If checked, an OCC-style offset will be performed instead of the classic offset チェックされている場合、従来のオフセットの代わりにくOCC-スタイルのオフセットが行われます - + &OCC-style offset OCC スタイル オフセット (&O) - + Sides 側面 - + Number of sides 辺の数 - + Offset オフセット - + Auto 自動 - + Text string to draw 描画するテキスト文字列 - + String 文字列 - + Height of text テキストの高さ - + Height 高さ - + Intercharacter spacing 文字間隔 - + Tracking トラッキング - + Full path to font file: フォントファイルのフルパス: - + Open a FileChooser for font file ファイル選択ダイアログを開いてフォントファイルを選択 @@ -2482,132 +2667,132 @@ This value is the maximum segment length. 直線 - + DWire Dワイヤー - + Circle - + Center X 中心X - + Arc 円弧 - + Point - + Label ラベル - + Distance 距離 - + Trim トリム - + Pick Object オブジェクトを選択 - + Edit 編集 - + Global X グローバル座標 X - + Global Y グローバル座標 Y - + Global Z グローバル座標 Z - + Local X ローカル座標 X - + Local Y ローカル座標 Y - + Local Z ローカル座標 Z - + Invalid Size value. Using 200.0. サイズの値が無効です。 200.0 を使ってください。 - + Invalid Tracking value. Using 0. トラッキングの値が無効です。 0 を使ってください。 - + Please enter a text string. 文字を入力してください。 - + Select a Font file フォントファイルを選択 - + Please enter a font file. フォントファイルを入力してください。 - + Autogroup: オートグループ: - + Faces - + Remove 削除 - + Add 追加 - + Facebinder elements フェイスバインダー要素 @@ -2622,7 +2807,7 @@ This value is the maximum segment length. ベジェ曲線 - + Copy コピー @@ -2646,17 +2831,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer FreeCADでこれらライブラリーのダウンロードを有効にするためにYesを選択します。 - + Relative 相対 - + Continue 続行 - + Close 閉じる @@ -2701,7 +2886,7 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた Z 制限 - + Select edge エッジを選択 @@ -2716,7 +2901,7 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた 長さモード - + Wipe ワイプ @@ -2731,67 +2916,67 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた 循環的にオブジェクトにスナップ - + Check this to lock the current angle ここにチェックを入れると、現在の角度を拘束 - + Coordinates relative to last point or absolute 最後の点からの相対座標、または絶対座標 - + Filled 塗りつぶし - + Finish 完了 - + Finishes the current drawing or editing operation 現在の製図、または編集操作を終了 - + &Undo (CTRL+Z) 取り消し(Ctrl+Z) (&U) - + Undo the last segment 最後のセグメントを元に戻す - + Finishes and closes the current line 現在の線を閉じて終了 - + Wipes the existing segments of this line and starts again from the last point 直線の既存のセグメントを消去して最後の点から再開 - + Set WP WPを設定 - + Reorients the working plane on the last segment 最後のセグメントで作業平面を再設定 - + Selects an existing edge to be measured by this dimension 寸法を計測したいところの既存エッジを選択して下さい - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands チェックされている場合、オブジェクトは移動の代わりにコピーされます。設定 → Draft → グローバルコピーモード で次回以降のコマンドに対してこのモードを維持します。 @@ -2801,12 +2986,12 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた サブ要素モード - + Modify subelements サブ要素を変更 - + If checked, subelements will be modified instead of entire objects チェックされている場合、オブジェクト全体ではなくサブ要素が変更されます。 @@ -2831,12 +3016,12 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた サイド - + Current working plane 現在の作業平面 - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled オブジェクトを塗りつぶして表示する場合にはチェックしてください。チェックしない場合はワイヤーフレーム表示になります。ドラフトのユーザー設定で「プリミティブ部品を使用」が有効になっている場合には利用できません。 @@ -2856,32 +3041,32 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた 近くでスナップさせる/させないの切り替え - + Create text テキストを作成 - + Press this button to create the text object, or finish your text with two blank lines このボタンを押して、テキストオブジェクト作成するか、2行の空白行でテキストを終了します。 - + Center Y 中心Y - + Center Z 中心Z - + Offset distance オフセットの距離 - + Trim distance トリム距離 @@ -2890,6 +3075,11 @@ FreeCADでこれらライブラリーのダウンロードを有効にするた Wire ワイヤー + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_kab.qm b/src/Mod/Draft/Resources/translations/Draft_kab.qm index 1ddc256436..9deb140117 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_kab.qm and b/src/Mod/Draft/Resources/translations/Draft_kab.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_kab.ts b/src/Mod/Draft/Resources/translations/Draft_kab.ts index 96555759c5..a9ad9f8fee 100644 --- a/src/Mod/Draft/Resources/translations/Draft_kab.ts +++ b/src/Mod/Draft/Resources/translations/Draft_kab.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines lignes + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Largeur de ligne + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Point + + + + Circle + Tawinest + + + + Arrow + Flèche + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Ini n yizirig + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Solide + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Mode d'affichage + + + + Text font + Text font + + + + Arrow size + Tehri n uneccab + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Filaire + + + + Shaded + Ombré + + + + Points + Tineqqiḍin + + + + Draw style + Style de représentation + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Appliquer aux objets sélectionnés + Gui::Dialog::DlgSettingsDraft @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Barre de commandes Draft - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - Appliquer aux objets sélectionnés - - - + Autogroup off Autogroup off - + active command: commande active : - + None Ula yiwen - + Active Draft command Taladna turmiḍt - + X coordinate of next point Tasidegt X n tneqqiḍt d-iteddun - + X X - + Y Y - + Z Z - + Y coordinate of next point Tasidegt Y n tneqqiḍt d-iteddun - + Z coordinate of next point Tasidegt Z n tneqqiḍt d-iteddun - + Enter point Entrez le point - + Enter a new point with the given coordinates Entrez un nouveau point avec les coordonnées données - + Length Longueur - + Angle Tiɣmeṛt - + Length of current segment Longueur du segment actuel - + Angle of current segment Angle du segment actuel - + Radius Aqqaṛ - + Radius of Circle Aqqaṛ n twinest - + If checked, command will not finish until you press the command button again Si cette case est cochée, la commande ne se terminera que si vous appuyez à nouveau sur son icône - + If checked, an OCC-style offset will be performed instead of the classic offset Si coché, un décalage de type OCC sera effectué au lieu du décalage classique - + &OCC-style offset Décalage de type &OCC - + Sides Côtés - + Number of sides Nombre de côtés - + Offset Offset - + Auto Auto - + Text string to draw Chaîne de texte à dessiner - + String Chaîne - + Height of text Height of text - + Height Awrir - + Intercharacter spacing Espacement entre les caractères - + Tracking Crénage - + Full path to font file: Chemin d'accès complet au fichier de police : - + Open a FileChooser for font file Ouvre une boîte de dialogue pour choisir le fichier de police @@ -2501,132 +2686,132 @@ This value is the maximum segment length. Ligne - + DWire Filaire - + Circle Tawinest - + Center X Centre X - + Arc Arc - + Point Point - + Label Label - + Distance Distance - + Trim Ajuster - + Pick Object Choisir un objet - + Edit Éditer - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Valeur de taille non valide. Utilisation de 200,0. - + Invalid Tracking value. Using 0. Valeur non valide de crénage. Utilisation de 0. - + Please enter a text string. Veuillez entrer une chaîne de texte. - + Select a Font file Sélectionnez un fichier de police - + Please enter a font file. Veuillez entrer un fichier de police s'il vous plaît - + Autogroup: Autogroup: - + Faces Faces - + Remove Enlever - + Add Add - + Facebinder elements Surfaces liées: éléments @@ -2641,7 +2826,7 @@ This value is the maximum segment length. BezCurve - + Copy Copie @@ -2665,17 +2850,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Fermer @@ -2720,7 +2905,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2735,7 +2920,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2750,67 +2935,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Terminer - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2820,12 +3005,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2850,12 +3035,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2875,32 +3060,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Insérer du texte - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2909,6 +3094,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Fil + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ko.qm b/src/Mod/Draft/Resources/translations/Draft_ko.qm index 88c1fe28cc..31156367d5 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 017d81b798..bbc9283ece 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ko.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ko.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + 선 두께 + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + + + + + Circle + + + + + Arrow + 화살표 + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + 선 색 + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + 복합체 + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + 투명한 정도 + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + 화살표 크기 + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + 와이어 프레임 + + + + Shaded + 음영 처리 + + + + Points + Points + + + + Draw style + 그리기 스타일 + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Apply to selected objects + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - 현재 글꼴 크기 - - - - Apply to selected objects - Apply to selected objects - - - + Autogroup off Autogroup off - + active command: active command: - + None 없음 - + Active Draft command Active Draft command - + X coordinate of next point X coordinate of next point - + X X - + Y Y - + Z Z - + Y coordinate of next point Y coordinate of next point - + Z coordinate of next point Z coordinate of next point - + Enter point Enter point - + Enter a new point with the given coordinates Enter a new point with the given coordinates - + Length 돌출 컷(Pocket) 길이 - + Angle - + Length of current segment Length of current segment - + Angle of current segment Angle of current segment - + Radius Radius - + Radius of Circle Radius of Circle - + If checked, command will not finish until you press the command button again If checked, command will not finish until you press the command button again - + If checked, an OCC-style offset will be performed instead of the classic offset If checked, an OCC-style offset will be performed instead of the classic offset - + &OCC-style offset &OCC-style offset - + Sides Sides - + Number of sides Number of sides - + Offset Offset - + Auto 자동 - + Text string to draw Text string to draw - + String 문자열 - + Height of text Height of text - + Height 높이 - + Intercharacter spacing Intercharacter spacing - + Tracking Tracking - + Full path to font file: 글꼴 파일 경로 - + Open a FileChooser for font file Open a FileChooser for font file @@ -2498,132 +2683,132 @@ This value is the maximum segment length. - + DWire DWire - + Circle - + Center X Center X - + Arc - + Point - + Label Label - + Distance Distance - + Trim Trim - + Pick Object Pick Object - + Edit 편집 - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. Invalid Size value. Using 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Please enter a text string. - + Select a Font file 글꼴 파일 선택 - + Please enter a font file. Please enter a font file. - + Autogroup: Autogroup: - + Faces Faces - + Remove 제거 - + Add 추가 - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. BezCurve - + Copy 복사하기 @@ -2662,17 +2847,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close 닫기 @@ -2717,7 +2902,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2732,7 +2917,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2747,67 +2932,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish 마침 - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2817,12 +3002,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2847,12 +3032,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2872,32 +3057,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text 생성: 문자 - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2906,6 +3091,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire 와이어 + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_lt.qm b/src/Mod/Draft/Resources/translations/Draft_lt.qm index 9b2124582c..18584fa2c5 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_lt.qm and b/src/Mod/Draft/Resources/translations/Draft_lt.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_lt.ts b/src/Mod/Draft/Resources/translations/Draft_lt.ts index c7cbeb1a63..cca2d361cd 100644 --- a/src/Mod/Draft/Resources/translations/Draft_lt.ts +++ b/src/Mod/Draft/Resources/translations/Draft_lt.ts @@ -878,6 +878,216 @@ value by using the [ and ] keys while drawing lines atkarpos + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Linijos storis + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Taškas + + + + Circle + Apskritimas + + + + Arrow + Rodyklė + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Linijos spalva + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Pilnaviduris daiktas + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + Brūkšnelis taškelis + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + Rodyklės dydis + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Rėmelis + + + + Shaded + Su šešėliais + + + + Points + Taškai + + + + Draw style + Atvaizdavimo būdas + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + tšk. + + + + Apply to selected objects + Apply to selected objects + Gui::Dialog::DlgSettingsDraft @@ -2295,202 +2505,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle construction mode - - Current line color - Esamoji kreivės spalva - - - - Current face color - Esamoji sienos spalva - - - - Current line width - Esamasis kreivės storis - - - - Current font size - Esamasis šrifto dydis - - - - Apply to selected objects - Apply to selected objects - - - + Autogroup off Autogroup off - + active command: atliekamas veiksmas: - + None Joks - + Active Draft command Atliekamas braižyklės veiksmas - + X coordinate of next point Sekančio taško X koordinatė - + X X - + Y Y - + Z Z - + Y coordinate of next point Sekančio taško Y koordinatė - + Z coordinate of next point Sekančio taško Z koordinatė - + Enter point Įveskite tašką - + Enter a new point with the given coordinates Įvesti naujo taško koordinates - + Length Length - + Angle Kampas - + Length of current segment Esamos atkarpos ilgis - + Angle of current segment Esamos atkarpos kampas - + Radius Spindulys - + Radius of Circle Apskritimo spindulys - + If checked, command will not finish until you press the command button again If checked, command will not finish until you press the command button again - + If checked, an OCC-style offset will be performed instead of the classic offset If checked, an OCC-style offset will be performed instead of the classic offset - + &OCC-style offset &OCC-style offset - + Sides Sienos - + Number of sides Sienų skaičius - + Offset Offset - + Auto Automatiškai - + Text string to draw Text string to draw - + String Eilutė - + Height of text Rašmenų aukštis - + Height Aukštis - + Intercharacter spacing Intercharacter spacing - + Tracking Tracking - + Full path to font file: Pilnas kelias iki šrifto rinkmenos: - + Open a FileChooser for font file Atverti rinkmenų parinkimo langą šrifto rinkmenai parinkti @@ -2500,132 +2685,132 @@ This value is the maximum segment length. Atkarpa - + DWire DWire - + Circle Apskritimas - + Center X Vidurio X - + Arc Lankas - + Point Taškas - + Label Label - + Distance Distance - + Trim Apkarpyti - + Pick Object Pasirinkti daiktą - + Edit Taisyti - + Global X Visuotinis X - + Global Y Visuotinis Y - + Global Z Visuotinis Z - + Local X Vietinis X - + Local Y Vietinis Y - + Local Z Vietinis Z - + Invalid Size value. Using 200.0. Neleistina dydžio skaitinė vertė. Bus naudojama 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Please enter a text string. - + Select a Font file Pasirinkite šriftų rinkmeną - + Please enter a font file. Nurodykite šrifto rinkmeną. - + Autogroup: Autogroup: - + Faces Sienos - + Remove Pašalinti - + Add Pridėti - + Facebinder elements Facebinder elements @@ -2640,7 +2825,7 @@ This value is the maximum segment length. glodžioji Bezjė kreivė - + Copy Kopijuoti @@ -2664,17 +2849,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Užverti @@ -2719,7 +2904,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2734,7 +2919,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2749,67 +2934,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Užbaigti - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2819,12 +3004,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2849,12 +3034,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2874,32 +3059,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Nubrėžti tekstą - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2908,6 +3093,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Laužtė + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_nl.qm b/src/Mod/Draft/Resources/translations/Draft_nl.qm index fdce1fb7ec..329859d69d 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 688bc1b4e0..90b1335ec5 100644 --- a/src/Mod/Draft/Resources/translations/Draft_nl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_nl.ts @@ -878,6 +878,216 @@ waarde ook wijzigen door de [ and ] sleutels te gebruiken tijdens het tekenen lines lijnen + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Lijndikte + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + punt + + + + Circle + Cirkel + + + + Arrow + Pijl + + + + Tick + Vink + + + + Tick-2 + Schuine streep-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Toon eenheid + + + + Line color + Lijnkleur + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Het lettertype voor teksten en afmetingen + + + + The line style + The line style + + + + Solid + Volumemodel + + + + Dashed + Gestreept + + + + Dotted + Gestippeld + + + + DashDot + Streepstip + + + + Text size + Text size + + + + Unit override + Eenheid overschrijven + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparantie + + + + Display mode + Weergavemodus + + + + Text font + Text font + + + + Arrow size + Pijl grootte + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Draadmodel + + + + Shaded + Schaduw + + + + Points + Punten + + + + Draw style + Tekenstijl + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Toepassen op geselecteerde objecten + Gui::Dialog::DlgSettingsDraft @@ -2291,202 +2501,177 @@ Deze waarde is de maximale segmentlengte. draft - + Draft Command Bar Ontwerpopdrachtbalk - + Toggle construction mode Constructiemodus omschakelen - - Current line color - Huidige lijnkleur - - - - Current face color - Huidige vlakkleur - - - - Current line width - Huidige lijnbreedte - - - - Current font size - Huidige lettertypegrootte - - - - Apply to selected objects - Toepassen op geselecteerde objecten - - - + Autogroup off Autogroup uit - + active command: actieve opdracht: - + None Geen - + Active Draft command Actieve opdracht - + X coordinate of next point X-coördinaat van het volgende punt - + X X - + Y Y - + Z Z - + Y coordinate of next point Y-coördinaat van het volgende punt - + Z coordinate of next point Z-coördinaat van het volgende punt - + Enter point Punt invoeren - + Enter a new point with the given coordinates Voer een nieuw punt in met de gegeven coördinaten - + Length Lengte - + Angle Hoek - + Length of current segment Lengte van het huidige segment - + Angle of current segment Hoek van het huidige segment - + Radius Straal - + Radius of Circle Straal van de cirkel - + If checked, command will not finish until you press the command button again Indien ingeschakeld, zal de huidige opdracht niet beëindigen totdat u opnieuw op de command-toets druk - + If checked, an OCC-style offset will be performed instead of the classic offset Indien ingeschakeld, zal een OCC-stijl verschuiving worden uitgevoerd in plaats van de klassieke stijl - + &OCC-style offset &OCC-stijl verschuiving - + Sides Zijden - + Number of sides Aantal zijden - + Offset Verschuiving - + Auto Automatisch - + Text string to draw Tekstreeks om te tekenen - + String Tekenreeks - + Height of text Teksthoogte - + Height Hoogte - + Intercharacter spacing Tekenafstand - + Tracking Volgen - + Full path to font file: Volledig traject naar lettertypebestand: - + Open a FileChooser for font file Open een Bestandkiezer voor het lettertypebestand @@ -2496,132 +2681,132 @@ Deze waarde is de maximale segmentlengte. Lijn - + DWire DWire - + Circle Cirkel - + Center X Middelpunt X - + Arc Boog - + Point Punt - + Label Label - + Distance Afstand - + Trim Trim - + Pick Object Selecteer object - + Edit Bewerken - + Global X Globale X - + Global Y Globale Y - + Global Z Globale Z - + Local X Lokale X - + Local Y Lokale Y - + Local Z Lokale Z - + Invalid Size value. Using 200.0. Ongeldige groottewaarde. 200.0 wordt gebruikt. - + Invalid Tracking value. Using 0. Ongeldige kerningwaarde. 0 wordt gebruikt. - + Please enter a text string. Voer een tekstreeks in. - + Select a Font file Kies een lettertypebestand - + Please enter a font file. Voer een lettertypebestand in. - + Autogroup: Autogroeperen: - + Faces Vlakken - + Remove Verwijderen - + Add Toevoegen - + Facebinder elements Vlakenbinderelementen @@ -2636,7 +2821,7 @@ Deze waarde is de maximale segmentlengte. BezCurve - + Copy Kopie @@ -2660,17 +2845,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja. - + Relative Relatief - + Continue Doorgaan - + Close Sluiten @@ -2715,7 +2900,7 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Z beperken - + Select edge Selecteer rand @@ -2730,7 +2915,7 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Lengtemodus - + Wipe Wissen @@ -2745,67 +2930,67 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Cyclisch klikobject - + Check this to lock the current angle Vink dit aan om de huidige hoek te vergrendelen - + Coordinates relative to last point or absolute Coördinaten ten opzichte van het laatste punt of absoluut - + Filled Gevuld - + Finish Voltooien - + Finishes the current drawing or editing operation Beëindigt de huidige tekening of bewerking - + &Undo (CTRL+Z) &Ongedaan maken (CTRL+Z) - + Undo the last segment Maak het laatste segment ongedaan - + Finishes and closes the current line Eindigt en sluit de huidige lijn - + Wipes the existing segments of this line and starts again from the last point Wist de bestaande segmenten van deze lijn en begint opnieuw vanaf het laatste punt - + Set WP WV instellen - + Reorients the working plane on the last segment Heroriënteert het werkvlak op het laatste segment - + Selects an existing edge to be measured by this dimension Selecteert een bestaande rand die door deze afmeting gemeten moet worden - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Indien aangevinkt, zullen de objecten gekopieerd worden in plaats van verplaatst. Voorkeuren -> Ontwerp -> Globale kopieermodus om deze modus in de volgende opdrachten te behouden @@ -2815,12 +3000,12 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Subelementmodus - + Modify subelements Subelementen wijzigen - + If checked, subelements will be modified instead of entire objects Indien aangevinkt, worden subelementen gewijzigd in plaats van hele objecten @@ -2845,12 +3030,12 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Zijde - + Current working plane Huidig werkvlak - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Vink dit aan indien het object als ingevuld moet verschijnen, anders verschijnt het als draadmodel. Niet beschikbaar als schetsvoorkeursoptie 'Gebruik deelbasisvormen' is ingeschakeld @@ -2870,32 +3055,32 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Zet nabijheid aan of uit - + Create text Tekst aanmaken - + Press this button to create the text object, or finish your text with two blank lines Druk op deze knop om het tekstobject aan te maken of eindig uw tekst met twee lege regels - + Center Y Middelpunt Y - + Center Z Middelpunt Z - + Offset distance Verschuiving afstand - + Trim distance Trim afstand @@ -2904,6 +3089,11 @@ Om FreeCAD in staat te stellen om deze bibliotheken te downloaden, antwoord Ja.< Wire Draad + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_no.qm b/src/Mod/Draft/Resources/translations/Draft_no.qm index 3b5f1dc0a7..a71b019a22 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_no.qm and b/src/Mod/Draft/Resources/translations/Draft_no.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_no.ts b/src/Mod/Draft/Resources/translations/Draft_no.ts index 83ce4ccc91..c67165c4cb 100644 --- a/src/Mod/Draft/Resources/translations/Draft_no.ts +++ b/src/Mod/Draft/Resources/translations/Draft_no.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Line width + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Dot + + + + Circle + Sirkel + + + + Arrow + Pil + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Vis enhet + + + + Line color + Linjefarge + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Skriften som skal brukes for tekst og dimensjoner + + + + The line style + The line style + + + + Solid + Solid + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Visningsmodus + + + + Text font + Text font + + + + Arrow size + Pilstørrelse + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Wireframe + + + + Shaded + Shaded + + + + Points + Punkter + + + + Draw style + Draw style + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Bruk på valgte objekter + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Utkast kommandolinje - + Toggle construction mode Veksle byggemodus - - Current line color - Gjeldende linjefarge - - - - Current face color - Gjeldende overflatefarge - - - - Current line width - Gjeldende linjebredde - - - - Current font size - Skriftstørrelse for gjeldende - - - - Apply to selected objects - Bruk på valgte objekter - - - + Autogroup off Autogroup off - + active command: aktiv kommando: - + None Ingen - + Active Draft command Aktiv kommando - + X coordinate of next point X koordinat for neste punkt - + X X - + Y Y - + Z Z - + Y coordinate of next point Y koordinat for neste punkt - + Z coordinate of next point Z koordinat for neste punkt - + Enter point Legg til punkt - + Enter a new point with the given coordinates Angi et nytt punkt med gitte koordinater - + Length Lengde - + Angle Vinkel - + Length of current segment Lengde på valgte segment - + Angle of current segment Vinkel på valgte segment - + Radius Radius - + Radius of Circle Sirkelradius - + If checked, command will not finish until you press the command button again Hvis denne er merket vil kommandoen ikke bli fullført før du trykker kommandoknappen igjen - + If checked, an OCC-style offset will be performed instead of the classic offset Hvis merket av, vil en OCC-stil forskyvning bli utført i stedet for klassisk forskyvning - + &OCC-style offset &OCC-stil forskyvning - + Sides Sider - + Number of sides Antall sider - + Offset Avsetting - + Auto Automatisk - + Text string to draw Tekststreng som skal tegnes - + String Streng - + Height of text Høyde på tekst - + Height Høyde - + Intercharacter spacing Intercharacter spacing - + Tracking Sporing - + Full path to font file: Fullstendig bane til skriftfil: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2498,132 +2683,132 @@ This value is the maximum segment length. Linje - + DWire DWire - + Circle Sirkel - + Center X Senter X - + Arc Bue - + Point Punkt - + Label Label - + Distance Avstand - + Trim Beskjær - + Pick Object Velg objekt - + Edit Rediger - + Global X Global X - + Global Y Globalt Y - + Global Z Global Z - + Local X Lokal X - + Local Y Lokal Y - + Local Z Lokal Z - + Invalid Size value. Using 200.0. Ugyldig størrelse verdi. Bruker 200.0. - + Invalid Tracking value. Using 0. Ugyldig sporingsverdi. Bruker 0. - + Please enter a text string. Vennligst skriv inn en tekststreng. - + Select a Font file Velg en skriftfil - + Please enter a font file. Vennligst angi en skriftfil. - + Autogroup: Autogroup: - + Faces Flater - + Remove Fjern - + Add Legg til - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. BezCurve - + Copy Kopier @@ -2662,17 +2847,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relativ - + Continue Fortsett - + Close Lukk @@ -2717,7 +2902,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Begrens Z - + Select edge Velg kant @@ -2732,7 +2917,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Lengde modus - + Wipe Wipe @@ -2747,67 +2932,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Fullfør - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Angi gjeldende plan - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2817,12 +3002,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2847,12 +3032,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2872,32 +3057,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Lag tekst - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2906,6 +3091,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Wire + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_pl.qm b/src/Mod/Draft/Resources/translations/Draft_pl.qm index 2301f0d884..fcd81a080c 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 c52f21349a..1235033876 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pl.ts @@ -96,12 +96,12 @@ Line width - Line width + Szerokość linii Extension overshoot - Extension overshoot + Przedłużenie linii pomocniczej @@ -121,7 +121,7 @@ Extension lines - Extension lines + Linie pomocnicze @@ -216,7 +216,7 @@ The distance that the dimension line is additionally extended - The distance that the dimension line is additionally extended + Odległość, na jaką linia wymiarowa jest dodatkowo wydłużona @@ -301,8 +301,8 @@ Proszę zainstalować dodatek bibliotek dxf ręcznie z narzędzi menu -> mene The coordinates of the point through which the axis of rotation passes. Change the direction of the axis itself in the property editor. - The coordinates of the point through which the axis of rotation passes. -Change the direction of the axis itself in the property editor. + Współrzędne punktu, przez który przechodzi oś obrotu. +Zmień kierunek samej osi w edytorze właściwości. @@ -350,8 +350,7 @@ To działa tylko wtedy, gdy "Link tablicy" jest wyłączony. 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. - 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. + Jeśli opcja zostanie zaznaczona, utworzony zostanie "Szyk powiązań" zamiast zwykłego szyku. Szyk powiązań działa wydajniej gdy potrzeba utworzyć wiele kopii, jednak nie można go później scalić. @@ -362,8 +361,8 @@ A Link array is more efficient when creating multiple copies, but it cannot be f Distance from one element in one ring of the array to the next element in the same ring. It cannot be zero. - Distance from one element in one ring of the array to the next element in the same ring. -It cannot be zero. + Odległość od jednego elementu w jednym pierścieniu szyku do następnego elementu w tym samym pierścieniu. +Nie może być równa zero. @@ -373,7 +372,7 @@ It cannot be zero. Distance from one layer of objects to the next layer of objects. - Distance from one layer of objects to the next layer of objects. + Odległość od jednej warstwy obiektów do następnej warstwy obiektów. @@ -383,14 +382,13 @@ It cannot be zero. The number of symmetry lines in the circular array. - The number of symmetry lines in the circular array. + Liczba linii symetrii w szyku kołowym. Number of circular layers or rings to create, including a copy of the original object. It must be at least 2. - Number of circular layers or rings to create, including a copy of the original object. -It must be at least 2. + Liczba kołowych warstw lub pierścieni do utworzenia, włączając kopię oryginalnego obiektu. Musi wynosić co najmniej 2. @@ -420,14 +418,14 @@ It must be at least 2. Distance between the elements in the Z direction. Normally, only the Z value is necessary; the other two values can give an additional shift in their respective directions. Negative values will result in copies produced in the negative direction. - Distance between the elements in the Z direction. -Normally, only the Z value is necessary; the other two values can give an additional shift in their respective directions. -Negative values will result in copies produced in the negative direction. + Odległość między elementami w kierunku Z. +Zazwyczaj tylko wartość Z jest potrzebna; podanie pozostałych dwóch wartości spowoduje dodatkowe przesunięcie w danych kierunkach. +Przy wartościach ujemnych kopie tworzone będą w kierunku przeciwnym. Z intervals - Z intervals + Odstępy w kierunku Z @@ -470,8 +468,7 @@ To działa tylko wtedy, gdy "Link tablicy" jest wyłączony. 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. - 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. + Jeśli opcja zostanie zaznaczona, utworzony zostanie "Szyk powiązań" zamiast zwykłego szyku. Szyk powiązań działa wydajniej gdy potrzeba utworzyć wiele kopii, jednak nie można go później scalić. @@ -488,14 +485,14 @@ A Link array is more efficient when creating multiple copies, but it cannot be f Distance between the elements in the X direction. Normally, only the X value is necessary; the other two values can give an additional shift in their respective directions. Negative values will result in copies produced in the negative direction. - Distance between the elements in the X direction. -Normally, only the X value is necessary; the other two values can give an additional shift in their respective directions. -Negative values will result in copies produced in the negative direction. + Odległość między elementami w kierunku X. +Zazwyczaj tylko wartość X jest potrzebna; podanie pozostałych dwóch wartości spowoduje dodatkowe przesunięcie w danych kierunkach. +Przy wartościach ujemnych kopie tworzone będą w kierunku przeciwnym. X intervals - X intervals + Odstępy w kierunku X @@ -514,7 +511,7 @@ Wartości ujemne będą skutkować kopiami wykonanymi w przeciwnym kierunku. Y intervals - Y intervals + Odstępy w kierunku Y @@ -545,8 +542,8 @@ Liczba ta musi wynosić co najmniej 1 w każdym kierunku. The coordinates of the point through which the axis of rotation passes. Change the direction of the axis itself in the property editor. - The coordinates of the point through which the axis of rotation passes. -Change the direction of the axis itself in the property editor. + Współrzędne punktu, przez który przechodzi oś obrotu. +Zmień kierunek samej osi w edytorze właściwości. @@ -594,8 +591,7 @@ To działa tylko wtedy, gdy "Link tablicy" jest wyłączony. 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. - 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. + Jeśli opcja zostanie zaznaczona, utworzony zostanie "Szyk powiązań" zamiast zwykłego szyku. Szyk powiązań działa wydajniej gdy potrzeba utworzyć wiele kopii, jednak nie można go później scalić. @@ -607,9 +603,9 @@ A Link array is more efficient when creating multiple copies, but it cannot be f Sweeping angle of the polar distribution. A negative angle produces a polar pattern in the opposite direction. The maximum absolute value is 360 degrees. - Sweeping angle of the polar distribution. -A negative angle produces a polar pattern in the opposite direction. -The maximum absolute value is 360 degrees. + Kąt zasięgu szyku biegunowego. +Przy ujemnej wartości kąta szyk zostanie utworzony w kierunku przeciwnym. +Maksymalna wartość bezwzględna wynosi 360 stopni. @@ -620,8 +616,8 @@ The maximum absolute value is 360 degrees. Number of elements in the array, including a copy of the original object. It must be at least 2. - Number of elements in the array, including a copy of the original object. -It must be at least 2. + Liczba elementów w tablicy, łącznie z kopią oryginalnego obiektu. +Musi to być co najmniej 2. @@ -708,13 +704,13 @@ It must be at least 2. Select a face or working plane proxy or 3 vertices. Or choose one of the options below - Select a face or working plane proxy or 3 vertices. -Or choose one of the options below + Wybierz ścianę lub przybliżoną płaszczyznę roboczą albo 3 wierzchołki. +Lub wybierz jedną z poniższych opcji Sets the working plane to the XY plane (ground plane) - Sets the working plane to the XY plane (ground plane) + Ustawia płaszczyznę roboczą na płaszczyznę XY (od przodu) @@ -734,7 +730,7 @@ Or choose one of the options below Sets the working plane to the YZ plane (side plane) - Sets the working plane to the YZ plane (side plane) + Ustawia płaszczyznę roboczą na płaszczyznę YZ (od boku) @@ -744,7 +740,7 @@ Or choose one of the options below Sets the working plane facing the current view - Sets the working plane facing the current view + Ustawia płaszczyznę roboczą skierowaną do bieżącego widoku @@ -755,8 +751,8 @@ Or choose one of the options below The working plane will align to the current view each time a command is started - The working plane will align to the current -view each time a command is started + Płaszczyzna robocza będzie ustawiona do aktualnego +widoku za każdym razem, gdy uruchamiane jest polecenie @@ -782,9 +778,9 @@ z przycisków powyżej If this is selected, the working plane will be centered on the current view when pressing one of the buttons above - If this is selected, the working plane will be -centered on the current view when pressing one -of the buttons above + Jeśli opcja ta jest wybrana, płaszczyzna robocza +zostanie ustawiona centralnie na aktualnym widoku +po naciśnięciu jednego z powyższych przycisków @@ -871,13 +867,223 @@ value by using the [ and ] keys while drawing Grid extension - Grid extension + Rozszerzenie siatki lines linie + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Szerokość linii + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Kropka + + + + Circle + Okrąg + + + + Arrow + Strzałka + + + + Tick + Odhacz + + + + Tick-2 + Odhacz-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Pokaż jednostkę + + + + Line color + Kolor linii + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Czcionka używana dla tekstów i wymiarów + + + + The line style + The line style + + + + Solid + Bryła + + + + Dashed + Kreskowana + + + + Dotted + Kropkowana + + + + DashDot + KreskaKropka + + + + Text size + Text size + + + + Unit override + Zastąpienie jednostki + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Przezroczystość + + + + Display mode + Tryb wyświetlania + + + + Text font + Text font + + + + Arrow size + Rozmiar strzałki + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Szkielet + + + + Shaded + Zacieniony + + + + Points + Punkty + + + + Draw style + Styl rysowania + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Zastosuj do wybranych obiektów + Gui::Dialog::DlgSettingsDraft @@ -1958,8 +2164,8 @@ Otherwise, they will appear as wireframe Normally, after copying objects, the copies get selected. If this option is checked, the base objects will be selected instead. - Normally, after copying objects, the copies get selected. -If this option is checked, the base objects will be selected instead. + Na ogół, po skopiowaniu obiektów, zostają wybrane kopie. +Jeśli ta opcja jest zaznaczona, to zamiast nich zostaną zaznaczone obiekty bazowe. @@ -2008,7 +2214,7 @@ Note that this is not fully supported, and many object will be not editable with Annotation scale widget - Annotation scale widget + Widżet adnotacji skali @@ -2239,27 +2445,27 @@ Wartość ta jest maksymalną długością segmentu. Override unit - Override unit + Zastąp jednostkę By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Jeśli to pole pozostanie puste, wartości wymiarów będą pokazane w bieżącej jednostce zdefiniowanej w FreeCAD. Wyznaczając jednostkę, taką jak m lub cm, można wymusić pokazanie nowych wymiarów w tej jednostce. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + Rozdzielczość rysowania wzorów. Wartość domyślna to 128. Wyższe wartości dają lepszą rozdzielczość, niższe wartości umożliwiają szybsze rysowanie Hatch Pattern default size - Hatch Pattern default size + Domyślny rozmiar wzoru kreskowania The default size of hatch patterns - The default size of hatch patterns + Domyślny rozmiar wzorów kreskowania @@ -2291,202 +2497,177 @@ Wartość ta jest maksymalną długością segmentu. draft - + Draft Command Bar Pasek komend projektu - + Toggle construction mode Przełącz tryb konstrukcyjny - - Current line color - Obecny kolor linii - - - - Current face color - Obrecny kolor twarzy - - - - Current line width - Obecna szerokość linii - - - - Current font size - Obecny rozmiar czcionki - - - - Apply to selected objects - Zastosuj do wybranych obiektów - - - + Autogroup off Wyłącz Autogrupowanie - + active command: aktywne polecenie: - + None Brak - + Active Draft command Aktywne polecenie kreślarskie - + X coordinate of next point Współrzędna X następnego punktu - + X X - + Y Y - + Z Z - + Y coordinate of next point Współrzędna Y następnego punktu - + Z coordinate of next point Współrzędna Z następnego punktu - + Enter point Wprowadź punkt - + Enter a new point with the given coordinates Wprowadź nowy punkt z koordynatami - + Length Długość - + Angle Kąt - + Length of current segment Długość odcinka bieżącego - + Angle of current segment Kąt bieżącego segmentu - + Radius Promień - + Radius of Circle Promień okręgu - + If checked, command will not finish until you press the command button again Jeżeli opcja jest zaznaczona, polecenie nie zostanie zakończone do momentu naciśnięcia przycisku polecenia ponownie - + If checked, an OCC-style offset will be performed instead of the classic offset Jeśli zaznaczone, będzie wykonywane przesunięcie w stylu OCC zamiast classic - + &OCC-style offset &OCC-styl przesunięcie - + Sides Boki - + Number of sides Liczba boków - + Offset Offset - + Auto Automatycznie - + Text string to draw Krzywe tekstu do rysowania - + String Ciąg - + Height of text Wysokość tekstu - + Height Wysokość - + Intercharacter spacing Odstęp pomiędzy znakami - + Tracking Śledzenie - + Full path to font file: Pełna ścieżka do pliku czcionki: - + Open a FileChooser for font file Otwórz okno wyboru pliku dla czcionki @@ -2496,132 +2677,132 @@ Wartość ta jest maksymalną długością segmentu. Linia - + DWire DWire - + Circle Okrąg - + Center X Środek X - + Arc Łuk - + Point Punkt - + Label Etykieta - + Distance Odległość - + Trim Ucinanie - + Pick Object Wybierz obiekt - + Edit Edytuj - + Global X Globalna X - + Global Y Globalna Y - + Global Z Globalna Z - + Local X Lokalna X - + Local Y Lokalna Y - + Local Z Lokalna Z - + Invalid Size value. Using 200.0. Nieprawidłowa wartość rozmiaru. Użyj 200.0. - + Invalid Tracking value. Using 0. Nieprawidłowa wartość śledzenia. Użyj 0. - + Please enter a text string. Wprowadź tekst. - + Select a Font file Wybierz plik czcionki - + Please enter a font file. Wprowadź plik czcionki. - + Autogroup: Autogrupowanie: - + Faces Ściany - + Remove Skasuj - + Add Dodaj - + Facebinder elements Elementy facebindera @@ -2636,7 +2817,7 @@ Wartość ta jest maksymalną długością segmentu. Krzywa Beziera - + Copy Kopiuj @@ -2659,17 +2840,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer żeby pozwolić FreeCAD na pobranie bibliotek, odpowiedz tak. - + Relative Względny - + Continue Kontynuuj - + Close Zamknij @@ -2714,7 +2895,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Ogranicz Z - + Select edge Wybierz krawędź @@ -2729,7 +2910,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Tryb długości - + Wipe Wyczyść @@ -2744,67 +2925,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Cycle snap object - + Check this to lock the current angle Zaznacz to, aby zablokować bieżący kąt - + Coordinates relative to last point or absolute Współrzędne w stosunku do ostatniego punktu lub bezwzględne - + Filled Wypełniony - + Finish Zakończ - + Finishes the current drawing or editing operation Kończy aktualny rysunek lub operację edycji - + &Undo (CTRL+Z) &Cofnij (CTRL+Z) - + Undo the last segment Cofnij ostatni segment - + Finishes and closes the current line Kończy i zamyka bieżący wiersz - + Wipes the existing segments of this line and starts again from the last point Czyści istniejące segmenty tego wierszu i rozpoczyna ponownie od ostatniego punktu - + Set WP Ustaw WP - + Reorients the working plane on the last segment Zmienia orientację płaszczyzny roboczej na ostatnim segmencie - + Selects an existing edge to be measured by this dimension Wybiera istniejącą krawędź w celu pomiaru przez ten wymiar - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Jeśli opcja jest zaznaczona, obiekty będą kopiowane, a nie przenoszone. Preferencje -> Wersja robocza -> Globalny tryb kopiowania, opcja umożliwia zachowanie tego trybu w następnych poleceniach @@ -2814,12 +2995,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Tryb podelementów - + Modify subelements Modyfikuj podelementy - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2844,19 +3025,19 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Strona - + Current working plane Bieżąca płaszczyzna robocza - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Polyline - Polilinia + Linia łamana @@ -2869,40 +3050,45 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Toggle near snap on/off - + Create text Utwórz tekst - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y - Center Y + Wyśrodkuj Y - + Center Z - Center Z + Wyśrodkuj Z - + Offset distance - Offset distance + Odległość przesunięcia - + Trim distance - Trim distance + Odległość przycięcia Wire Linia + + + Change default style for new objects + Change default style for new objects + importOCA @@ -2919,7 +3105,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer successfully exported - successfully exported + wyeksportowano pomyślnie diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm b/src/Mod/Draft/Resources/translations/Draft_pt-BR.qm index ce2040d3a4..399c3d36f2 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 db69221a68..ee1d490982 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pt-BR.ts @@ -879,6 +879,216 @@ usando as teclas [ and ] enquanto está desenhando lines linhas + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Espessura de linha + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Ponto + + + + Circle + Círculo + + + + Arrow + Seta + + + + Tick + Diagonal + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostrar unidade + + + + Line color + Cor da linha + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + A fonte para usar para textos e cotas + + + + The line style + The line style + + + + Solid + Sólido + + + + Dashed + Tracejado + + + + Dotted + Pontilhado + + + + DashDot + Traço Ponto + + + + Text size + Text size + + + + Unit override + Sobreposição de unidade + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparência + + + + Display mode + Modo de visualização + + + + Text font + Text font + + + + Arrow size + Tamanho do ponteiro + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Arame + + + + Shaded + Sombreado + + + + Points + Pontos + + + + Draw style + Estilo de desenho + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplicar aos objetos selecionados + Gui::Dialog::DlgSettingsDraft @@ -2292,202 +2502,177 @@ Esse valor é o comprimento máximo do segmento. draft - + Draft Command Bar Barra de comando Traço - + Toggle construction mode Ativar / desativar o modo de construção - - Current line color - Cor de linha atual - - - - Current face color - Cor de face atual - - - - Current line width - Espessura de linha atual - - - - Current font size - Tamanho de fonte atual - - - - Apply to selected objects - Aplicar aos objetos selecionados - - - + Autogroup off Autogrupo desligado - + active command: comando ativo: - + None Nenhum - + Active Draft command Ação ativa - + X coordinate of next point Coordenada X do ponto seguinte - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y do ponto seguinte - + Z coordinate of next point Coordenada Z do ponto seguinte - + Enter point Inserir ponto - + Enter a new point with the given coordinates Inserir um novo ponto nas coordenadas indicadas - + Length Comprimento - + Angle Ângulo - + Length of current segment Comprimento de segmento atual - + Angle of current segment Ângulo de segmento atual - + Radius Raio - + Radius of Circle Raio do círculo - + If checked, command will not finish until you press the command button again Se selecionado, o comando não terminará até que você pressione o ícone dele novamente - + If checked, an OCC-style offset will be performed instead of the classic offset Selecionado, o offset será feito no modo OCC em vez do modo clássico - + &OCC-style offset Modo &OCC - + Sides Lados - + Number of sides Número de lados - + Offset Deslocamento - + Auto Auto - + Text string to draw Texto a ser desenhado - + String Texto - + Height of text Altura do texto - + Height Altura - + Intercharacter spacing Espaçamento entre caráteres - + Tracking Rastreamento - + Full path to font file: Caminho completo para o arquivo de fonte: - + Open a FileChooser for font file Abre um diálogo para escolher um arquivo de fonte @@ -2497,132 +2682,132 @@ Esse valor é o comprimento máximo do segmento. Linha - + DWire DWire - + Circle Círculo - + Center X Centro X - + Arc Arco - + Point Ponto - + Label Rótulo - + Distance Distância - + Trim Aparar - + Pick Object Selecionar objeto - + Edit Editar - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Tamanho inválido. Usando 200,0. - + Invalid Tracking value. Using 0. Rastreamento inválido. Usando 0. - + Please enter a text string. Por favor, insira um texto. - + Select a Font file Selecione um arquivo de fonte - + Please enter a font file. Por favor, insira um arquivo de fonte. - + Autogroup: Auto Agrupar: - + Faces Faces - + Remove Remover - + Add Adicionar - + Facebinder elements Elementos da Película @@ -2637,7 +2822,7 @@ Esse valor é o comprimento máximo do segmento. Curva de Bezier - + Copy Copiar @@ -2660,17 +2845,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. - + Relative Relativo - + Continue Continuar - + Close Fechar @@ -2715,7 +2900,7 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Restringir Z - + Select edge Selecionar aresta @@ -2730,7 +2915,7 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Modo comprimento - + Wipe Limpar @@ -2745,67 +2930,67 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Alternar objeto de atração - + Check this to lock the current angle Marcar para bloquear o ângulo atual - + Coordinates relative to last point or absolute Coordenadas relativas ao último ponto ou absolutas - + Filled Preenchido - + Finish Concluir - + Finishes the current drawing or editing operation Termina o desenho atual ou a operação de edição - + &Undo (CTRL+Z) &Desfazer (CTRL+Z) - + Undo the last segment Desfazer o último segmento - + Finishes and closes the current line Termina e fecha a linha atual - + Wipes the existing segments of this line and starts again from the last point Limpa os segmentos existentes desta linha e começa novamente a partir do último ponto - + Set WP Definir Plano de Trabalho - + Reorients the working plane on the last segment Reorienta o plano de trabalho para o último segmento - + Selects an existing edge to be measured by this dimension Seleciona uma aresta existente a ser medida por esta dimensão - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Se isto estiver marcado, os objetos serão copiados em vez de deslocados. Use Preferências -> Draft -> Modo cópia global para manter este modo nas próximas operações @@ -2815,12 +3000,12 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Modo de sub-elemento - + Modify subelements Modificar sub-elementos - + If checked, subelements will be modified instead of entire objects Se marcado, os sub-elementos serão modificados em vez de todos os objetos @@ -2845,12 +3030,12 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Lateral - + Current working plane Plano de trabalho atual - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Marque esta opção se o objeto deve aparecer como preenchido. Caso contrário, ele aparecerá como wireframe. Não disponível se a opção rascunho 'Usar Primitivas' esta ativada @@ -2870,32 +3055,32 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Ligar/desligar o modo de proximidade - + Create text Criar texto - + Press this button to create the text object, or finish your text with two blank lines Pressione este botão para criar o objeto de texto, ou para terminar seu texto com duas linhas em branco - + Center Y Centro Y - + Center Z Centro Z - + Offset distance Distância de deslocamento - + Trim distance Distância de aparação @@ -2904,6 +3089,11 @@ Para habilitar o FreeCAD para fazer o download destas bibliotecas, responda Sim. Wire Fio + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm b/src/Mod/Draft/Resources/translations/Draft_pt-PT.qm index f7c64e6d9b..0371afaaec 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 6537103b87..999f7c8c46 100644 --- a/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts +++ b/src/Mod/Draft/Resources/translations/Draft_pt-PT.ts @@ -877,6 +877,216 @@ value by using the [ and ] keys while drawing lines linhas + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Largura da linha + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Ponto + + + + Circle + Círculo + + + + Arrow + Flecha + + + + Tick + diagonal + + + + Tick-2 + Diagonal-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostrar Unidades + + + + Line color + Cor da linha + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + A fonte a ser usada para textos e dimensões + + + + The line style + The line style + + + + Solid + Sólido + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + TraçoPonto + + + + Text size + Text size + + + + Unit override + Substituição da unidade + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparência + + + + Display mode + Modo de visualização + + + + Text font + Text font + + + + Arrow size + Tamanho da seta + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + aramado (wireframe) + + + + Shaded + Sombreado + + + + Points + Pontos + + + + Draw style + Estilo de visualização + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplicar aos Objet. Selec. + Gui::Dialog::DlgSettingsDraft @@ -2291,202 +2501,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Barra de comando Draft - + Toggle construction mode Alternar modo de construção - - Current line color - Cor de linha atual - - - - Current face color - Cor da face atual - - - - Current line width - Comprimento de linha atual - - - - Current font size - Tamanho do tipo de letra atual - - - - Apply to selected objects - Aplicar aos Objet. Selec. - - - + Autogroup off Autoagrupar desactivado - + active command: Comando ativo: - + None Nenhum - + Active Draft command comando Desenhar ativado - + X coordinate of next point Coordenada X do Próximo Ponto - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y do Próximo Ponto - + Z coordinate of next point Coordenada Z do Próximo Ponto - + Enter point Inserir ponto - + Enter a new point with the given coordinates Insirir um novo ponto com pelas coordenadas - + Length Comprimento - + Angle Ângulo - + Length of current segment Comprimento do segmento atual - + Angle of current segment Ângulo do segmento atual - + Radius Raio - + Radius of Circle Raio do Círculo - + If checked, command will not finish until you press the command button again Se marcado, o comando não irá terminar até que clique novamente no botão de comando - + If checked, an OCC-style offset will be performed instead of the classic offset Se selecionado, um deslocamento ao estilo OCC será executado em vez do deslocamento clássico - + &OCC-style offset &Deslocamento estilo OCC - + Sides Lados - + Number of sides Nr. de Lados - + Offset Deslocamento paralelo - + Auto Auto - + Text string to draw Cadeia de caracteres de texto a desenhar - + String Texto - + Height of text Altura do texto - + Height Altura - + Intercharacter spacing Espaçamento entre caráteres - + Tracking Monitorização - + Full path to font file: Caminho completo para o arquivo de fonte: - + Open a FileChooser for font file Abrir um diálogo para escolher um arquivo de fonte @@ -2496,132 +2681,132 @@ This value is the maximum segment length. Linha - + DWire DWire - + Circle Círculo - + Center X Centrar X - + Arc Arco - + Point Ponto - + Label Rótulo - + Distance Distância - + Trim Aparar - + Pick Object Escolha objeto - + Edit Editar - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X local - + Local Y Y local - + Local Z Z local - + Invalid Size value. Using 200.0. Valor de Tamanho inválido. Usando 200,0. - + Invalid Tracking value. Using 0. Rastreamento inválido. Usando 0. - + Please enter a text string. Por favor, insira um texto. - + Select a Font file Selecione um ficheiro de tipos - + Please enter a font file. Por favor, insira um arquivo de fonte. - + Autogroup: Autoagrupar: - + Faces Faces - + Remove Remover - + Add Adicionar - + Facebinder elements Elementos Película (facebinder) @@ -2636,7 +2821,7 @@ This value is the maximum segment length. Curva de Bezier - + Copy Copiar @@ -2656,17 +2841,17 @@ To enabled FreeCAD to download these libraries, answer Yes. Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. - + Relative Relativo - + Continue Continuar - + Close Fechar @@ -2711,7 +2896,7 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Restringir Z - + Select edge Selecionar aresta @@ -2726,7 +2911,7 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Modo comprimento - + Wipe Limpar @@ -2741,67 +2926,67 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Alterna Alinhamento e atração (snap) do objeto - + Check this to lock the current angle Marcar para bloquear o ângulo atual - + Coordinates relative to last point or absolute Coordenadas relativas ao último ponto ou absolutas - + Filled Preenchido - + Finish Terminar - + Finishes the current drawing or editing operation Termina o desenho atual ou a operação de edição - + &Undo (CTRL+Z) &Desfazer (CTRL+Z) - + Undo the last segment Desfazer o último segmento - + Finishes and closes the current line Termina e fecha a linha atual - + Wipes the existing segments of this line and starts again from the last point Limpa os segmentos existentes desta linha e começa novamente a partir do último ponto - + Set WP Definir Plano de Trabalho - + Reorients the working plane on the last segment Reorienta o plano de trabalho para o último segmento - + Selects an existing edge to be measured by this dimension Seleciona uma aresta existente a ser medida por esta cotagem - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Se marcado, os objetos serão copiados em vez de movidos. Preferências-> Traço-> Modo de cópia Global para manter este modo nos comandos seguintes @@ -2811,12 +2996,12 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2841,12 +3026,12 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2866,32 +3051,32 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Toggle near snap on/off - + Create text Criar Texto - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2900,6 +3085,11 @@ Para permitir ao FreeCAD baixar essas bibliotecas, responder sim. Wire Traço (Wire) + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ro.qm b/src/Mod/Draft/Resources/translations/Draft_ro.qm index 4c2e4f116f..d0287f58f8 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 1476eaf0be..b3e36b7fc6 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ro.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ro.ts @@ -877,6 +877,216 @@ valoare și folosind tastele [ și ] în timp ce desenați lines linii + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Latimea liniei + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punct + + + + Circle + Cerc + + + + Arrow + Săgeată + + + + Tick + Cocher + + + + Tick-2 + Oblique 2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Arată unitatea + + + + Line color + Culoarea liniei + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Fontul utilizat pentru texte și dimensiuni + + + + The line style + The line style + + + + Solid + Solid + + + + Dashed + Linie Intrerupta + + + + Dotted + Punctată + + + + DashDot + Linie punct + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparenţă + + + + Display mode + Mod de afișare + + + + Text font + Text font + + + + Arrow size + Dimensiunea săgeții + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Wireframe + + + + Shaded + Umbrit + + + + Points + Puncte + + + + Draw style + Stil de desenare + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Se aplică la obiectele selectate + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ Această valoare este lungimea maximă a unui segment. draft - + Draft Command Bar Bara de Comandă Schiță - + Toggle construction mode Activează/dezactivează Modul de Construcție - - Current line color - Culoarea liniei curente - - - - Current face color - Culoare curentă a fațetei - - - - Current line width - Lățimea linei curente - - - - Current font size - Dimensiunea curentă a fontului - - - - Apply to selected objects - Se aplică la obiectele selectate - - - + Autogroup off Autogrup dezactivat - + active command: Comanda activă: - + None Niciunul - + Active Draft command Comanda activă proiect - + X coordinate of next point Coordonata X a punctului următor - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordonata Y a punctului următor - + Z coordinate of next point Coordonata Z a punctului următor - + Enter point Introduceți punctul - + Enter a new point with the given coordinates Introduceți un nou punct cu coordonatele date - + Length Lungime - + Angle Unghi - + Length of current segment Lungimea segmentului curent - + Angle of current segment Unghiul segmentului curent - + Radius Raza - + Radius of Circle Raza cercului - + If checked, command will not finish until you press the command button again Dacă bifaţi casuţa, comanda nu se va termina până când nu apăsaţi butonul de comandă din nou - + If checked, an OCC-style offset will be performed instead of the classic offset Daca este bifat, o expandare tip OCC va fi folosita inlocul expandarii clasice - + &OCC-style offset Expandare tip &OCC - + Sides Părți - + Number of sides Numărul de laturi - + Offset Compensare - + Auto Automat - + Text string to draw Șir text de desenat - + String Şir - + Height of text Înălțimea textului - + Height Înălţime - + Intercharacter spacing Spațiul dintre caractere - + Tracking Urmărire - + Full path to font file: Calea întreagă la fișierul text: - + Open a FileChooser for font file Deschide un FileChooser pentru fişier de font @@ -2498,132 +2683,132 @@ Această valoare este lungimea maximă a unui segment. Linie - + DWire DWire - + Circle Cerc - + Center X Centrul X - + Arc Arc - + Point Punct - + Label Etichetă - + Distance Distance - + Trim Taiere - + Pick Object Alege obiect - + Edit Editare - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. Valoare dimensiune nevalidă. Utilizați 200.0. - + Invalid Tracking value. Using 0. Valoare dimensiune nevalidă. Utilizați 0. - + Please enter a text string. Introduceți un șir text. - + Select a Font file Selectați un fișier font - + Please enter a font file. Introduceți un fișier font. - + Autogroup: AutoGroup: - + Faces Fete - + Remove Elimină - + Add Adaugă - + Facebinder elements Surfaces liées: éléments @@ -2638,7 +2823,7 @@ Această valoare este lungimea maximă a unui segment. Curbă bezier - + Copy Copiere @@ -2655,17 +2840,17 @@ To enabled FreeCAD to download these libraries, answer Yes. Les bibliothèques d'importation/exportation DXF nécessaires FreeCAD pour manipuler le format DXF ne se trouvaient pas sur ce système. Il vous faut soit activer FreeCAD télécharger ces bibliothèques: plan de travail de charge projet 1 - 2 - Menu Edition > Préférences > Import-Export > DXF > activer les téléchargements ou télécharger ces bibliothèques manuellement, comme expliqué sur https://github.com/yorikvanhavre/Draft-dxf-importer pour FreeCAD activé pour télécharger ces bibliothèques, répondre Oui. - + Relative Relativ - + Continue Continua - + Close Închide @@ -2710,7 +2895,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Limita Z - + Select edge Selectează marginea @@ -2725,7 +2910,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Modul longitudinal - + Wipe Șterge @@ -2740,67 +2925,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Trece prin obiectele pentru fixare - + Check this to lock the current angle Bifați asta pentru a bloca unghiul curent - + Coordinates relative to last point or absolute Coordonate relative faţă de ultimul punct sau absolute - + Filled Umplut - + Finish Terminare - + Finishes the current drawing or editing operation Termina operatiunea curenta de editare sau desenare - + &Undo (CTRL+Z) & Undo (CTRL + Z) - + Undo the last segment Anulare ultimul segment - + Finishes and closes the current line Termină, şi închide linia curentă - + Wipes the existing segments of this line and starts again from the last point Şterge toate segmentele existente ale acestei linii şi reporneşte de la ultimul punct - + Set WP Definește planul de lucru - + Reorients the working plane on the last segment Reorientează plan de lucru pe ultimul segment - + Selects an existing edge to be measured by this dimension Selectați o margine existentă pentru a fi măsurată de către această dimensiune - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Dacă este bifat, obiectele vor fi copiate în loc de a fi mutate. Preferences -> Draft -> Global copy mode pentru a menţine acest mod în următoarele comenzi @@ -2810,12 +2995,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Mod Subelement - + Modify subelements Modifică subelementele - + If checked, subelements will be modified instead of entire objects Dacă este bifată, subelementele vor fi modificate în locul obiectelor întregi @@ -2840,12 +3025,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Latura - + Current working plane Planul curent de lucru - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Bifează dacă obiectul ar trebui să apară ca umplut, altfel va apărea ca wireframe. Aceasta nu este posibil dacă este activată opțiunea Schiței „Utilizați Piese Primitive” @@ -2865,32 +3050,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Comută lipirea de proximitate pornit/oprit - + Create text Crează text - + Press this button to create the text object, or finish your text with two blank lines Apăsați acest buton pentru a crea obiectul text sau pentru a finaliza textul cu două linii goale - + Center Y Y centru - + Center Z Z centru - + Offset distance Distanță de decalare - + Trim distance Distanță de tăiere @@ -2899,6 +3084,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Polilinie + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_ru.qm b/src/Mod/Draft/Resources/translations/Draft_ru.qm index 6a275e52e3..c44e441134 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 3dc9f16c72..5f96097ffb 100644 --- a/src/Mod/Draft/Resources/translations/Draft_ru.ts +++ b/src/Mod/Draft/Resources/translations/Draft_ru.ts @@ -864,13 +864,223 @@ value by using the [ and ] keys while drawing Grid extension - Grid extension + Расширение сетки lines линии + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Ширина линии + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Точка + + + + Circle + Окружность + + + + Arrow + Стрелка + + + + Tick + Зацеп + + + + Tick-2 + Зацепление-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Показать единицы + + + + Line color + Цвет линии + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Шрифт для текстов и размеров + + + + The line style + The line style + + + + Solid + Твердотельный объект + + + + Dashed + Штриховая + + + + Dotted + Пунктирная + + + + DashDot + Штрихпунктир + + + + Text size + Text size + + + + Unit override + Единица переопределения + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Прозрачность + + + + Display mode + Режим отображения + + + + Text font + Text font + + + + Arrow size + Размер стрелки + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Каркас + + + + Shaded + Только грани + + + + Points + Точки + + + + Draw style + Стиль представления + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + пикс. + + + + Apply to selected objects + Применить к выбранным объектам + Gui::Dialog::DlgSettingsDraft @@ -2222,27 +2432,27 @@ This value is the maximum segment length. Override unit - Override unit + Переопределить единицу измерения By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Если оставить это поле пустым, то будут показаны те единицы измерения, какие указаны в FreeCAD. Указывая единицу измерения здесь как м или см, Вы можете указать новые единицы измерения. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + Разрешение для рисования штриховки. Значение по умолчанию — 128. Большее значение даст лучшее разрешение, меньшее значение сделает отрисовку быстрее Hatch Pattern default size - Hatch Pattern default size + Размер Шаблона штриховки по умолчанию The default size of hatch patterns - The default size of hatch patterns + Размер по умолчанию для шаблонов штриховки @@ -2274,202 +2484,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Командная строка черчения - + Toggle construction mode Переключить режим конструирования - - Current line color - Текущий цвет линии - - - - Current face color - Текущий цвет поверхности - - - - Current line width - Текущая ширина линии - - - - Current font size - Текущий размер шрифта - - - - Apply to selected objects - Применить к выбранным объектам - - - + Autogroup off Автогруппирование выключено - + active command: Текущая команда: - + None Ничего - + Active Draft command Активная команда черчения - + X coordinate of next point абсцисса следующей точки - + X X - + Y Y - + Z Z - + Y coordinate of next point ордината следующей точки - + Z coordinate of next point аппликата следующей точки - + Enter point Введите точку - + Enter a new point with the given coordinates Введите новую точку с заданными координатами - + Length Длина - + Angle Угол - + Length of current segment Длина текущего сегмента - + Angle of current segment Угол текущего сегмента - + Radius Радиус - + Radius of Circle Радиус окружности - + If checked, command will not finish until you press the command button again Если отмечено, команда не будет завершена до нажатия кнопки снова - + If checked, an OCC-style offset will be performed instead of the classic offset Если флажок установлен, вместо классического смещения будет выполняться смещение в стиле OCC - + &OCC-style offset Смещение в стиле &OCC - + Sides Стороны - + Number of sides Количество сторон - + Offset Смещение - + Auto Авто - + Text string to draw Cтрока текста для рисования - + String Строка - + Height of text Высота текста - + Height Высота - + Intercharacter spacing Межсимвольное расстояние - + Tracking Межсимвольное расстояние - + Full path to font file: Полный путь к файлу шрифта: - + Open a FileChooser for font file Открыть обозреватель файлов для выбора файла шрифта @@ -2479,132 +2664,132 @@ This value is the maximum segment length. Линия - + DWire Ломаная - + Circle Окружность - + Center X Центр X - + Arc Дуга - + Point Точка - + Label Метка - + Distance Расстояние - + Trim Подгонка - + Pick Object Выберите объект - + Edit Редактировать - + Global X Глобальный X - + Global Y Глобальный Y - + Global Z Глобальный Z - + Local X Локальный X - + Local Y Локальный Y - + Local Z Локальный Z - + Invalid Size value. Using 200.0. Неверное значение размера. Используется 200.0. - + Invalid Tracking value. Using 0. Неверный интервал между символами. Используется 0. - + Please enter a text string. Пожалуйста, введите текст. - + Select a Font file Выберите файл шрифта - + Please enter a font file. Пожалуйста, введите файл шрифта. - + Autogroup: Автогруппирование: - + Faces Грани - + Remove Удалить - + Add Добавить - + Facebinder elements Элементы граневяза @@ -2619,7 +2804,7 @@ This value is the maximum segment length. Кривая Безье - + Copy Копировать @@ -2642,17 +2827,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Чтобы разрешить FreeCAD скачать эту библиотеку, ответьте Да. - + Relative Относительно - + Continue Продолжить - + Close Закрыть @@ -2697,7 +2882,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Ограничить по Z - + Select edge Выбрать ребро @@ -2712,7 +2897,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Режим длины - + Wipe Стереть @@ -2727,67 +2912,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Выбор объекта по узловым точкам - + Check this to lock the current angle Отметьте чтобы закрепить текущий угол - + Coordinates relative to last point or absolute Координаты относительно последней точки или абсолютные - + Filled Заполненный - + Finish Завершить - + Finishes the current drawing or editing operation Завершить текущую операцию черчения или редактирования - + &Undo (CTRL+Z) Отменить (Ctrl+Z) - + Undo the last segment Отменить последний сегмент - + Finishes and closes the current line Закончить и замкнуть текущую линию - + Wipes the existing segments of this line and starts again from the last point Стирает существующие сегменты этой линии и начинает снова с последней точки - + Set WP Задать РП - + Reorients the working plane on the last segment Переориентирует рабочую плоскость по последнему сегменту - + Selects an existing edge to be measured by this dimension Выбирает существующую кромку чтобы измерить размер - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Если флажок установлен, объекты будут скопированы, иначе будут перенесены. Настройки-> Чертёж-> Режим глобального копирования сохранить для последующих команд. @@ -2797,12 +2982,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Режим дочернего элемента - + Modify subelements Изменение дочерних элементов - + If checked, subelements will be modified instead of entire objects Если флажок установлен, то вместо целых объектов будут изменены дочерние элементы @@ -2827,12 +3012,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Сторона - + Current working plane Текущая рабочая плоскость - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Установите флажок, если объект должен отображаться как заполненный, в противном случае он будет отображаться как каркас. Недоступно если включен параметр эскиза 'Использовать примитивы детали' @@ -2852,32 +3037,32 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Включить привязку вблизи - + Create text Создать текст - + Press this button to create the text object, or finish your text with two blank lines Нажмите эту кнопку, чтобы создать текстовый объект, или закончить текст двумя пустыми строками - + Center Y Центр Y - + Center Z Центр Z - + Offset distance Расстояние смещения - + Trim distance Расстояние обрезки @@ -2886,6 +3071,11 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wire Ломаная + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_sk.qm b/src/Mod/Draft/Resources/translations/Draft_sk.qm index 7d990870c5..02067d171e 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_sk.qm and b/src/Mod/Draft/Resources/translations/Draft_sk.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_sk.ts b/src/Mod/Draft/Resources/translations/Draft_sk.ts index f2bde478b3..3008caf16b 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sk.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sk.ts @@ -874,6 +874,216 @@ value by using the [ and ] keys while drawing lines lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Hrúbka čiary + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Bodka + + + + Circle + Kružnica + + + + Arrow + Šípka + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Zobraziť jednotku + + + + Line color + Farba čiary + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Font použitý pre texty a kóty + + + + The line style + The line style + + + + Solid + Teleso + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Prepis jednotky + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Display mode + + + + Text font + Text font + + + + Arrow size + Veľkosť šípky + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Drôtový model + + + + Shaded + Shaded + + + + Points + Body + + + + Draw style + Štýl kreslenia + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplikovať na vybrané objekty + Gui::Dialog::DlgSettingsDraft @@ -2291,202 +2501,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft Command Bar - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - Aplikovať na vybrané objekty - - - + Autogroup off Autogroup off - + active command: aktívny príkaz: - + None Žiadny - + Active Draft command Aktívny príkaz návrhu - + X coordinate of next point X-ová súradnica ďalšieho bodu - + X X - + Y Y - + Z Z - + Y coordinate of next point Y-ová súradnica ďalšieho bodu - + Z coordinate of next point Z-ová súradnica ďalšieho bodu - + Enter point Enter point - + Enter a new point with the given coordinates Enter a new point with the given coordinates - + Length Dĺžka - + Angle Uhol - + Length of current segment Length of current segment - + Angle of current segment Angle of current segment - + Radius Polomer - + Radius of Circle Polomer kruhu - + If checked, command will not finish until you press the command button again Ak je začiarknuté, príkaz sa neskončí kým znova nestlačíte tlačítko - + If checked, an OCC-style offset will be performed instead of the classic offset Ak je začiarknuté, tak sa namiesto klasického použije OCC štýl odchýlky - + &OCC-style offset &OCC-štýl odchýlky - + Sides Strany - + Number of sides Počet strán - + Offset Odsadenie - + Auto Auto - + Text string to draw Text string to draw - + String Reťazec - + Height of text Výška textu - + Height Výška - + Intercharacter spacing Intercharacter spacing - + Tracking Tracking - + Full path to font file: Full path to font file: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2496,132 +2681,132 @@ This value is the maximum segment length. čiara - + DWire Návrhová krivka - + Circle Kružnica - + Center X Stredové X - + Arc Oblúk - + Point Bod - + Label Label - + Distance Vzdialenosť - + Trim Odrezať - + Pick Object Vybrať objekt - + Edit Upraviť - + Global X Globálna os X - + Global Y Globálna os Y - + Global Z Globálna os Z - + Local X Lokálna os X - + Local Y Lokálna os Y - + Local Z Lokálna os Z - + Invalid Size value. Using 200.0. Neplatná hodnota veľkosti. Použije sa 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Please enter a text string. - + Select a Font file Vyberte súbor obsahujúci písmo - + Please enter a font file. Zadajte súbor obsahujúci písmo. - + Autogroup: Autogroup: - + Faces Predné strany - + Remove Odstrániť - + Add Pridať - + Facebinder elements Facebinder elements @@ -2636,7 +2821,7 @@ This value is the maximum segment length. BezCurve - + Copy Kópia @@ -2660,17 +2845,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Zavrieť @@ -2715,7 +2900,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2730,7 +2915,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2745,67 +2930,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Dokončiť - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2815,12 +3000,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2845,12 +3030,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2870,32 +3055,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Vytvoriť Text - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2904,6 +3089,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Čiara + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_sl.qm b/src/Mod/Draft/Resources/translations/Draft_sl.qm index dbcb7f5428..0bf12014b3 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 b061a230da..7c22a0ff39 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sl.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sl.ts @@ -872,13 +872,223 @@ risanjem spremenite s tipkama [ in ] Grid extension - Grid extension + Podaljšek mreže lines črt + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Širina črte + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Pika + + + + Circle + Krog + + + + Arrow + Puščica + + + + Tick + Kljukica + + + + Tick-2 + Kljukica-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Prikaži enoto + + + + Line color + Barva črte + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Pisava besedil in kót + + + + The line style + The line style + + + + Solid + Telo + + + + Dashed + Črtkano + + + + Dotted + Pikčasto + + + + DashDot + Črtopična + + + + Text size + Text size + + + + Unit override + Nadomestna enota + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Prozornost + + + + Display mode + Prikazni način + + + + Text font + Text font + + + + Arrow size + Velikost puščice + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Žični model + + + + Shaded + Osenčeno + + + + Points + Točke + + + + Draw style + Slog risanja + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Uporabi za izbrane predmete + Gui::Dialog::DlgSettingsDraft @@ -2244,27 +2454,27 @@ Ta vrednost predstavlja najdaljši možni odsek. Override unit - Override unit + Povozi enoto By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. - By leaving this field blank, the dimension measurements will be shown in the current unit defined in FreeCAD. By indicating a unit here such as m or cm, you can force new dimensions to be shown in that unit. + Če to polje pustite prazno, bodo mere kót prikazane v enotah, ki so trenutno nastavljene v FreeCAD-u, če pa želite vsiliti drugo enoto, npr. m ali cm, to vnesite v polje. The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster - The resolution to draw the patterns in. Default value is 128. Higher values give better resolutions, lower values make drawing faster + Ločljivost vrisovanja vzorcev. Privzeta vrednost je 128. Višje vrednosti izboljšajo ločljivost, z nižjimi vrednostmi pa je risanje hitrejše Hatch Pattern default size - Hatch Pattern default size + Privzeta velikost vzorca črtkanja The default size of hatch patterns - The default size of hatch patterns + Privzeta velikost vzorca črtkanja @@ -2296,202 +2506,177 @@ Ta vrednost predstavlja najdaljši možni odsek. draft - + Draft Command Bar Ukazna vrstica osnutkov - + Toggle construction mode Preklopi pomožni način - - Current line color - Trenutna barva črt - - - - Current face color - Trenutna barva ploskev - - - - Current line width - Trenutna debelina črte - - - - Current font size - Trenutna velikost pisave - - - - Apply to selected objects - Uporabi za izbrane predmete - - - + Autogroup off Samodejno združevanje izklopljeno - + active command: dejaven ukaz: - + None Brez - + Active Draft command Dejaven ukaz osnutka - + X coordinate of next point Sorednica X naslednje točke - + X X - + Y Y - + Z Z - + Y coordinate of next point Sorednica Y naslednje točke - + Z coordinate of next point Sorednica Z naslednje točke - + Enter point Vnesi točko - + Enter a new point with the given coordinates Vnesi novo točko z danimi sorednicami - + Length Dolžina - + Angle Kot - + Length of current segment Dolžina trenutnega odseka - + Angle of current segment Kot trenutnega odseka - + Radius Polmer - + Radius of Circle Polmer kroga - + If checked, command will not finish until you press the command button again Če je označeno, se ukaz ne bo zaključil, dokler ponovno ne pritisnete gumba za ukaz - + If checked, an OCC-style offset will be performed instead of the classic offset Če je označeno, bo odmik namesto običajno izveden v slogu OCC, tj. na vse strani - + &OCC-style offset Odmik v slogu &OCC - + Sides Strani - + Number of sides Število strani - + Offset Odmik - + Auto Samodejno - + Text string to draw Niz besedila, ki ga želite narisati - + String Niz - + Height of text Višina besedila - + Height Višina - + Intercharacter spacing Razmik med znaki - + Tracking Sledenje - + Full path to font file: Polna pot do datoteke pisave: - + Open a FileChooser for font file Odpri izbirnik datotek za datoteko pisave @@ -2501,132 +2686,132 @@ Ta vrednost predstavlja najdaljši možni odsek. Črta - + DWire OČrtovje - + Circle Krog - + Center X X središča - + Arc Lok - + Point Točka - + Label Oznaka - + Distance Distance - + Trim Prireži - + Pick Object Izberi predmet - + Edit Uredi - + Global X Obči X - + Global Y Obči Y - + Global Z Obči Z - + Local X Krajevni X - + Local Y Krajevni Y - + Local Z Krajevni Z - + Invalid Size value. Using 200.0. Neveljavna vrednost velikosti. Uporabljeno bo 200,0. - + Invalid Tracking value. Using 0. Neveljavna vrednost sledenja. Uporabljeno bo 0. - + Please enter a text string. Vnesite besedilni niz. - + Select a Font file Izberite datoteko pisave - + Please enter a font file. Vnesite datoteko pisave - + Autogroup: Samodejno združevanje: - + Faces Ploskve - + Remove Odstrani - + Add Dodaj - + Facebinder elements Predmeti vezalnika ploskev @@ -2641,7 +2826,7 @@ Ta vrednost predstavlja najdaljši možni odsek. Bez. krivulja - + Copy Kopiraj @@ -2665,17 +2850,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer. Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. - + Relative Odnosno - + Continue Nadaljuj - + Close Zapri @@ -2720,7 +2905,7 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Omeji Z - + Select edge Izberite rob @@ -2735,7 +2920,7 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Dolžinski način - + Wipe Počisti @@ -2750,67 +2935,67 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Menjavanje predmeta pripenjanja - + Check this to lock the current angle Označite, če želite zakleniti trenutni kot - + Coordinates relative to last point or absolute Sorednice glede na zadnjo točko ali absolutne - + Filled Zapolnjeno - + Finish Končaj - + Finishes the current drawing or editing operation Zaključi trenutno risanje ali urejanje - + &Undo (CTRL+Z) &Razveljavi (CTRL+Z) - + Undo the last segment Razveljavi zadnji odsek - + Finishes and closes the current line Zaključi in sklene trenutno črto - + Wipes the existing segments of this line and starts again from the last point Izbriše obstoječe odseke tega črtovja in začne iz zadnje točke - + Set WP Ponastavi DR - + Reorients the working plane on the last segment Prilagodi delavno ravnino glede na zadnji odsek - + Selects an existing edge to be measured by this dimension Izbere obstoječi rob za izmero s to koto - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Če je označeno, se predmete kopira namesto premika. Prednastavitve -> Osnutek -> Splošni način kopiranja, da ohranite ta način pri sledečih ukazih @@ -2820,12 +3005,12 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Način podprvine - + Modify subelements Preoblikuj podprvine - + If checked, subelements will be modified instead of entire objects Če je označeno, bodo namesto celotnega predmeta preoblikovane le podprvine @@ -2850,12 +3035,12 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Stran - + Current working plane Trenutna delovna ravnina - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Označite, če se naj predmet prikaže kot poln, sicer bo videti kot žični model. Ta možnost ni na voljo, če je v lastnostih očrta možnost "Uporabi osnovnike" vključena @@ -2875,32 +3060,32 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Vklopi/izklopi bližnje pripenjanje - + Create text Ustvari besedilo - + Press this button to create the text object, or finish your text with two blank lines Pritisnite ta gumb, da ustvarite besedilni predmet ali zaključite besedilo z dvema praznima črtama - + Center Y Y središča - + Center Z Z središča - + Offset distance Velikost odmika - + Trim distance Dolžina prirezovanja @@ -2909,6 +3094,11 @@ Da FreeCADu omogočite prenos teh knjižnic, odgovorite z Da. Wire Črtovje + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_sr.qm b/src/Mod/Draft/Resources/translations/Draft_sr.qm index e8e4fe8c54..0f4e2d034d 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 aa6a6e5475..e8f998ff15 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sr.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines линије + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Ширина линије + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Тачка + + + + Circle + Круг + + + + Arrow + Cтрелица + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Боја линије + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Чврcто тело + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % +  % + + + + Transparency + Transparency + + + + Display mode + Режим приказа + + + + Text font + Text font + + + + Arrow size + Величина стрелице + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Жичани рам + + + + Shaded + Shaded + + + + Points + Тачке + + + + Draw style + Cтил цртања + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Примени на изабране објекте + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Нацрт Командна трака - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - Примени на изабране објекте - - - + Autogroup off Autogroup off - + active command: активне команде: - + None Ниједан - + Active Draft command Активна команда нацрта - + X coordinate of next point 'X' координата следеће тачке - + X 'X' - + Y 'Y' - + Z 'Z' - + Y coordinate of next point 'Y' координата следеће тачке - + Z coordinate of next point 'Z' координата следеће тачке - + Enter point Enter point - + Enter a new point with the given coordinates Enter a new point with the given coordinates - + Length Дужина - + Angle Угао - + Length of current segment Length of current segment - + Angle of current segment Angle of current segment - + Radius Полупречник - + Radius of Circle Полупречник круга - + If checked, command will not finish until you press the command button again If checked, command will not finish until you press the command button again - + If checked, an OCC-style offset will be performed instead of the classic offset If checked, an OCC-style offset will be performed instead of the classic offset - + &OCC-style offset &OCC-style offset - + Sides Стране - + Number of sides Број страна - + Offset Померај - + Auto Аутоматски - + Text string to draw Text string to draw - + String Нит - + Height of text Виcина текcта - + Height Висина - + Intercharacter spacing Intercharacter spacing - + Tracking Праћење - + Full path to font file: Цео пут до датотеке фонта: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2498,132 +2683,132 @@ This value is the maximum segment length. Линија - + DWire Д-жица - + Circle Круг - + Center X Центар 'X' - + Arc Лук - + Point Тачка - + Label Label - + Distance Distance - + Trim Trim - + Pick Object Изаберите објекат - + Edit Измени - + Global X Global X - + Global Y Global Y - + Global Z Global Z - + Local X Local X - + Local Y Local Y - + Local Z Local Z - + Invalid Size value. Using 200.0. Invalid Size value. Using 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Please enter a text string. - + Select a Font file Одабери датотеку Фонта - + Please enter a font file. Молим, унеcите датотеку фонта. - + Autogroup: Autogroup: - + Faces Површи - + Remove Obriši - + Add Додај - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. BezCurve - + Copy Умножи @@ -2662,17 +2847,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Continue - + Close Zatvori @@ -2717,7 +2902,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Select edge @@ -2732,7 +2917,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Wipe @@ -2747,67 +2932,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Заврши - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2817,12 +3002,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2847,12 +3032,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2872,32 +3057,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Направи текcт - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2906,6 +3091,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Жица + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm b/src/Mod/Draft/Resources/translations/Draft_sv-SE.qm index 6dbfc1fadd..4f4984f4e9 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 aaa9531a35..98ffc35950 100644 --- a/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts +++ b/src/Mod/Draft/Resources/translations/Draft_sv-SE.ts @@ -6,7 +6,7 @@ Annotation Styles Editor - Annotation Styles Editor + Stilredigerare för anteckningar @@ -51,7 +51,7 @@ Line spacing - Line spacing + Radavstånd @@ -61,7 +61,7 @@ The font to use for texts and dimensions - The font to use for texts and dimensions + Teckensnitt som används för texter och måttsättning @@ -81,7 +81,7 @@ Unit override - Unit override + Åsidosätt enhet @@ -131,7 +131,7 @@ Line / text color - Line / text color + Linje/text-färg @@ -296,7 +296,7 @@ menyverktyg -> Insticksmodulshanterare Circular array - Circular array + Cirkulär array @@ -369,7 +369,7 @@ It cannot be zero. Tangential distance - Tangential distance + Tangentiellt avstånd @@ -379,7 +379,7 @@ It cannot be zero. Radial distance - Radial distance + Radiellt avstånd @@ -428,7 +428,7 @@ Negative values will result in copies produced in the negative direction. Z intervals - Z intervals + Z intervaller @@ -448,7 +448,7 @@ Negative values will result in copies produced in the negative direction. Reset the distances. - Reset the distances. + Återställ avstånden. @@ -515,12 +515,12 @@ Negative values will result in copies produced in the negative direction. Y intervals - Y intervals + Y intervaller Reset Y - Reset Y + Återställ Y @@ -615,7 +615,7 @@ The maximum absolute value is 360 degrees. Polar angle - Polar angle + Polär vinkel @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines linjer + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Linjebredd + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punkt + + + + Circle + Cirkel + + + + Arrow + Pil + + + + Tick + Bock + + + + Tick-2 + Bock-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Visa enhet + + + + Line color + Linjefärg + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Teckensnitt som används för texter och måttsättning + + + + The line style + The line style + + + + Solid + Solid + + + + Dashed + Streckad + + + + Dotted + Prickad + + + + DashDot + Streck-punkt + + + + Text size + Text size + + + + Unit override + Åsidosätt enhet + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparens + + + + Display mode + Visningsläge + + + + Text font + Text font + + + + Arrow size + Pilstorlek + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Trådram + + + + Shaded + Skuggad + + + + Points + Punkter + + + + Draw style + Ritstil + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Applicera på valda objekt + Gui::Dialog::DlgSettingsDraft @@ -2244,7 +2454,7 @@ This value is the maximum segment length. Override unit - Override unit + Åsidosätt enhet @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Draft kommandofält - + Toggle construction mode Växla konstruktionsläge - - Current line color - Nuvarande linjefärg - - - - Current face color - Nuvarande färg på ytor - - - - Current line width - Nuvarande linjetjocklek - - - - Current font size - Nuvarande teckenstorlek - - - - Apply to selected objects - Applicera på valda objekt - - - + Autogroup off Autogruppera av - + active command: Aktivt kommando: - + None Inget - + Active Draft command Aktivt ritkommando - + X coordinate of next point Nästa punkts X koordinat - + X X - + Y Y - + Z Z - + Y coordinate of next point Nästa punkts Y koordinat - + Z coordinate of next point Nästa punkts Z koordinat - + Enter point Ange punkt - + Enter a new point with the given coordinates Ange en ny punkt med de givna koordinaterna - + Length Längd - + Angle Vinkel - + Length of current segment Längd på aktuellt segment - + Angle of current segment Vinkel på aktuellt segment - + Radius Radie - + Radius of Circle Cirkelradie - + If checked, command will not finish until you press the command button again Om markerat, så avslutas inte kommandot förrän du trycker på kommandoknappen igen - + If checked, an OCC-style offset will be performed instead of the classic offset Om detta är markerat så kommer en offset i OCC-stil utföras istället för klassisk offset - + &OCC-style offset &OCC-stil offset - + Sides Sidor - + Number of sides Antal sidor - + Offset Offset - + Auto Automatisk - + Text string to draw Text att rita - + String Sträng - + Height of text Texthöjd - + Height Höjd - + Intercharacter spacing Avstånd mellan tecken - + Tracking Spårning - + Full path to font file: Fullständig sökväg till teckensnittsfil: - + Open a FileChooser for font file Öppna fildialog för teckensnittsfil @@ -2501,132 +2686,132 @@ This value is the maximum segment length. Linje - + DWire DWire - + Circle Cirkel - + Center X X center - + Arc Cirkelbåge - + Point Punkt - + Label Etikett - + Distance Distans - + Trim Trimma - + Pick Object Välj objekt - + Edit Redigera - + Global X Globalt X - + Global Y Globalt Y - + Global Z Globalt Z - + Local X Lokalt X - + Local Y Lokalt Y - + Local Z Lokalt Z - + Invalid Size value. Using 200.0. Ogiltigt värde. Använder 200,0 istället. - + Invalid Tracking value. Using 0. Ogiltigt värde för spårning. Använder 0 som värde. - + Please enter a text string. Vänligen ange en text. - + Select a Font file Välj en typsnittsfil - + Please enter a font file. Ange en teckensnittsfil. - + Autogroup: Gruppera automatiskt: - + Faces Ytor - + Remove Ta bort - + Add Lägg till - + Facebinder elements Ytbindarelement @@ -2641,7 +2826,7 @@ This value is the maximum segment length. Bezierkurva - + Copy Kopiera @@ -2666,17 +2851,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. - + Relative Relativ - + Continue Fortsätt - + Close Stäng @@ -2721,7 +2906,7 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Begränsa Z - + Select edge Välj kant @@ -2736,7 +2921,7 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Längdläge - + Wipe Rensa @@ -2751,67 +2936,67 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Cykla fästpunkter - + Check this to lock the current angle Kryssa i för att låsa den aktuella vinkeln - + Coordinates relative to last point or absolute Koordinater relativa till den sista punkten eller absoluta - + Filled Fylld - + Finish Gör klart - + Finishes the current drawing or editing operation Avslutar aktuell ritnings- eller redigeringsåtgärd - + &Undo (CTRL+Z) &Ångra (CTRL+Z) - + Undo the last segment Ångra det sista segmentet - + Finishes and closes the current line Avslutar och sluter den aktuella linjen - + Wipes the existing segments of this line and starts again from the last point Tar bort de befintliga segmenten från denna linje och startar om från den sista punkten - + Set WP Ange arbetsplan - + Reorients the working plane on the last segment Omriktar arbetsplanet på det sista segmentet - + Selects an existing edge to be measured by this dimension Väljer en befintlig kant som ska mätas med denna dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Om detta är ikryssat kommer objekt kopieras istället för flyttas. Använd Draft-inställningen "Globalt kopieringsläge" för att behålla detta läge för nästa kommandon @@ -2821,12 +3006,12 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Underelementläge - + Modify subelements Modifiera underelement - + If checked, subelements will be modified instead of entire objects Om detta är ikryssat kommer underelement modifieras istället för hela objekt @@ -2851,12 +3036,12 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Sida - + Current working plane Nuvarande arbetsplan - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Om detta är ikryssat kommer objektet att framställas som fyllt, annars som trådmodell. Inte tillgängligt om Draft-inställningen "Använd Part-primitiver" är aktiverat @@ -2876,32 +3061,32 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Toggle near snap on/off - + Create text Skapa text - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y - Center Y + Centrera Y - + Center Z - Center Z + Centrera Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2910,6 +3095,11 @@ För att tillåta FreeCAD att ladda ned dessa bibliotek, svara Ja. Wire Tråd + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_tr.qm b/src/Mod/Draft/Resources/translations/Draft_tr.qm index b74b6ccd58..c4492d77e9 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 77bd3afe71..7ab4e25c4e 100644 --- a/src/Mod/Draft/Resources/translations/Draft_tr.ts +++ b/src/Mod/Draft/Resources/translations/Draft_tr.ts @@ -526,8 +526,8 @@ Negatif değerler kopyaların negatif yönde üretilmesine neden olacaktır. Number of elements in the array in the specified direction, including a copy of the original object. The number must be at least 1 in each direction. - Number of elements in the array in the specified direction, including a copy of the original object. -The number must be at least 1 in each direction. + Orijinal nesnenin bir kopyası dahil, dizide belirtilen yöndeki öğelerin sayısı. +Sayı her yönde en az 1 olmalıdır. @@ -540,7 +540,7 @@ The number must be at least 1 in each direction. Polar array - Dairesel çoğaltma + Kutupsal dizi @@ -621,8 +621,8 @@ The maximum absolute value is 360 degrees. Number of elements in the array, including a copy of the original object. It must be at least 2. - Number of elements in the array, including a copy of the original object. -It must be at least 2. + Orijinal nesnenin bir kopyası dahil olmak üzere dizideki öğelerin sayısı. +En az 2 olmalıdır. @@ -872,13 +872,223 @@ value by using the [ and ] keys while drawing Grid extension - Grid extension + Izgara uzantısı lines çizgiler + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Çizgi Kalınlığı + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Noktalı + + + + Circle + Çember + + + + Arrow + Ok İşareti + + + + Tick + işaretleme + + + + Tick-2 + Tik-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Birimleri göster + + + + Line color + Çizgi rengi + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + Metinler ve boyutlar için kullanılacak yazı tipi + + + + The line style + The line style + + + + Solid + Katı + + + + Dashed + Kesik çizgili + + + + Dotted + Noktalı + + + + DashDot + Çizgi nokta + + + + Text size + Text size + + + + Unit override + Birim geçersiz kılma + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Şeffaflık + + + + Display mode + Ekran kipi + + + + Text font + Text font + + + + Arrow size + Ok boyu + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Tel Kafes görünümü + + + + Shaded + Gölgeli + + + + Points + Noktalar + + + + Draw style + Çizim biçimi + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + piksel + + + + Apply to selected objects + Seçili nesnelere uygulayın + Gui::Dialog::DlgSettingsDraft @@ -1489,7 +1699,7 @@ Bu değer, "Arial", varsayılan stiller "sans", "serif" veya "mono", veya aile a DWG conversion - % dönüşüm + DWG dönüşümü @@ -2218,7 +2428,7 @@ One unit in the SVG file will translate as one millimeter. All white lines will appear in black in the SVG for better readability against white backgrounds - All white lines will appear in black in the SVG for better readability against white backgrounds + Daha iyi okunabilirlik için beyaz arka planlara karşı SVG'de tüm beyaz çizgiler siyah olarak görünecektir @@ -2242,7 +2452,7 @@ This value is the maximum segment length. Override unit - Override unit + Geçersiz kılma birimi @@ -2257,12 +2467,12 @@ This value is the maximum segment length. Hatch Pattern default size - Hatch Pattern default size + Tarama deseni varsayılan boyutu The default size of hatch patterns - The default size of hatch patterns + Tarama desenlerinin varsayılan boyutu @@ -2294,202 +2504,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Taslak komut çubuğu - + Toggle construction mode İnşa Modunu Değiştir - - Current line color - Geçerli çizgi rengi - - - - Current face color - Geçerli çizgi rengi - - - - Current line width - Geçerli çizgi rengi - - - - Current font size - Geçerli yazı tipi boyutu - - - - Apply to selected objects - Seçili nesnelere uygulayın - - - + Autogroup off Autogroup kapalı - + active command: Etkin söz dizisi: - + None Hiçbiri - + Active Draft command Aktif Çizim komutu - + X coordinate of next point Bir sonraki noktanın X koordinatı - + X X - + Y Y - + Z Z - + Y coordinate of next point Bir sonraki noktanın Y koordinatı - + Z coordinate of next point Bir sonraki noktanın Z koordinatı - + Enter point Nokta gir - + Enter a new point with the given coordinates Yeni bir noktası verilen koordinatlarla girin - + Length Uzunluk - + Angle Açı - + Length of current segment Geçerli kesimin uzunluğu - + Angle of current segment Geçerli kesimin uzunluğu - + Radius Yarıçap - + Radius of Circle Çemberin Yarıçapı - + If checked, command will not finish until you press the command button again Eğer işaretliyse, komut tekrar komut tuşuna basana kadar bitmeyecek - + If checked, an OCC-style offset will be performed instead of the classic offset Bu onay kutusu seçiliyse, klasik kaydırmanın yerine OCC-tarzı kaydırma gerçekleştirilecek - + &OCC-style offset &amp; OCC tarzı ofset - + Sides Kenarlar - + Number of sides Yüzlerin sayısı - + Offset Uzaklaşma - + Auto Otomatik - + Text string to draw Çizmek için metin dizesi - + String Dize - + Height of text Satır yüksekliği - + Height Yükseklik - + Intercharacter spacing Arası karakter aralığı - + Tracking İzleme - + Full path to font file: Yazı tipi dosyasının tam yolu: - + Open a FileChooser for font file Bir FileChooser için yazı tipi dosyası aç @@ -2499,134 +2684,134 @@ This value is the maximum segment length. Çizgi - + DWire DWire - + Circle Çember - + Center X Merkez X - + Arc Yay - + Point Nokta - + Label Etiket - + Distance Uzaklık - + Trim Kırp - + Pick Object Nesne Seç - + Edit Düzenle - + Global X Evrensel X - + Global Y Evrensel Y - + Global Z Evrensel Z - + Local X Yerel X - + Local Y Yerel Y - + Local Z Yerel Z - + Invalid Size value. Using 200.0. Geçersiz boyut değeri. 200.0 kullanarak. - + Invalid Tracking value. Using 0. Geçersiz izleme değeri. 0 kullanarak. - + Please enter a text string. Lütfen geçerli bir Url dizesi girin. - + Select a Font file Font dosyası seç - + Please enter a font file. Lütfen geçerli bir başlık giriniz. - + Autogroup: Autogroup: - + Faces Yüzler - + Remove Kaldır - + Add Ekle - + Facebinder elements - Yüz kaplama elemanları + Yüzey bağlama elemanları @@ -2639,7 +2824,7 @@ This value is the maximum segment length. Çan eğrisi - + Copy Kopyala @@ -2663,17 +2848,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabını verin. - + Relative Göreceli - + Continue Devam - + Close Kapat @@ -2718,7 +2903,7 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Kısıtla Z - + Select edge Kenarı seç @@ -2733,7 +2918,7 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Uzunluk modu - + Wipe Temizle @@ -2748,67 +2933,67 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Döngüsel yakalama nesnesi - + Check this to lock the current angle Geçerli açıyı kilitlemek için bunu kontrol edin - + Coordinates relative to last point or absolute Son noktaya veya Kesin'e (mutlak'a) göre Koordinatlar - + Filled Dolu - + Finish Bitir - + Finishes the current drawing or editing operation Geçerli çizim veya düzenleme işlemini sonlandırır - + &Undo (CTRL+Z) Geri Al (Ctrl+Z) - + Undo the last segment Son segmenti geri al - + Finishes and closes the current line Geçerli çizgiyi kapatır ve sonlandırır - + Wipes the existing segments of this line and starts again from the last point Bu çizginin mevcut bölümlerini siler ve son noktadan tekrar başlar - + Set WP WP ayarla - + Reorients the working plane on the last segment Son segmentteki çalışma düzlemini yeniden yönlendirir - + Selects an existing edge to be measured by this dimension Bu ebat tarafından ölçülecek mevcut bir kenar seçer - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands İşaretlenirse, taşınacaklar yerine nesneler kopyalanacaktır. Tercihler -> Taslak -> Evrensel Kopyalama modu için bu modu sonraki komutlarda sürdür @@ -2818,12 +3003,12 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın AltSeçim modu - + Modify subelements AltElemanları değiştir - + If checked, subelements will be modified instead of entire objects İşaretlenirse, nesnelerin tamamı yerine alt öğeler değiştirilir @@ -2848,12 +3033,12 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Yan - + Current working plane Mevcut çalışma düzlemi - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Nesnenin dolu gibi görünüp görünmediğini kontrol edin, aksi takdirde tel kafes şeklinde görünecektir. Taslak tercih seçeneği 'Parça Temellerini Kullan' etkinleştirilmişse kullanılamaz @@ -2873,32 +3058,32 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Toggle near snap on/off - + Create text Yazı oluştur - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Y merkezi - + Center Z Z merkezi - + Offset distance Öteleme mesafesi - + Trim distance Kırpma mesafesi @@ -2907,6 +3092,11 @@ Bu kütüphaneleri indirmek için FreeCAD'i etkinleştirmek için Evet cevabın Wire Yay + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_uk.qm b/src/Mod/Draft/Resources/translations/Draft_uk.qm index 0cf0f1f8a3..ab7a0506f0 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 3a8c9cba3d..f93724445d 100644 --- a/src/Mod/Draft/Resources/translations/Draft_uk.ts +++ b/src/Mod/Draft/Resources/translations/Draft_uk.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines ліній + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Ширина лінії + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Крапка + + + + Circle + Коло + + + + Arrow + Стрілка + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Колір лінії + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Суцільне тіло + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + Режим відображення + + + + Text font + Text font + + + + Arrow size + Розмір стрілки + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Каркас + + + + Shaded + Затінений + + + + Points + Точки + + + + Draw style + Стиль малювання + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + пікс. + + + + Apply to selected objects + Застосувати до вибраних об'єктів + Gui::Dialog::DlgSettingsDraft @@ -2296,202 +2506,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Панель команд креслення - + Toggle construction mode Змінити режим конструювання - - Current line color - Колір поточної лінії - - - - Current face color - Колір поточної поверхні - - - - Current line width - Ширина поточної лінії - - - - Current font size - Розмір поточного шрифта - - - - Apply to selected objects - Застосувати до вибраних об'єктів - - - + Autogroup off Автогрупування вимкнено - + active command: активна команда: - + None Немає - + Active Draft command Активна команда креслення - + X coordinate of next point X координати наступної точки - + X X - + Y Y - + Z Z - + Y coordinate of next point Y координати наступної точки - + Z coordinate of next point Z координати наступної точки - + Enter point Введіть точку - + Enter a new point with the given coordinates Задати нову точку з вказаними координатами - + Length Довжина - + Angle Кут - + Length of current segment Довжина поточного сегменту - + Angle of current segment Кут поточного сегменту - + Radius Радіус - + Radius of Circle Радіус кола - + If checked, command will not finish until you press the command button again If checked, command will not finish until you press the command button again - + If checked, an OCC-style offset will be performed instead of the classic offset If checked, an OCC-style offset will be performed instead of the classic offset - + &OCC-style offset Зміщення у &OCC-стилі - + Sides Сторони - + Number of sides Кількість сторін - + Offset Зміщення - + Auto Автоматично - + Text string to draw Text string to draw - + String Рядок - + Height of text Висота тексту - + Height Висота - + Intercharacter spacing Міжсимвольна відстань - + Tracking Відстеження - + Full path to font file: Повний шлях до файлу шрифта: - + Open a FileChooser for font file Open a FileChooser for font file @@ -2501,132 +2686,132 @@ This value is the maximum segment length. Лінія - + DWire DWire - + Circle Коло - + Center X Центр X - + Arc Дуга - + Point Точка - + Label Позначка - + Distance Відстань - + Trim Обрізати - + Pick Object Вкажіть об'єкт - + Edit Правка - + Global X Глобальна X - + Global Y Глобальна Y - + Global Z Глобальна Z - + Local X Локальна X - + Local Y Локальна Y - + Local Z Локальна Z - + Invalid Size value. Using 200.0. Неприпустиме значення розміру. Буде використано 200.0. - + Invalid Tracking value. Using 0. Invalid Tracking value. Using 0. - + Please enter a text string. Введіть рядок тексту, будь ласка. - + Select a Font file Обрати файл шрифту - + Please enter a font file. Введіть файл шрифта, будь ласка. - + Autogroup: Autogroup: - + Faces Грані - + Remove Видалити - + Add Додати - + Facebinder elements Facebinder elements @@ -2641,7 +2826,7 @@ This value is the maximum segment length. Крива Безьє - + Copy Копіювати @@ -2665,17 +2850,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer To enabled FreeCAD to download these libraries, answer Yes. - + Relative Relative - + Continue Продовжити - + Close Закрити @@ -2720,7 +2905,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Restrict Z - + Select edge Оберіть ребро @@ -2735,7 +2920,7 @@ To enabled FreeCAD to download these libraries, answer Yes. Length mode - + Wipe Витерти @@ -2750,67 +2935,67 @@ To enabled FreeCAD to download these libraries, answer Yes. Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish Завершити - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2820,12 +3005,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2850,12 +3035,12 @@ To enabled FreeCAD to download these libraries, answer Yes. Сторона - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2875,32 +3060,32 @@ To enabled FreeCAD to download these libraries, answer Yes. Toggle near snap on/off - + Create text Створення тексту - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2909,6 +3094,11 @@ To enabled FreeCAD to download these libraries, answer Yes. Wire Каркас + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_val-ES.qm b/src/Mod/Draft/Resources/translations/Draft_val-ES.qm index be62e6310f..9471a5b088 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 5df6321703..d646f771fe 100644 --- a/src/Mod/Draft/Resources/translations/Draft_val-ES.ts +++ b/src/Mod/Draft/Resources/translations/Draft_val-ES.ts @@ -868,6 +868,216 @@ valor mitjançant les tecles [ i ] mentre es dibuixa lines línies + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Amplària de línia + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Punt + + + + Circle + Cercle + + + + Arrow + Fletxa + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Mostra la unitat + + + + Line color + Color de línia + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + El tipus de lletra que s'utilitzarà per a textos i dimensions + + + + The line style + The line style + + + + Solid + Sòlid + + + + Dashed + Discontínua + + + + Dotted + Puntejada + + + + DashDot + Guió punt + + + + Text size + Text size + + + + Unit override + Substitució de la unitat + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparència + + + + Display mode + Mode de visualització + + + + Text font + Text font + + + + Arrow size + Mida de la fletxa + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Filferro + + + + Shaded + Ombrejat + + + + Points + Punts + + + + Draw style + Estil de dibuix + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Aplica als objectes seleccionats + Gui::Dialog::DlgSettingsDraft @@ -2265,202 +2475,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Barra d'ordres de l'esborrany - + Toggle construction mode Activa/desactiva el mode de construcció - - Current line color - Color de la línia actual - - - - Current face color - Color de la cara actual - - - - Current line width - Amplària de la línia actual - - - - Current font size - Mida del tipus de lletra actual - - - - Apply to selected objects - Aplica als objectes seleccionats - - - + Autogroup off Desactiva Auto-agrupar - + active command: ordre activa: - + None Cap - + Active Draft command Ordre d'esborrany activa - + X coordinate of next point Coordenada X del punt següent - + X X - + Y Y - + Z Z - + Y coordinate of next point Coordenada Y del punt següent - + Z coordinate of next point Coordenada Z del punt següent - + Enter point Introduïu un punt - + Enter a new point with the given coordinates Introduïu un nou punt amb les coordenades donades - + Length Longitud - + Angle Angle - + Length of current segment Llargària del segment actual - + Angle of current segment Angle del segment actual - + Radius Radi - + Radius of Circle Radi del cercle - + If checked, command will not finish until you press the command button again Si està marcada, l'ordre no acabarà fins que premeu el botó d'ordre una altra vegada - + If checked, an OCC-style offset will be performed instead of the classic offset Si està marcada, es realitzarà una separació de tipus OCC en lloc de la separació clàssica - + &OCC-style offset Separació &OCC-style - + Sides Costats - + Number of sides Nombre de costats - + Offset Separació - + Auto Auto - + Text string to draw Text string to draw - + String Cadena - + Height of text Alçària del text - + Height Alçària - + Intercharacter spacing Espaiat entre caràcters - + Tracking Seguiment - + Full path to font file: Ruta d'accés completa a l'arxiu de tipus de lletra: - + Open a FileChooser for font file Obri un selector de fitxers per a l'arxiu de tipus de lletra @@ -2470,132 +2655,132 @@ This value is the maximum segment length. Línia - + DWire DWire - + Circle Cercle - + Center X Centre X - + Arc Arc - + Point Punt - + Label Etiqueta - + Distance Distance - + Trim Retalla - + Pick Object Tria un objecte - + Edit Edita - + Global X X global - + Global Y Y global - + Global Z Z global - + Local X X Local - + Local Y Y Local - + Local Z Z Local - + Invalid Size value. Using 200.0. Valor de mida no vàlid. S'està utilitzant 200.0. - + Invalid Tracking value. Using 0. Valor de seguiment no és vàlid. S'està utilitzant 0. - + Please enter a text string. Introduïu una cadena de text. - + Select a Font file Seleccioneu un fitxer de tipus de lletra - + Please enter a font file. Introduïu un fitxer de tipus de lletra. - + Autogroup: Agrupa automàticament: - + Faces Cares - + Remove Elimina - + Add Afegir - + Facebinder elements Elements de Galeria de cares @@ -2610,7 +2795,7 @@ This value is the maximum segment length. Corba Bézier - + Copy Copia @@ -2633,17 +2818,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí. - + Relative Relatiu - + Continue Continua - + Close Tanca @@ -2688,7 +2873,7 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Restringeix Z - + Select edge Selecciona l'aresta @@ -2703,7 +2888,7 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Mode de Llargària - + Wipe Neteja @@ -2718,67 +2903,67 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Canvia cíclicament l'ajust d'un objecte - + Check this to lock the current angle Marqueu aquesta casella per bloquejar l'angle actual - + Coordinates relative to last point or absolute Coordenades relatives a l'últim punt o absolutes - + Filled Emplenat - + Finish Finalitza - + Finishes the current drawing or editing operation Acaba el dibuix actual o l'operació d'edició - + &Undo (CTRL+Z) &Desfés (CTRL+Z) - + Undo the last segment Desfés l'últim segment - + Finishes and closes the current line Finalitza i tanca la línia actual - + Wipes the existing segments of this line and starts again from the last point Esborra els segments existents d'aquesta línia i comença de nou des de l'últim punt - + Set WP Configura WP - + Reorients the working plane on the last segment Reorienta el pla de treball de l'últim segment - + Selects an existing edge to be measured by this dimension Selecciona una aresta existent per a mesurar-la amb aquesta dimensió - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Si està activada, els objectes es copiaran en lloc de moure's. Preferències->Esborrany->Mode de còpia global per a mantenir aquest mode en les ordres següents @@ -2788,12 +2973,12 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Mode subelement - + Modify subelements Modifica els subelements - + If checked, subelements will be modified instead of entire objects Si està marcat, els subelements es modificaran en lloc dels objectes sencers @@ -2818,12 +3003,12 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Costat - + Current working plane Pla de treball actual - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Marqueu això si l'objecte ha d'aparéixer com ple, en cas contrari apareixerà com a filferro. No està disponible si l'opció de preferència de Draft «Usa les primitives de la peça» està habilitada @@ -2843,32 +3028,32 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Activa/desactiva el proper ajust - + Create text Crea un text - + Press this button to create the text object, or finish your text with two blank lines Premeu aquest botó per a crear l’objecte de text o finalitzeu el vostre text amb dues línies en blanc - + Center Y Centra Y - + Center Z Centra Z - + Offset distance Distància de separació - + Trim distance Distància de retall @@ -2877,6 +3062,11 @@ Per a permetre que FreeCAD descarregue aquestes llibreries responeu Sí.Wire Filferro + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_vi.qm b/src/Mod/Draft/Resources/translations/Draft_vi.qm index 246a200147..90be52ac1d 100644 Binary files a/src/Mod/Draft/Resources/translations/Draft_vi.qm and b/src/Mod/Draft/Resources/translations/Draft_vi.qm differ diff --git a/src/Mod/Draft/Resources/translations/Draft_vi.ts b/src/Mod/Draft/Resources/translations/Draft_vi.ts index 74714fdab8..6134a6a4cc 100644 --- a/src/Mod/Draft/Resources/translations/Draft_vi.ts +++ b/src/Mod/Draft/Resources/translations/Draft_vi.ts @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines đường thẳng + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + Chiều rộng đường vẽ + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + Chấm + + + + Circle + Vòng tròn + + + + Arrow + Mũi tên + + + + Tick + Đánh dấu + + + + Tick-2 + Đánh dấu-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + Màu đường vẽ + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + The font to use for texts and dimensions + + + + The line style + The line style + + + + Solid + Chất rắn + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + Nét chấm + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Tính trong suốt + + + + Display mode + Chế độ Hiển thị + + + + Text font + Text font + + + + Arrow size + Kích cỡ mũi tên + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + Khung dây + + + + Shaded + Bóng mờ + + + + Points + Điểm + + + + Draw style + Kiểu vẽ + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + Áp dụng cho các đối tượng được chọn + Gui::Dialog::DlgSettingsDraft @@ -2294,202 +2504,177 @@ This value is the maximum segment length. draft - + Draft Command Bar Thanh lệnh bản sơ họa - + Toggle construction mode Bật/tắt chế độ xây dựng - - Current line color - Màu đường vẽ hiện tại - - - - Current face color - Màu mặt hiện tại - - - - Current line width - Bề rộng đường vẽ hiện tại - - - - Current font size - Kích thước phông chữ hiện tại - - - - Apply to selected objects - Áp dụng cho các đối tượng được chọn - - - + Autogroup off Tự động tắt nhóm - + active command: lệnh hoạt động: - + None Không - + Active Draft command Lệnh nháp hoạt động - + X coordinate of next point Tọa độ X của điểm tiếp theo - + X X - + Y Y - + Z Z - + Y coordinate of next point Tọa độ Y của điểm tiếp theo - + Z coordinate of next point Tọa độ Z của điểm tiếp theo - + Enter point Nhập điểm - + Enter a new point with the given coordinates Nhập một điểm mới với tọa độ đã cho - + Length Chiều dài - + Angle Góc - + Length of current segment Độ dài của phân đoạn hiện tại - + Angle of current segment Góc của phân đoạn hiện tại - + Radius Bán kính - + Radius of Circle Bán kính của đường tròn - + If checked, command will not finish until you press the command button again Nếu được chọn, lệnh sẽ không kết thúc cho đến khi bạn nhấn nút lệnh một lần nữa - + If checked, an OCC-style offset will be performed instead of the classic offset Nếu được chọn, một offset kiểu OCC sẽ được thực hiện thay vì offset cổ điển - + &OCC-style offset &Offset kiểu OCC - + Sides Các bên - + Number of sides Số mặt bên - + Offset Offset - + Auto Tự động - + Text string to draw Chuỗi văn bản để vẽ - + String Chuỗi - + Height of text Chiều cao phông chữ - + Height Chiều cao - + Intercharacter spacing Khoảng cách giữa các ký tự - + Tracking Theo dõi - + Full path to font file: Đường dẫn đầy đủ đến tệp phông chữ: - + Open a FileChooser for font file Mở một tệp phông chữ @@ -2499,132 +2684,132 @@ This value is the maximum segment length. Đường thẳng - + DWire DWire - + Circle Vòng tròn - + Center X Tâm X - + Arc Vòng cung - + Point Điểm - + Label Nhãn - + Distance Distance - + Trim Cắt bỏ - + Pick Object Chọn đối tượng - + Edit Chỉnh sửa - + Global X Tổng thể X - + Global Y Tổng thể Y - + Global Z Tổng thể Z - + Local X Cục bộ X - + Local Y Cục bộ Y - + Local Z Cục bộ Z - + Invalid Size value. Using 200.0. Giá trị Kích thước không hợp lệ. Sử dụng 200.0. - + Invalid Tracking value. Using 0. Giá trị theo dõi không hợp lệ. Sử dụng 0. - + Please enter a text string. Vui lòng nhập một chuỗi văn bản. - + Select a Font file Chọn một tệp Phông chữ - + Please enter a font file. Vui lòng nhập một tệp phông chữ. - + Autogroup: Nhóm tự động: - + Faces Bề mặt - + Remove Xóa bỏ - + Add Thêm mới - + Facebinder elements Các thành phần của Facebinder @@ -2639,7 +2824,7 @@ This value is the maximum segment length. Đường BezCurve - + Copy Sao chép @@ -2663,17 +2848,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Để cho phép FreeCAD tải xuống các thư viện này, hãy trả lời Có. - + Relative Tương đối - + Continue Tiếp tục - + Close Đóng @@ -2718,7 +2903,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Giới hạn Z - + Select edge Chọn cạnh @@ -2733,7 +2918,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Chế độ dài - + Wipe Xóa dữ liệu @@ -2748,67 +2933,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Cycle snap object - + Check this to lock the current angle Kiểm tra điều này để khóa góc hiện tại - + Coordinates relative to last point or absolute Tọa độ tương đối hoặc tuyệt đối so với điểm cuối cùng - + Filled Đã lấp đầy - + Finish Hoàn tất - + Finishes the current drawing or editing operation Hoàn thành bản vẽ hoặc chỉnh sửa thao tác - + &Undo (CTRL+Z) &Hoàn tác (CTRL + Z) - + Undo the last segment Hoàn tác đoạn cuối cùng - + Finishes and closes the current line Kết thúc và làm kín đường vẽ hiện tại - + Wipes the existing segments of this line and starts again from the last point Xóa các phân đoạn hiện tại của đường vẽ này và bắt đầu lại từ điểm cuối cùng - + Set WP Thiết lập WP - + Reorients the working plane on the last segment Định hướng lại mặt phẳng làm việc trên đoạn cuối cùng - + Selects an existing edge to be measured by this dimension Chọn cạnh hiện tại được đo theo kích thước này - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands Nếu được chọn, các đối tượng sẽ được sao chép thay vì di chuyển. Tùy thích -> Nháp -> Sao chép toàn bộ để giữ chế độ này cho các lệnh tiếp theo @@ -2818,12 +3003,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Subelement mode - + Modify subelements Sửa các phần tử con - + If checked, subelements will be modified instead of entire objects Nếu chọn, các phần tử con sẽ được sửa thay vì toàn bộ các đối tượng @@ -2848,12 +3033,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Cạnh - + Current working plane Mặt phẳng làm việc hiện tại - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2873,32 +3058,32 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Toggle near snap on/off - + Create text Tạo văn bản - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2907,6 +3092,11 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wire Dây + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm b/src/Mod/Draft/Resources/translations/Draft_zh-CN.qm index 3678c8adbc..8a168be115 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 b0cdc97082..8a763e30a8 100644 --- a/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts +++ b/src/Mod/Draft/Resources/translations/Draft_zh-CN.ts @@ -877,6 +877,216 @@ value by using the [ and ] keys while drawing lines 线 + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + 线宽 + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + + + + + Circle + + + + + Arrow + 箭头 + + + + Tick + 刻度 + + + + Tick-2 + 刻度-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + 显示单位 + + + + Line color + 线条颜色 + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + 文本和尺寸使用的字体 + + + + The line style + The line style + + + + Solid + 实体 + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + 点划线 + + + + Text size + Text size + + + + Unit override + 覆盖单位 + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + 透明度 + + + + Display mode + 显示模式 + + + + Text font + Text font + + + + Arrow size + 箭头大小 + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + 线框 + + + + Shaded + 着色 + + + + Points + + + + + Draw style + 绘制样式 + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + 应用于选中对象 + Gui::Dialog::DlgSettingsDraft @@ -2291,202 +2501,177 @@ This value is the maximum segment length. draft - + Draft Command Bar 底图命令栏 - + Toggle construction mode 切换辅助线模式 - - Current line color - 当前线条颜色 - - - - Current face color - 当前面颜色 - - - - Current line width - 当前线宽 - - - - Current font size - 当前字号 - - - - Apply to selected objects - 应用于选中对象 - - - + Autogroup off Autogroup 关闭 - + active command: 当前命令: - + None - + Active Draft command 当前绘图命令 - + X coordinate of next point 下一个点的X坐标 - + X X - + Y Y - + Z Z - + Y coordinate of next point 下一个点的Y坐标 - + Z coordinate of next point 下一个点的Z坐标 - + Enter point 输入点 - + Enter a new point with the given coordinates 以给定座标方式新增点 - + Length 长度 - + Angle 角度 - + Length of current segment 此线段之长度 - + Angle of current segment 此线段之角度 - + Radius 半径 - + Radius of Circle 圆半径 - + If checked, command will not finish until you press the command button again 选中则命令连续运行直至再次按下命令按钮 - + If checked, an OCC-style offset will be performed instead of the classic offset 若选中则使用OCC风格偏移而非经典偏移 - + &OCC-style offset &OCC风格偏移 - + Sides 侧面 - + Number of sides 边数 - + Offset 偏移 - + Auto 自动 - + Text string to draw 要绘制的文本字符串 - + String 字符串 - + Height of text 字高 - + Height 高度 - + Intercharacter spacing 文字间距 - + Tracking 追踪 - + Full path to font file: 字体文件的完整路径: - + Open a FileChooser for font file 选取字体文档 @@ -2496,132 +2681,132 @@ This value is the maximum segment length. 线 - + DWire 草图线 - + Circle - + Center X 圆心 X - + Arc 圆弧 - + Point - + Label 标签 - + Distance 距离 - + Trim 修剪 - + Pick Object 选择对象 - + Edit 编辑 - + Global X 全局 X - + Global Y 全局 Y - + Global Z 全局 Z - + Local X 区域 X - + Local Y 区域 Y - + Local Z 区域 Z - + Invalid Size value. Using 200.0. 无效值。使用200.0。 - + Invalid Tracking value. Using 0. 无效的追踪值。使用0。 - + Please enter a text string. 请输入一段文字。 - + Select a Font file 选择一个字体文件 - + Please enter a font file. 请输入字体文件。 - + Autogroup: 自动群组: - + Faces - + Remove 删除 - + Add 添加 - + Facebinder elements Facebinder 构件 @@ -2636,7 +2821,7 @@ This value is the maximum segment length. 贝兹曲线 - + Copy 复制 @@ -2658,17 +2843,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 的说明启动FreeCAD来下载这些函数库,并回答确定。 - + Relative 相对 - + Continue 继续 - + Close 关闭 @@ -2713,7 +2898,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 限制z轴 - + Select edge 选取边 @@ -2728,7 +2913,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 长度模式 - + Wipe 清除 @@ -2743,67 +2928,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 画圈捕捉对象 - + Check this to lock the current angle 勾选以锁定当前角度 - + Coordinates relative to last point or absolute 相对于最后一个点或绝对值的坐标 - + Filled 填充 - + Finish 完成 - + Finishes the current drawing or editing operation 完成当前绘图或编辑操作 - + &Undo (CTRL+Z) 撤消 (&U, Ctrl + Z) - + Undo the last segment 撤消最近一次面创建 - + Finishes and closes the current line 处理后关闭当前线 - + Wipes the existing segments of this line and starts again from the last point 清除线的已有部分并从上一点重新开始 - + Set WP 设置WP - + Reorients the working plane on the last segment 重定向最后一段(或几段) 的工作平面 - + Selects an existing edge to be measured by this dimension 选取一个将由此尺寸来测量的现有边 - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands 如果选中, 对象将被复制而不是移动。偏好设定-> 草图-> 全局下的复制模式, 将在后续的操作中继续保留此模式 @@ -2813,12 +2998,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 子元素模式 - + Modify subelements 修改子元素 - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2843,12 +3028,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 侧面 - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2868,32 +3053,32 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 启用/禁用自动吸附 - + Create text 创建文本 - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y 中心 Y - + Center Z 中心 Z - + Offset distance 偏移距离 - + Trim distance 修剪距离 @@ -2902,6 +3087,11 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wire 线框 + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm b/src/Mod/Draft/Resources/translations/Draft_zh-TW.qm index cb681d0dc5..df846d3a32 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 6e587e8ef1..29dca12f11 100644 --- a/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts +++ b/src/Mod/Draft/Resources/translations/Draft_zh-TW.ts @@ -6,22 +6,22 @@ Annotation Styles Editor - Annotation Styles Editor + 註解樣式編輯 Style name - Style name + 樣式名稱 Add new... - Add new... + 新增... Renames the selected style - Renames the selected style + 重新命名選定的樣式 @@ -31,7 +31,7 @@ Deletes the selected style - Deletes the selected style + 刪除選定的樣式 @@ -51,7 +51,7 @@ Line spacing - Line spacing + 行距 @@ -61,7 +61,7 @@ The font to use for texts and dimensions - The font to use for texts and dimensions + 視窗和對話方塊要使用的字體 @@ -879,6 +879,216 @@ value by using the [ and ] keys while drawing lines + + + Style settings + Style settings + + + + Text color + Text color + + + + Shape color + Shape color + + + + Line width + 線寬 + + + + The color of faces + The color of faces + + + + The type of dimension arrows + The type of dimension arrows + + + + Dot + + + + + Circle + + + + + Arrow + 箭頭 + + + + Tick + Tick + + + + Tick-2 + Tick-2 + + + + The color of texts and dimension texts + The color of texts and dimension texts + + + + The size of texts and dimension texts + The size of texts and dimension texts + + + + Show unit + Show unit + + + + Line color + 線條顏色 + + + + The size of dimension arrows + The size of dimension arrows + + + + The font to use for texts and dimensions + 視窗和對話方塊要使用的字體 + + + + The line style + The line style + + + + Solid + 實體 + + + + Dashed + Dashed + + + + Dotted + Dotted + + + + DashDot + DashDot + + + + Text size + Text size + + + + Unit override + Unit override + + + + If the unit siffix is shown on dimension texts or not + If the unit siffix is shown on dimension texts or not + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + The transparency of faces + The transparency of faces + + + + % + % + + + + Transparency + Transparency + + + + Display mode + 顯示模式 + + + + Text font + Text font + + + + Arrow size + 箭頭尺寸 + + + + The display mode for faces + The display mode for faces + + + + Flat Lines + Flat Lines + + + + Wireframe + 線框 + + + + Shaded + 上色 + + + + Points + + + + + Draw style + 繪製樣式 + + + + The color of lines + The color of lines + + + + Arrow style + Arrow style + + + + px + px + + + + Apply to selected objects + 應用於所選物件 + Gui::Dialog::DlgSettingsDraft @@ -2293,202 +2503,177 @@ This value is the maximum segment length. draft - + Draft Command Bar 底圖指令列 - + Toggle construction mode Toggle construction mode - - Current line color - Current line color - - - - Current face color - Current face color - - - - Current line width - Current line width - - - - Current font size - Current font size - - - - Apply to selected objects - 應用於所選物件 - - - + Autogroup off Autogroup off - + active command: 啟動指令: - + None - + Active Draft command 啟動底圖指令 - + X coordinate of next point 下一個點的X座標 - + X X - + Y Ÿ - + Z Z - + Y coordinate of next point 下一個點的Y座標 - + Z coordinate of next point 下一個點的Z座標 - + Enter point 新增點 - + Enter a new point with the given coordinates 以給定座標方式新增點 - + Length 間距 - + Angle 角度 - + Length of current segment 此線段之長度 - + Angle of current segment 此線段之角度 - + Radius 半徑 - + Radius of Circle 圓半徑 - + If checked, command will not finish until you press the command button again 如果選取,命令將不會完成直到你再次按這個命令按鈕 - + If checked, an OCC-style offset will be performed instead of the classic offset 若勾選,會以OCC型式取代基本印刷型式 - + &OCC-style offset &OCC型式印刷 - + Sides Sides - + Number of sides 邊數 - + Offset 偏移複製 - + Auto 自動 - + Text string to draw 要繪製之文字字串 - + String 字串 - + Height of text 字高 - + Height 高度 - + Intercharacter spacing 字元間距 - + Tracking 追蹤 - + Full path to font file: 字型檔完整路徑: - + Open a FileChooser for font file 選取字型檔 @@ -2498,132 +2683,132 @@ This value is the maximum segment length. - + DWire DWire - + Circle - + Center X 中心 X - + Arc - + Point - + Label Label - + Distance 距離 - + Trim 修剪 - + Pick Object 選取物件 - + Edit 編輯 - + Global X 全域X - + Global Y 全域Y - + Global Z 全域Z - + Local X 區域X - + Local Y 區域Y - + Local Z 區域Z - + Invalid Size value. Using 200.0. 無效值。使用 200.0。 - + Invalid Tracking value. Using 0. 追蹤的值無效。使用 0。 - + Please enter a text string. 請輸入一段文字 - + Select a Font file 選擇一個字型檔 - + Please enter a font file. 請輸入字型檔。 - + Autogroup: Autogroup: - + Faces - + Remove 移除 - + Add 新增 - + Facebinder elements Facebinder elements @@ -2638,7 +2823,7 @@ This value is the maximum segment length. 貝茲曲線 - + Copy 複製 @@ -2660,17 +2845,17 @@ https://github.com/yorikvanhavre/Draft-dxf-importer 之說明啟動FreeCAD來下載這些函式庫,並回答確定。 - + Relative Relative - + Continue Continue - + Close 關閉 @@ -2715,7 +2900,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Restrict Z - + Select edge Select edge @@ -2730,7 +2915,7 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Length mode - + Wipe Wipe @@ -2745,67 +2930,67 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Cycle snap object - + Check this to lock the current angle Check this to lock the current angle - + Coordinates relative to last point or absolute Coordinates relative to last point or absolute - + Filled Filled - + Finish 結束 - + Finishes the current drawing or editing operation Finishes the current drawing or editing operation - + &Undo (CTRL+Z) &Undo (CTRL+Z) - + Undo the last segment Undo the last segment - + Finishes and closes the current line Finishes and closes the current line - + Wipes the existing segments of this line and starts again from the last point Wipes the existing segments of this line and starts again from the last point - + Set WP Set WP - + Reorients the working plane on the last segment Reorients the working plane on the last segment - + Selects an existing edge to be measured by this dimension Selects an existing edge to be measured by this dimension - + If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands If checked, objects will be copied instead of moved. Preferences -> Draft -> Global copy mode to keep this mode in next commands @@ -2815,12 +3000,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Subelement mode - + Modify subelements Modify subelements - + If checked, subelements will be modified instead of entire objects If checked, subelements will be modified instead of entire objects @@ -2845,12 +3030,12 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Side - + Current working plane Current working plane - + Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled Check this if the object should appear as filled, otherwise it will appear as wireframe. Not available if Draft preference option 'Use Part Primitives' is enabled @@ -2870,32 +3055,32 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Toggle near snap on/off - + Create text 建立文字 - + Press this button to create the text object, or finish your text with two blank lines Press this button to create the text object, or finish your text with two blank lines - + Center Y Center Y - + Center Z Center Z - + Offset distance Offset distance - + Trim distance Trim distance @@ -2904,6 +3089,11 @@ https://github.com/yorikvanhavre/Draft-dxf-importer Wire + + + Change default style for new objects + Change default style for new objects + importOCA diff --git a/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui new file mode 100644 index 0000000000..fa96f538e1 --- /dev/null +++ b/src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui @@ -0,0 +1,332 @@ + + + Form + + + + 0 + 0 + 245 + 531 + + + + Style settings + + + + + + Lines and faces + + + + QLayout::SetDefaultConstraint + + + + + The color of faces + + + + + + + Draw style + + + + + + + Line color + + + + + + + Line width + + + + + + + The color of lines + + + + + + + The line style + + + + Solid + + + + + Dashed + + + + + Dotted + + + + + DashDot + + + + + + + + px + + + + + + + Display mode + + + + + + + The display mode for faces + + + + Flat Lines + + + + + Wireframe + + + + + Shaded + + + + + Points + + + + + + + + Shape color + + + + + + + Transparency + + + + + + + The transparency of faces + + + % + + + 100 + + + + + + + + + + Annotations + + + + + + The type of dimension arrows + + + + Dot + + + + + Circle + + + + + Arrow + + + + + Tick + + + + + Tick-2 + + + + + + + + Text font + + + + + + + Text color + + + + + + + + 0 + 0 + + + + The font to use for texts and dimensions + + + + + + + Text size + + + + + + + The color of texts and dimension texts + + + + + + + The size of texts and dimension texts + + + + + + + + + + Arrow style + + + + + + + If the unit siffix is shown on dimension texts or not + + + Qt::RightToLeft + + + + + + + + + + The size of dimension arrows + + + + + + + + + + Show unit + + + + + + + Arrow size + + + + + + + Unit override + + + + + + + The unit to use for dimensions. Leave blank to use current FreeCAD unit + + + + + + + + + + Apply to selected objects + + + + + + + + Gui::InputField + QLineEdit +
      Gui/InputField.h
      +
      + + Gui::ColorButton + QPushButton +
      Gui/Widgets.h
      +
      +
      + + +
      diff --git a/src/Mod/Draft/Resources/ui/dialog_AnnotationStyleEditor.ui b/src/Mod/Draft/Resources/ui/dialog_AnnotationStyleEditor.ui index 7272c7d5fb..2df87d5e94 100644 --- a/src/Mod/Draft/Resources/ui/dialog_AnnotationStyleEditor.ui +++ b/src/Mod/Draft/Resources/ui/dialog_AnnotationStyleEditor.ui @@ -108,7 +108,7 @@ 0 - 0 + -290 420 589 @@ -408,6 +408,11 @@ Dot
      + + + Circle + + Arrow @@ -418,6 +423,11 @@ Tick + + + Tick-2 + +
      diff --git a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui index 44d88801c4..62560a3705 100644 --- a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui +++ b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui @@ -6,8 +6,8 @@ 0 0 - 612 - 578 + 518 + 645 @@ -323,6 +323,25 @@ + + + + If set, the grid will have its two main axes colored in red, green or blue when they match global axes + + + Use colored axes + + + true + + + coloredGridAxes + + + Mod/Draft + + + @@ -484,12 +503,12 @@ - Grid color + Grid color and transparency - + Qt::Horizontal @@ -504,7 +523,7 @@ - The default color for new objects + The color of the grid @@ -521,6 +540,22 @@ + + + + The overall transparency of the grid + + + 100 + + + gridTransparency + + + Mod/Draft + + + diff --git a/src/Mod/Draft/WorkingPlane.py b/src/Mod/Draft/WorkingPlane.py index b09e061f98..408ce7677b 100644 --- a/src/Mod/Draft/WorkingPlane.py +++ b/src/Mod/Draft/WorkingPlane.py @@ -777,11 +777,12 @@ class Plane: # Arch active container if FreeCAD.GuiUp: import FreeCADGui - view = FreeCADGui.ActiveDocument.ActiveView - if view: - a = view.getActiveObject("Arch") - if a: - p = a.Placement.inverse().multiply(p) + if FreeCADGui.ActiveDocument: + view = FreeCADGui.ActiveDocument.ActiveView + if view: + a = view.getActiveObject("Arch") + if a: + p = a.Placement.inverse().multiply(p) return p def getPlacement(self, rotated=False): diff --git a/src/Mod/Draft/draft.dox b/src/Mod/Draft/draft.dox index 50b9e3543e..ed00139872 100644 --- a/src/Mod/Draft/draft.dox +++ b/src/Mod/Draft/draft.dox @@ -1,6 +1,6 @@ /** \defgroup DRAFT Draft -\ingroup PYTHONWORKBENCHES -\brief Basic 2D drawing tools and other generic tools + * \ingroup PYTHONWORKBENCHES + * \brief Basic 2D drawing tools and other generic tools The Draft workbench provides many tools for building geometrical objects in a two-dimensional space, normally supported by a working plane diff --git a/src/Mod/Draft/draftfunctions/rotate.py b/src/Mod/Draft/draftfunctions/rotate.py index 64b88d2cba..785e7b7503 100644 --- a/src/Mod/Draft/draftfunctions/rotate.py +++ b/src/Mod/Draft/draftfunctions/rotate.py @@ -42,11 +42,11 @@ import draftmake.make_copy as make_copy def rotate(objectslist, angle, center=App.Vector(0,0,0), axis=App.Vector(0,0,1), copy=False): """rotate(objects,angle,[center,axis,copy]) - + Rotates the objects contained in objects (that can be a list of objects - or an object) of the given angle (in degrees) around the center, using - axis as a rotation axis. - + or an object) of the given angle (in degrees) around the center, using + axis as a rotation axis. + Parameters ---------- objectlist : list @@ -57,10 +57,10 @@ def rotate(objectslist, angle, center=App.Vector(0,0,0), axis : Base.Vector If axis is omitted, the rotation will be around the vertical Z axis. - + copy : bool If copy is True, the actual objects are not moved, but copies - are created instead. + are created instead. Return ---------- @@ -114,7 +114,7 @@ def rotate(objectslist, angle, center=App.Vector(0,0,0), elif utils.get_type(obj) == "Point": v = App.Vector(obj.X,obj.Y,obj.Z) rv = v.sub(real_center) - rv = DraftVecUtils.rotate(rv, math.radians(angle),real_axis) + rv = DraftVecUtils.rotate(rv, math.radians(angle), real_axis) v = real_center.add(rv) newobj.X = v.x newobj.Y = v.y diff --git a/src/Mod/Draft/draftfunctions/svg.py b/src/Mod/Draft/draftfunctions/svg.py index 90f9fdb037..e8f68fd604 100644 --- a/src/Mod/Draft/draftfunctions/svg.py +++ b/src/Mod/Draft/draftfunctions/svg.py @@ -220,6 +220,8 @@ def _svg_shape(svg, obj, plane, fill = fillstyle elif fillstyle == "shape color": fill = "#888888" + elif fillstyle in ("none",None): + fill = "none" else: fill = 'url(#' + fillstyle + ')' @@ -841,6 +843,8 @@ def get_svg(obj, fill = utils.get_rgb(vobj.ShapeColor, testbw=False) fill_opacity = 1 - vobj.Transparency / 100.0 + elif fillstyle in ("none",None): + fill = "none" else: fill = 'url(#'+fillstyle+')' svg += get_pattern(fillstyle) diff --git a/src/Mod/Draft/draftfunctions/upgrade.py b/src/Mod/Draft/draftfunctions/upgrade.py index 08c10ffa89..c449015bde 100644 --- a/src/Mod/Draft/draftfunctions/upgrade.py +++ b/src/Mod/Draft/draftfunctions/upgrade.py @@ -40,8 +40,9 @@ import draftmake.make_line as make_line import draftmake.make_wire as make_wire import draftmake.make_block as make_block -from draftutils.messages import _msg +from draftutils.messages import _msg, _err from draftutils.translate import _tr +from draftgeoutils.geometry import is_straight_line # Delay import of module until first use because it is heavy Part = lz.LazyLoader("Part", globals(), "Part") @@ -145,7 +146,12 @@ def upgrade(objects, delete=False, force=None): newobj.Shape = sol add_list.append(newobj) delete_list.append(obj) - return newobj + return newobj + else: + _err(_tr("Object must be a closed shape")) + else: + _err(_tr("No solid object created")) + return None def closeWire(obj): """Close a wire object, if possible.""" @@ -155,6 +161,8 @@ def upgrade(objects, delete=False, force=None): return None if len(obj.Shape.Edges) == 1: return None + if is_straight_line(obj.Shape) == True: + return None if utils.get_type(obj) == "Wire": obj.Closed = True return True @@ -207,7 +215,7 @@ def upgrade(objects, delete=False, force=None): return None def makeShell(objectslist): - """Make a shell with the given objects.""" + """Make a shell or compound with the given objects.""" params = App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") preserveFaceColor = params.GetBool("preserveFaceColor") # True preserveFaceNames = params.GetBool("preserveFaceNames") # True @@ -229,7 +237,7 @@ def upgrade(objects, delete=False, force=None): sh = Part.makeShell(faces) if sh: if sh.Faces: - newobj = doc.addObject("Part::Feature", "Shell") + newobj = doc.addObject("Part::Feature", str(sh.ShapeType)) newobj.Shape = sh if preserveFaceNames: firstName = objectslist[0].Label @@ -255,35 +263,52 @@ def upgrade(objects, delete=False, force=None): return newobj return None - def joinFaces(objectslist): + def joinFaces(objectslist, coplanarity=False, checked=False): """Make one big face from selected objects, if possible.""" faces = [] for obj in objectslist: faces.extend(obj.Shape.Faces) - u = faces.pop(0) - for f in faces: - u = u.fuse(f) - if DraftGeomUtils.isCoplanar(faces): - u = DraftGeomUtils.concatenate(u) - if not DraftGeomUtils.hasCurves(u): - # several coplanar and non-curved faces, - # they can become a Draft Wire - newobj = make_wire.make_wire(u.Wires[0], + + # check coplanarity if needed + if not checked: + coplanarity = DraftGeomUtils.is_coplanar(faces, 1e-3) + if not coplanarity: + _err(_tr("Faces must be coplanar to be refined")) + return None + + # fuse faces + fuse_face = faces.pop(0) + for face in faces: + fuse_face = fuse_face.fuse(face) + + face = DraftGeomUtils.concatenate(fuse_face) + # to prevent create new object if concatenate fails + if face.isEqual(fuse_face): + face = None + + if face: + # several coplanar and non-curved faces, + # they can become a Draft Wire + if (not DraftGeomUtils.hasCurves(face) + and len(face.Wires) == 1): + newobj = make_wire.make_wire(face.Wires[0], closed=True, face=True) + # if not possible, we do a non-parametric union else: - # if not possible, we do a non-parametric union newobj = doc.addObject("Part::Feature", "Union") - newobj.Shape = u + newobj.Shape = face add_list.append(newobj) delete_list.extend(objectslist) return newobj return None def makeSketchFace(obj): - """Make a Draft Wire closed and filled out of a sketch.""" - newobj = make_wire.make_wire(obj.Shape, closed=True) - if newobj: - newobj.Base = obj + """Make a face from a sketch.""" + face = Part.makeFace(obj.Shape.Wires, "Part::FaceMakerBullseye") + if face: + newobj = doc.addObject("Part::Feature", "Face") + newobj.Shape = face + add_list.append(newobj) if App.GuiUp: obj.ViewObject.Visibility = False @@ -311,26 +336,35 @@ def upgrade(objects, delete=False, force=None): def makeWires(objectslist): """Join edges in the given objects list into wires.""" edges = [] - for o in objectslist: - for e in o.Shape.Edges: - edges.append(e) + for object in objectslist: + for edge in object.Shape.Edges: + edges.append(edge) + try: - nedges = Part.__sortEdges__(edges[:]) + sorted_edges = Part.sortEdges(edges) if _DEBUG: - for e in nedges: - print("Curve: {}".format(e.Curve)) - print("first: {}, last: {}".format(e.Vertexes[0].Point, + for item_sorted_edges in sorted_edges: + for e in item_sorted_edges: + print("Curve: {}".format(e.Curve)) + print("first: {}, last: {}".format(e.Vertexes[0].Point, e.Vertexes[-1].Point)) - w = Part.Wire(nedges) + wires = [Part.Wire(e) for e in sorted_edges] except Part.OCCError: return None else: - if len(w.Edges) == len(edges): + for wire in wires: newobj = doc.addObject("Part::Feature", "Wire") - newobj.Shape = w + newobj.Shape = wire add_list.append(newobj) - delete_list.extend(objectslist) - return True + # delete object only if there are no links to it + # TODO: A more refined criteria to delete object + for object in objectslist: + if object.InList: + if App.GuiUp: + object.ViewObject.Visibility = False + else: + delete_list.append(object) + return True return None # analyzing what we have in our selection @@ -365,7 +399,7 @@ def upgrade(objects, delete=False, force=None): for e in ob.Shape.Edges: if DraftGeomUtils.geomType(e) != "Line": curves.append(e) - if not e.hashCode() in wirededges: + if not e.hashCode() in wirededges and not e.isClosed(): loneedges.append(e) elif ob.isDerivedFrom("Mesh::Feature"): meshes.append(ob) @@ -379,21 +413,33 @@ def upgrade(objects, delete=False, force=None): print("facewires: {}, loneedges: {}".format(facewires, loneedges)) if force: - if force in ("makeCompound", "closeGroupWires", "makeSolid", - "closeWire", "turnToParts", "makeFusion", - "makeShell", "makeFaces", "draftify", - "joinFaces", "makeSketchFace", "makeWires", - "turnToLine"): - # TODO: Using eval to evaluate a string is not ideal - # and potentially a security risk. - # How do we execute the function without calling eval? - # Best case, a series of if-then statements. - draftify = ext_draftify.draftify - result = eval(force)(objects) + all_func = {"makeCompound" : makeCompound, + "closeGroupWires" : closeGroupWires, + "makeSolid" : makeSolid, + "closeWire" : closeWire, + "turnToParts" : turnToParts, + "makeFusion" : makeFusion, + "makeShell" : makeShell, + "makeFaces" : makeFaces, + "draftify" : ext_draftify.draftify, + "joinFaces" : joinFaces, + "makeSketchFace" : makeSketchFace, + "makeWires" : makeWires, + "turnToLine" : turnToLine} + if force in all_func: + result = all_func[force](objects) else: _msg(_tr("Upgrade: Unknown force method:") + " " + force) result = None + else: + # checking faces coplanarity + # The precision needed in Part.makeFace is 1e-7. Here we use a + # higher value to let that function throw the exception when + # joinFaces is called if the precision is insufficient + if faces: + faces_coplanarity = DraftGeomUtils.is_coplanar(faces, 1e-3) + # applying transformations automatically result = None @@ -412,26 +458,27 @@ def upgrade(objects, delete=False, force=None): # we have only faces here, no lone edges elif faces and (len(wires) + len(openwires) == len(facewires)): # we have one shell: we try to make a solid - if len(objects) == 1 and len(faces) > 3: + if len(objects) == 1 and len(faces) > 3 and not faces_coplanarity: result = makeSolid(objects[0]) if result: _msg(_tr("Found 1 solidifiable object: solidifying it")) # we have exactly 2 objects: we fuse them - elif len(objects) == 2 and not curves: + elif len(objects) == 2 and not curves and not faces_coplanarity: result = makeFusion(objects[0], objects[1]) if result: _msg(_tr("Found 2 objects: fusing them")) - # we have many separate faces: we try to make a shell - elif len(objects) > 2 and len(faces) > 1 and not loneedges: + # we have many separate faces: we try to make a shell or compound + elif len(objects) >= 2 and len(faces) > 1 and not loneedges: result = makeShell(objects) if result: - _msg(_tr("Found several objects: creating a shell")) + _msg(_tr("Found several objects: creating a " + + str(result.Shape.ShapeType))) # we have faces: we try to join them if they are coplanar - elif len(faces) > 1: - result = joinFaces(objects) + elif len(objects) == 1 and len(faces) > 1: + result = joinFaces(objects, faces_coplanarity, True) if result: - _msg(_tr("Found several coplanar objects or faces: " - "creating one face")) + _msg(_tr("Found object with several coplanar faces: " + "refine them")) # only one object: if not parametric, we "draftify" it elif (len(objects) == 1 and not objects[0].isDerivedFrom("Part::Part2DObjectPython")): @@ -440,54 +487,56 @@ def upgrade(objects, delete=False, force=None): _msg(_tr("Found 1 non-parametric objects: " "draftifying it")) - # we have only one object that contains one edge - elif not faces and len(objects) == 1 and len(edges) == 1: - # we have a closed sketch: extract a face - if (objects[0].isDerivedFrom("Sketcher::SketchObject") - and len(edges[0].Vertexes) == 1): - result = makeSketchFace(objects[0]) + # in the following cases there are no faces + elif not faces: + # we have only closed wires + if wires and not openwires and not loneedges: + # we have a sketch: extract a face + if (len(objects) == 1 + and objects[0].isDerivedFrom("Sketcher::SketchObject")): + result = makeSketchFace(objects[0]) + if result: + _msg(_tr("Found 1 closed sketch object: " + "creating a face from it")) + # only closed wires + else: + result = makeFaces(objects) + if result: + _msg(_tr("Found closed wires: creating faces")) + # wires or edges: we try to join them + elif len(wires) > 1 or len(loneedges) > 1: + result = makeWires(objects) if result: - _msg(_tr("Found 1 closed sketch object: " - "creating a face from it")) - else: + _msg(_tr("Found several wires or edges: wiring them")) + # TODO: improve draftify function + # only one object: if not parametric, we "draftify" it + # elif (len(objects) == 1 + # and not objects[0].isDerivedFrom("Part::Part2DObjectPython")): + # result = ext_draftify.draftify(objects[0]) + # if result: + # _msg(_tr("Found 1 non-parametric objects: " + # "draftifying it")) + # special case, we have only one open wire. We close it, + # unless it has only 1 edge! + elif len(objects) == 1 and len(openwires) == 1: + result = closeWire(objects[0]) + _msg(_tr("trying: closing it")) + if result: + _msg(_tr("Found 1 open wire: closing it")) + # we have only one object that contains one edge + # TODO: this case should be considered in draftify + elif len(objects) == 1 and len(edges) == 1: # turn to Draft Line e = objects[0].Shape.Edges[0] if isinstance(e.Curve, (Part.LineSegment, Part.Line)): result = turnToLine(objects[0]) if result: _msg(_tr("Found 1 linear object: converting to line")) - - # we have only closed wires, no faces - elif wires and not faces and not openwires: - # we have a sketch: extract a face - if (len(objects) == 1 - and objects[0].isDerivedFrom("Sketcher::SketchObject")): - result = makeSketchFace(objects[0]) + # only points, no edges + elif not edges and len(objects) > 1: + result = makeCompound(objects) if result: - _msg(_tr("Found 1 closed sketch object: " - "creating a face from it")) - # only closed wires - else: - result = makeFaces(objects) - if result: - _msg(_tr("Found closed wires: creating faces")) - - # special case, we have only one open wire. We close it, - # unless it has only 1 edge! - elif len(openwires) == 1 and not faces and not loneedges: - result = closeWire(objects[0]) - if result: - _msg(_tr("Found 1 open wire: closing it")) - # only open wires and edges: we try to join their edges - elif openwires and not wires and not faces: - result = makeWires(objects) - if result: - _msg(_tr("Found several open wires: joining them")) - # only loneedges: we try to join them - elif loneedges and not facewires: - result = makeWires(objects) - if result: - _msg(_tr("Found several edges: wiring them")) + _msg(_tr("Found points: creating compound")) # all other cases, if more than 1 object, make a compound elif len(objects) > 1: result = makeCompound(objects) diff --git a/src/Mod/Draft/draftgeoutils/faces.py b/src/Mod/Draft/draftgeoutils/faces.py index 7ab1ec7339..dac30a432e 100644 --- a/src/Mod/Draft/draftgeoutils/faces.py +++ b/src/Mod/Draft/draftgeoutils/faces.py @@ -29,8 +29,9 @@ import lazy_loader.lazy_loader as lz import DraftVecUtils - +from FreeCAD import Base from draftgeoutils.general import precision +from draftgeoutils.geometry import are_coplanar # Delay import of module until first use because it is heavy Part = lz.LazyLoader("Part", globals(), "Part") @@ -41,17 +42,19 @@ Part = lz.LazyLoader("Part", globals(), "Part") def concatenate(shape): """Turn several faces into one.""" - edges = getBoundary(shape) - edges = Part.__sortEdges__(edges) + boundary_edges = getBoundary(shape) + sorted_edges = Part.sortEdges(boundary_edges) + try: - wire = Part.Wire(edges) - face = Part.Face(wire) - except Part.OCCError: - print("DraftGeomUtils: Couldn't join faces into one") + wires = [Part.Wire(edges) for edges in sorted_edges] + face = Part.makeFace(wires, "Part::FaceMakerBullseye") + except Base.FreeCADError: + print("DraftGeomUtils: Fails to join faces into one. " + + "The precision of the faces would be insufficient") return shape else: - if not wire.isClosed(): - return wire + if not wires[0].isClosed(): + return wires[0] else: return face @@ -80,24 +83,32 @@ def getBoundary(shape): return bound -def isCoplanar(faces, tolerance=0): +def is_coplanar(faces, tol=-1): """Return True if all faces in the given list are coplanar. - Tolerance is the maximum deviation to be considered coplanar. + Parameters + ---------- + faces: list + List of faces to check coplanarity. + tol: float, optional + It defaults to `-1`, the tolerance of confusion, equal to 1e-7. + Is the maximum deviation to be considered coplanar. + + Returns + ------- + out: bool + True if all face are coplanar. False in other case. """ - if len(faces) < 2: - return True - base = faces[0].normalAt(0, 0) + first_face = faces[0] + for face in faces: + if not are_coplanar(first_face, face, tol): + return False - for i in range(1, len(faces)): - for v in faces[i].Vertexes: - chord = v.Point.sub(faces[0].Vertexes[0].Point) - dist = DraftVecUtils.project(chord, base) - if round(dist.Length, precision()) > tolerance: - return False return True +isCoplanar = is_coplanar + def bind(w1, w2): """Bind 2 wires by their endpoints and returns a face.""" diff --git a/src/Mod/Draft/draftguitools/gui_dimensions.py b/src/Mod/Draft/draftguitools/gui_dimensions.py index 7d8acfe642..fcd4b61f2b 100644 --- a/src/Mod/Draft/draftguitools/gui_dimensions.py +++ b/src/Mod/Draft/draftguitools/gui_dimensions.py @@ -129,7 +129,10 @@ class Dimension(gui_base_original.Creator): self.indices = [] self.center = None self.arcmode = False + self.point1 = None self.point2 = None + self.proj_point1 = None + self.proj_point2 = None self.force = None self.info = None self.selectmode = False @@ -296,10 +299,13 @@ class Dimension(gui_base_original.Creator): _cmd += ')' _cmd_list = ['_dim_ = ' + _cmd] + plane = App.DraftWorkingPlane + dir_u = DraftVecUtils.toString(plane.u) + dir_v = DraftVecUtils.toString(plane.v) if direction == "X": - _cmd_list += ['_dim_.Direction = FreeCAD.Vector(1, 0, 0)'] + _cmd_list += ['_dim_.Direction = ' + dir_u] elif direction == "Y": - _cmd_list += ['_dim_.Direction = FreeCAD.Vector(0, 1, 0)'] + _cmd_list += ['_dim_.Direction = ' + dir_v] _cmd_list += ['Draft.autogroup(_dim_)', 'FreeCAD.ActiveDocument.recompute()'] @@ -444,30 +450,22 @@ class Dimension(gui_base_original.Creator): # Draw constraint tracker line. if shift and (not self.arcmode): if len(self.node) == 2: + if not self.point1: + self.point1 = self.node[0] if not self.point2: self.point2 = self.node[1] - else: - self.node[1] = self.point2 - if not self.force: - _p = self.point.sub(self.node[0]) - a = abs(_p.getAngle(App.DraftWorkingPlane.u)) - if (a > math.pi/4) and (a <= 0.75*math.pi): - self.force = 1 - else: - self.force = 2 - if self.force == 1: - self.node[1] = App.Vector(self.node[0].x, - self.node[1].y, - self.node[0].z) - elif self.force == 2: - self.node[1] = App.Vector(self.node[1].x, - self.node[0].y, - self.node[0].z) + # else: + # self.node[1] = self.point2 + self.set_constraint_node() else: self.force = None + self.proj_point1 = None + self.proj_point2 = None + if self.point1: + self.node[0] = self.point1 if self.point2 and (len(self.node) > 1): self.node[1] = self.point2 - self.point2 = None + # self.point2 = None # update the dimline if self.node and not self.arcmode: self.dimtrack.update(self.node @@ -579,6 +577,34 @@ class Dimension(gui_base_original.Creator): if not self.cont: self.finish() + def set_constraint_node(self): + """Set constrained nodes for vertical or horizontal dimension + by projecting on the working plane. + """ + if not self.proj_point1 or not self.proj_point2: + plane = App.DraftWorkingPlane + self.proj_point1 = plane.projectPoint(self.node[0]) + self.proj_point2 = plane.projectPoint(self.node[1]) + proj_u= plane.u.dot(self.proj_point2 - self.proj_point1) + proj_v= plane.v.dot(self.proj_point2 - self.proj_point1) + active_view = Gui.ActiveDocument.ActiveView + cursor = active_view.getCursorPos() + cursor_point = active_view.getPoint(cursor) + self.point = plane.projectPoint(cursor_point) + if not self.force: + ref_point = self.point - (self.proj_point2 + self.proj_point1)*1/2 + ref_angle = abs(ref_point.getAngle(plane.u)) + if (ref_angle > math.pi/4) and (ref_angle <= 0.75*math.pi): + self.force = 2 + else: + self.force = 1 + if self.force == 1: + self.node[0] = self.proj_point1 + self.node[1] = self.proj_point1 + plane.v*proj_v + elif self.force == 2: + self.node[0] = self.proj_point1 + self.node[1] = self.proj_point1 + plane.u*proj_u + Gui.addCommand('Draft_Dimension', Dimension()) diff --git a/src/Mod/Draft/draftguitools/gui_offset.py b/src/Mod/Draft/draftguitools/gui_offset.py index be4b1c1a5f..58960b9a9f 100644 --- a/src/Mod/Draft/draftguitools/gui_offset.py +++ b/src/Mod/Draft/draftguitools/gui_offset.py @@ -181,7 +181,7 @@ class Offset(gui_base_original.Modifier): self.point) v2 = DraftGeomUtils.getTangent(self.shape.Edges[dist[1]], self.point) - a = -DraftVecUtils.angle(v1, v2) + a = -DraftVecUtils.angle(v1, v2, plane.axis) self.dvec = DraftVecUtils.rotate(d, a, plane.axis) occmode = self.ui.occOffset.isChecked() utils.param.SetBool("Offset_OCC", occmode) @@ -196,7 +196,7 @@ class Offset(gui_base_original.Modifier): self.npts = [] for p in self.sel.Points: currtan = DraftGeomUtils.getTangent(e, p) - a = -DraftVecUtils.angle(currtan, basetan) + a = -DraftVecUtils.angle(currtan, basetan, plane.axis) self.dvec = DraftVecUtils.rotate(d, a, plane.axis) self.npts.append(p.add(self.dvec)) self.ghost.update(self.npts) @@ -294,6 +294,13 @@ class Offset(gui_base_original.Modifier): delta = str(rad) else: _err("Draft.Offset error: Unhandled case") + # to offset bspline + elif self.mode == "BSpline": + new_points = [] + for old_point, new_point in zip(self.sel.Points, self.npts): + diff_direction = new_point.sub(old_point).normalize() + new_points.append(old_point.add(diff_direction*rad)) + delta = DraftVecUtils.toString(new_points) else: self.dvec.normalize() self.dvec.multiply(rad) @@ -301,6 +308,7 @@ class Offset(gui_base_original.Modifier): copymode = False occmode = self.ui.occOffset.isChecked() utils.param.SetBool("Offset_OCC", occmode) + if self.ui.isCopy.isChecked(): copymode = True Gui.addModule("Draft") diff --git a/src/Mod/Draft/draftguitools/gui_patharray.py b/src/Mod/Draft/draftguitools/gui_patharray.py index 9ab06d5405..c025668901 100644 --- a/src/Mod/Draft/draftguitools/gui_patharray.py +++ b/src/Mod/Draft/draftguitools/gui_patharray.py @@ -1,7 +1,7 @@ # *************************************************************************** # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * -# * Copyright (c) 2013 Wandererfan * +# * Copyright (c) 2013 WandererFan * # * Copyright (c) 2019 Zheng, Lei (realthunder)* # * Copyright (c) 2020 Carlo Pavan * # * Copyright (c) 2020 Eliud Cabrera Castillo * diff --git a/src/Mod/Draft/draftguitools/gui_selectplane.py b/src/Mod/Draft/draftguitools/gui_selectplane.py index b4d61d57df..6037046223 100644 --- a/src/Mod/Draft/draftguitools/gui_selectplane.py +++ b/src/Mod/Draft/draftguitools/gui_selectplane.py @@ -261,7 +261,7 @@ class Draft_SelectPlane: pl = obj.Placement FreeCAD.DraftWorkingPlane.setFromPlacement(pl, rebase=True) FreeCAD.DraftWorkingPlane.weak = False - self.display(FreeCAD.DraftWorkingPlane.axis) + self.display(FreeCAD.DraftWorkingPlane.axis,obj.ViewObject.Icon) self.wpButton.setText(obj.Label) self.wpButton.setToolTip(translate("draft", "Current working plane")+": " + self.wpButton.text()) m = translate("draft", "Working plane aligned to global placement of") @@ -316,7 +316,7 @@ class Draft_SelectPlane: if o: if o.Visibility != (v == "True"): FreeCADGui.doCommand("FreeCADGui.ActiveDocument.getObject(\""+k+"\").Visibility = "+v) - self.display(FreeCAD.DraftWorkingPlane.axis) + self.display(FreeCAD.DraftWorkingPlane.axis,obj.ViewObject.Icon) self.wpButton.setText(obj.Label) self.wpButton.setToolTip(translate("draft", "Current working plane")+": "+self.wpButton.text()) @@ -358,48 +358,56 @@ class Draft_SelectPlane: def onClickTop(self): """Execute when pressing the top button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(0, 0, 1)) + ", " _cmd += self.tostr((0, 0, 1)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) - self.display('Top') + self.display(translate("draft",'Top'),QtGui.QIcon(":/icons/view-top.svg")) self.finish() def onClickFront(self): """Execute when pressing the front button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(0, -1, 0)) + ", " _cmd += self.tostr((0, -1, 0)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) - self.display('Front') + self.display(translate("draft",'Front'),QtGui.QIcon(":/icons/view-front.svg")) self.finish() def onClickSide(self): """Execute when pressing the side button.""" - offset = str(self.getOffset()) _cmd = self.ac _cmd += "(" _cmd += self.tostr(self.getCenterPoint(1, 0, 0)) + ", " _cmd += self.tostr((1, 0, 0)) + ", " - _cmd += offset + _cmd += str(self.getOffset()) _cmd += ")" FreeCADGui.doCommandGui(_cmd) - self.display('Side') + self.display(translate("draft",'Side'),QtGui.QIcon(":/icons/view-right.svg")) self.finish() def onClickAlign(self): """Execute when pressing the align.""" - FreeCADGui.doCommandGui("FreeCAD.DraftWorkingPlane.setup(force=True)") - d = self.view.getViewDirection().negative() - self.display(d) + dir = self.view.getViewDirection().negative() + camera = self.view.getCameraNode() + rot = camera.getField("orientation").getValue() + coin_up = coin.SbVec3f(0, 1, 0) + upvec = FreeCAD.Vector(rot.multVec(coin_up).getValue()) + _cmd = self.ac + _cmd += "(" + _cmd += self.tostr(self.getCenterPoint(dir.x, dir.y, dir.z)) + ", " + _cmd += self.tostr((dir.x, dir.y, dir.z)) + ", " + _cmd += str(self.getOffset()) + ", " + _cmd += self.tostr(upvec) + _cmd += ")" + FreeCADGui.doCommandGui(_cmd) + self.display(dir) self.finish() def onClickAuto(self): @@ -490,8 +498,8 @@ class Draft_SelectPlane: if hasattr(FreeCADGui, "Snapper"): FreeCADGui.Snapper.showradius() - def display(self, arg): - """Set the text of the working plane button in the toolbar.""" + def display(self, arg, icon=None): + """Set the text and icon of the working plane button in the toolbar.""" o = self.getOffset() if o: if o > 0: @@ -506,7 +514,6 @@ class Draft_SelectPlane: vdir += str(_vdir.y)[:4] + ',' vdir += str(_vdir.z)[:4] vdir += ')' - vdir = " " + translate("draft", "Dir") + ": " + vdir if type(arg).__name__ == 'str': self.wpButton.setText(arg + suffix) @@ -527,6 +534,10 @@ class Draft_SelectPlane: _tool = translate("draft", "Current working plane") _tool += ": " + plv + vdir self.wpButton.setToolTip(_tool) + if icon: + self.wpButton.setIcon(icon) + else: + self.wpButton.setIcon(QtGui.QIcon(":/icons/Draft_SelectPlane.svg")) p = FreeCAD.DraftWorkingPlane self.states.append([p.u, p.v, p.axis, p.position]) FreeCADGui.doCommandGui("FreeCADGui.Snapper.setGrid()") diff --git a/src/Mod/Draft/draftguitools/gui_setstyle.py b/src/Mod/Draft/draftguitools/gui_setstyle.py new file mode 100644 index 0000000000..cf2a8ebd18 --- /dev/null +++ b/src/Mod/Draft/draftguitools/gui_setstyle.py @@ -0,0 +1,154 @@ +# *************************************************************************** +# * Copyright (c) 2020 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 * +# * * +# *************************************************************************** + +"""Provides GUI tools to set up default styles.""" +## @package gui_setstyle +# \ingroup draftguitools +# \brief Provides GUI tools to set Draft styles such as color or line width + +## \addtogroup draftguitools +# @{ + +import FreeCAD +if FreeCAD.GuiUp: + import FreeCADGui + import Draft_rc +def QT_TRANSLATE_NOOP(ctx,txt): + return txt + +__title__ = "FreeCAD Draft Workbench GUI Tools - Styling tools" +__author__ = ("Yorik van Havre") +__url__ = "https://www.freecadweb.org" + + +class Draft_SetStyle: + """The Draft_SetStyle FreeCAD command definition.""" + + def GetResources(self): + + d = {'Pixmap': 'Draft_Apply', + 'Accel': "S, S", + 'MenuText': QT_TRANSLATE_NOOP("Draft_SetStyle", "Set style"), + 'ToolTip': QT_TRANSLATE_NOOP("Draft_SetStyle", "Sets default styles")} + return d + + def Activated(self): + + FreeCADGui.Control.showDialog(Draft_SetStyle_TaskPanel()) + + + +class Draft_SetStyle_TaskPanel: + """The task panel for the Draft_SetStyle command""" + + def __init__(self): + + from PySide import QtCore,QtGui + self.p = "User parameter:BaseApp/Preferences/" + self.form = FreeCADGui.PySideUic.loadUi(":/ui/TaskPanel_SetStyle.ui") + self.form.setWindowIcon(QtGui.QIcon(":/icons/Draft_Apply.svg")) + self.form.applyButton.setIcon(QtGui.QIcon(":/icons/Draft_Apply.svg")) + self.form.LineColor.setProperty("color",self.getPrefColor("View","DefaultShapeLineColor",255)) + self.form.LineWidth.setValue(FreeCAD.ParamGet(self.p+"View").GetInt("DefaultShapeLineWidth",2)) + self.form.DrawStyle.setCurrentIndex(FreeCAD.ParamGet(self.p+"Mod/Draft").GetInt("DefaultDrawStyle",0)) + self.form.DisplayMode.setCurrentIndex(FreeCAD.ParamGet(self.p+"Mod/Draft").GetInt("DefaultDisplayMode",0)) + self.form.ShapeColor.setProperty("color",self.getPrefColor("View","DefaultShapeColor",4294967295)) + self.form.Transparency.setValue(FreeCAD.ParamGet(self.p+"Mod/Draft").GetInt("DefaultTransparency",0)) + self.form.TextFont.setCurrentFont(QtGui.QFont(FreeCAD.ParamGet(self.p+"Mod/Draft").GetString("textfont","Sans"))) + self.form.TextSize.setText(FreeCAD.Units.Quantity(FreeCAD.ParamGet(self.p+"Mod/Draft").GetFloat("textheight",10),FreeCAD.Units.Length).UserString) + self.form.TextColor.setProperty("color",self.getPrefColor("Mod/Draft","DefaultTextColor",255)) + self.form.ArrowStyle.setCurrentIndex(FreeCAD.ParamGet(self.p+"Mod/Draft").GetInt("dimsymbol",0)) + self.form.ArrowSize.setText(FreeCAD.Units.Quantity(FreeCAD.ParamGet(self.p+"/Mod/Draft").GetFloat("arrowsize",5),FreeCAD.Units.Length).UserString) + self.form.ShowUnit.setChecked(FreeCAD.ParamGet(self.p+"Mod/Draft").GetBool("showUnit",True)) + self.form.UnitOverride.setText(FreeCAD.ParamGet(self.p+"Mod/Draft").GetString("overrideUnit","")) + self.form.applyButton.clicked.connect(self.onApplyStyle) + + def getPrefColor(self,group,prop,default): + + c = FreeCAD.ParamGet(self.p+group).GetUnsigned(prop,default) + r = ((c>>24)&0xFF)/255.0 + g = ((c>>16)&0xFF)/255.0 + b = ((c>>8)&0xFF)/255.0 + from PySide import QtGui + return QtGui.QColor.fromRgbF(r,g,b) + + def reject(self): + + FreeCADGui.Control.closeDialog() + + def accept(self): + + FreeCAD.ParamGet(self.p+"View").SetUnsigned("DefaultShapeLineColor",self.form.LineColor.property("color").rgb()<<8) + FreeCAD.ParamGet(self.p+"View").SetInt("DefaultShapeLineWidth",self.form.LineWidth.value()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("DefaultDrawStyle",self.form.DrawStyle.currentIndex()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("DefaultDisplayMode",self.form.DisplayMode.currentIndex()) + FreeCAD.ParamGet(self.p+"View").SetUnsigned("DefaultShapeColor",self.form.ShapeColor.property("color").rgb()<<8) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("DefaultTransparency",self.form.Transparency.value()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetString("textfont",self.form.TextFont.currentFont().family()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetFloat("textheight",FreeCAD.Units.Quantity(self.form.TextSize.text()).Value) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetUnsigned("DefaultTextColor",self.form.TextColor.property("color").rgb()<<8) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetInt("dimsymbol",self.form.ArrowStyle.currentIndex()) + FreeCAD.ParamGet(self.p+"/Mod/Draft").SetFloat("arrowsize",FreeCAD.Units.Quantity(self.form.ArrowSize.text()).Value) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetBool("showUnit",self.form.ShowUnit.isChecked()) + FreeCAD.ParamGet(self.p+"Mod/Draft").SetString("overrideUnit",self.form.UnitOverride.text()) + if hasattr(FreeCADGui,"draftToolBar"): + FreeCADGui.draftToolBar.setStyleButton() + self.reject() + + def onApplyStyle(self): + + for obj in FreeCADGui.Selection.getSelection(): + vobj = obj.ViewObject + if vobj: + if "LineColor" in vobj.PropertiesList: + vobj.LineColor = self.form.LineColor.property("color").rgb()<<8 + if "LineWidth" in vobj.PropertiesList: + vobj.LineWidth = self.form.LineWidth.value() + if "DrawStyle" in vobj.PropertiesList: + vobj.DrawStyle = ["Solid","Dashed","Dotted","Dashdot"][self.form.DrawStyle.currentIndex()] + if "DisplayMode" in vobj.PropertiesList: + try: + vobj.DisplayMode = ["Flat Lines","Wireframe","Shaded","points"][self.form.DisplayMode.currentIndex()] + except: + pass + if "ShapeColor" in vobj.PropertiesList: + vobj.ShapeColor = self.form.ShapeColor.property("color").rgb()<<8 + if "Transparency" in vobj.PropertiesList: + vobj.Transparency = self.form.Transparency.value() + if "FontName" in vobj.PropertiesList: + vobj.TextFont = self.form.TextFont.currentFont().family() + if "TextSize" in vobj.PropertiesList: + vobj.TextSize = FreeCAD.Units.Quantity(self.form.TextSize.text()).Value + if "TextColor" in vobj.PropertiesList: + vobj.TextColor = self.form.TextColor.property("color").rgb()<<8 + if "ArrowType" in vobj.PropertiesList: + vobj.ArrowType = ["Dot", "Circle", "Arrow", "Tick", "Tick-2"][self.form.ArrowStyle.currentIndex()] + if "ArrowSize" in vobj.PropertiesList: + vobj.ArrowSize = FreeCAD.Units.Quantity(self.form.ArrowSize.text()).Value + if "ShowUnit" in vobj.PropertiesList: + vobj.ShowUnit = self.form.ShowUnit.isChecked() + if "UnitOverride" in vobj.PropertiesList: + vobj.UnitOverride = self.form.UnitOverride.text() + + +FreeCADGui.addCommand('Draft_SetStyle', Draft_SetStyle()) + +## @} diff --git a/src/Mod/Draft/draftguitools/gui_snapper.py b/src/Mod/Draft/draftguitools/gui_snapper.py index c3abe8ac61..7d1233993b 100644 --- a/src/Mod/Draft/draftguitools/gui_snapper.py +++ b/src/Mod/Draft/draftguitools/gui_snapper.py @@ -75,7 +75,7 @@ class Snapper: meant to be used directly, they are all called when necessary by the general snap() function. - The Snapper lives inside FreeCADGui once the Draft module has been + The Snapper lives inside Gui once the Draft module has been loaded. """ @@ -333,6 +333,7 @@ class Snapper: fp = self.cstr(lastpoint, constrain, point) if self.trackLine and lastpoint and (not noTracker): self.trackLine.p2(fp) + self.trackLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.trackLine.on() # Set the arch point tracking if lastpoint: @@ -475,6 +476,7 @@ class Snapper: self.running = False if self.trackLine and lastpoint: self.trackLine.p2(self.spoint) + self.trackLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.trackLine.on() return self.spoint @@ -512,6 +514,7 @@ class Snapper: fp = self.cstr(lastpoint, constrain, winner[2]) if self.trackLine and lastpoint: self.trackLine.p2(fp) + self.trackLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.trackLine.on() # set the cursor self.setCursor(winner[1]) @@ -573,6 +576,7 @@ class Snapper: if self.extLine: self.extLine.p1(tsnap[0]) self.extLine.p2(tsnap[2]) + self.extLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.extLine.on() self.setCursor(tsnap[1]) return tsnap[2], eline @@ -586,6 +590,7 @@ class Snapper: self.tracker.on() if self.extLine: self.extLine.p2(tsnap[2]) + self.extLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.extLine.on() self.setCursor(tsnap[1]) return tsnap[2], eline @@ -599,6 +604,7 @@ class Snapper: self.tracker.on() if self.extLine: self.extLine.p2(tsnap[2]) + self.extLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.extLine.on() self.setCursor(tsnap[1]) return tsnap[2], eline @@ -640,6 +646,7 @@ class Snapper: else: self.extLine.p1(p0) self.extLine.p2(np) + self.extLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.extLine.on() self.setCursor('extension') ne = Part.LineSegment(p0,np).toShape() @@ -699,6 +706,7 @@ class Snapper: self.extLine2.p1(p0) self.extLine2.p2(p) self.extLine.p2(p) + self.extLine.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.extLine2.on() return p return None @@ -1651,7 +1659,7 @@ class Snapper: def setTrackers(self): """Set the trackers.""" v = Draft.get3DView() - if v != self.activeview: + if v and (v != self.activeview): if v in self.trackers[0]: i = self.trackers[0].index(v) self.grid = self.trackers[1][i] @@ -1705,6 +1713,7 @@ class Snapper: if self.spoint and self.spoint not in self.holdPoints: if self.holdTracker: self.holdTracker.addCoords(self.spoint) + self.holdTracker.color.rgb = Gui.draftToolBar.getDefaultColor("line") self.holdTracker.on() self.holdPoints.append(self.spoint) diff --git a/src/Mod/Draft/draftguitools/gui_trackers.py b/src/Mod/Draft/draftguitools/gui_trackers.py index 8a8be445dd..47c22adb11 100644 --- a/src/Mod/Draft/draftguitools/gui_trackers.py +++ b/src/Mod/Draft/draftguitools/gui_trackers.py @@ -60,8 +60,8 @@ class Tracker: global Part, DraftGeomUtils import Part, DraftGeomUtils self.ontop = ontop - color = coin.SoBaseColor() - color.rgb = scolor or FreeCADGui.draftToolBar.getDefaultColor("ui") + self.color = coin.SoBaseColor() + self.color.rgb = scolor or FreeCADGui.draftToolBar.getDefaultColor("line") drawstyle = coin.SoDrawStyle() if swidth: drawstyle.lineWidth = swidth @@ -70,7 +70,7 @@ class Tracker: drawstyle.lineWeight = 3 drawstyle.linePattern = 0x0f0f # 0xaa node = coin.SoSeparator() - for c in [drawstyle, color] + children: + for c in [drawstyle, self.color] + children: node.addChild(c) self.switch = coin.SoSwitch() # this is the on/off switch if name: @@ -959,18 +959,31 @@ class gridTracker(Tracker): """A grid tracker.""" def __init__(self): - GRID_TRANSPARENCY = 0 + + gtrans = Draft.getParam("gridTransparency",0) col = self.getGridColor() + if Draft.getParam("coloredGridAxes",True): + red = ((1.0+col[0])/2,0.0,0.0) + green = (0.0,(1.0+col[1])/2,0.0) + blue = (0.0,0.0,(1.0+col[2])/2) + else: + red = col + green = col + blue = col pick = coin.SoPickStyle() pick.style.setValue(coin.SoPickStyle.UNPICKABLE) self.trans = coin.SoTransform() self.trans.translation.setValue([0, 0, 0]) + + # small squares mat1 = coin.SoMaterial() - mat1.transparency.setValue(0.7*(1-GRID_TRANSPARENCY)) + mat1.transparency.setValue(0.7*(1-gtrans)) mat1.diffuseColor.setValue(col) self.font = coin.SoFont() self.coords1 = coin.SoCoordinate3() - self.lines1 = coin.SoLineSet() + self.lines1 = coin.SoLineSet() # small squares + + # texts texts = coin.SoSeparator() t1 = coin.SoSeparator() self.textpos1 = coin.SoTransform() @@ -988,16 +1001,25 @@ class gridTracker(Tracker): texts.addChild(self.font) texts.addChild(t1) texts.addChild(t2) + + # big squares mat2 = coin.SoMaterial() - mat2.transparency.setValue(0.3*(1-GRID_TRANSPARENCY)) + mat2.transparency.setValue(0.3*(1-gtrans)) mat2.diffuseColor.setValue(col) self.coords2 = coin.SoCoordinate3() - self.lines2 = coin.SoLineSet() + self.lines2 = coin.SoLineSet() # big squares + + # axes mat3 = coin.SoMaterial() - mat3.transparency.setValue(GRID_TRANSPARENCY) - mat3.diffuseColor.setValue(col) + mat3.transparency.setValue(gtrans) + mat3.diffuseColor.setValues([col,red,green,blue]) self.coords3 = coin.SoCoordinate3() - self.lines3 = coin.SoLineSet() + self.lines3 = coin.SoIndexedLineSet() # axes + self.lines3.coordIndex.setValues(0,5,[0,1,-1,2,3]) + self.lines3.materialIndex.setValues(0,2,[0,0]) + mbind3 = coin.SoMaterialBinding() + mbind3.value = coin.SoMaterialBinding.PER_PART_INDEXED + self.pts = [] s = coin.SoSeparator() s.addChild(pick) @@ -1008,6 +1030,7 @@ class gridTracker(Tracker): s.addChild(mat2) s.addChild(self.coords2) s.addChild(self.lines2) + s.addChild(mbind3) s.addChild(mat3) s.addChild(self.coords3) s.addChild(self.lines3) @@ -1055,17 +1078,17 @@ class gridTracker(Tracker): if pts != self.pts: idx = [] midx = [] - aidx = [] + #aidx = [] cidx = [] for p in range(0, len(pts), 2): idx.append(2) for mp in range(0, len(mpts), 2): midx.append(2) - for ap in range(0, len(apts), 2): - aidx.append(2) + #for ap in range(0, len(apts), 2): + # aidx.append(2) for cp in range(0, len(cpts),2): cidx.append(2) - + if Draft.getParam("gridBorder", True): # extra border border = (numlines//2 + self.mainlines/2) * self.space @@ -1096,17 +1119,37 @@ class gridTracker(Tracker): else: self.text1.string = " " self.text2.string = " " - + self.lines1.numVertices.deleteValues(0) self.lines2.numVertices.deleteValues(0) - self.lines3.numVertices.deleteValues(0) + #self.lines3.numVertices.deleteValues(0) self.coords1.point.setValues(pts) self.lines1.numVertices.setValues(idx) self.coords2.point.setValues(mpts) self.lines2.numVertices.setValues(midx) self.coords3.point.setValues(apts) - self.lines3.numVertices.setValues(aidx) + #self.lines3.numVertices.setValues(aidx) self.pts = pts + self.setAxesColor() + + def setAxesColor(self): + """set axes color""" + cols = [0,0] + if Draft.getParam("coloredGridAxes",True) and hasattr(FreeCAD,"DraftWorkingPlane"): + wp = FreeCAD.DraftWorkingPlane + if round(wp.u.getAngle(FreeCAD.Vector(1,0,0)),2) in (0,3.14): + cols[0] = 1 + elif round(wp.u.getAngle(FreeCAD.Vector(0,1,0)),2) in (0,3.14): + cols[0] = 2 + elif round(wp.u.getAngle(FreeCAD.Vector(0,0,1)),2) in (0,3.14): + cols[0] = 3 + if round(wp.v.getAngle(FreeCAD.Vector(1,0,0)),2) in (0,3.14): + cols[1] = 1 + elif round(wp.v.getAngle(FreeCAD.Vector(0,1,0)),2) in (0,3.14): + cols[1] = 2 + elif round(wp.v.getAngle(FreeCAD.Vector(0,0,1)),2) in (0,3.14): + cols[1] = 3 + self.lines3.materialIndex.setValues(0,2,cols) def setSize(self, size): """Set size of the lines and update.""" @@ -1137,6 +1180,7 @@ class gridTracker(Tracker): P = FreeCAD.DraftWorkingPlane.position self.trans.rotation.setValue([Q[0], Q[1], Q[2], Q[3]]) self.trans.translation.setValue([P.x, P.y, P.z]) + self.setAxesColor() self.on() def getClosestNode(self, point): @@ -1264,10 +1308,9 @@ class radiusTracker(Tracker): class archDimTracker(Tracker): """A wrapper around a Sketcher dim.""" - def __init__(self, - p1=FreeCAD.Vector(0, 0, 0), - p2=FreeCAD.Vector(1, 0, 0), mode=1): + def __init__(self, p1=FreeCAD.Vector(0, 0, 0), p2=FreeCAD.Vector(1, 0, 0), mode=1): import SketcherGui + self.transform = coin.SoMatrixTransform() self.dimnode = coin.SoType.fromName("SoDatumLabel").createInstance() p1node = coin.SbVec3f([p1.x, p1.y, p1.z]) p2node = coin.SbVec3f([p2.x, p2.y, p2.z]) @@ -1275,24 +1318,52 @@ class archDimTracker(Tracker): self.dimnode.lineWidth = 1 color = FreeCADGui.draftToolBar.getDefaultColor("snap") self.dimnode.textColor.setValue(coin.SbVec3f(color)) - self.setString() + self.dimnode.size = 11 + self.size_pixel = self.dimnode.size.getValue()*96/72 + self.offset = 0.5 + self.mode = mode + self.matrix = self.transform.matrix + self.norm = self.dimnode.norm + self.param1 = self.dimnode.param1 + self.param2 = self.dimnode.param2 + self.pnts = self.dimnode.pnts + self.string = self.dimnode.string + self.view = Draft.get3DView() + self.camera = self.view.getCameraNode() + self.plane = FreeCAD.DraftWorkingPlane self.setMode(mode) - Tracker.__init__(self, children=[self.dimnode], name="archDimTracker") + self.setString() + Tracker.__init__(self, children=[self.transform, self.dimnode], name="archDimTracker") def setString(self, text=None): """Set the dim string to the given value or auto value.""" - self.dimnode.param1.setValue(.5) - p1 = Vector(self.dimnode.pnts.getValues()[0].getValue()) - p2 = Vector(self.dimnode.pnts.getValues()[-1].getValue()) - m = self.dimnode.datumtype.getValue() - if m == 2: - self.Distance = (DraftVecUtils.project(p2.sub(p1), Vector(1, 0, 0))).Length - elif m == 3: - self.Distance = (DraftVecUtils.project(p2.sub(p1), Vector(0, 1, 0))).Length + p1 = Vector(self.pnts.getValues()[0].getValue()) + p2 = Vector(self.pnts.getValues()[-1].getValue()) + self.norm.setValue(self.plane.getNormal()) + # set the offset sign to prevent the dim line from intersecting the curve near the cursor + sign_dx = math.copysign(1, (p2.sub(p1)).x) + sign_dy = math.copysign(1, (p2.sub(p1)).y) + sign = sign_dx*sign_dy + if self.mode == 2: + self.Distance = abs((p2.sub(p1)).x) + self.param1.setValue(sign*self.offset) + elif self.mode == 3: + self.Distance = abs((p2.sub(p1)).y) + self.param1.setValue(-1*sign*self.offset) else: self.Distance = (p2.sub(p1)).Length + text = FreeCAD.Units.Quantity(self.Distance, FreeCAD.Units.Length).UserString - self.dimnode.string.setValue(text.encode('utf8')) + self.matrix.setValue(*self.plane.getPlacement().Matrix.transposed().A) + self.string.setValue(text.encode('utf8')) + # change the text position to external depending on the distance and scale values + volume = self.camera.getViewVolume() + scale = self.view.getSize()[1]/volume.getHeight() + if scale*self.Distance > self.size_pixel*len(text): + self.param2.setValue(0) + else: + self.param2.setValue(1/2*self.Distance + 3/5*self.size_pixel*len(text)/scale) + def setMode(self, mode=1): """Set the mode. @@ -1307,17 +1378,23 @@ class archDimTracker(Tracker): def p1(self, point=None): """Set or get the first point of the dim.""" if point: - self.dimnode.pnts.set1Value(0, point.x, point.y, point.z) + p1_proj = self.plane.projectPoint(point) + p1_proj_u = (p1_proj - self.plane.position).dot(self.plane.u.normalize()) + p1_proj_v = (p1_proj - self.plane.position).dot(self.plane.v.normalize()) + self.pnts.set1Value(0, p1_proj_u, p1_proj_v, 0) self.setString() else: - return Vector(self.dimnode.pnts.getValues()[0].getValue()) + return Vector(self.pnts.getValues()[0].getValue()) def p2(self, point=None): """Set or get the second point of the dim.""" if point: - self.dimnode.pnts.set1Value(1, point.x, point.y, point.z) + p2_proj = self.plane.projectPoint(point) + p2_proj_u = (p2_proj - self.plane.position).dot(self.plane.u.normalize()) + p2_proj_v = (p2_proj - self.plane.position).dot(self.plane.v.normalize()) + self.pnts.set1Value(1, p2_proj_u, p2_proj_v, 0) self.setString() else: - return Vector(self.dimnode.pnts.getValues()[-1].getValue()) + return Vector(self.pnts.getValues()[-1].getValue()) ## @} diff --git a/src/Mod/Draft/draftmake/make_patharray.py b/src/Mod/Draft/draftmake/make_patharray.py index e611a435cc..bd23218a8f 100644 --- a/src/Mod/Draft/draftmake/make_patharray.py +++ b/src/Mod/Draft/draftmake/make_patharray.py @@ -1,7 +1,7 @@ # *************************************************************************** # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * -# * Copyright (c) 2013 Wandererfan * +# * Copyright (c) 2013 WandererFan * # * Copyright (c) 2019 Zheng, Lei (realthunder)* # * Copyright (c) 2020 Carlo Pavan * # * Copyright (c) 2020 Eliud Cabrera Castillo * diff --git a/src/Mod/Draft/draftmake/make_point.py b/src/Mod/Draft/draftmake/make_point.py index 2324a36b75..a690e5920b 100644 --- a/src/Mod/Draft/draftmake/make_point.py +++ b/src/Mod/Draft/draftmake/make_point.py @@ -84,7 +84,7 @@ def make_point(X=0, Y=0, Z=0, color=None, name = "Point", point_size= 5): if App.GuiUp: ViewProviderPoint(obj.ViewObject) if hasattr(Gui,"draftToolBar") and (not color): - color = Gui.draftToolBar.getDefaultColor('ui') + color = Gui.draftToolBar.getDefaultColor('line') obj.ViewObject.PointColor = (float(color[0]), float(color[1]), float(color[2])) obj.ViewObject.PointSize = point_size obj.ViewObject.Visibility = True diff --git a/src/Mod/Draft/draftobjects/patharray.py b/src/Mod/Draft/draftobjects/patharray.py index 58e72e0245..59b1e0a438 100644 --- a/src/Mod/Draft/draftobjects/patharray.py +++ b/src/Mod/Draft/draftobjects/patharray.py @@ -1,7 +1,7 @@ # *************************************************************************** # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * -# * Copyright (c) 2013 Wandererfan * +# * Copyright (c) 2013 WandererFan * # * Copyright (c) 2019 Zheng, Lei (realthunder)* # * Copyright (c) 2020 Carlo Pavan * # * Copyright (c) 2020 Eliud Cabrera Castillo * diff --git a/src/Mod/Draft/drafttaskpanels/task_scale.py b/src/Mod/Draft/drafttaskpanels/task_scale.py index 7d6e93b289..a19c75fc7e 100644 --- a/src/Mod/Draft/drafttaskpanels/task_scale.py +++ b/src/Mod/Draft/drafttaskpanels/task_scale.py @@ -53,21 +53,21 @@ class ScaleTaskPanel: layout.addWidget(self.xLabel, 0, 0, 1, 1) self.xValue = QtGui.QDoubleSpinBox() self.xValue.setRange(0.0000001, 1000000.0) - self.xValue.setDecimals(Draft.getParam("precision")) + self.xValue.setDecimals(Draft.precision()) self.xValue.setValue(1) layout.addWidget(self.xValue,0,1,1,1) self.yLabel = QtGui.QLabel() layout.addWidget(self.yLabel,1,0,1,1) self.yValue = QtGui.QDoubleSpinBox() self.yValue.setRange(.0000001,1000000.0) - self.yValue.setDecimals(Draft.getParam("precision")) + self.yValue.setDecimals(Draft.precision()) self.yValue.setValue(1) layout.addWidget(self.yValue,1,1,1,1) self.zLabel = QtGui.QLabel() layout.addWidget(self.zLabel,2,0,1,1) self.zValue = QtGui.QDoubleSpinBox() self.zValue.setRange(.0000001,1000000.0) - self.zValue.setDecimals(Draft.getParam("precision")) + self.zValue.setDecimals(Draft.precision()) self.zValue.setValue(1) layout.addWidget(self.zValue,2,1,1,1) self.lock = QtGui.QCheckBox() diff --git a/src/Mod/Draft/drafttests/test_modification.py b/src/Mod/Draft/drafttests/test_modification.py index 97fcee07f7..4d5d621fcc 100644 --- a/src/Mod/Draft/drafttests/test_modification.py +++ b/src/Mod/Draft/drafttests/test_modification.py @@ -232,7 +232,7 @@ class DraftModification(unittest.TestCase): self.assertTrue(obj, "'{}' failed".format(operation)) def test_upgrade(self): - """Upgrade two Draft Lines into a closed Draft Wire.""" + """Upgrade two Lines into a closed Wire, then draftify it.""" operation = "Draft Upgrade" _msg(" Test '{}'".format(operation)) a = Vector(0, 0, 0) @@ -242,8 +242,12 @@ class DraftModification(unittest.TestCase): _msg(" a={0}, b={1}".format(a, b)) _msg(" Line 2") _msg(" b={0}, c={1}".format(b, c)) - line_1 = Draft.make_line(a, b) - line_2 = Draft.make_line(b, c) + shape_line_1 = Part.makeLine(a, b) + shape_line_2 = Part.makeLine(b, c) + line_1 = App.ActiveDocument.addObject("Part::Feature") + line_2 = App.ActiveDocument.addObject("Part::Feature") + line_1.Shape = shape_line_1 + line_2.Shape = shape_line_2 App.ActiveDocument.recompute() obj = Draft.upgrade([line_1, line_2], delete=True) @@ -255,8 +259,7 @@ class DraftModification(unittest.TestCase): obj2 = Draft.upgrade(obj[0], delete=True) App.ActiveDocument.recompute() s2 = obj2[0][0] - _msg(" 2: Result '{0}' ({1})".format(s2.Shape.ShapeType, - s2.TypeId)) + _msg(" 2: Result '{0}' ({1})".format(s2.Shape.ShapeType, s2.TypeId)) self.assertTrue(bool(obj2[0]), "'{}' failed".format(operation)) obj3 = Draft.upgrade(obj2[0], delete=True) @@ -265,10 +268,15 @@ class DraftModification(unittest.TestCase): _msg(" 3: Result '{0}' ({1})".format(s3.Shape.ShapeType, s3.TypeId)) self.assertTrue(bool(obj3[0]), "'{}' failed".format(operation)) - obj4 = Draft.upgrade(obj3[0], delete=True) + # when draftify, upgrade dont return a new object + Draft.upgrade(obj3[0], delete=True) App.ActiveDocument.recompute() wire = App.ActiveDocument.Wire _msg(" 4: Result '{0}' ({1})".format(wire.Proxy.Type, wire.TypeId)) + self.assertTrue(bool(wire), "'{}' failed".format(operation)) + + obj4 = Draft.upgrade(wire, delete=True) + App.ActiveDocument.recompute() _msg(" The last object cannot be upgraded further") self.assertFalse(bool(obj4[0]), "'{}' failed".format(operation)) diff --git a/src/Mod/Draft/draftutils/gui_utils.py b/src/Mod/Draft/draftutils/gui_utils.py index 1e5fdfbfef..a28071c2ba 100644 --- a/src/Mod/Draft/draftutils/gui_utils.py +++ b/src/Mod/Draft/draftutils/gui_utils.py @@ -65,14 +65,15 @@ def get_3d_view(): Return `None` if the graphical interface is not available. """ if App.GuiUp: - v = Gui.ActiveDocument.ActiveView - if "View3DInventor" in str(type(v)): - return v + if Gui.ActiveDocument: + v = Gui.ActiveDocument.ActiveView + if "View3DInventor" in str(type(v)): + return v - # print("Debug: Draft: Warning, not working in active view") - v = Gui.ActiveDocument.mdiViewsOfType("Gui::View3DInventor") - if v: - return v[0] + # print("Debug: Draft: Warning, not working in active view") + v = Gui.ActiveDocument.mdiViewsOfType("Gui::View3DInventor") + if v: + return v[0] _wrn(_tr("No graphical interface")) return None @@ -100,17 +101,17 @@ def autogroup(obj): obj: App::DocumentObject Any type of object that will be stored in the group. """ - + # check for required conditions for autogroup to work if not App.GuiUp: return if not hasattr(Gui,"draftToolBar"): return if not hasattr(Gui.draftToolBar,"autogroup"): - return + return if Gui.draftToolBar.isConstructionMode(): return - + # autogroup code if Gui.draftToolBar.autogroup is not None: active_group = App.ActiveDocument.getObject(Gui.draftToolBar.autogroup) @@ -123,13 +124,13 @@ def autogroup(obj): gr = active_group.Group gr.append(obj) active_group.Group = gr - + else: if Gui.ActiveDocument.ActiveView.getActiveObject("Arch"): # add object to active Arch Container Gui.ActiveDocument.ActiveView.getActiveObject("Arch").addObject(obj) - + elif Gui.ActiveDocument.ActiveView.getActiveObject("part", False) is not None: # add object to active part and change it's placement accordingly # so object does not jump to different position, works with App::Link @@ -350,7 +351,9 @@ def format_object(target, origin=None): if ui: doc = App.ActiveDocument if ui.isConstructionMode(): - col = fcol = ui.getDefaultColor("constr") + lcol = fcol = ui.getDefaultColor("constr") + tcol = lcol + fcol = lcol grp = doc.getObject("Draft_Construction") if not grp: grp = doc.addObject("App::DocumentObjectGroup", "Draft_Construction") @@ -359,25 +362,27 @@ def format_object(target, origin=None): if hasattr(obrep, "Transparency"): obrep.Transparency = 80 else: - col = ui.getDefaultColor("ui") + lcol = ui.getDefaultColor("line") + tcol = ui.getDefaultColor("text") fcol = ui.getDefaultColor("face") - col = (float(col[0]), float(col[1]), float(col[2]), 0.0) + lcol = (float(lcol[0]), float(lcol[1]), float(lcol[2]), 0.0) + tcol = (float(tcol[0]), float(tcol[1]), float(tcol[2]), 0.0) fcol = (float(fcol[0]), float(fcol[1]), float(fcol[2]), 0.0) - lw = ui.linewidth - fs = ui.fontsize + lw = utils.getParam("linewidth",2) + fs = utils.getParam("textheight",0.20) if not origin or not hasattr(origin, 'ViewObject'): if "FontSize" in obrep.PropertiesList: obrep.FontSize = fs if "TextSize" in obrep.PropertiesList: obrep.TextSize = fs if "TextColor" in obrep.PropertiesList: - obrep.TextColor = col + obrep.TextColor = tcol if "LineWidth" in obrep.PropertiesList: obrep.LineWidth = lw if "PointColor" in obrep.PropertiesList: - obrep.PointColor = col + obrep.PointColor = lcol if "LineColor" in obrep.PropertiesList: - obrep.LineColor = col + obrep.LineColor = lcol if "ShapeColor" in obrep.PropertiesList: obrep.ShapeColor = fcol else: diff --git a/src/Mod/Draft/draftutils/init_draft_statusbar.py b/src/Mod/Draft/draftutils/init_draft_statusbar.py index 6ef020598a..02dead1a71 100644 --- a/src/Mod/Draft/draftutils/init_draft_statusbar.py +++ b/src/Mod/Draft/draftutils/init_draft_statusbar.py @@ -1,5 +1,4 @@ # *************************************************************************** -# * * # * Copyright (c) 2020 Carlo Pavan * # * * # * This file is part of the FreeCAD CAx development system. * @@ -45,31 +44,31 @@ from draftutils.init_tools import get_draft_snap_commands # SCALE WIDGET FUNCTIONS #---------------------------------------------------------------------------- -draft_scales_metrics = ["1:1000", "1:500", "1:250", "1:200", "1:100", +draft_scales_metrics = ["1:1000", "1:500", "1:250", "1:200", "1:100", "1:50", "1:25","1:20", "1:10", "1:5","1:2", "1:1", - "2:1", "5:1", "10:1", "20:1", - QT_TRANSLATE_NOOP("draft","custom"), + "2:1", "5:1", "10:1", "20:1", + QT_TRANSLATE_NOOP("draft","custom"), ] draft_scales_arch_imperial = ["1/16in=1ft", "3/32in=1ft", "1/8in=1ft", - "3/16in=1ft", "1/4in=1ft","3/8in=1ft", - "1/2in=1ft", "3/4in=1ft", "1in=1ft", - "1.5in=1ft", "3in=1ft", + "3/16in=1ft", "1/4in=1ft","3/8in=1ft", + "1/2in=1ft", "3/4in=1ft", "1in=1ft", + "1.5in=1ft", "3in=1ft", QT_TRANSLATE_NOOP("draft","custom"), ] draft_scales_eng_imperial = ["1in=10ft", "1in=20ft", "1in=30ft", - "1in=40ft", "1in=50ft", "1in=60ft", - "1in=70ft", "1in=80ft", "1in=90ft", - "1in=100ft", + "1in=40ft", "1in=50ft", "1in=60ft", + "1in=70ft", "1in=80ft", "1in=90ft", + "1in=100ft", QT_TRANSLATE_NOOP("draft","custom"), ] def get_scales(unit_system = 0): """ returns the list of preset scales accordin to unit system. - + Parameters: unit_system = 0 : default from user preferences 1 : metrics @@ -106,7 +105,7 @@ def scale_to_label(scale): return label else: return str(scale) - + def label_to_scale(label): """ transform a scale string into scale factor as float @@ -140,7 +139,7 @@ def _set_scale(action): """ # set the label of the scale button param = App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") - + mw = Gui.getMainWindow() sb = mw.statusBar() scale_widget = sb.findChild(QtGui.QToolBar,"draft_status_scale_widget") @@ -179,12 +178,12 @@ def init_draft_statusbar_scale(): sb = mw.statusBar() if sb is None: return - else: + else: return scale_widget = QtGui.QToolBar() scale_widget.setObjectName("draft_status_scale_widget") - + # get scales list according to system units draft_scales = get_scales() @@ -210,7 +209,7 @@ def init_draft_statusbar_scale(): scaleLabel.setToolTip(QT_TRANSLATE_NOOP("draft",tooltip)) scale_widget.addWidget(scaleLabel) scale_widget.scaleLabel = scaleLabel - + # add scale widget to the statusbar sb.insertPermanentWidget(3, scale_widget) scale_widget.show() @@ -227,15 +226,15 @@ def init_draft_statusbar_snap(): sb = mw.statusBar() if sb is None: return - else: + else: return - + # SNAP WIDGET - init ---------------------------------------------------- - + snap_widget = QtGui.QToolBar() snap_widget.setObjectName("draft_snap_widget") snap_widget.setIconSize(QtCore.QSize(16,16)) - + # GRID BUTTON - init gridbutton = QtGui.QPushButton(snap_widget) gridbutton.setIcon(QtGui.QIcon.fromTheme("Draft", @@ -247,7 +246,7 @@ def init_draft_statusbar_snap(): gridbutton.setWhatsThis("Draft_ToggleGrid") gridbutton.setFlat(True) QtCore.QObject.connect(gridbutton,QtCore.SIGNAL("clicked()"), - lambda f=Gui.doCommand, + lambda f=Gui.doCommand, arg='Gui.runCommand("Draft_ToggleGrid")':f(arg)) snap_widget.addWidget(gridbutton) @@ -267,7 +266,7 @@ def init_draft_statusbar_snap(): snaps_menu = QtGui.QMenu(snapbutton) snaps_menu.setObjectName("draft_statusbar_snap_toolbar") - + snap_gui_commands = get_draft_snap_commands() if 'Draft_Snap_Ortho' in snap_gui_commands: snap_gui_commands.remove('Draft_Snap_Ortho') @@ -299,7 +298,7 @@ def init_draft_statusbar_snap(): dimbutton.setCheckable(True) dimbutton.setChecked(bool(int(dimpref))) QtCore.QObject.connect(dimbutton,QtCore.SIGNAL("clicked()"), - lambda f=Gui.doCommand, + lambda f=Gui.doCommand, arg='Gui.runCommand("Draft_Snap_Dimensions")':f(arg)) snap_widget.addWidget(dimbutton) @@ -317,7 +316,7 @@ def init_draft_statusbar_snap(): orthobutton.setCheckable(True) orthobutton.setChecked(bool(int(ortopref))) QtCore.QObject.connect(orthobutton,QtCore.SIGNAL("clicked()"), - lambda f=Gui.doCommand, + lambda f=Gui.doCommand, arg='Gui.runCommand("Draft_Snap_Ortho")':f(arg)) snap_widget.addWidget(orthobutton) @@ -335,7 +334,7 @@ def init_draft_statusbar_snap(): wpbutton.setCheckable(True) wpbutton.setChecked(bool(int(wppref))) QtCore.QObject.connect(wpbutton,QtCore.SIGNAL("clicked()"), - lambda f=Gui.doCommand, + lambda f=Gui.doCommand, arg='Gui.runCommand("Draft_Snap_WorkingPlane")':f(arg)) snap_widget.addWidget(wpbutton) @@ -343,7 +342,7 @@ def init_draft_statusbar_snap(): sb.insertPermanentWidget(2, snap_widget) snap_widget.show() - + def show_draft_statusbar(): """ shows draft statusbar if present or initializes it @@ -371,7 +370,7 @@ def show_draft_statusbar(): elif params.GetBool("DisplayStatusbarScaleWidget", True): t = QtCore.QTimer() t.singleShot(500, init_draft_statusbar_scale) - + snap_widget = sb.findChild(QtGui.QToolBar,"draft_snap_widget") if snap_widget: snap_widget.show() @@ -393,7 +392,7 @@ def hide_draft_statusbar(): if not mw: return sb = mw.statusBar() - + # hide scale widget scale_widget = sb.findChild(QtGui.QToolBar, "draft_status_scale_widget") @@ -406,7 +405,7 @@ def hide_draft_statusbar(): "draft_status_scale_widget") if scale_widget: scale_widget.hide() - + # hide snap widget snap_widget = sb.findChild(QtGui.QToolBar,"draft_snap_widget") if snap_widget: diff --git a/src/Mod/Draft/draftutils/init_tools.py b/src/Mod/Draft/draftutils/init_tools.py index 12b24b28a5..6e24722e0e 100644 --- a/src/Mod/Draft/draftutils/init_tools.py +++ b/src/Mod/Draft/draftutils/init_tools.py @@ -97,7 +97,8 @@ def get_draft_context_commands(): return ["Draft_ApplyStyle", "Draft_ToggleDisplayMode", "Draft_AddToGroup", "Draft_SelectGroup", "Draft_SelectPlane", "Draft_ShowSnapBar", - "Draft_ToggleGrid", "Draft_AutoGroup"] + "Draft_ToggleGrid", "Draft_AutoGroup", + "Draft_SetStyle"] def get_draft_line_commands(): diff --git a/src/Mod/Draft/draftutils/utils.py b/src/Mod/Draft/draftutils/utils.py index dcfe34df5d..9c5879a610 100644 --- a/src/Mod/Draft/draftutils/utils.py +++ b/src/Mod/Draft/draftutils/utils.py @@ -167,7 +167,7 @@ def get_param_type(param): "precision", "defaultWP", "snapRange", "gridEvery", "linewidth", "UiMode", "modconstrain", "modsnap", "maxSnapEdges", "modalt", "HatchPatternResolution", - "snapStyle", "dimstyle", "gridSize"): + "snapStyle", "dimstyle", "gridSize","gridTransparency"): return "int" elif param in ("constructiongroupname", "textfont", "patternFile", "template", "snapModes", @@ -183,7 +183,7 @@ def get_param_type(param): "SvgLinesBlack", "dxfStdSize", "showSnapBar", "hideSnapBar", "alwaysShowGrid", "renderPolylineWidth", "showPlaneTracker", "UsePartPrimitives", - "DiscretizeEllipses", "showUnit", + "DiscretizeEllipses", "showUnit","coloredGridAxes", "Draft_array_fuse", "Draft_array_Link", "gridBorder"): return "bool" elif param in ("color", "constructioncolor", diff --git a/src/Mod/Draft/draftviewproviders/view_dimension.py b/src/Mod/Draft/draftviewproviders/view_dimension.py index b1ea97e335..e3aa9bbedf 100644 --- a/src/Mod/Draft/draftviewproviders/view_dimension.py +++ b/src/Mod/Draft/draftviewproviders/view_dimension.py @@ -597,7 +597,7 @@ class ViewProviderLinearDimension(ViewProviderDimensionBase): rott = rot1 if hasattr(vobj, "FlipText") and vobj.FlipText: _rott = App.Rotation(rott[0], rott[1], rott[2], rott[3]) - rott = _rott.multiply(App.Rotation(norm, 180)).Q + rott = _rott.multiply(App.Rotation(App.Vector(0, 0, 1), 180)).Q offset = offset.negative() # On first run the `DisplayMode` enumeration is not set, so we trap diff --git a/src/Mod/Draft/importAirfoilDAT.py b/src/Mod/Draft/importAirfoilDAT.py index 4b19e34ab7..e496667a4c 100644 --- a/src/Mod/Draft/importAirfoilDAT.py +++ b/src/Mod/Draft/importAirfoilDAT.py @@ -157,9 +157,9 @@ def process(doc, filename): with the parsed information. """ # Regex to identify data rows and throw away unused metadata - xval = '(?P(\-|\d*)\.\d+(E\-?\d+)?)' - yval = '(?P\-?\s*\d*\.\d+(E\-?\d+)?)' - _regex = '^\s*' + xval + '\,?\s*' + yval + '\s*$' + xval = r'(?P(\-|\d*)\.*\d*([Ee]\-?\d+)?)' + yval = r'(?P\-?\s*\d*\.*\d*([Ee]\-?\d+)?)' + _regex = r'^\s*' + xval + r'\,?\s*' + yval + r'\s*$' regex = re.compile(_regex) afile = pythonopen(filename, 'r') diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_af.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_af.qm index 4254487bb6..41a381b955 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_af.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_af.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ar.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ar.qm index 7fc857c66a..387bc1317a 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ar.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ar.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ca.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ca.qm index aee31cc01b..ae5f4e70ca 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ca.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ca.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_cs.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_cs.qm index 7e049d5f23..a012b68f71 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_cs.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_cs.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm index 4826dfa9d7..b3e5d9b5b4 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_de.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_el.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_el.qm index 1aa8e6c03c..570e2589de 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_el.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_el.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_es-ES.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_es-ES.qm index cd214b733e..4af2c46b0a 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_es-ES.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_es-ES.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_eu.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_eu.qm index 169a9cb8c2..bce1668dd3 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_eu.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_eu.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fi.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fi.qm index c2f1f293f9..ecf7be45b7 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fi.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fi.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fil.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fil.qm index 4c71a503ae..5084c62fc9 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fil.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fil.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fr.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fr.qm index 904bb75f10..f648e6513c 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_fr.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_fr.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_gl.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_gl.qm index 53c238ee2c..23d5fc812d 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_gl.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_gl.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_hr.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_hr.qm index 391422e7d8..01beb7f896 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_hr.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_hr.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_hu.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_hu.qm index 88b6b77267..fc06580b99 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_hu.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_hu.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_id.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_id.qm index 5d658d0998..121caae25e 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_id.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_id.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_it.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_it.qm index 9ba3bb675f..7b0a8e435a 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_it.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_it.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ja.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ja.qm index 07f4daa07a..ef17440e06 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ja.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ja.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_kab.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_kab.qm index 383607d43b..89ac6dd3ed 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_kab.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_kab.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ko.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ko.qm index 60733946e5..2abb643ca1 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ko.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ko.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_lt.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_lt.qm index 91ec2cf506..ad513ff2ae 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_lt.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_lt.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_nl.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_nl.qm index 8023d499fc..cded3aca8d 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_nl.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_nl.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_no.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_no.qm index 240887d714..01d0111d54 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_no.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_no.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.qm index c1d29c87cf..698e214710 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.ts b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.ts index 843b10c076..fddd798589 100644 --- a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.ts +++ b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pl.ts @@ -530,7 +530,7 @@ Do you want to continue? Projection - Rzut + Rzutowanie diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-BR.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-BR.qm index df728a5b3b..1677c9c8e9 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-BR.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-BR.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-PT.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-PT.qm index b931819efb..c873dc48e6 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-PT.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_pt-PT.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ro.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ro.qm index abbbda780b..8a9aa2dbc9 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ro.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ro.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ru.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ru.qm index b5c8d18647..fab9ea8643 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_ru.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_ru.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sk.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sk.qm index ce0ba62757..d291a4144f 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sk.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sk.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sl.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sl.qm index 748d0c7b1c..3679af2d2a 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sl.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sl.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sr.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sr.qm index 1964c49fbf..1caa4dc282 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sr.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sr.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sv-SE.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sv-SE.qm index 061366568f..f5e8786e2f 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_sv-SE.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_sv-SE.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.qm index 2e30f27b80..2a2d86c380 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.ts b/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.ts index 7d4f0e5cdb..5fc2788813 100644 --- a/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.ts +++ b/src/Mod/Drawing/Gui/Resources/translations/Drawing_tr.ts @@ -430,7 +430,7 @@ Devam etmek istiyor musun? Show smooth lines - Düzgünleştirilmiş çizgileri göster + Düzgün çizgileri göster @@ -652,7 +652,7 @@ Devam etmek istiyor musun? Insert new %1%2 %3 drawing - Yeni% 1% 2% 3 çizim ekle + Yeni %1%2 %3 çizim ekle @@ -662,7 +662,7 @@ Devam etmek istiyor musun? Insert new %1%2 %3 (%4) drawing - Yeni %1%2 %3 çizimi Ekle + Yeni %1%2 %3 (%4) çizim ekle diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_uk.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_uk.qm index e004421ea0..3a0937d878 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_uk.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_uk.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_val-ES.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_val-ES.qm index 440981e5bd..eff996169f 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_val-ES.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_val-ES.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_vi.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_vi.qm index 782ad445c1..cc3099d259 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_vi.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_vi.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-CN.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-CN.qm index 3fa0978048..1f4c45afce 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-CN.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-CN.qm differ diff --git a/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-TW.qm b/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-TW.qm index b3c24eceb5..2630dd585f 100644 Binary files a/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-TW.qm and b/src/Mod/Drawing/Gui/Resources/translations/Drawing_zh-TW.qm differ diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 8b336f11fc..37b6e3ae68 100644 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -150,7 +150,7 @@ void CmdFemAddPart::activated(int) std::string AnalysisName = getUniqueObjectName("FemAnalysis"); std::string MeshName = getUniqueObjectName((std::string(base->getNameInDocument()) +"_Mesh").c_str()); - openCommand("Create FEM analysis"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create FEM analysis")); doCommand(Doc,"App.activeDocument().addObject('Fem::FemAnalysis','%s')",AnalysisName.c_str()); doCommand(Doc,"App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','%s')",MeshName.c_str()); doCommand(Doc,"App.activeDocument().ActiveObject.Shape = App.activeDocument().%s",base->getNameInDocument()); @@ -217,7 +217,7 @@ void CmdFemCreateAnalysis::activated(int) std::string MeshName = getUniqueObjectName((std::string(base->getNameInDocument()) +"_Mesh").c_str()); - openCommand("Create FEM analysis"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create FEM analysis")); doCommand(Doc,"App.activeDocument().addObject('Fem::FemAnalysis','%s')",AnalysisName.c_str()); doCommand(Doc,"App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','%s')",MeshName.c_str()); doCommand(Doc,"App.activeDocument().ActiveObject.Shape = App.activeDocument().%s",base->getNameInDocument()); @@ -267,7 +267,7 @@ void CmdFemCreateSolver::activated(int) std::string FeatName = getUniqueObjectName("Solver"); - openCommand("Create solver for FEM or CFD analysis"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create solver for FEM or CFD analysis")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::FemSolverObject\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str()); updateActive(); @@ -309,7 +309,7 @@ void CmdFemConstraintBearing::activated(int) std::string FeatName = getUniqueObjectName("ConstraintBearing"); - openCommand("Make FEM constraint for bearing"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint for bearing")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintBearing\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str()); @@ -350,7 +350,7 @@ void CmdFemConstraintContact::activated(int) std::string FeatName = getUniqueObjectName("ConstraintContact"); - openCommand("Make FEM constraint contact on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint contact on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintContact\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Slope = 1000000.00",FeatName.c_str()); //OvG: set default not equal to 0 doCommand(Doc,"App.activeDocument().%s.Friction = 0.0",FeatName.c_str()); //OvG: set default not equal to 0 @@ -395,7 +395,7 @@ void CmdFemConstraintDisplacement::activated(int) std::string FeatName = getUniqueObjectName("ConstraintDisplacement"); - openCommand("Make FEM constraint displacement on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint displacement on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintDisplacement\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)", @@ -438,7 +438,7 @@ void CmdFemConstraintFixed::activated(int) std::string FeatName = getUniqueObjectName("ConstraintFixed"); - openCommand("Make FEM constraint fixed geometry"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint fixed geometry")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFixed\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str()); @@ -480,7 +480,7 @@ void CmdFemConstraintFluidBoundary::activated(int) std::string FeatName = getUniqueObjectName("ConstraintFluidBoundary"); - openCommand("Create fluid boundary condition"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create fluid boundary condition")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFluidBoundary\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 //BoundaryValue is already the default value, zero is acceptable @@ -523,7 +523,7 @@ void CmdFemConstraintForce::activated(int) std::string FeatName = getUniqueObjectName("ConstraintForce"); - openCommand("Make FEM constraint force on geometry"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint force on geometry")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintForce\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Force = 1.0",FeatName.c_str()); //OvG: set default not equal to 0 doCommand(Doc,"App.activeDocument().%s.Reversed = False",FeatName.c_str()); //OvG: set default to False @@ -566,7 +566,7 @@ void CmdFemConstraintGear::activated(int) return; std::string FeatName = getUniqueObjectName("ConstraintGear"); - openCommand("Make FEM constraint for gear"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint for gear")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintGear\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Diameter = 100.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str()); @@ -608,7 +608,7 @@ void CmdFemConstraintHeatflux::activated(int) std::string FeatName = getUniqueObjectName("ConstraintHeatflux"); - openCommand("Make FEM constraint heatflux on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint heatflux on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintHeatflux\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.AmbientTemp = 300.0",FeatName.c_str()); //OvG: set default not equal to 0 doCommand(Doc,"App.activeDocument().%s.FilmCoef = 10.0",FeatName.c_str()); //OvG: set default not equal to 0 @@ -653,7 +653,7 @@ void CmdFemConstraintInitialTemperature::activated(int) std::string FeatName = getUniqueObjectName("ConstraintInitialTemperature"); - openCommand("Make FEM constraint initial temperature on body"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint initial temperature on body")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintInitialTemperature\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)", @@ -696,7 +696,7 @@ void CmdFemConstraintPlaneRotation::activated(int) std::string FeatName = getUniqueObjectName("ConstraintPlaneRotation"); - openCommand("Make FEM constraint Plane Rotation face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint Plane Rotation face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintPlaneRotation\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str()); @@ -738,7 +738,7 @@ void CmdFemConstraintPressure::activated(int) std::string FeatName = getUniqueObjectName("ConstraintPressure"); - openCommand("Make FEM constraint pressure on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint pressure on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintPressure\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Pressure = 1000.0",FeatName.c_str()); //OvG: set default not equal to 0 doCommand(Doc,"App.activeDocument().%s.Reversed = False",FeatName.c_str()); //OvG: set default to False @@ -783,7 +783,7 @@ void CmdFemConstraintPulley::activated(int) std::string FeatName = getUniqueObjectName("ConstraintPulley"); - openCommand("Make FEM constraint for pulley"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint for pulley")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintPulley\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Diameter = 300.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.OtherDiameter = 100.0",FeatName.c_str()); @@ -829,7 +829,7 @@ void CmdFemConstraintTemperature::activated(int) std::string FeatName = getUniqueObjectName("ConstraintTemperature"); - openCommand("Make FEM constraint temperature on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint temperature on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintTemperature\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)", @@ -872,7 +872,7 @@ void CmdFemConstraintTransform::activated(int) std::string FeatName = getUniqueObjectName("ConstraintTransform"); - openCommand("Make FEM constraint transform on face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make FEM constraint transform on face")); doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintTransform\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.X_rot = 0.0",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Y_rot = 0.0",FeatName.c_str()); @@ -961,7 +961,7 @@ void DefineNodesCallback(void * ud, SoEventCallback * n) set << "]"; - Gui::Command::openCommand("Place robot"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Place robot")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject('Fem::FemSetNodesObject','NodeSet')"); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.ActiveObject.Nodes = %s",set.str().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.addObject(App.activeDocument().NodeSet)",Analysis->getNameInDocument()); @@ -970,7 +970,7 @@ void DefineNodesCallback(void * ud, SoEventCallback * n) //std::vector views = view->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); //if (!views.empty()) { - // Gui::Application::Instance->activeDocument()->openCommand("Cut"); + // Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Cut")); // for (std::vector::iterator it = views.begin(); it != views.end(); ++it) { // ViewProviderMesh* that = static_cast(*it); // if (that->getEditingMode() > -1) { @@ -1062,7 +1062,7 @@ void CmdFemCreateNodesSet::activated(int) if (ObjectFilter.match()) { Fem::FemSetNodesObject *NodesObj = static_cast(ObjectFilter.Result[0][0].getObject()); - openCommand("Edit nodes set"); + openCommand(QT_TRANSLATE_NOOP("Command", "Edit nodes set")); doCommand(Gui,"Gui.activeDocument().setEdit('%s')",NodesObj->getNameInDocument()); } else if (FemMeshFilter.match()) { @@ -1070,7 +1070,7 @@ void CmdFemCreateNodesSet::activated(int) std::string FeatName = getUniqueObjectName("NodesSet"); - openCommand("Create nodes set"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create nodes set")); doCommand(Doc,"App.activeDocument().addObject('Fem::FemSetNodesObject','%s')",FeatName.c_str()); doCommand(Gui,"App.activeDocument().%s.FemMesh = App.activeDocument().%s",FeatName.c_str(),MeshObj->getNameInDocument()); doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str()); @@ -1125,7 +1125,7 @@ void setupFilter(Gui::Command* cmd, std::string Name) { else { std::string FeatName = cmd->getUniqueObjectName(Name.c_str()); - cmd->openCommand("Create filter"); + cmd->openCommand(QT_TRANSLATE_NOOP("Command", "Create filter")); cmd->doCommand(Gui::Command::Doc,"App.activeDocument().addObject('Fem::FemPost%sFilter','%s')", Name.c_str(), FeatName.c_str()); cmd->doCommand(Gui::Command::Doc,"__list__ = App.ActiveDocument.%s.Filter", pipeline->getNameInDocument()); cmd->doCommand(Gui::Command::Doc,"__list__.append(App.ActiveDocument.%s)", FeatName.c_str()); @@ -1442,7 +1442,7 @@ void CmdFemPostFunctions::activated(int iMsg) if (!pipelines.empty()) { Fem::FemPostPipeline *pipeline = pipelines.front(); - openCommand("Create function"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create function")); //check if the pipeline has a filter provider and add one if needed Fem::FemPostFunctionProvider* provider; @@ -1637,7 +1637,7 @@ void CmdFemPostPipelineFromResult::activated(int) std::vector results = getSelection().getObjectsOfType(); if (results.size() == 1) { std::string FeatName = getUniqueObjectName("ResultPipeline"); - openCommand("Create pipeline from result"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create pipeline from result")); doCommand(Doc,"App.activeDocument().addObject('Fem::FemPostPipeline','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().ActiveObject.load(" "App.activeDocument().getObject(\"%s\"))", results[0]->getNameInDocument()); diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_af.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_af.qm index c115098f1d..70f2aa2ea6 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_af.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_af.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ar.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ar.qm index cedf28cef2..efb68878e1 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ar.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ar.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ca.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ca.qm index caf608f1e6..55bb2c7b85 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ca.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ca.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_cs.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_cs.qm index d0b4519a45..fe31ba58d9 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_cs.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_cs.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_de.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_de.qm index a8ee56b928..d18675b043 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_de.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_de.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_el.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_el.qm index 39537a80df..8f08d747f4 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_el.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_el.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.qm index b807fc463a..c9bf212771 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_es-ES.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_eu.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_eu.qm index ff200f765b..45d7ffdb5a 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_eu.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_eu.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_fi.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_fi.qm index ba235cf6e0..9e1cce55c3 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_fi.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_fi.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_fil.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_fil.qm index e2e1d7983d..35aadbf99b 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_fil.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_fil.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_fr.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_fr.qm index c0cf20f4ff..f8a7835103 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_fr.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_fr.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_gl.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_gl.qm index 73c944674b..8b5e81e39d 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_gl.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_gl.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_hr.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_hr.qm index 3d03c473ec..4f05e05300 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_hr.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_hr.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_hu.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_hu.qm index 240d4043c4..a2336b52b3 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_hu.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_hu.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_id.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_id.qm index a5e8c2fb58..fbe88e1406 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_id.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_id.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_it.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_it.qm index 3569d1101b..184c478678 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_it.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_it.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ja.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ja.qm index 3ce563e51c..08e4a05cb3 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ja.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ja.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_kab.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_kab.qm index ac01552f6b..7371bb14ab 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_kab.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_kab.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ko.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ko.qm index 7c5cd26c9f..9d4dc3c873 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ko.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ko.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_lt.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_lt.qm index eb6fcea152..2bace74d39 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_lt.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_lt.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_nl.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_nl.qm index 3139430caf..c79f3d6875 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_nl.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_nl.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_no.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_no.qm index 8292f9341f..62026284da 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_no.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_no.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pl.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_pl.qm index e24c96bfb0..c08bbde934 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_pl.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_pl.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.qm index bcd8aa744d..7e4eb52c3a 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-BR.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.qm index 9e4b4124fb..74ea3cb80c 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_pt-PT.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.qm index 201c325bb6..80157c1137 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts index 3d54c9234f..476f118ae6 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_ro.ts @@ -16,7 +16,7 @@ To add references: select them in the 3D view and click "Add". - To add references: select them in the 3D view and click "Add". + Pentru a adăuga referinţe selectaţi-le în "Vizualizare 3D" şi apoi faceţi clic pe "Adauga". diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_ru.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_ru.qm index 48c6534a45..c285863c32 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_ru.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_ru.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sk.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_sk.qm index 68713b3adb..38fa9dfb1d 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_sk.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_sk.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sl.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_sl.qm index 0313e6acc3..d69ef5020b 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_sl.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_sl.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sr.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_sr.qm index 1b1996e7f3..87d3ea8eb3 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_sr.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_sr.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.qm index b317d964f0..f6f398244d 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.qm differ 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 aff5ff9b06..7851b94aff 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_sv-SE.ts @@ -1285,7 +1285,7 @@ CalculiX - CalculiX + CalculiX @@ -1325,7 +1325,7 @@ Static - Static + Statisk @@ -1837,7 +1837,7 @@ Static - Static + Statisk @@ -2051,17 +2051,17 @@ Y displacement - Y displacement + Y förskjutning X displacement - X displacement + X förskjutning Z displacement - Z displacement + Z förskjutning @@ -2071,7 +2071,7 @@ Von Mises stress - Von Mises stress + Von Mises effektivspänning @@ -2359,7 +2359,7 @@ Free - Free + Fri @@ -2369,17 +2369,17 @@ Fixed - Fixed + Fixerad Displacement y - Displacement y + Förflyttning y Displacement z - Displacement z + Förflyttning z @@ -2389,17 +2389,17 @@ Rotation x - Rotation x + Rotation x Rotation y - Rotation y + Rotation y Rotation z - Rotation z + Rotation z @@ -2458,7 +2458,7 @@ Pressure - Pressure + Tryck diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.qm index 200965d650..562a3f755e 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts index acea22b361..5a5e79addc 100644 --- a/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts +++ b/src/Mod/Fem/Gui/Resources/translations/Fem_tr.ts @@ -1989,7 +1989,7 @@ Cancel - İptal et + İptal @@ -2228,7 +2228,7 @@ Center distance - Merkez uzaklığı + Merkez mesafesi @@ -2276,7 +2276,7 @@ Center distance - Merkez uzaklığı + Merkez mesafesi diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_uk.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_uk.qm index 74168566f7..031ee493c2 100755 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_uk.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_uk.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.qm index 12a38a5654..590b077aec 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_val-ES.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_vi.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_vi.qm index cdf9e108c4..70e803493d 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_vi.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_vi.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.qm index 7eb592abc3..01fe1ea118 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-CN.qm differ diff --git a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.qm b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.qm index 18cb2ffb5d..b3fc8498e3 100644 Binary files a/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.qm and b/src/Mod/Fem/Gui/Resources/translations/Fem_zh-TW.qm differ diff --git a/src/Mod/Fem/Gui/TaskFemConstraintBearing.cpp b/src/Mod/Fem/Gui/TaskFemConstraintBearing.cpp index 61b4bf5c50..17cc908b8a 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintBearing.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintBearing.cpp @@ -337,7 +337,7 @@ bool TaskDlgFemConstraintBearing::accept() const TaskFemConstraintBearing* parameterBearing = static_cast(parameter); try { - //Gui::Command::openCommand("FEM force constraint changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "FEM force constraint changed")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Dist = %f",name.c_str(), parameterBearing->getDistance()); std::string locname = parameterBearing->getLocationName().data(); diff --git a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp index c07bdca6a2..3cf01ee589 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp @@ -895,7 +895,7 @@ bool TaskDlgFemConstraintFluidBoundary::accept() // no need to backup pcConstraint object content, if rejected, content can be recovered by transaction manager try { - //Gui::Command::openCommand("Fluid boundary condition changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Fluid boundary condition changed")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.BoundaryType = '%s'", name.c_str(), boundary->getBoundaryType().c_str()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Subtype = '%s'", diff --git a/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp b/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp index ca3691ea1e..67a0530a54 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp @@ -418,7 +418,7 @@ bool TaskDlgFemConstraintForce::accept() const TaskFemConstraintForce* parameterForce = static_cast(parameter); try { - //Gui::Command::openCommand("FEM force constraint changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "FEM force constraint changed")); if (parameterForce->getForce()<=0) { diff --git a/src/Mod/Fem/Gui/TaskFemConstraintGear.cpp b/src/Mod/Fem/Gui/TaskFemConstraintGear.cpp index fb613c7345..206cb57373 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintGear.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintGear.cpp @@ -284,7 +284,7 @@ bool TaskDlgFemConstraintGear::accept() const TaskFemConstraintGear* parameterGear = static_cast(parameter); try { - //Gui::Command::openCommand("FEM force constraint changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "FEM force constraint changed")); std::string dirname = parameterGear->getDirectionName().data(); std::string dirobj = parameterGear->getDirectionObject().data(); diff --git a/src/Mod/Fem/Gui/TaskFemConstraintPulley.cpp b/src/Mod/Fem/Gui/TaskFemConstraintPulley.cpp index b8bc6d90e4..2f0604e191 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintPulley.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintPulley.cpp @@ -206,7 +206,7 @@ bool TaskDlgFemConstraintPulley::accept() const TaskFemConstraintPulley* parameterPulley = static_cast(parameter); try { - //Gui::Command::openCommand("FEM pulley constraint changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "FEM pulley constraint changed")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.OtherDiameter = %f",name.c_str(), parameterPulley->getOtherDiameter()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.CenterDistance = %f",name.c_str(), parameterPulley->getCenterDistance()); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.IsDriven = %s",name.c_str(), parameterPulley->getIsDriven() ? "True" : "False"); diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp index dda2720fa0..76959d7c79 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp @@ -233,7 +233,7 @@ std::vector ViewProviderFemPostFunction::getDisplayModes(void) cons void ViewProviderFemPostFunction::dragStartCallback(void *data, SoDragger *) { // This is called when a manipulator is about to manipulating - Gui::Application::Instance->activeDocument()->openCommand("Edit Mirror"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Edit Mirror")); reinterpret_cast(data)->m_isDragging = true; ViewProviderFemPostFunction* that = reinterpret_cast(data); diff --git a/src/Mod/Fem/Init.py b/src/Mod/Fem/Init.py index 09ee8d52d3..0230b334af 100644 --- a/src/Mod/Fem/Init.py +++ b/src/Mod/Fem/Init.py @@ -36,9 +36,9 @@ But the import code line is used anyway to get flake8 quired. Since they are cached they will not be imported twice. """ -__title__ = "FEM module App init script" +__title__ = "FEM module App init script" __author__ = "Juergen Riegel, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" # imports to get flake8 quired import sys diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 120a8d9741..b80911ea26 100644 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -36,9 +36,9 @@ But the import code line is used anyway to get flake8 quired. Since they are cached they will not be imported twice. """ -__title__ = "FEM module Gui init script" +__title__ = "FEM module Gui init script" __author__ = "Juergen Riegel, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" # imports to get flake8 quired import sys diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 9b6948a7e0..75639f29da 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Objects FEM" +__title__ = "Objects FEM" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/coding_conventions.md b/src/Mod/Fem/coding_conventions.md index 4753f28c48..a81e2c1426 100644 --- a/src/Mod/Fem/coding_conventions.md +++ b/src/Mod/Fem/coding_conventions.md @@ -37,7 +37,7 @@ These coding rules apply to FEM module code only. Other modules or the base syst ### Exceptione - Do not use bare 'except'. - Be more specific. If not possible use: -- Either use 'except Exception' or if really everything should be catched 'except BaseException' +- Either use 'except Exception' or if really everything should be caught 'except BaseException' - https://stackoverflow.com/a/18982772 - https://github.com/PyCQA/pycodestyle/issues/703 diff --git a/src/Mod/Fem/fem.dox b/src/Mod/Fem/fem.dox index de12522a69..75b425c9e2 100755 --- a/src/Mod/Fem/fem.dox +++ b/src/Mod/Fem/fem.dox @@ -1,5 +1,8 @@ /** \defgroup FEM Fem - * \ingroup PYTHONWORKBENCHES + * \ingroup PYTHONWORKBENCHES * \brief Finite Elements Analysis workbench - */ +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + + + */ diff --git a/src/Mod/Fem/femcommands/commands.py b/src/Mod/Fem/femcommands/commands.py index 7d383a794a..b1f1b6dad3 100644 --- a/src/Mod/Fem/femcommands/commands.py +++ b/src/Mod/Fem/femcommands/commands.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM command definitions" +__title__ = "FreeCAD FEM command definitions" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package commands # \ingroup FEM diff --git a/src/Mod/Fem/femcommands/manager.py b/src/Mod/Fem/femcommands/manager.py index 05ac286c40..fe585b9a97 100644 --- a/src/Mod/Fem/femcommands/manager.py +++ b/src/Mod/Fem/femcommands/manager.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM command base class" +__title__ = "FreeCAD FEM command base class" __author__ = "Przemo Firszt, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package manager # \ingroup FEM diff --git a/src/Mod/Fem/femguiutils/migrate_gui.py b/src/Mod/Fem/femguiutils/migrate_gui.py index 4ff5862cb2..1ae427f863 100644 --- a/src/Mod/Fem/femguiutils/migrate_gui.py +++ b/src/Mod/Fem/femguiutils/migrate_gui.py @@ -26,9 +26,9 @@ see module end as well as forum topic https://forum.freecadweb.org/viewtopic.php?&t=46218 """ -__title__ = "migrate gui" +__title__ = "FEM GUI that migrates old scripted objects" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" class FemMigrateGui(object): diff --git a/src/Mod/Fem/femguiutils/selection_widgets.py b/src/Mod/Fem/femguiutils/selection_widgets.py index 36ba742108..763755f568 100644 --- a/src/Mod/Fem/femguiutils/selection_widgets.py +++ b/src/Mod/Fem/femguiutils/selection_widgets.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM select widget" +__title__ = "FreeCAD FEM select widget" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package FemSelectWidget # \ingroup FEM diff --git a/src/Mod/Fem/feminout/convert2TetGen.py b/src/Mod/Fem/feminout/convert2TetGen.py index 28a0742893..7f84a8d8a0 100644 --- a/src/Mod/Fem/feminout/convert2TetGen.py +++ b/src/Mod/Fem/feminout/convert2TetGen.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD tetgen exporter" +__title__ = "FreeCAD tetgen exporter" __author__ = "Juergen Riegel" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/feminout/importCcxDatResults.py b/src/Mod/Fem/feminout/importCcxDatResults.py index 7443879e22..57414f7acd 100644 --- a/src/Mod/Fem/feminout/importCcxDatResults.py +++ b/src/Mod/Fem/feminout/importCcxDatResults.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "Result import for Calculix dat file format" +__title__ = "Result import for Calculix dat file format" __author__ = "Przemo Firszt, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importCcxDatResults # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index a66b01a6d2..f66ab0c348 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -23,9 +23,9 @@ # * * # *************************************************************************** -__title__ = "Result import for Calculix frd file format" +__title__ = "Result import for Calculix frd file format" __author__ = "Juergen Riegel , Michael Hindley, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importCcxFrdResults # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importFenicsMesh.py b/src/Mod/Fem/feminout/importFenicsMesh.py index df9421143f..c2c2832c1a 100644 --- a/src/Mod/Fem/feminout/importFenicsMesh.py +++ b/src/Mod/Fem/feminout/importFenicsMesh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Mesh import and export for Fenics mesh file format" +__title__ = "Mesh import and export for Fenics mesh file format" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importFenicsMesh # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importInpMesh.py b/src/Mod/Fem/feminout/importInpMesh.py index 31d0cb3f39..df3f639533 100644 --- a/src/Mod/Fem/feminout/importInpMesh.py +++ b/src/Mod/Fem/feminout/importInpMesh.py @@ -22,10 +22,10 @@ # * * # *************************************************************************** -__title__ = "Mesh import for Abacus/CalculiX inp file format" +__title__ = "Mesh import for Abacus/CalculiX inp file format" __author__ = "Frantisek Loeffelmann, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" -__date__ = "04/08/2016" +__url__ = "https://www.freecadweb.org" +__date__ = "04/08/2016" ## @package importInpMesh # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importPyMesh.py b/src/Mod/Fem/feminout/importPyMesh.py index a06fb003ce..5dfe460e4a 100644 --- a/src/Mod/Fem/feminout/importPyMesh.py +++ b/src/Mod/Fem/feminout/importPyMesh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD Python Mesh reader and writer" +__title__ = "FreeCAD Python Mesh reader and writer" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importPyMesh # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importToolsFem.py b/src/Mod/Fem/feminout/importToolsFem.py index 9fe1afbe33..68ad96dafc 100644 --- a/src/Mod/Fem/feminout/importToolsFem.py +++ b/src/Mod/Fem/feminout/importToolsFem.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM import tools" +__title__ = "FreeCAD FEM import tools" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importToolsFem # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importVTKResults.py b/src/Mod/Fem/feminout/importVTKResults.py index 0a4e677dd0..5a0eef2704 100644 --- a/src/Mod/Fem/feminout/importVTKResults.py +++ b/src/Mod/Fem/feminout/importVTKResults.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "Result import and export for VTK file format" +__title__ = "Result import and export for VTK file format" __author__ = "Qingfeng Xia, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importVTKResults # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importYamlJsonMesh.py b/src/Mod/Fem/feminout/importYamlJsonMesh.py index 784d1ba4af..732188f462 100644 --- a/src/Mod/Fem/feminout/importYamlJsonMesh.py +++ b/src/Mod/Fem/feminout/importYamlJsonMesh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD YAML and JSON mesh reader and writer" +__title__ = "FreeCAD YAML and JSON mesh reader and writer" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importYAMLJSONMesh # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importZ88Mesh.py b/src/Mod/Fem/feminout/importZ88Mesh.py index 5e4165e7ce..95a95df6be 100644 --- a/src/Mod/Fem/feminout/importZ88Mesh.py +++ b/src/Mod/Fem/feminout/importZ88Mesh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Mesh import and export for Z88 mesh file format" +__title__ = "Mesh import and export for Z88 mesh file format" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importZ88Mesh # \ingroup FEM diff --git a/src/Mod/Fem/feminout/importZ88O2Results.py b/src/Mod/Fem/feminout/importZ88O2Results.py index bfc70d5cc2..548962e00f 100644 --- a/src/Mod/Fem/feminout/importZ88O2Results.py +++ b/src/Mod/Fem/feminout/importZ88O2Results.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Result import for Z88 displacements format" +__title__ = "Result import for Z88 displacements format" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importZ88O2Results # \ingroup FEM diff --git a/src/Mod/Fem/feminout/readFenicsXDMF.py b/src/Mod/Fem/feminout/readFenicsXDMF.py index c3f0721003..77d7287acb 100644 --- a/src/Mod/Fem/feminout/readFenicsXDMF.py +++ b/src/Mod/Fem/feminout/readFenicsXDMF.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD Fenics XDMF mesh reader" +__title__ = "FreeCAD Fenics XDMF mesh reader" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importFenicsXDMF # \ingroup FEM diff --git a/src/Mod/Fem/feminout/readFenicsXML.py b/src/Mod/Fem/feminout/readFenicsXML.py index 421cc5e021..20249624ce 100644 --- a/src/Mod/Fem/feminout/readFenicsXML.py +++ b/src/Mod/Fem/feminout/readFenicsXML.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD Fenics XML mesh reader" +__title__ = "FreeCAD Fenics XML mesh reader" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package importFenicsXML # \ingroup FEM diff --git a/src/Mod/Fem/feminout/writeFenicsXDMF.py b/src/Mod/Fem/feminout/writeFenicsXDMF.py index 8f626c481c..363de1df60 100644 --- a/src/Mod/Fem/feminout/writeFenicsXDMF.py +++ b/src/Mod/Fem/feminout/writeFenicsXDMF.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD Fenics XDMF mesh writer" +__title__ = "FreeCAD Fenics XDMF mesh writer" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package exportFenicsXDMF # \ingroup FEM diff --git a/src/Mod/Fem/feminout/writeFenicsXML.py b/src/Mod/Fem/feminout/writeFenicsXML.py index 4067e7b864..553f1de055 100644 --- a/src/Mod/Fem/feminout/writeFenicsXML.py +++ b/src/Mod/Fem/feminout/writeFenicsXML.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD Fenics XML mesh writer" +__title__ = "FreeCAD Fenics XML mesh writer" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package exportFenicsXML # \ingroup FEM diff --git a/src/Mod/Fem/femmesh/femmesh2mesh.py b/src/Mod/Fem/femmesh/femmesh2mesh.py index 5dc9a88a37..e6b9a3796e 100644 --- a/src/Mod/Fem/femmesh/femmesh2mesh.py +++ b/src/Mod/Fem/femmesh/femmesh2mesh.py @@ -20,9 +20,9 @@ # * * # *************************************************************************** -__title__ = "FemMesh to Mesh converter" +__title__ = "FemMesh to Mesh converter" __author__ = "Frantisek Loeffelmann, Ulrich Brammer, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package FwmMesh2Mesh # \ingroup FEM diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index cf193baedf..b28c428106 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -20,9 +20,9 @@ # * * # *************************************************************************** -__title__ = "Tools for the work with Gmsh mesher" +__title__ = "Tools for the work with Gmsh mesher" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femmesh/meshtools.py b/src/Mod/Fem/femmesh/meshtools.py index eab19d2047..6a3de70875 100644 --- a/src/Mod/Fem/femmesh/meshtools.py +++ b/src/Mod/Fem/femmesh/meshtools.py @@ -20,9 +20,9 @@ # * * # *************************************************************************** -__title__ = "Tools for the work with finite element meshes" +__title__ = "Tools for the work with finite element meshes" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femobjects/base_fempythonobject.py b/src/Mod/Fem/femobjects/base_fempythonobject.py index bf44d729bc..59316102f3 100644 --- a/src/Mod/Fem/femobjects/base_fempythonobject.py +++ b/src/Mod/Fem/femobjects/base_fempythonobject.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM base python object" +__title__ = "FreeCAD FEM base python object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package base_fempythonobject # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constant_vacuumpermittivity.py b/src/Mod/Fem/femobjects/constant_vacuumpermittivity.py index a33ba39d86..7e0092bf7f 100644 --- a/src/Mod/Fem/femobjects/constant_vacuumpermittivity.py +++ b/src/Mod/Fem/femobjects/constant_vacuumpermittivity.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constant vacuum permittivity object" +__title__ = "FreeCAD FEM constant vacuum permittivity object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constant_vacuumpermittivity # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_bodyheatsource.py b/src/Mod/Fem/femobjects/constraint_bodyheatsource.py index f24f0458f4..e0b6b25355 100644 --- a/src/Mod/Fem/femobjects/constraint_bodyheatsource.py +++ b/src/Mod/Fem/femobjects/constraint_bodyheatsource.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint body heat source document object" +__title__ = "FreeCAD FEM constraint body heat source document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_bodyheatsource # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py index 358a621711..d8fac9045f 100644 --- a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint electrostatic potential document object" +__title__ = "FreeCAD FEM constraint electrostatic potential document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_electrostaticpotential # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_flowvelocity.py b/src/Mod/Fem/femobjects/constraint_flowvelocity.py index 5b83f4a1f9..c858021564 100644 --- a/src/Mod/Fem/femobjects/constraint_flowvelocity.py +++ b/src/Mod/Fem/femobjects/constraint_flowvelocity.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint flow velocity document object" +__title__ = "FreeCAD FEM constraint flow velocity document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_flowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_initialflowvelocity.py b/src/Mod/Fem/femobjects/constraint_initialflowvelocity.py index afd4ad8144..dc28857257 100644 --- a/src/Mod/Fem/femobjects/constraint_initialflowvelocity.py +++ b/src/Mod/Fem/femobjects/constraint_initialflowvelocity.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint initial flow velocity document object" +__title__ = "FreeCAD FEM constraint initial flow velocity document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_initialflowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_sectionprint.py b/src/Mod/Fem/femobjects/constraint_sectionprint.py index 006b6b75d3..0a5e3503ae 100644 --- a/src/Mod/Fem/femobjects/constraint_sectionprint.py +++ b/src/Mod/Fem/femobjects/constraint_sectionprint.py @@ -2,7 +2,7 @@ # * Copyright (c) 2020 Bernd Hahnebach * # * * # * This file is part of the FreeCAD CAx development system. * - +# * * # * 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 * @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint section print document object" +__title__ = "FreeCAD FEM constraint section print document object" __author__ = "Bernd Hahnebach" -__url__ = "https://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_sectionprint # \ingroup FEM @@ -41,5 +41,3 @@ class ConstraintSectionPrint(base_fempythonobject.BaseFemPythonObject): def __init__(self, obj): super(ConstraintSectionPrint, self).__init__(obj) - - pass diff --git a/src/Mod/Fem/femobjects/constraint_selfweight.py b/src/Mod/Fem/femobjects/constraint_selfweight.py index f74afcfe91..08c0f4485f 100644 --- a/src/Mod/Fem/femobjects/constraint_selfweight.py +++ b/src/Mod/Fem/femobjects/constraint_selfweight.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint self weight document object" +__title__ = "FreeCAD FEM constraint self weight document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_selfweight # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/constraint_tie.py b/src/Mod/Fem/femobjects/constraint_tie.py index 8551a8b58d..0dc5791d80 100644 --- a/src/Mod/Fem/femobjects/constraint_tie.py +++ b/src/Mod/Fem/femobjects/constraint_tie.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint tie document object" +__title__ = "FreeCAD FEM constraint tie document object" __author__ = "Bernd Hahnebach" -__url__ = "https://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package constraint_tie # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/element_fluid1D.py b/src/Mod/Fem/femobjects/element_fluid1D.py index 9a9bced685..543e0bac67 100644 --- a/src/Mod/Fem/femobjects/element_fluid1D.py +++ b/src/Mod/Fem/femobjects/element_fluid1D.py @@ -23,9 +23,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM _element fluid 1D document object" +__title__ = "FreeCAD FEM _element fluid 1D document object" __author__ = "Ofentse Kgoa" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package element_fluid1D # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/element_geometry1D.py b/src/Mod/Fem/femobjects/element_geometry1D.py index fa54b39316..1fe3f9e41e 100644 --- a/src/Mod/Fem/femobjects/element_geometry1D.py +++ b/src/Mod/Fem/femobjects/element_geometry1D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 1D document object" +__title__ = "FreeCAD FEM element geometry 1D document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package element_geometry1D # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/element_geometry2D.py b/src/Mod/Fem/femobjects/element_geometry2D.py index 513277429b..f9427ee6c9 100644 --- a/src/Mod/Fem/femobjects/element_geometry2D.py +++ b/src/Mod/Fem/femobjects/element_geometry2D.py @@ -21,7 +21,7 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 2D document object" +__title__ = "FreeCAD FEM element geometry 2D document object" __author__ = "Bernd Hahnebach" __url__ = "https://www.freecadweb.org" diff --git a/src/Mod/Fem/femobjects/element_rotation1D.py b/src/Mod/Fem/femobjects/element_rotation1D.py index 85da639544..403838319a 100644 --- a/src/Mod/Fem/femobjects/element_rotation1D.py +++ b/src/Mod/Fem/femobjects/element_rotation1D.py @@ -21,7 +21,7 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element rotation 1D document object" +__title__ = "FreeCAD FEM element rotation 1D document object" __author__ = "Bernd Hahnebach" __url__ = "https://www.freecadweb.org" diff --git a/src/Mod/Fem/femobjects/material_common.py b/src/Mod/Fem/femobjects/material_common.py index e321542cef..ed5506516d 100644 --- a/src/Mod/Fem/femobjects/material_common.py +++ b/src/Mod/Fem/femobjects/material_common.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material document object" +__title__ = "FreeCAD FEM material document object" __author__ = "Juergen Riegel, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package material_common # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py index 23fd1f08e2..2c45ce1692 100644 --- a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py +++ b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material mechanical nonlinear document object" +__title__ = "FreeCAD FEM material mechanical nonlinear document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package material_mechanicalnonlinear # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/material_reinforced.py b/src/Mod/Fem/femobjects/material_reinforced.py index bb3559cf0c..33054c2695 100644 --- a/src/Mod/Fem/femobjects/material_reinforced.py +++ b/src/Mod/Fem/femobjects/material_reinforced.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM reinforced material" +__title__ = "FreeCAD FEM reinforced material" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package material_reinforced # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/mesh_boundarylayer.py b/src/Mod/Fem/femobjects/mesh_boundarylayer.py index c9cce6a318..86ad9b2bec 100644 --- a/src/Mod/Fem/femobjects/mesh_boundarylayer.py +++ b/src/Mod/Fem/femobjects/mesh_boundarylayer.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh boundary layer document object" +__title__ = "FreeCAD FEM mesh boundary layer document object" __author__ = "Bernd Hahnebach, Qingfeng Xia" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package mesh_boundarylayer # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/mesh_gmsh.py b/src/Mod/Fem/femobjects/mesh_gmsh.py index 4b7778ba93..05ab323a13 100644 --- a/src/Mod/Fem/femobjects/mesh_gmsh.py +++ b/src/Mod/Fem/femobjects/mesh_gmsh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh gmsh document object" +__title__ = "FreeCAD FEM mesh gmsh document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package mesh_gmsh # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/mesh_group.py b/src/Mod/Fem/femobjects/mesh_group.py index 6c2716d535..358d10a7b1 100644 --- a/src/Mod/Fem/femobjects/mesh_group.py +++ b/src/Mod/Fem/femobjects/mesh_group.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh group document object" +__title__ = "FreeCAD FEM mesh group document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package mesh_group # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/mesh_region.py b/src/Mod/Fem/femobjects/mesh_region.py index 378470bcd9..0ec82e1339 100644 --- a/src/Mod/Fem/femobjects/mesh_region.py +++ b/src/Mod/Fem/femobjects/mesh_region.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh region document object" +__title__ = "FreeCAD FEM mesh region document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package mesh_region # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/mesh_result.py b/src/Mod/Fem/femobjects/mesh_result.py index 9e3edf917d..6ed6b72957 100644 --- a/src/Mod/Fem/femobjects/mesh_result.py +++ b/src/Mod/Fem/femobjects/mesh_result.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh result document object" +__title__ = "FreeCAD FEM mesh result document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package mesh_result # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/result_mechanical.py b/src/Mod/Fem/femobjects/result_mechanical.py index 1dff04f47b..c9eeaebdfa 100644 --- a/src/Mod/Fem/femobjects/result_mechanical.py +++ b/src/Mod/Fem/femobjects/result_mechanical.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM result mechanical document object" +__title__ = "FreeCAD FEM result mechanical document object" __author__ = "Qingfeng Xia, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package result_mechanical # \ingroup FEM diff --git a/src/Mod/Fem/femobjects/solver_ccxtools.py b/src/Mod/Fem/femobjects/solver_ccxtools.py index d6f4e6a96f..d78ff6b28e 100644 --- a/src/Mod/Fem/femobjects/solver_ccxtools.py +++ b/src/Mod/Fem/femobjects/solver_ccxtools.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver calculix ccx tools document object" +__title__ = "FreeCAD FEM solver calculix ccx tools document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package solver_ccxtools # \ingroup FEM diff --git a/src/Mod/Fem/femresult/resulttools.py b/src/Mod/Fem/femresult/resulttools.py index bc3740ea1e..4b70b1e0d0 100644 --- a/src/Mod/Fem/femresult/resulttools.py +++ b/src/Mod/Fem/femresult/resulttools.py @@ -19,9 +19,9 @@ # * * # *************************************************************************** -__title__ = "Fem Tools for results" +__title__ = "Fem Tools for results" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/calculix/solver.py b/src/Mod/Fem/femsolver/calculix/solver.py index 2b2b9226a4..d453a09eda 100644 --- a/src/Mod/Fem/femsolver/calculix/solver.py +++ b/src/Mod/Fem/femsolver/calculix/solver.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver object CalculiX" +__title__ = "FreeCAD FEM solver object CalculiX" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package SolverCalculix # \ingroup FEM diff --git a/src/Mod/Fem/femsolver/calculix/tasks.py b/src/Mod/Fem/femsolver/calculix/tasks.py index 963b76e680..acc6c56f2e 100644 --- a/src/Mod/Fem/femsolver/calculix/tasks.py +++ b/src/Mod/Fem/femsolver/calculix/tasks.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver CalculiX tasks" +__title__ = "FreeCAD FEM solver CalculiX tasks" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index e5724eb3cd..294757e9ec 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver CalculiX writer" +__title__ = "FreeCAD FEM solver CalculiX writer" __author__ = "Przemo Firszt, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/elasticity.py b/src/Mod/Fem/femsolver/elmer/equations/elasticity.py index 2fd7e997fd..f928304abc 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/elasticity.py +++ b/src/Mod/Fem/femsolver/elmer/equations/elasticity.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Elasticity" +__title__ = "FreeCAD FEM solver Elmer equation object Elasticity" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/electricforce.py b/src/Mod/Fem/femsolver/elmer/equations/electricforce.py index 8be43416c6..4b62aa04c8 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/electricforce.py +++ b/src/Mod/Fem/femsolver/elmer/equations/electricforce.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Electricforce" +__title__ = "FreeCAD FEM solver Elmer equation object Electricforce" __author__ = "Wilfried Hortschitz" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/electrostatic.py b/src/Mod/Fem/femsolver/elmer/equations/electrostatic.py index b0adc4acb5..dbb9a31885 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/electrostatic.py +++ b/src/Mod/Fem/femsolver/elmer/equations/electrostatic.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Electrostatic" +__title__ = "FreeCAD FEM solver Elmer equation object Electrostatic" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/equation.py b/src/Mod/Fem/femsolver/elmer/equations/equation.py index 6ebfc7392b..a08e2f7940 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/equation.py +++ b/src/Mod/Fem/femsolver/elmer/equations/equation.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation base object" +__title__ = "FreeCAD FEM solver Elmer equation base object" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/flow.py b/src/Mod/Fem/femsolver/elmer/equations/flow.py index 9a050b9c95..5c349f522a 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/flow.py +++ b/src/Mod/Fem/femsolver/elmer/equations/flow.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Flow" +__title__ = "FreeCAD FEM solver Elmer equation object Flow" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/flux.py b/src/Mod/Fem/femsolver/elmer/equations/flux.py index 5b76ac8d06..a652b6f101 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/flux.py +++ b/src/Mod/Fem/femsolver/elmer/equations/flux.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Flux" +__title__ = "FreeCAD FEM solver Elmer equation object Flux" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/heat.py b/src/Mod/Fem/femsolver/elmer/equations/heat.py index 6804f1e0f8..4b9195af0a 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/heat.py +++ b/src/Mod/Fem/femsolver/elmer/equations/heat.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object Heat" +__title__ = "FreeCAD FEM solver Elmer equation object Heat" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/linear.py b/src/Mod/Fem/femsolver/elmer/equations/linear.py index 9ed5e8aa09..fa21ef3d40 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/linear.py +++ b/src/Mod/Fem/femsolver/elmer/equations/linear.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object _Linear" +__title__ = "FreeCAD FEM solver Elmer equation object _Linear" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/equations/nonlinear.py b/src/Mod/Fem/femsolver/elmer/equations/nonlinear.py index e6a0331dbc..ad6a77a044 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/nonlinear.py +++ b/src/Mod/Fem/femsolver/elmer/equations/nonlinear.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer equation object _NonLinear" +__title__ = "FreeCAD FEM solver Elmer equation object _NonLinear" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/sifio.py b/src/Mod/Fem/femsolver/elmer/sifio.py index 561e959e69..7fd29b477b 100644 --- a/src/Mod/Fem/femsolver/elmer/sifio.py +++ b/src/Mod/Fem/femsolver/elmer/sifio.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer sifio" +__title__ = "FreeCAD FEM solver Elmer sifio" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/solver.py b/src/Mod/Fem/femsolver/elmer/solver.py index c5e33a1e3f..8737d0e793 100644 --- a/src/Mod/Fem/femsolver/elmer/solver.py +++ b/src/Mod/Fem/femsolver/elmer/solver.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver object Elmer" +__title__ = "FreeCAD FEM solver object Elmer" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index 02a31f7a4d..5a8a5582e0 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer tasks" +__title__ = "FreeCAD FEM solver Elmer tasks" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 1013b5523b..49ce7ef3a7 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Elmer writer" +__title__ = "FreeCAD FEM solver Elmer writer" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ @@ -68,7 +68,7 @@ class Writer(object): self.analysis = solver.getParentGroup() self.solver = solver self.directory = directory - Console.PrintMessage("Write elmer input files to: {}".format(self.directory)) + Console.PrintMessage("Write elmer input files to: {}\n".format(self.directory)) self.testmode = testmode self._usedVarNames = set() self._builder = sifio.Builder() diff --git a/src/Mod/Fem/femsolver/equationbase.py b/src/Mod/Fem/femsolver/equationbase.py index c49a2d15de..12581ef36a 100644 --- a/src/Mod/Fem/femsolver/equationbase.py +++ b/src/Mod/Fem/femsolver/equationbase.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver equation base object" +__title__ = "FreeCAD FEM solver equation base object" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/fenics/fenics_tools.py b/src/Mod/Fem/femsolver/fenics/fenics_tools.py index 450b6db8f9..c32a5233bf 100644 --- a/src/Mod/Fem/femsolver/fenics/fenics_tools.py +++ b/src/Mod/Fem/femsolver/fenics/fenics_tools.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Fenics tools" +__title__ = "FreeCAD FEM solver Fenics tools" __author__ = "Johannes Hartung" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package Fenics # \ingroup FEM diff --git a/src/Mod/Fem/femsolver/report.py b/src/Mod/Fem/femsolver/report.py index 862926c8bf..2cbddfbc51 100644 --- a/src/Mod/Fem/femsolver/report.py +++ b/src/Mod/Fem/femsolver/report.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver report" +__title__ = "FreeCAD FEM solver report" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/reportdialog.py b/src/Mod/Fem/femsolver/reportdialog.py index 7f36c7bcdd..5b1e3c740c 100644 --- a/src/Mod/Fem/femsolver/reportdialog.py +++ b/src/Mod/Fem/femsolver/reportdialog.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver report dialog" +__title__ = "FreeCAD FEM solver report dialog" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/run.py b/src/Mod/Fem/femsolver/run.py index da03e73e13..3588ba48fd 100644 --- a/src/Mod/Fem/femsolver/run.py +++ b/src/Mod/Fem/femsolver/run.py @@ -32,9 +32,9 @@ mainly implemented by the :mod:`femsolver.task` and :mod:`femsolver.signal` modules. """ -__title__ = "FreeCAD FEM solver run" +__title__ = "FreeCAD FEM solver run" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import os import os.path diff --git a/src/Mod/Fem/femsolver/settings.py b/src/Mod/Fem/femsolver/settings.py index 600eda0bc1..c884f0631b 100644 --- a/src/Mod/Fem/femsolver/settings.py +++ b/src/Mod/Fem/femsolver/settings.py @@ -41,9 +41,9 @@ the form written in the list above. To make the solver recognize settings for a new solver have a look at :class:`_SolverDlg`. """ -__title__ = "FreeCAD FEM solver settings" +__title__ = "FreeCAD FEM solver settings" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD diff --git a/src/Mod/Fem/femsolver/signal.py b/src/Mod/Fem/femsolver/signal.py index 79d4e5ce68..4c7094abcc 100644 --- a/src/Mod/Fem/femsolver/signal.py +++ b/src/Mod/Fem/femsolver/signal.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver signal" +__title__ = "FreeCAD FEM solver signal" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/solver_taskpanel.py b/src/Mod/Fem/femsolver/solver_taskpanel.py index 70f9b999e9..667acf2a8c 100644 --- a/src/Mod/Fem/femsolver/solver_taskpanel.py +++ b/src/Mod/Fem/femsolver/solver_taskpanel.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver job control task panel" +__title__ = "FreeCAD FEM solver job control task panel" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/solverbase.py b/src/Mod/Fem/femsolver/solverbase.py index bbe86889dc..384bfc8914 100644 --- a/src/Mod/Fem/femsolver/solverbase.py +++ b/src/Mod/Fem/femsolver/solverbase.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver base object" +__title__ = "FreeCAD FEM solver base object" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/task.py b/src/Mod/Fem/femsolver/task.py index 9b0f11e139..00f8c2123f 100644 --- a/src/Mod/Fem/femsolver/task.py +++ b/src/Mod/Fem/femsolver/task.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver task" +__title__ = "FreeCAD FEM solver task" __author__ = "Markus Hovorka" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/writerbase.py b/src/Mod/Fem/femsolver/writerbase.py index 07180bf6b7..01fa2c34b8 100644 --- a/src/Mod/Fem/femsolver/writerbase.py +++ b/src/Mod/Fem/femsolver/writerbase.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver writer base object" +__title__ = "FreeCAD FEM solver writer base object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/z88/solver.py b/src/Mod/Fem/femsolver/z88/solver.py index ac1cd5837e..7b67e782e2 100644 --- a/src/Mod/Fem/femsolver/z88/solver.py +++ b/src/Mod/Fem/femsolver/z88/solver.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver object Z88" +__title__ = "FreeCAD FEM solver object Z88" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package SolverZ88 # \ingroup FEM diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index b90855085d..029fe976ab 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Z88 tasks" +__title__ = "FreeCAD FEM solver Z88 tasks" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femsolver/z88/writer.py b/src/Mod/Fem/femsolver/z88/writer.py index 91c78126fa..f261247153 100644 --- a/src/Mod/Fem/femsolver/z88/writer.py +++ b/src/Mod/Fem/femsolver/z88/writer.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver Z88 writer" +__title__ = "FreeCAD FEM solver Z88 writer" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py index de869e0d99..f04858950d 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint electrostatic potential task panel for the document object" +__title__ = "FreeCAD FEM constraint electrostatic potential task panel for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_constraint_electrostaticpotential # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py index 93c5a3f693..924607063b 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint flow velocity task panel for the document object" +__title__ = "FreeCAD FEM constraint flow velocity task panel for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_constraint_flowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py index bb1c3db403..8c0ce04467 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint initial flow velocity task panel for the document object" +__title__ = "FreeCAD FEM constraint initial flow velocity task panel for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_constraint_initialflowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py index 168ee6fbe0..10134cbfdb 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint section print task panel for the document object" +__title__ = "FreeCAD FEM constraint section print task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_constraint_sectionprint # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py index 19355999ed..d6c0909c5a 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint tie task panel for the document object" +__title__ = "FreeCAD FEM constraint tie task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_constraint_tie # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py index a2633cdb10..0bb54f986e 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py @@ -23,9 +23,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element fluid 1D task panel for the document object" +__title__ = "FreeCAD FEM element fluid 1D task panel for the document object" __author__ = "Ofentse Kgoa, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_element_fluid1D # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py index b7a67eadae..298a42a472 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 1D task panel for the document object" +__title__ = "FreeCAD FEM element geometry 1D task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "http://www.freecadweb.org" ## @package task_element_geometry1D # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py index a90697271f..cb03408a0a 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 2D task panel for the document object" +__title__ = "FreeCAD FEM element geometry 2D task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_element_geometry2D # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py index 611cca14ff..a0e09d07b1 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element rotation 1D task panel for the document object" +__title__ = "FreeCAD FEM element rotation 1D task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_element_rotation1D # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_material_common.py b/src/Mod/Fem/femtaskpanels/task_material_common.py index 0c75eb22cd..cffc1be22c 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_common.py +++ b/src/Mod/Fem/femtaskpanels/task_material_common.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material task panel for the document object" +__title__ = "FreeCAD FEM material task panel for the document object" __author__ = "Juergen Riegel, Bernd Hahnebach, Qingfeng Xia" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_material_common # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_material_reinforced.py b/src/Mod/Fem/femtaskpanels/task_material_reinforced.py index b5e91e2dd1..ebe058e86d 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_reinforced.py +++ b/src/Mod/Fem/femtaskpanels/task_material_reinforced.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material reinforced task panel for the document object" +__title__ = "FreeCAD FEM material reinforced task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_material_reinforced # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py index 3635cafd22..79186b6748 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh boundary layer task panel for the document object" +__title__ = "FreeCAD FEM mesh boundary layer task panel for the document object" __author__ = "Bernd Hahnebach, Qingfeng Xia" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_mesh_boundarylayer # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py index cb5fb8bc2a..b2170462e7 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh gmsh task panel for the document object" +__title__ = "FreeCAD FEM mesh gmsh task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_mesh_gmsh # \ingroup FEM @@ -222,20 +222,22 @@ class _TaskPanel: QApplication.restoreOverrideCursor() def get_active_analysis(self): - self.analysis = FemGui.getActiveAnalysis() - if self.analysis: - for m in FemGui.getActiveAnalysis().Group: + analysis = FemGui.getActiveAnalysis() + if not analysis: + FreeCAD.Console.PrintLog("No active analysis, means no group meshing.\n") + self.analysis = None # no group meshing + else: + for m in analysis.Group: if m.Name == self.mesh_obj.Name: FreeCAD.Console.PrintMessage( "Active analysis found: {}\n" - .format(self.analysis.Name) + .format(analysis.Name) ) - return + self.analysis = analysis # group meshing + break else: FreeCAD.Console.PrintLog( "Mesh is not member of active analysis, means no group meshing.\n" ) self.analysis = None # no group meshing - else: - FreeCAD.Console.PrintLog("No active analysis, means no group meshing.\n") - self.analysis = None # no group meshing + return diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_group.py b/src/Mod/Fem/femtaskpanels/task_mesh_group.py index f3184e7d0e..122a73cc21 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_group.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_group.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh group task panel for the document object" +__title__ = "FreeCAD FEM mesh group task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_mesh_group # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_region.py b/src/Mod/Fem/femtaskpanels/task_mesh_region.py index 7572dad369..c38e20f3a6 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_region.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_region.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh region task panel for the document object" +__title__ = "FreeCAD FEM mesh region task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_mesh_region # \ingroup FEM diff --git a/src/Mod/Fem/femtaskpanels/task_result_mechanical.py b/src/Mod/Fem/femtaskpanels/task_result_mechanical.py index 0ec984c58b..b52bda8d57 100644 --- a/src/Mod/Fem/femtaskpanels/task_result_mechanical.py +++ b/src/Mod/Fem/femtaskpanels/task_result_mechanical.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD result mechanical task panel" +__title__ = "FreeCAD result mechanical task panel" __author__ = "Qingfeng Xia, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_result_mechanical # \ingroup FEM @@ -469,13 +469,6 @@ class _TaskPanel: maxm = max(UserDefinedFormula) self.update_colors_stats(UserDefinedFormula, "", minm, maxm) - # Dummy use of the variables to get around flake8 error - del x, y, z, T, vM, Peeq, P1, P2, P3 - del sxx, syy, szz, sxy, sxz, syz - del exx, eyy, ezz, exy, exz, eyz - del MF, NP, rx, ry, rz, mc - del s1x, s1y, s1z, s2x, s2y, s2z, s3x, s3y, s3z - def get_scalar_disp_list(self, vector_list, axis): # list is needed, as zib-object is not subscriptable in py3 d = list(zip(*self.result_obj.DisplacementVectors)) diff --git a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py index 8d94e21f17..6ccbf89982 100644 --- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py +++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver calculix ccx tools task panel for the document object" +__title__ = "FreeCAD FEM solver calculix ccx tools task panel for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package task_solver_ccxtools # \ingroup FEM diff --git a/src/Mod/Fem/femtest/app/support_utils.py b/src/Mod/Fem/femtest/app/support_utils.py index 8aa6dd48df..147efc76c6 100644 --- a/src/Mod/Fem/femtest/app/support_utils.py +++ b/src/Mod/Fem/femtest/app/support_utils.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Tools for FEM unit tests" +__title__ = "Tools for FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import os import sys diff --git a/src/Mod/Fem/femtest/app/test_ccxtools.py b/src/Mod/Fem/femtest/app/test_ccxtools.py index 7f599b6880..eb39e880dd 100644 --- a/src/Mod/Fem/femtest/app/test_ccxtools.py +++ b/src/Mod/Fem/femtest/app/test_ccxtools.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "Ccxtools FEM unit tests" +__title__ = "Ccxtools FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest from os.path import join diff --git a/src/Mod/Fem/femtest/app/test_common.py b/src/Mod/Fem/femtest/app/test_common.py index 9f1630971b..ca2e142315 100644 --- a/src/Mod/Fem/femtest/app/test_common.py +++ b/src/Mod/Fem/femtest/app/test_common.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Common FEM unit tests" +__title__ = "Common FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import unittest diff --git a/src/Mod/Fem/femtest/app/test_femimport.py b/src/Mod/Fem/femtest/app/test_femimport.py index 7acafb4e8e..ace0f09d12 100644 --- a/src/Mod/Fem/femtest/app/test_femimport.py +++ b/src/Mod/Fem/femtest/app/test_femimport.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Import FEM unit tests" +__title__ = "Import FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest diff --git a/src/Mod/Fem/femtest/app/test_material.py b/src/Mod/Fem/femtest/app/test_material.py index 08a895ab23..d102938ffa 100644 --- a/src/Mod/Fem/femtest/app/test_material.py +++ b/src/Mod/Fem/femtest/app/test_material.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Material FEM unit tests" +__title__ = "Material FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest from os.path import join diff --git a/src/Mod/Fem/femtest/app/test_mesh.py b/src/Mod/Fem/femtest/app/test_mesh.py index aa629b2ce8..0cf551732e 100644 --- a/src/Mod/Fem/femtest/app/test_mesh.py +++ b/src/Mod/Fem/femtest/app/test_mesh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Mesh FEM unit tests" +__title__ = "Mesh FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest from os.path import join diff --git a/src/Mod/Fem/femtest/app/test_object.py b/src/Mod/Fem/femtest/app/test_object.py index 29d2829e78..6ff045c9e4 100644 --- a/src/Mod/Fem/femtest/app/test_object.py +++ b/src/Mod/Fem/femtest/app/test_object.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Objects FEM unit tests" +__title__ = "Objects FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import unittest diff --git a/src/Mod/Fem/femtest/app/test_open.py b/src/Mod/Fem/femtest/app/test_open.py index 7b7102b295..e73dcdbf38 100644 --- a/src/Mod/Fem/femtest/app/test_open.py +++ b/src/Mod/Fem/femtest/app/test_open.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Open files FEM App unit tests" +__title__ = "Open files FEM App unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import tempfile diff --git a/src/Mod/Fem/femtest/app/test_result.py b/src/Mod/Fem/femtest/app/test_result.py index 4c62e8098d..b0823c1cb3 100644 --- a/src/Mod/Fem/femtest/app/test_result.py +++ b/src/Mod/Fem/femtest/app/test_result.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Results FEM unit tests" +__title__ = "Results FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest from os.path import join diff --git a/src/Mod/Fem/femtest/app/test_solver_calculix.py b/src/Mod/Fem/femtest/app/test_solver_calculix.py index 153789016d..8be0632326 100644 --- a/src/Mod/Fem/femtest/app/test_solver_calculix.py +++ b/src/Mod/Fem/femtest/app/test_solver_calculix.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Solver calculix FEM unit tests" +__title__ = "Solver calculix FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import unittest from os.path import join diff --git a/src/Mod/Fem/femtest/app/test_solver_elmer.py b/src/Mod/Fem/femtest/app/test_solver_elmer.py index b27d40a8a9..205804d09d 100644 --- a/src/Mod/Fem/femtest/app/test_solver_elmer.py +++ b/src/Mod/Fem/femtest/app/test_solver_elmer.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Solver elmer FEM unit tests" +__title__ = "Solver elmer FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import unittest diff --git a/src/Mod/Fem/femtest/app/test_solver_z88.py b/src/Mod/Fem/femtest/app/test_solver_z88.py index ec99a67f5b..3650ff00dd 100644 --- a/src/Mod/Fem/femtest/app/test_solver_z88.py +++ b/src/Mod/Fem/femtest/app/test_solver_z88.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "Solver z88 FEM unit tests" +__title__ = "Solver z88 FEM unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import unittest diff --git a/src/Mod/Fem/femtest/gui/test_open.py b/src/Mod/Fem/femtest/gui/test_open.py index 23c3240921..0f1d6c24a2 100644 --- a/src/Mod/Fem/femtest/gui/test_open.py +++ b/src/Mod/Fem/femtest/gui/test_open.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "Open files FEM Gui unit tests" +__title__ = "Open files FEM Gui unit tests" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import sys import tempfile diff --git a/src/Mod/Fem/femtest/test_information.md b/src/Mod/Fem/femtest/test_information.md index 33eda7f6ff..90bb1852b2 100644 --- a/src/Mod/Fem/femtest/test_information.md +++ b/src/Mod/Fem/femtest/test_information.md @@ -1,21 +1,24 @@ -# FEM unit test information -- Find in this fils some informatin how to run unit test for FEM +# FEM Unit Test Information -## more information -- how to run a specific test class or a test method see file -- src/Mod/Test/__init__ -- forum https://forum.freecadweb.org/viewtopic.php?f=10&t=22190#p175546 +With these files one can find information on how to run unit tests for FEM + +## Specifically + +- How to run a specific test class or a test method see file: `src/Mod/Test/__init__` +- related [forum thread](https://forum.freecadweb.org/viewtopic.php?f=10&t=22190#p175546) ## let some test document stay open + - run test method from inside FreeCAD -- in tearDown method to not close the document -- temporary comment FreeCAD.closeDocument(self.doc_name) and add pass +- in `tearDown` method do not close the document +- temporary comment out `FreeCAD.closeDocument(self.doc_name)` and add `pass` ## unit test command to copy -- to run a specific FEM unit test to copy for fast tests :-) -- they can be found in file test_commands_to_copy.md -- create them by + +- To run a specific FEM unit test to copy for fast tests :-) +- They can be found in the `test_commands_to_copy.md` file +- create them by: ```python from femtest.app.support_utils import get_fem_test_defs @@ -23,15 +26,18 @@ get_fem_test_defs() ``` -## examples from within FreeCAD: -### create test command file in temp directory +## Examples from within FreeCAD + +### Create test command file in temp directory + ```python import Test, femtest.app.test_object Test.runTestsFromClass(femtest.app.test_object.TestObjectCreate) ``` -### all FEM tests +### All FEM tests + ```python import Test, TestFemApp Test.runTestsFromModule(TestFemApp) @@ -42,6 +48,7 @@ Test.runTestsFromModule(TestFemGui) ``` ### module + ```python import Test, femtest.app.test_common Test.runTestsFromModule(femtest.app.test_common) @@ -49,6 +56,7 @@ Test.runTestsFromModule(femtest.app.test_common) ``` ### class + ```python import Test, femtest.app.test_common Test.runTestsFromClass(femtest.app.test_common.TestFemCommon) @@ -56,6 +64,7 @@ Test.runTestsFromClass(femtest.app.test_common.TestFemCommon) ``` ### method + ```python import unittest thetest = "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules" @@ -78,35 +87,42 @@ unittest.TextTestRunner().run(alltest) ``` ### import Fem and FemGui + ```bash ./bin/FreeCADCmd --run-test "femtest.app.test_femimport" ./bin/FreeCAD --run-test "femtest.app.test_femimport" ``` ### module + ```bash ./bin/FreeCAD --run-test "femtest.app.test_femimport" ``` ### class + ```bash ./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon" ``` ### method + ```bash ./bin/FreeCAD --run-test "femtest.app.test_common.TestFemCommon.test_pyimport_all_FEM_modules" ``` ### Gui + ```bash ./bin/FreeCAD --run-test "femtest.gui.test_open.TestObjectOpen" ``` -## open files -### from FEM test suite source code -- be careful on updating these files, they contain the original results! +## Open files + +### From FEM test suite source code + +- be careful when updating these files, they contain the original results! - TODO update files, because some of them have non-existing FEM object classes ```python @@ -119,7 +135,8 @@ doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/ccx/ ``` -### generated from test suite +### Generated from test suite + ```python import femtest.utilstest as ut ut.all_test_files() @@ -131,7 +148,8 @@ doc = ut.multimat() doc = ut.spine_thermomech() ``` -### load std FEM example files +### Load std FEM example files + ```python app_home = FreeCAD.ConfigGet("AppHomePath") doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever2D.FCStd") @@ -141,7 +159,8 @@ doc = FreeCAD.open(app_home + "data/examples/Fem.FCStd") doc = FreeCAD.open(app_home + "data/examples/Fem2.FCStd") ``` -### load all documents files +### Load all documents files + ```python app_home = FreeCAD.ConfigGet("AppHomePath") doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd') diff --git a/src/Mod/Fem/femtools/ccxtools.py b/src/Mod/Fem/femtools/ccxtools.py index cf83c22582..2421b4b205 100644 --- a/src/Mod/Fem/femtools/ccxtools.py +++ b/src/Mod/Fem/femtools/ccxtools.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FemToolsCcx" +__title__ = "FemToolsCcx" __author__ = "Przemo Firszt, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femtools/checksanalysis.py b/src/Mod/Fem/femtools/checksanalysis.py index 73fcd867b2..436d08f5c6 100644 --- a/src/Mod/Fem/femtools/checksanalysis.py +++ b/src/Mod/Fem/femtools/checksanalysis.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "Analysis Checks" +__title__ = "Analysis Checks" __author__ = "Przemo Firszt, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ diff --git a/src/Mod/Fem/femtools/constants.py b/src/Mod/Fem/femtools/constants.py index 33f1500a89..cc8f8bf5ec 100644 --- a/src/Mod/Fem/femtools/constants.py +++ b/src/Mod/Fem/femtools/constants.py @@ -27,9 +27,9 @@ All constants are in SI units. """ -__title__ = "Constants" +__title__ = "FEM collection of natural constants" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" def gravity(): diff --git a/src/Mod/Fem/femtools/errors.py b/src/Mod/Fem/femtools/errors.py index 5d6edba8b1..89cf996c5c 100644 --- a/src/Mod/Fem/femtools/errors.py +++ b/src/Mod/Fem/femtools/errors.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FEM Errors" +__title__ = "FEM Errors" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" class MustSaveError(Exception): diff --git a/src/Mod/Fem/femtools/femutils.py b/src/Mod/Fem/femtools/femutils.py index 5d19dcec28..5bc14b27e6 100644 --- a/src/Mod/Fem/femtools/femutils.py +++ b/src/Mod/Fem/femtools/femutils.py @@ -28,9 +28,9 @@ a few unrelated function useful at various places in the Fem module. """ -__title__ = "FEM Utilities" +__title__ = "FEM Utilities" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import os @@ -142,7 +142,7 @@ def get_pref_working_dir(solver_obj): # these are a duplicate of the methods in src/Mod/Fem/femsolver/run.py -# see commit xxx (will be added when in master) for more information +# see commit a9c19ca6d42c for more information # the FEM preferences will be used by both def get_temp_dir(obj=None): from tempfile import mkdtemp @@ -153,7 +153,7 @@ def get_beside_dir(obj): base = get_beside_base(obj) specific_path = os.path.join(base, obj.Label) if not os.path.isdir(specific_path): - os.makedirs(specific_path) + make_dir(specific_path) return specific_path @@ -162,28 +162,31 @@ def get_custom_dir(obj): specific_path = os.path.join( base, obj.Document.Name, obj.Label) if not os.path.isdir(specific_path): - os.makedirs(specific_path) + make_dir(specific_path) return specific_path def get_beside_base(obj): fcstdPath = obj.Document.FileName if fcstdPath == "": + new_path = get_temp_dir() error_message = ( "Please save the file before executing a solver or creating a mesh. " "This must be done because the location of the working directory " - "is set to \"Beside *.FCStd File\". For the moment a tmp dir is used." + "is set to \"Beside *.FCStd File\". For the moment the tmp dir {} is used." + .format(new_path) ) - FreeCAD.Console.PrintError(error_message + "\n") + FreeCAD.Console.PrintError("{}\n".format(error_message)) if FreeCAD.GuiUp: QtGui.QMessageBox.critical( FreeCADGui.getMainWindow(), "Can't start Solver or Mesh creation besides FC file.", error_message ) + # from .errors import MustSaveError # raise MustSaveError() - return get_temp_dir() + return new_path else: return os.path.splitext(fcstdPath)[0] @@ -192,8 +195,13 @@ def get_custom_base(solver): from femsolver.settings import get_custom_dir path = get_custom_dir() if not os.path.isdir(path): - error_message = "Selected working directory doesn't exist." - FreeCAD.Console.PrintError(error_message + "\n") + new_path = get_temp_dir() + error_message = ( + "Selected working directory {} doesn't exist. " + " For the moment the tmp dir {} is used." + .format(path, new_path) + ) + FreeCAD.Console.PrintError("{}\n".format(error_message)) if FreeCAD.GuiUp: QtGui.QMessageBox.critical( FreeCADGui.getMainWindow(), @@ -202,7 +210,7 @@ def get_custom_base(solver): ) # from .errors import DirectoryDoesNotExistError # raise DirectoryDoesNotExistError("Invalid path") - return get_temp_dir() + return new_path return path @@ -216,6 +224,23 @@ def check_working_dir(wdir): return False +def make_dir(specific_path): + try: + os.makedirs(specific_path) + except OSError: + new_path = get_temp_dir() + # it could fail for various reasons, full disk, etc + # beside dir fails on installed FC examples from start wb + error_message = ( + "Failed to create the directory {}. " + " For the moment the tmp dir {} is used." + .format(specific_path, new_path) + ) + FreeCAD.Console.PrintError("{}\n".format(error_message)) + return new_path + return specific_path + + # ************************************************************************************************ # other def get_part_to_mesh(mesh_obj): diff --git a/src/Mod/Fem/femtools/geomtools.py b/src/Mod/Fem/femtools/geomtools.py index 4c42185476..45716fa90a 100644 --- a/src/Mod/Fem/femtools/geomtools.py +++ b/src/Mod/Fem/femtools/geomtools.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FEM geometry tools" +__title__ = "FEM geometry tools" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD diff --git a/src/Mod/Fem/femtools/membertools.py b/src/Mod/Fem/femtools/membertools.py index 7befa2c2e6..d7fae392d5 100644 --- a/src/Mod/Fem/femtools/membertools.py +++ b/src/Mod/Fem/femtools/membertools.py @@ -28,9 +28,9 @@ types of objects it contains, helper for executing a simulation. """ -__title__ = "FEM analysis tools" +__title__ = "FEM analysis tools" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" from . import femutils diff --git a/src/Mod/Fem/femtools/migrate_app.py b/src/Mod/Fem/femtools/migrate_app.py index d96d9014cd..38059591b8 100644 --- a/src/Mod/Fem/femtools/migrate_app.py +++ b/src/Mod/Fem/femtools/migrate_app.py @@ -26,9 +26,9 @@ see module end as well as forum topic https://forum.freecadweb.org/viewtopic.php?&t=46218 """ -__title__ = "migrate app" +__title__ = "FEM class and methods that migrates old App objects" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" import FreeCAD diff --git a/src/Mod/Fem/femtools/tokrules.py b/src/Mod/Fem/femtools/tokrules.py index 38a6e859a9..568e685d7f 100644 --- a/src/Mod/Fem/femtools/tokrules.py +++ b/src/Mod/Fem/femtools/tokrules.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FEM Utilities" +__title__ = "FEM Utilities" __author__ = "Werner Mayer" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" tokens = ( 'NAME', diff --git a/src/Mod/Fem/femviewprovider/view_base_femconstraint.py b/src/Mod/Fem/femviewprovider/view_base_femconstraint.py index 153fd037ab..c504e466c9 100644 --- a/src/Mod/Fem/femviewprovider/view_base_femconstraint.py +++ b/src/Mod/Fem/femviewprovider/view_base_femconstraint.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM base constraint ViewProvider" +__title__ = "FreeCAD FEM base constraint ViewProvider" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_base_femconstraint # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_base_femobject.py b/src/Mod/Fem/femviewprovider/view_base_femobject.py index b1040767aa..1472aae72b 100644 --- a/src/Mod/Fem/femviewprovider/view_base_femobject.py +++ b/src/Mod/Fem/femviewprovider/view_base_femobject.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM base constraint ViewProvider" +__title__ = "FreeCAD FEM base constraint ViewProvider" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_base_femobject # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constant_vacuumpermittivity.py b/src/Mod/Fem/femviewprovider/view_constant_vacuumpermittivity.py index 18c0f0eb10..d47690cc5c 100644 --- a/src/Mod/Fem/femviewprovider/view_constant_vacuumpermittivity.py +++ b/src/Mod/Fem/femviewprovider/view_constant_vacuumpermittivity.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constant vacuum permittivity ViewProvider for the document object" +__title__ = "FreeCAD FEM constant vacuum permittivity ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constant_vacuumpermittivity # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_bodyheatsource.py b/src/Mod/Fem/femviewprovider/view_constraint_bodyheatsource.py index 643d5ba03b..a29c068dc4 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_bodyheatsource.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_bodyheatsource.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint body heat source ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint body heat source ViewProvider for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_bodyheatsource # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py b/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py index db0fa81759..15f14921bd 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint electrostatic potential ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint electrostatic potential ViewProvider for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_electrostaticpotential # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_flowvelocity.py b/src/Mod/Fem/femviewprovider/view_constraint_flowvelocity.py index b7a6b69932..ec7b8930d1 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_flowvelocity.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_flowvelocity.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint flow velocity ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint flow velocity ViewProvider for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_flowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_initialflowvelocity.py b/src/Mod/Fem/femviewprovider/view_constraint_initialflowvelocity.py index aaec351f1a..68833b5ebd 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_initialflowvelocity.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_initialflowvelocity.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint initial flow velocity ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint initial flow velocity ViewProvider for the document object" __author__ = "Markus Hovorka, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_initialflowvelocity # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_sectionprint.py b/src/Mod/Fem/femviewprovider/view_constraint_sectionprint.py index a19a3e8e30..409ee7d574 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_sectionprint.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_sectionprint.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint section print ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint section print ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_sectionprint # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_selfweight.py b/src/Mod/Fem/femviewprovider/view_constraint_selfweight.py index 0dbeca5e51..d5d594a4ec 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_selfweight.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_selfweight.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint self weight ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint self weight ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_selfweight # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_constraint_tie.py b/src/Mod/Fem/femviewprovider/view_constraint_tie.py index ac0ec1fcf9..e2374a9579 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_tie.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_tie.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM constraint tie ViewProvider for the document object" +__title__ = "FreeCAD FEM constraint tie ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_constraint_tie # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_element_fluid1D.py b/src/Mod/Fem/femviewprovider/view_element_fluid1D.py index bf610088eb..de3e3f2baf 100644 --- a/src/Mod/Fem/femviewprovider/view_element_fluid1D.py +++ b/src/Mod/Fem/femviewprovider/view_element_fluid1D.py @@ -23,9 +23,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element fluid 1D ViewProvider for the document object" +__title__ = "FreeCAD FEM element fluid 1D ViewProvider for the document object" __author__ = "Ofentse Kgoa, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_element_fluid1D # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_element_geometry1D.py b/src/Mod/Fem/femviewprovider/view_element_geometry1D.py index 6e76734f4c..1ed71b8284 100644 --- a/src/Mod/Fem/femviewprovider/view_element_geometry1D.py +++ b/src/Mod/Fem/femviewprovider/view_element_geometry1D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 1D ViewProvider for the document object" +__title__ = "FreeCAD FEM element geometry 1D ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_element_geometry1D # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_element_geometry2D.py b/src/Mod/Fem/femviewprovider/view_element_geometry2D.py index 96ef424f34..cf873e4b47 100644 --- a/src/Mod/Fem/femviewprovider/view_element_geometry2D.py +++ b/src/Mod/Fem/femviewprovider/view_element_geometry2D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element geometry 2D ViewProvider for the document object" +__title__ = "FreeCAD FEM element geometry 2D ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_element_geometry2D # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_element_rotation1D.py b/src/Mod/Fem/femviewprovider/view_element_rotation1D.py index c3cc5a3b32..344f846aec 100644 --- a/src/Mod/Fem/femviewprovider/view_element_rotation1D.py +++ b/src/Mod/Fem/femviewprovider/view_element_rotation1D.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM element rotation 1D ViewProvider for the document object" +__title__ = "FreeCAD FEM element rotation 1D ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_element_rotation1D # \ingroup FEM @@ -38,7 +38,6 @@ class VPElementRotation1D(view_base_femconstraint.VPBaseFemConstraint): A View Provider for the ElementRotation1D object """ - pass """ # do not activate the task panel, since rotation with reference shapes is not yet supported def setEdit(self, vobj, mode=0): diff --git a/src/Mod/Fem/femviewprovider/view_material_common.py b/src/Mod/Fem/femviewprovider/view_material_common.py index 985c8eb918..56c14540e1 100644 --- a/src/Mod/Fem/femviewprovider/view_material_common.py +++ b/src/Mod/Fem/femviewprovider/view_material_common.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material ViewProvider for the document object" +__title__ = "FreeCAD FEM material ViewProvider for the document object" __author__ = "Juergen Riegel, Bernd Hahnebach, Qingfeng Xia" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_material_common # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_material_mechanicalnonlinear.py b/src/Mod/Fem/femviewprovider/view_material_mechanicalnonlinear.py index c012055f2e..108c78c95c 100644 --- a/src/Mod/Fem/femviewprovider/view_material_mechanicalnonlinear.py +++ b/src/Mod/Fem/femviewprovider/view_material_mechanicalnonlinear.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material mechanical nonlinear ViewProvider for the document object" +__title__ = "FreeCAD FEM material mechanical nonlinear ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_material_mechanicalnonlinear # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_material_reinforced.py b/src/Mod/Fem/femviewprovider/view_material_reinforced.py index dc0cb5fa38..5b1a66d818 100644 --- a/src/Mod/Fem/femviewprovider/view_material_reinforced.py +++ b/src/Mod/Fem/femviewprovider/view_material_reinforced.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM material reinforced ViewProvider for the document object" +__title__ = "FreeCAD FEM material reinforced ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_material_reinforced # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_mesh_boundarylayer.py b/src/Mod/Fem/femviewprovider/view_mesh_boundarylayer.py index c33d91e699..56265cf81d 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_boundarylayer.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_boundarylayer.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh boundary layer ViewProvider for the document object" +__title__ = "FreeCAD FEM mesh boundary layer ViewProvider for the document object" __author__ = "Bernd Hahnebach, Qingfeng Xia" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_mesh_boundarylayer # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py b/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py index a983deec84..dd4904da94 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh gmsh ViewProvider for the document object" +__title__ = "FreeCAD FEM mesh gmsh ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_mesh_gmsh # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_mesh_group.py b/src/Mod/Fem/femviewprovider/view_mesh_group.py index f234d4730c..2a602599e6 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_group.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_group.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh group ViewProvider for the document object" +__title__ = "FreeCAD FEM mesh group ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_mesh_group # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_mesh_region.py b/src/Mod/Fem/femviewprovider/view_mesh_region.py index f9c3367410..d702bb121f 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_region.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_region.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh region ViewProvider for the document object" +__title__ = "FreeCAD FEM mesh region ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_mesh_region # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_mesh_result.py b/src/Mod/Fem/femviewprovider/view_mesh_result.py index 13d8b769b9..ef2a369bce 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_result.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_result.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM mesh result ViewProvider for the document object" +__title__ = "FreeCAD FEM mesh result ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_mesh_result # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_result_mechanical.py b/src/Mod/Fem/femviewprovider/view_result_mechanical.py index 902e06d855..92663e0965 100644 --- a/src/Mod/Fem/femviewprovider/view_result_mechanical.py +++ b/src/Mod/Fem/femviewprovider/view_result_mechanical.py @@ -22,9 +22,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD result mechanical ViewProvider for the document object" +__title__ = "FreeCAD result mechanical ViewProvider for the document object" __author__ = "Qingfeng Xia, Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_result_mechanical # \ingroup FEM diff --git a/src/Mod/Fem/femviewprovider/view_solver_ccxtools.py b/src/Mod/Fem/femviewprovider/view_solver_ccxtools.py index 9812c05e6d..04132f8d71 100644 --- a/src/Mod/Fem/femviewprovider/view_solver_ccxtools.py +++ b/src/Mod/Fem/femviewprovider/view_solver_ccxtools.py @@ -21,9 +21,9 @@ # * * # *************************************************************************** -__title__ = "FreeCAD FEM solver calculix ccx tools ViewProvider for the document object" +__title__ = "FreeCAD FEM solver calculix ccx tools ViewProvider for the document object" __author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" +__url__ = "https://www.freecadweb.org" ## @package view_solver_ccxtools # \ingroup FEM diff --git a/src/Mod/Image/Gui/Command.cpp b/src/Mod/Image/Gui/Command.cpp index 4aae6b9ff0..2092e9f7d1 100644 --- a/src/Mod/Image/Gui/Command.cpp +++ b/src/Mod/Image/Gui/Command.cpp @@ -152,7 +152,7 @@ void CmdCreateImagePlane::activated(int iMsg) QString pyfile = Base::Tools::escapeEncodeFilename(s); - openCommand("Create ImagePlane"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create ImagePlane")); doCommand(Doc,"App.activeDocument().addObject('Image::ImagePlane','%s\')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.ImageFile = '%s'",FeatName.c_str(),(const char*)pyfile.toUtf8()); doCommand(Doc,"App.activeDocument().%s.XSize = %d",FeatName.c_str(),nWidth); diff --git a/src/Mod/Image/Gui/Resources/translations/Image_af.qm b/src/Mod/Image/Gui/Resources/translations/Image_af.qm index cd97798676..617540eb51 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_af.qm and b/src/Mod/Image/Gui/Resources/translations/Image_af.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ar.qm b/src/Mod/Image/Gui/Resources/translations/Image_ar.qm index 19cb80512a..b5274dd0c1 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ar.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ar.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ca.qm b/src/Mod/Image/Gui/Resources/translations/Image_ca.qm index 7098150165..1dec6403e4 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ca.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ca.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_cs.qm b/src/Mod/Image/Gui/Resources/translations/Image_cs.qm index d9176babac..cc4acf6ad6 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_cs.qm and b/src/Mod/Image/Gui/Resources/translations/Image_cs.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_de.qm b/src/Mod/Image/Gui/Resources/translations/Image_de.qm index a5b24e6f16..532ac06be2 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_de.qm and b/src/Mod/Image/Gui/Resources/translations/Image_de.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_el.qm b/src/Mod/Image/Gui/Resources/translations/Image_el.qm index 1a8a58354b..7aee889fec 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_el.qm and b/src/Mod/Image/Gui/Resources/translations/Image_el.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_es-ES.qm b/src/Mod/Image/Gui/Resources/translations/Image_es-ES.qm index d865ea009a..13022b5225 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_es-ES.qm and b/src/Mod/Image/Gui/Resources/translations/Image_es-ES.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_eu.qm b/src/Mod/Image/Gui/Resources/translations/Image_eu.qm index bc405ae1b5..c402a5f300 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_eu.qm and b/src/Mod/Image/Gui/Resources/translations/Image_eu.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_fi.qm b/src/Mod/Image/Gui/Resources/translations/Image_fi.qm index 6ee9b62a6c..49abfe237a 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_fi.qm and b/src/Mod/Image/Gui/Resources/translations/Image_fi.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_fil.qm b/src/Mod/Image/Gui/Resources/translations/Image_fil.qm index 99c3579974..9d64817116 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_fil.qm and b/src/Mod/Image/Gui/Resources/translations/Image_fil.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_fr.qm b/src/Mod/Image/Gui/Resources/translations/Image_fr.qm index c16781e784..95127c6dd2 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_fr.qm and b/src/Mod/Image/Gui/Resources/translations/Image_fr.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_gl.qm b/src/Mod/Image/Gui/Resources/translations/Image_gl.qm index 52906f8bc9..5259be18a9 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_gl.qm and b/src/Mod/Image/Gui/Resources/translations/Image_gl.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_hr.qm b/src/Mod/Image/Gui/Resources/translations/Image_hr.qm index 54db9c681b..1e4e43fa68 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_hr.qm and b/src/Mod/Image/Gui/Resources/translations/Image_hr.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_hu.qm b/src/Mod/Image/Gui/Resources/translations/Image_hu.qm index 96c5b15db4..d42755db3b 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_hu.qm and b/src/Mod/Image/Gui/Resources/translations/Image_hu.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_id.qm b/src/Mod/Image/Gui/Resources/translations/Image_id.qm index 855691975d..b25fb882cd 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_id.qm and b/src/Mod/Image/Gui/Resources/translations/Image_id.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_it.qm b/src/Mod/Image/Gui/Resources/translations/Image_it.qm index abf075248b..81810484e8 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_it.qm and b/src/Mod/Image/Gui/Resources/translations/Image_it.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ja.qm b/src/Mod/Image/Gui/Resources/translations/Image_ja.qm index 40abacc0da..9ccc1012b0 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ja.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ja.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_kab.qm b/src/Mod/Image/Gui/Resources/translations/Image_kab.qm index 489aad4ceb..3092df1c26 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_kab.qm and b/src/Mod/Image/Gui/Resources/translations/Image_kab.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ko.qm b/src/Mod/Image/Gui/Resources/translations/Image_ko.qm index 22c716a1f1..9d656d1822 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ko.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ko.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_lt.qm b/src/Mod/Image/Gui/Resources/translations/Image_lt.qm index 51bb8bf961..7018b830f4 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_lt.qm and b/src/Mod/Image/Gui/Resources/translations/Image_lt.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_nl.qm b/src/Mod/Image/Gui/Resources/translations/Image_nl.qm index 8e516706d1..04d8199a32 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_nl.qm and b/src/Mod/Image/Gui/Resources/translations/Image_nl.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_no.qm b/src/Mod/Image/Gui/Resources/translations/Image_no.qm index 8a70b9cf90..e1de632430 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_no.qm and b/src/Mod/Image/Gui/Resources/translations/Image_no.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_pl.qm b/src/Mod/Image/Gui/Resources/translations/Image_pl.qm index 79b342497e..705575869d 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_pl.qm and b/src/Mod/Image/Gui/Resources/translations/Image_pl.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_pt-BR.qm b/src/Mod/Image/Gui/Resources/translations/Image_pt-BR.qm index 606b35797f..8b8368b3d2 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_pt-BR.qm and b/src/Mod/Image/Gui/Resources/translations/Image_pt-BR.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_pt-PT.qm b/src/Mod/Image/Gui/Resources/translations/Image_pt-PT.qm index b4f75b40bf..bce59e73e2 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_pt-PT.qm and b/src/Mod/Image/Gui/Resources/translations/Image_pt-PT.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ro.qm b/src/Mod/Image/Gui/Resources/translations/Image_ro.qm index 8a51854c44..09ebbd5f85 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ro.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ro.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_ru.qm b/src/Mod/Image/Gui/Resources/translations/Image_ru.qm index 8ac0a4d426..4fe000427a 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_ru.qm and b/src/Mod/Image/Gui/Resources/translations/Image_ru.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_sk.qm b/src/Mod/Image/Gui/Resources/translations/Image_sk.qm index fb0cc111c4..fa9efdf635 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_sk.qm and b/src/Mod/Image/Gui/Resources/translations/Image_sk.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_sl.qm b/src/Mod/Image/Gui/Resources/translations/Image_sl.qm index b2c09da86f..e2fc7eb8e0 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_sl.qm and b/src/Mod/Image/Gui/Resources/translations/Image_sl.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_sr.qm b/src/Mod/Image/Gui/Resources/translations/Image_sr.qm index c12f2ca8ac..3b980b72e1 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_sr.qm and b/src/Mod/Image/Gui/Resources/translations/Image_sr.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_sr.ts b/src/Mod/Image/Gui/Resources/translations/Image_sr.ts index 25ce3d5e34..1715cf67b1 100644 --- a/src/Mod/Image/Gui/Resources/translations/Image_sr.ts +++ b/src/Mod/Image/Gui/Resources/translations/Image_sr.ts @@ -6,7 +6,7 @@ Scale image plane - Scale image plane + Скалирај раван слике @@ -21,22 +21,22 @@ <font color='red'>Enter distance</font> - <font color='red'>Enter distance</font> + <font color='red'>Унеси растојање</font> <font color='red'>Select ImagePlane</font> - <font color='red'>Select ImagePlane</font> + <font color='red'>Изабери раван слике</font> Select second point - Select second point + Изабери другу тачку Select Image Plane and type distance - Select Image Plane and type distance + Изабери раван слике и унеси растојање @@ -44,12 +44,12 @@ Scale image plane - Scale image plane + Скалирај раван слике Scales an image plane by defining a distance between two points - Scales an image plane by defining a distance between two points + Скалира раван слике дефинишући растојање између две тачке @@ -62,7 +62,7 @@ Create image plane... - Креирање равни слике ... + Креирање равни слике... @@ -80,7 +80,7 @@ Open... - Отвори ... + Отвори... @@ -98,12 +98,12 @@ Scale... - Scale... + Размера... Image Scaling - Image Scaling + Скалирање слике @@ -131,7 +131,7 @@ Image plane - Раван од слике + Раван слике @@ -164,7 +164,7 @@ &Fit image - &Уклапање слике + &Уклопи слику @@ -174,12 +174,12 @@ &1:1 scale - &1:1 мера + &1:1 размера Display the image at a 1:1 scale - Приказ слике у мерилу 1:1 + Приказ слике у размери 1:1 @@ -194,7 +194,7 @@ grey - сиве боје + сива боја diff --git a/src/Mod/Image/Gui/Resources/translations/Image_sv-SE.qm b/src/Mod/Image/Gui/Resources/translations/Image_sv-SE.qm index f6b1e80bde..17791c8eee 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_sv-SE.qm and b/src/Mod/Image/Gui/Resources/translations/Image_sv-SE.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_tr.qm b/src/Mod/Image/Gui/Resources/translations/Image_tr.qm index 0123691e56..7391666165 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_tr.qm and b/src/Mod/Image/Gui/Resources/translations/Image_tr.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_uk.qm b/src/Mod/Image/Gui/Resources/translations/Image_uk.qm index eb258313ae..8ab925c7af 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_uk.qm and b/src/Mod/Image/Gui/Resources/translations/Image_uk.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_val-ES.qm b/src/Mod/Image/Gui/Resources/translations/Image_val-ES.qm index 90878a00db..25dd98be71 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_val-ES.qm and b/src/Mod/Image/Gui/Resources/translations/Image_val-ES.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_vi.qm b/src/Mod/Image/Gui/Resources/translations/Image_vi.qm index c52a83697d..20450ac7a2 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_vi.qm and b/src/Mod/Image/Gui/Resources/translations/Image_vi.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_zh-CN.qm b/src/Mod/Image/Gui/Resources/translations/Image_zh-CN.qm index b307c62802..660129d06e 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_zh-CN.qm and b/src/Mod/Image/Gui/Resources/translations/Image_zh-CN.qm differ diff --git a/src/Mod/Image/Gui/Resources/translations/Image_zh-TW.qm b/src/Mod/Image/Gui/Resources/translations/Image_zh-TW.qm index 320dfbb3ae..1eaaa08473 100644 Binary files a/src/Mod/Image/Gui/Resources/translations/Image_zh-TW.qm and b/src/Mod/Image/Gui/Resources/translations/Image_zh-TW.qm differ diff --git a/src/Mod/Image/ImageTools/_CommandImageScaling.py b/src/Mod/Image/ImageTools/_CommandImageScaling.py index 0f793a2692..790606a642 100644 --- a/src/Mod/Image/ImageTools/_CommandImageScaling.py +++ b/src/Mod/Image/ImageTools/_CommandImageScaling.py @@ -36,7 +36,6 @@ if FreeCAD.GuiUp: import pivy.coin as pvy import FreeCADGui - import draftguitools.gui_trackers as trackers # Translation-related code # See forum thread "A new Part tool is being born... JoinFeatures!" @@ -65,7 +64,8 @@ class _CommandImageScaling: 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Image_Scaling", "Scales an image plane by defining a distance between two points")} def Activated(self): - cmdCreateImageScaling(name="ImageScaling") + import draftguitools.gui_trackers as trackers + cmdCreateImageScaling(name="ImageScaling", trackers=trackers) def IsActive(self): if FreeCAD.ActiveDocument: @@ -78,7 +78,7 @@ if FreeCAD.GuiUp: # helper -def cmdCreateImageScaling(name): +def cmdCreateImageScaling(name, trackers): def distance(p1,p2): dx=p2[0]-p1[0] diff --git a/src/Mod/Import/App/AppImportPy.cpp b/src/Mod/Import/App/AppImportPy.cpp index 63a7ab6161..3f629d102b 100644 --- a/src/Mod/Import/App/AppImportPy.cpp +++ b/src/Mod/Import/App/AppImportPy.cpp @@ -363,7 +363,8 @@ private: Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("STEP"); - makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str())); + // https://forum.freecadweb.org/viewtopic.php?f=8&t=52967 + //makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str())); makeHeader.SetAuthorValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Author", "Author").c_str())); makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Company").c_str())); makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::GetApplication().getExecutableName())); diff --git a/src/Mod/Import/App/dxf.cpp b/src/Mod/Import/App/dxf.cpp index c6a0608811..19e116beac 100644 --- a/src/Mod/Import/App/dxf.cpp +++ b/src/Mod/Import/App/dxf.cpp @@ -1772,7 +1772,7 @@ double CDxfRead::mm( double value ) const { if(m_measurement_inch) { - value *= 0.0393700787401575; + value *= 25.4; } switch(m_eUnits) diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp index ff3d2b2bdd..d6054176fe 100644 --- a/src/Mod/Import/Gui/AppImportGuiPy.cpp +++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp @@ -69,6 +69,11 @@ # include # include # include +# include +#if OCC_VERSION_HEX >= 0x070500 +# include +# include +#endif #if OCC_VERSION_HEX >= 0x060500 # include # else @@ -657,7 +662,8 @@ private: Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("STEP"); - makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str())); + // https://forum.freecadweb.org/viewtopic.php?f=8&t=52967 + //makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)Utf8Name.c_str())); makeHeader.SetAuthorValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Author", "Author").c_str())); makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString(hGrp->GetASCII("Company").c_str())); makeHeader.SetOriginatingSystem(new TCollection_HAsciiString(App::GetApplication().getExecutableName())); @@ -683,6 +689,22 @@ private: throw Py::Exception(); } } + else if (file.hasExtension("glb") || file.hasExtension("gltf")) { +#if OCC_VERSION_HEX >= 0x070500 + TColStd_IndexedDataMapOfStringString aMetadata; + RWGltf_CafWriter aWriter (name8bit.c_str(), file.hasExtension("glb")); + aWriter.SetTransformationFormat (RWGltf_WriterTrsfFormat_Compact); + //aWriter.ChangeCoordinateSystemConverter().SetInputLengthUnit (0.001); + aWriter.ChangeCoordinateSystemConverter().SetInputCoordinateSystem (RWMesh_CoordinateSystem_Zup); + Standard_Boolean ret = aWriter.Perform (hDoc, aMetadata, Message_ProgressRange()); + if (!ret) { + PyErr_Format(PyExc_IOError, "Cannot save to file '%s'", Utf8Name.c_str()); + throw Py::Exception(); + } +#else + throw Py::RuntimeError("gITF support requires OCCT 7.5.0 or later"); +#endif + } hApp->Close(hDoc); } diff --git a/src/Mod/Import/Gui/Command.cpp b/src/Mod/Import/Gui/Command.cpp index 67dea401f9..35ba34aec3 100644 --- a/src/Mod/Import/Gui/Command.cpp +++ b/src/Mod/Import/Gui/Command.cpp @@ -57,7 +57,7 @@ FCCmdImportReadBREP::FCCmdImportReadBREP() void FCCmdImportReadBREP::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Read BREP"); + openCommand(QT_TRANSLATE_NOOP("Command", "Read BREP")); QString fn = Gui::FileDialog::getOpenFileName(Gui::getMainWindow(), QString(), QString(), QLatin1String("BREP (*.brep *.rle)")); if (fn.isEmpty()) { abortCommand(); @@ -97,7 +97,7 @@ void ImportStep::activated(int iMsg) Q_UNUSED(iMsg); QString fn = Gui::FileDialog::getOpenFileName(Gui::getMainWindow(), QString(), QString(), QLatin1String("STEP (*.stp *.step)")); if (!fn.isEmpty()) { - openCommand("Part ImportSTEP Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part ImportSTEP Create")); doCommand(Doc,"f = App.document().addObject(\"ImportStep\",\"ImportStep\")"); fn = Base::Tools::escapeEncodeFilename(fn); doCommand(Doc,"f.FileName = \"%s\"",(const char*)fn.toUtf8()); @@ -137,7 +137,7 @@ void ImportIges::activated(int iMsg) Q_UNUSED(iMsg); QString fn = Gui::FileDialog::getOpenFileName(Gui::getMainWindow(), QString(), QString(), QLatin1String("IGES (*.igs *.iges)")); if (!fn.isEmpty()) { - openCommand("ImportIGES Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "ImportIGES Create")); doCommand(Doc,"f = App.document().addObject(\"ImportIges\",\"ImportIges\")"); fn = Base::Tools::escapeEncodeFilename(fn); doCommand(Doc,"f.FileName = \"%s\"",(const char*)fn.toUtf8()); diff --git a/src/Mod/Import/InitGui.py b/src/Mod/Import/InitGui.py index 046d29709f..fa535cb731 100644 --- a/src/Mod/Import/InitGui.py +++ b/src/Mod/Import/InitGui.py @@ -33,6 +33,7 @@ # Registered in Part's Init.py file FreeCAD.changeImportModule("STEP with colors (*.step *.stp)","Import","ImportGui") FreeCAD.changeExportModule("STEP with colors (*.step *.stp)","Import","ImportGui") +FreeCAD.addExportType("glTF (*.gltf *.glb)","ImportGui") """ class ImportWorkbench ( Workbench ): diff --git a/src/Mod/Inspection/Gui/PreCompiled.h b/src/Mod/Inspection/Gui/PreCompiled.h index 51a9c83eca..f85a50c642 100644 --- a/src/Mod/Inspection/Gui/PreCompiled.h +++ b/src/Mod/Inspection/Gui/PreCompiled.h @@ -40,7 +40,9 @@ #endif #ifdef FC_OS_WIN32 +# ifndef NOMINMAX # define NOMINMAX +# endif #endif #ifdef _MSC_VER diff --git a/src/Mod/Inspection/Gui/VisualInspection.cpp b/src/Mod/Inspection/Gui/VisualInspection.cpp index 7f3249dfc6..310791fed9 100644 --- a/src/Mod/Inspection/Gui/VisualInspection.cpp +++ b/src/Mod/Inspection/Gui/VisualInspection.cpp @@ -228,7 +228,7 @@ void VisualInspection::accept() // open a new command Gui::Document* doc = Gui::Application::Instance->activeDocument(); - doc->openCommand("Visual Inspection"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Visual Inspection")); // create a group Gui::Command::runCommand( diff --git a/src/Mod/Material/MaterialEditor.py b/src/Mod/Material/MaterialEditor.py index 019104bcde..a058ac440e 100644 --- a/src/Mod/Material/MaterialEditor.py +++ b/src/Mod/Material/MaterialEditor.py @@ -30,7 +30,7 @@ from PySide import QtCore, QtGui, QtSvg import FreeCAD import FreeCADGui -import Material_rc +# import Material_rc # is this still needed after the move to card utils??? if sys.version_info.major >= 3: @@ -65,9 +65,9 @@ class MaterialEditor: # restore size and position p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Material") - w = p.GetInt("MaterialEditorWidth",441) - h = p.GetInt("MaterialEditorHeight",626) - self.widget.resize(w,h) + w = p.GetInt("MaterialEditorWidth", 441) + h = p.GetInt("MaterialEditorHeight", 626) + self.widget.resize(w, h) # additional UI fixes and tweaks widget = self.widget @@ -80,7 +80,6 @@ class MaterialEditor: comboMaterial = widget.ComboMaterial treeView = widget.treeView - # create preview svg slots self.widget.PreviewRender = QtSvg.QSvgWidget(":/icons/preview-rendered.svg") self.widget.PreviewRender.setMaximumWidth(64) @@ -174,10 +173,10 @@ class MaterialEditor: itType = QtGui.QStandardItem(tt) top.appendRow([item, it, itType]) - treeView.setExpanded(top.index(),p.GetBool("TreeExpand"+gg,True)) - #top.sortChildren(0) + treeView.setExpanded(top.index(), p.GetBool("TreeExpand"+gg, True)) + # top.sortChildren(0) - #treeView.expandAll() + # treeView.expandAll() def updateMatParamsInTree(self, data): @@ -294,12 +293,12 @@ class MaterialEditor: "stores the widget size" # store widths p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Material") - p.SetInt("MaterialEditorWidth",self.widget.width()) - p.SetInt("MaterialEditorHeight",self.widget.height()) + p.SetInt("MaterialEditorWidth", self.widget.width()) + p.SetInt("MaterialEditorHeight", self.widget.height()) root = self.widget.treeView.model().invisibleRootItem() for gg in range(root.rowCount()): group = root.child(gg) - p.SetBool("TreeExpand"+group.text(),self.widget.treeView.isExpanded(group.index())) + p.SetBool("TreeExpand"+group.text(), self.widget.treeView.isExpanded(group.index())) def expandKey(self, key): "adds spaces before caps in a KeyName" @@ -414,6 +413,8 @@ class MaterialEditor: "returns a dictionary from the contents of the editor." model = self.widget.treeView.model() + if model is None: + return {} root = model.invisibleRootItem() d = {} @@ -454,7 +455,7 @@ class MaterialEditor: self.widget.PreviewVector.show() ''' - def updatePreviews(self,mat=None): + def updatePreviews(self, mat=None): "updates the preview images from the content of the editor" if not mat: mat = self.getDict() @@ -477,27 +478,27 @@ class MaterialEditor: svg = QtCore.QTextStream(fd).readAll() fd.close() if diffcol: - svg = svg.replace("#d3d7cf",self.getColorHash(diffcol,val=255)) - svg = svg.replace("#555753",self.getColorHash(diffcol,val=125)) + svg = svg.replace("#d3d7cf", self.getColorHash(diffcol, val=255)) + svg = svg.replace("#555753", self.getColorHash(diffcol, val=125)) if highlightcol: - svg = svg.replace("#fffffe",self.getColorHash(highlightcol,val=255)) - self.widget.PreviewRender.load(QtCore.QByteArray(bytes(svg,encoding="utf8"))) + svg = svg.replace("#fffffe", self.getColorHash(highlightcol, val=255)) + self.widget.PreviewRender.load(QtCore.QByteArray(bytes(svg, encoding="utf8"))) if diffcol or sectioncol: fd = QtCore.QFile(":/icons/preview-vector.svg") if fd.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text): svg = QtCore.QTextStream(fd).readAll() fd.close() if diffcol: - svg = svg.replace("#d3d7cf",self.getColorHash(diffcol,val=255)) - svg = svg.replace("#555753",self.getColorHash(diffcol,val=125)) + svg = svg.replace("#d3d7cf", self.getColorHash(diffcol, val=255)) + svg = svg.replace("#555753", self.getColorHash(diffcol, val=125)) if sectioncol: - svg = svg.replace("#ffffff",self.getColorHash(sectioncol,val=255)) - self.widget.PreviewVector.load(QtCore.QByteArray(bytes(svg,encoding="utf8"))) + svg = svg.replace("#ffffff", self.getColorHash(sectioncol, val=255)) + self.widget.PreviewVector.load(QtCore.QByteArray(bytes(svg, encoding="utf8"))) - def getColorHash(self,col,val=255): + def getColorHash(self, col, val=255): "returns a '#000000' string from a '(0.1,0.2,0.3)' string" col = [float(x.strip()) for x in col.strip("()").split(",")] - color = QtGui.QColor(int(col[0]*val),int(col[1]*val),int(col[2]*val)) + color = QtGui.QColor(int(col[0]*val), int(col[1]*val), int(col[2]*val)) return color.name() def openfile(self): diff --git a/src/Mod/Material/materialtools/cardutils.py b/src/Mod/Material/materialtools/cardutils.py index 7af3deb437..29afb305f9 100644 --- a/src/Mod/Material/materialtools/cardutils.py +++ b/src/Mod/Material/materialtools/cardutils.py @@ -100,11 +100,11 @@ def get_material_resources(category='Solid'): if os.path.exists(custom_mat_dir): resources[custom_mat_dir] = ":/icons/user.svg" # fail silently - #else: - # FreeCAD.Console.PrintError( - # 'Custom material directory set by user: {} does not exist.\n' - # .format(custom_mat_dir) - # ) + # else: + # FreeCAD.Console.PrintError( + # 'Custom material directory set by user: {} does not exist.\n' + # .format(custom_mat_dir) + # ) return resources @@ -149,7 +149,7 @@ def add_cards_from_a_dir(materials, cards, icons, mat_dir, icon, template=False) for a_path in dir_path_list: try: mat_dict = read(a_path) - except: + except Exception: FreeCAD.Console.PrintError( 'Error on reading card data. The card data will be empty for card:\n{}\n' .format(a_path) @@ -483,7 +483,7 @@ def check_value_unit(param, value): '{} Unit {} is known by FreeCAD, but wrong for parameter {}.\n' .format(some_text, unitproblem, param) ) - except: + except Exception: FreeCAD.Console.PrintError( '{} Not known problem.\n' .format(some_text) @@ -494,7 +494,7 @@ def check_value_unit(param, value): '{} Unit {} is not known by FreeCAD.\n' .format(some_text, unitproblem) ) - except: + except Exception: FreeCAD.Console.PrintError( '{} Not known problem.\n' .format(some_text) @@ -584,7 +584,7 @@ def output_value_unit_info(param, value): '{} Unit {} is known by FreeCAD, but wrong for parameter {}.\n' .format(some_text, unitproblem, param) ) - except: + except Exception: FreeCAD.Console.PrintError( '{} Not known problem.\n' .format(some_text) @@ -597,7 +597,7 @@ def output_value_unit_info(param, value): .format(some_text, unitproblem) ) - except: + except Exception: FreeCAD.Console.PrintError( '{} Not known problem.\n' .format(some_text) diff --git a/src/Mod/Measure/App/PreCompiled.h b/src/Mod/Measure/App/PreCompiled.h index aede0035ad..2baa186764 100644 --- a/src/Mod/Measure/App/PreCompiled.h +++ b/src/Mod/Measure/App/PreCompiled.h @@ -39,8 +39,10 @@ #ifdef FC_OS_WIN32 #define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX #endif +#endif #ifdef _PreComp_ diff --git a/src/Mod/Mesh/Gui/Command.cpp b/src/Mod/Mesh/Gui/Command.cpp index 648b22513d..625cb58201 100644 --- a/src/Mod/Mesh/Gui/Command.cpp +++ b/src/Mod/Mesh/Gui/Command.cpp @@ -107,7 +107,7 @@ void CmdMeshTransform::activated(int) std::string fName = getUniqueObjectName("Move"); std::vector cSel = getSelection().getSelection(); - openCommand("Mesh Mesh Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Mesh Create")); doCommand(Doc,"App.activeDocument().addObject(\"Mesh::Transform\",\"%s\")",fName.c_str()); doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s",fName.c_str(),cSel[0].FeatName); doCommand(Gui,"Gui.hide(\"%s\")",cSel[0].FeatName); @@ -146,7 +146,7 @@ void CmdMeshDemolding::activated(int) std::string fName = getUniqueObjectName("Demolding"); std::vector cSel = getSelection().getSelection(); - openCommand("Mesh Mesh Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Mesh Create")); doCommand(Doc,"App.activeDocument().addObject(\"Mesh::TransformDemolding\",\"%s\")",fName.c_str()); doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s",fName.c_str(),cSel[0].FeatName); doCommand(Gui,"Gui.hide(\"%s\")",cSel[0].FeatName); @@ -185,7 +185,7 @@ void CmdMeshToolMesh::activated(int) App::DocumentObject* mesh = fea.front(); App::DocumentObject* tool = fea.back(); - openCommand("Segment by tool mesh"); + openCommand(QT_TRANSLATE_NOOP("Command", "Segment by tool mesh")); doCommand(Doc, "import Mesh"); doCommand(Gui, "import MeshGui"); doCommand(Doc, @@ -240,7 +240,7 @@ void CmdMeshUnion::activated(int) std::string name3 = getUniqueObjectName("Union"); try { - openCommand("Mesh union"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh union")); doCommand(Doc, "import OpenSCADUtils\n" "mesh = OpenSCADUtils.meshoptempfile('union',(App.ActiveDocument.%s.Mesh,App.ActiveDocument.%s.Mesh))\n" @@ -309,7 +309,7 @@ void CmdMeshDifference::activated(int) std::string name1 = obj.front()->getNameInDocument(); std::string name2 = obj.back()->getNameInDocument(); std::string name3 = getUniqueObjectName("Difference"); - openCommand("Mesh difference"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh difference")); try { doCommand(Doc, @@ -380,7 +380,7 @@ void CmdMeshIntersection::activated(int) std::string name1 = obj.front()->getNameInDocument(); std::string name2 = obj.back()->getNameInDocument(); std::string name3 = getUniqueObjectName("Intersection"); - openCommand("Mesh intersection"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh intersection")); try { doCommand(Doc, @@ -466,7 +466,7 @@ void CmdMeshImport::activated(int) for (QStringList::Iterator it = fn.begin(); it != fn.end(); ++it) { std::string unicodepath = Base::Tools::escapedUnicodeFromUtf8((*it).toUtf8().data()); unicodepath = Base::Tools::escapeEncodeFilename(unicodepath); - openCommand("Import Mesh"); + openCommand(QT_TRANSLATE_NOOP("Command", "Import Mesh")); doCommand(Doc,"import Mesh"); doCommand(Doc,"Mesh.insert(u\"%s\")", unicodepath.c_str()); @@ -573,7 +573,7 @@ void CmdMeshFromGeometry::activated(int) { bool ok; double tol = QInputDialog::getDouble(Gui::getMainWindow(), QObject::tr("Meshing Tolerance"), - QObject::tr("Enter tolerance for meshing geometry:"), 0.1, 0.01,10.0,2,&ok); + QObject::tr("Enter tolerance for meshing geometry:"), 0.1, 0.01, 10.0, 2, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; @@ -662,7 +662,7 @@ void CmdMeshVertexCurvature::activated(int) fName += "_Curvature"; fName = getUniqueObjectName(fName.c_str()); - openCommand("Mesh VertexCurvature"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh VertexCurvature")); App::DocumentObject* grp = App::DocumentObjectGroup::getGroupOfObject( *it ); if (grp) doCommand(Doc,"App.activeDocument().getObject(\"%s\").newObject(\"Mesh::Curvature\",\"%s\")",grp->getNameInDocument(), fName.c_str()); @@ -706,7 +706,7 @@ void CmdMeshVertexCurvatureInfo::activated(int) viewer->setEditing(true); viewer->setRedirectToSceneGraph(true); viewer->setSelectionEnabled(false); - viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmapFromSvg("mesh_pipette",QSize(32,32)),4,29)); + viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmapFromSvg("Mesh_Pipette",QSize(32,32)),4,29)); viewer->addEventCallback(SoEvent::getClassTypeId(), MeshGui::ViewProviderMeshCurvature::curvatureInfoCallback); } @@ -896,7 +896,7 @@ CmdMeshPolyCut::CmdMeshPolyCut() sToolTipText = QT_TR_NOOP("Cuts a mesh with a picked polygon"); sWhatsThis = "Mesh_PolyCut"; sStatusTip = QT_TR_NOOP("Cuts a mesh with a picked polygon"); - sPixmap = "mesh_cut"; + sPixmap = "Mesh_Cut"; } void CmdMeshPolyCut::activated(int) @@ -1199,7 +1199,7 @@ CmdMeshEvaluateFacet::CmdMeshEvaluateFacet() sToolTipText = QT_TR_NOOP("Information about face"); sWhatsThis = "Mesh_EvaluateFacet"; sStatusTip = QT_TR_NOOP("Information about face"); - sPixmap = "mesh_pipette"; + sPixmap = "Mesh_Pipette"; } void CmdMeshEvaluateFacet::activated(int) @@ -1209,7 +1209,7 @@ void CmdMeshEvaluateFacet::activated(int) if (view) { Gui::View3DInventorViewer* viewer = view->getViewer(); viewer->setEditing(true); - viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmapFromSvg("mesh_pipette",QSize(32,32)),4,29)); + viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmapFromSvg("Mesh_Pipette",QSize(32,32)),4,29)); viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(), MeshGui::ViewProviderMeshFaceSet::faceInfoCallback); } } @@ -1411,7 +1411,7 @@ void CmdMeshSmoothing::activated(int) MeshGui::SmoothingDialog dlg(Gui::getMainWindow()); if (dlg.exec() == QDialog::Accepted) { Gui::WaitCursor wc; - openCommand("Mesh Smoothing"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Smoothing")); std::vector meshes = getSelection().getObjectsOfType(Mesh::Feature::getClassTypeId()); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { Mesh::Feature* mesh = (Mesh::Feature*)*it; @@ -1502,7 +1502,7 @@ CmdMeshHarmonizeNormals::CmdMeshHarmonizeNormals() void CmdMeshHarmonizeNormals::activated(int) { std::vector meshes = getSelection().getObjectsOfType(Mesh::Feature::getClassTypeId()); - openCommand("Harmonize mesh normals"); + openCommand(QT_TRANSLATE_NOOP("Command", "Harmonize mesh normals")); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { doCommand(Doc,"App.activeDocument().getObject(\"%s\").Mesh.harmonizeNormals()" ,(*it)->getNameInDocument()); @@ -1536,7 +1536,7 @@ CmdMeshFlipNormals::CmdMeshFlipNormals() void CmdMeshFlipNormals::activated(int) { std::vector meshes = getSelection().getObjectsOfType(Mesh::Feature::getClassTypeId()); - openCommand("Flip mesh normals"); + openCommand(QT_TRANSLATE_NOOP("Command", "Flip mesh normals")); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { doCommand(Doc,"App.activeDocument().getObject(\"%s\").Mesh.flipNormals()" ,(*it)->getNameInDocument()); @@ -1645,9 +1645,9 @@ void CmdMeshFillupHoles::activated(int) std::vector meshes = getSelection().getObjectsOfType(Mesh::Feature::getClassTypeId()); bool ok; int FillupHolesOfLength = QInputDialog::getInt(Gui::getMainWindow(), QObject::tr("Fill holes"), - QObject::tr("Fill holes with maximum number of edges:"), 3, 3, 10000, 1, &ok); + QObject::tr("Fill holes with maximum number of edges:"), 3, 3, 10000, 1, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; - openCommand("Fill up holes"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fill up holes")); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { doCommand(Doc,"App.activeDocument().getObject(\"%s\").Mesh.fillupHoles(%d)" ,(*it)->getNameInDocument(), FillupHolesOfLength); @@ -1675,7 +1675,7 @@ CmdMeshFillInteractiveHole::CmdMeshFillInteractiveHole() sToolTipText = QT_TR_NOOP("Close holes interactively"); sWhatsThis = "Mesh_FillInteractiveHole"; sStatusTip = QT_TR_NOOP("Close holes interactively"); - sPixmap = "mesh_boundary"; + sPixmap = "Mesh_Boundary"; } void CmdMeshFillInteractiveHole::activated(int) @@ -1798,7 +1798,7 @@ void CmdMeshMerge::activated(int) if (!pcDoc) return; - openCommand("Mesh merge"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh merge")); Mesh::Feature *pcFeature = static_cast(pcDoc->addObject("Mesh::Feature", "Mesh")); Mesh::MeshObject* newMesh = pcFeature->Mesh.startEditing(); std::vector objs = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); @@ -1821,6 +1821,52 @@ bool CmdMeshMerge::isActive(void) //-------------------------------------------------------------------------------------- +DEF_STD_CMD_A(CmdMeshSplitComponents) + +CmdMeshSplitComponents::CmdMeshSplitComponents() + : Command("Mesh_SplitComponents") +{ + sAppModule = "Mesh"; + sGroup = QT_TR_NOOP("Mesh"); + sMenuText = QT_TR_NOOP("Split by components"); + sToolTipText = QT_TR_NOOP("Split selected mesh into its components"); + sWhatsThis = "Mesh_SplitComponents"; + sStatusTip = sToolTipText; + //sPixmap = "Mesh_SplitComponents"; +} + +void CmdMeshSplitComponents::activated(int) +{ + App::Document *pcDoc = App::GetApplication().getActiveDocument(); + if (!pcDoc) + return; + + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh split")); + std::vector objs = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); + for (std::vector::const_iterator it = objs.begin(); it != objs.end(); ++it) { + const MeshObject& mesh = static_cast(*it)->Mesh.getValue(); + std::vector > comps = mesh.getComponents(); + + for (const auto comp : comps ) { + std::unique_ptr kernel(mesh.meshFromSegment(comp)); + kernel->setTransform(mesh.getTransform()); + + Mesh::Feature* feature = static_cast(pcDoc->addObject("Mesh::Feature", "Component")); + feature->Mesh.setValuePtr(kernel.release()); + } + } + + updateActive(); + commitCommand(); +} + +bool CmdMeshSplitComponents::isActive(void) +{ + return getSelection().countObjectsOfType(Mesh::Feature::getClassTypeId()) == 1; +} + +//-------------------------------------------------------------------------------------- + DEF_STD_CMD_A(CmdMeshScale) CmdMeshScale::CmdMeshScale() @@ -1843,11 +1889,11 @@ void CmdMeshScale::activated(int) bool ok; double factor = QInputDialog::getDouble(Gui::getMainWindow(), QObject::tr("Scaling"), - QObject::tr("Enter scaling factor:"), 1, 0, DBL_MAX, 5, &ok); + QObject::tr("Enter scaling factor:"), 1, 0, DBL_MAX, 5, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok || factor == 0) return; - openCommand("Mesh scale"); + openCommand(QT_TRANSLATE_NOOP("Command", "Mesh scale")); std::vector objs = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); Base::Matrix4D mat; mat.scale(factor,factor,factor); @@ -1909,5 +1955,6 @@ void CreateMeshCommands(void) rcCmdMgr.addCommand(new CmdMeshSegmentation()); rcCmdMgr.addCommand(new CmdMeshSegmentationBestFit); rcCmdMgr.addCommand(new CmdMeshMerge()); + rcCmdMgr.addCommand(new CmdMeshSplitComponents()); rcCmdMgr.addCommand(new CmdMeshScale()); } diff --git a/src/Mod/Mesh/Gui/DlgDecimating.cpp b/src/Mod/Mesh/Gui/DlgDecimating.cpp index 2d1a81e47d..3b05c8f9d6 100644 --- a/src/Mod/Mesh/Gui/DlgDecimating.cpp +++ b/src/Mod/Mesh/Gui/DlgDecimating.cpp @@ -144,7 +144,7 @@ bool TaskDecimating::accept() Gui::Selection().clearSelection(); Gui::WaitCursor wc; - Gui::Command::openCommand("Mesh Decimating"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Decimating")); float tolerance = widget->tolerance(); float reduction = widget->reduction(); diff --git a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp index 1d1e984d1a..cf4ef6631b 100644 --- a/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp +++ b/src/Mod/Mesh/Gui/DlgEvaluateMeshImp.cpp @@ -480,7 +480,7 @@ void DlgEvaluateMeshImp::on_repairOrientationButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Harmonize normals"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Harmonize normals")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").harmonizeNormals()" @@ -583,7 +583,7 @@ void DlgEvaluateMeshImp::on_repairNonmanifoldsButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Remove non-manifolds"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Remove non-manifolds")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").removeNonManifolds()" @@ -682,7 +682,7 @@ void DlgEvaluateMeshImp::on_repairIndicesButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Fix indices"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Fix indices")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").fixIndices()" @@ -748,7 +748,7 @@ void DlgEvaluateMeshImp::on_repairDegeneratedButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Remove degenerated faces"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Remove degenerated faces")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").fixDegenerations(%f)" @@ -815,7 +815,7 @@ void DlgEvaluateMeshImp::on_repairDuplicatedFacesButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Remove duplicated faces"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Remove duplicated faces")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").removeDuplicatedFacets()" @@ -880,7 +880,7 @@ void DlgEvaluateMeshImp::on_repairDuplicatedPointsButton_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Remove duplicated points"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Remove duplicated points")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").removeDuplicatedPoints()" @@ -964,7 +964,7 @@ void DlgEvaluateMeshImp::on_repairSelfIntersectionButton_clicked() const char* objName = d->meshFeature->getNameInDocument(); #endif Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Fix self-intersections"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Fix self-intersections")); #if 0 try { Gui::Application::Instance->runCommand( @@ -1051,7 +1051,7 @@ void DlgEvaluateMeshImp::on_repairFoldsButton_clicked() const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); qApp->setOverrideCursor(Qt::WaitCursor); - doc->openCommand("Remove folds"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Remove folds")); try { Gui::Command::doCommand(Gui::Command::App , "App.getDocument(\"%s\").getObject(\"%s\").removeFoldsOnSurface()" @@ -1091,7 +1091,7 @@ void DlgEvaluateMeshImp::on_repairAllTogether_clicked() const char* docName = App::GetApplication().getDocumentName(d->meshFeature->getDocument()); const char* objName = d->meshFeature->getNameInDocument(); Gui::Document* doc = Gui::Application::Instance->getDocument(docName); - doc->openCommand("Repair mesh"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Repair mesh")); bool run = false; bool self = true; diff --git a/src/Mod/Mesh/Gui/DlgSmoothing.cpp b/src/Mod/Mesh/Gui/DlgSmoothing.cpp index 97ff13651e..726afb2d62 100644 --- a/src/Mod/Mesh/Gui/DlgSmoothing.cpp +++ b/src/Mod/Mesh/Gui/DlgSmoothing.cpp @@ -175,7 +175,7 @@ bool TaskSmoothing::accept() return true; Gui::WaitCursor wc; - Gui::Command::openCommand("Mesh Smoothing"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Mesh Smoothing")); bool hasSelection = false; for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { diff --git a/src/Mod/Mesh/Gui/PreCompiled.h b/src/Mod/Mesh/Gui/PreCompiled.h index 081e61844f..ae3cad9960 100644 --- a/src/Mod/Mesh/Gui/PreCompiled.h +++ b/src/Mod/Mesh/Gui/PreCompiled.h @@ -86,7 +86,9 @@ #endif #elif defined(FC_OS_WIN32) +#ifndef NOMINMAX #define NOMINMAX +#endif #include #endif //_PreComp_ diff --git a/src/Mod/Mesh/Gui/RemoveComponents.cpp b/src/Mod/Mesh/Gui/RemoveComponents.cpp index 1ffc8a2be3..253af04952 100644 --- a/src/Mod/Mesh/Gui/RemoveComponents.cpp +++ b/src/Mod/Mesh/Gui/RemoveComponents.cpp @@ -127,7 +127,7 @@ void RemoveComponents::deleteSelection() Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (!doc) return; // delete all selected faces - doc->openCommand("Delete selection"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Delete selection")); bool ok = meshSel.deleteSelection(); if (!ok) doc->abortCommand(); diff --git a/src/Mod/Mesh/Gui/Resources/Mesh.qrc b/src/Mod/Mesh/Gui/Resources/Mesh.qrc index 0168137170..e607d71a58 100644 --- a/src/Mod/Mesh/Gui/Resources/Mesh.qrc +++ b/src/Mod/Mesh/Gui/Resources/Mesh.qrc @@ -1,40 +1,40 @@ - - icons/mesh_boundary.svg - icons/mesh_cut.svg - icons/mesh_pipette.svg - icons/Tree_Mesh.svg + + icons/Mesh_Add_Facet.svg + icons/Mesh_Boundary.svg + icons/Mesh_Bounding_Box.svg + icons/Mesh_Cross_Sections.svg + icons/Mesh_Curvature_Info.svg icons/Mesh_Curvature_Plot.svg + icons/Mesh_Cut.svg + icons/Mesh_Decimating.svg + icons/Mesh_Difference.svg + icons/Mesh_Evaluate_Solid.svg + icons/Mesh_Evaluation.svg icons/Mesh_Export_Mesh.svg - icons/Mesh_Import_Mesh.svg - icons/Mesh_Mesh_from_Shape.svg icons/Mesh_Flip_Normals.svg icons/Mesh_Harmonize_Normals.svg + icons/Mesh_Import_Mesh.svg + icons/Mesh_Intersection.svg + icons/Mesh_Merge.svg + icons/Mesh_Mesh_from_Shape.svg + icons/Mesh_Pipette.svg + icons/Mesh_Poly_Trim.svg icons/Mesh_Regular_Solid.svg + icons/Mesh_Remesh_Gmsh.svg + icons/Mesh_Remove_Comp_by_Hand.svg icons/Mesh_Remove_Components.svg - icons/Mesh_Tree_Curvature_Plot.svg - icons/MeshWorkbench.svg + icons/Mesh_Scale.svg + icons/Mesh_Section_by_Plane.svg icons/Mesh_Fill_up_Holes.svg - icons/Mesh_Union.svg - icons/Mesh_Smoothing.svg icons/Mesh_Segmentation_Best_Fit.svg icons/Mesh_Segmentation.svg - icons/Mesh_Section_by_Plane.svg - icons/Mesh_Scale.svg - icons/Mesh_Remove_Comp_by_Hand.svg - icons/Mesh_Remesh_Gmsh.svg - icons/Mesh_Poly_Trim.svg - icons/Mesh_Merge.svg - icons/Mesh_Intersection.svg - icons/Mesh_Evaluation.svg - icons/Mesh_Evaluate_Solid.svg - icons/Mesh_Difference.svg - icons/Mesh_Decimating.svg - icons/Mesh_Curvature_Info.svg - icons/Mesh_Cross_Sections.svg - icons/Mesh_Bounding_Box.svg - icons/Mesh_Add_Facet.svg + icons/Mesh_Smoothing.svg + icons/Mesh_Tree.svg + icons/Mesh_Tree_Curvature_Plot.svg icons/Mesh_Trim_by_Plane.svg + icons/Mesh_Union.svg + icons/MeshWorkbench.svg icons/RegularSolids/Mesh_Cone.svg icons/RegularSolids/Mesh_Cube.svg icons/RegularSolids/Mesh_Cylinder.svg diff --git a/src/Mod/Mesh/Gui/Resources/icons/mesh_boundary.svg b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Boundary.svg similarity index 97% rename from src/Mod/Mesh/Gui/Resources/icons/mesh_boundary.svg rename to src/Mod/Mesh/Gui/Resources/icons/Mesh_Boundary.svg index 872a9ef689..8ae2312e6a 100644 --- a/src/Mod/Mesh/Gui/Resources/icons/mesh_boundary.svg +++ b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Boundary.svg @@ -15,11 +15,11 @@ id="svg9484" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="mesh_boundary.svg" + sodipodi:docname="Mesh_Boundary.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> mesh_boundary + id="title3749">Mesh_Boundary - mesh_boundary + Mesh_Boundary A single triangular mesh face with a hole in it @@ -124,7 +124,7 @@ http://www.freecadweb.org/wiki/index.php?title=Artwork - FreeCAD/src/Mod/Mesh/Gui/Resources/icons/mesh_boundary.svg + FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Mesh_Boundary.svg FreeCAD diff --git a/src/Mod/Mesh/Gui/Resources/icons/mesh_cut.svg b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Cut.svg similarity index 99% rename from src/Mod/Mesh/Gui/Resources/icons/mesh_cut.svg rename to src/Mod/Mesh/Gui/Resources/icons/Mesh_Cut.svg index d59704ed0c..30452a847f 100644 --- a/src/Mod/Mesh/Gui/Resources/icons/mesh_cut.svg +++ b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Cut.svg @@ -15,9 +15,9 @@ id="svg3167" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="mesh_cut.svg"> + sodipodi:docname="Mesh_Cut.svg"> mesh_cut + id="title3747">Mesh_Cut image/svg+xml - mesh_cut + Mesh_Cut https://commons.wikimedia.org/wiki/Tango_icons#/media/File:Edit-cut.svg - FreeCAD/src/Mod/Mesh/Gui/Resources/icons/mesh_cut.svg + FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Mesh_Cut.svg [agryson] Alexander Gryson diff --git a/src/Mod/Mesh/Gui/Resources/icons/mesh_pipette.svg b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Pipette.svg similarity index 98% rename from src/Mod/Mesh/Gui/Resources/icons/mesh_pipette.svg rename to src/Mod/Mesh/Gui/Resources/icons/Mesh_Pipette.svg index d83fa47056..e71c744f45 100644 --- a/src/Mod/Mesh/Gui/Resources/icons/mesh_pipette.svg +++ b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Pipette.svg @@ -15,12 +15,12 @@ id="svg2" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="mesh_pipette.svg" + sodipodi:docname="Mesh_Pipette.svg" inkscape:export-filename="/home/user/Downloads/cad/mystuff/icons/main_icons/pipette_32px.png" inkscape:export-xdpi="45" inkscape:export-ydpi="45"> mesh_pipette + id="title3733">Mesh_Pipette image/svg+xml - mesh_pipette + Mesh_Pipette @@ -171,7 +171,7 @@ FreeCAD - FreeCAD/src/Mod/Mesh/Gui/Resources/icons/mesh_pipette.svg + FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Mesh_Pipette.svg http://www.freecadweb.org/wiki/index.php?title=Artwork diff --git a/src/Mod/Mesh/Gui/Resources/icons/Tree_Mesh.svg b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Tree.svg similarity index 98% rename from src/Mod/Mesh/Gui/Resources/icons/Tree_Mesh.svg rename to src/Mod/Mesh/Gui/Resources/icons/Mesh_Tree.svg index 69a304dab2..1c6fae59d8 100644 --- a/src/Mod/Mesh/Gui/Resources/icons/Tree_Mesh.svg +++ b/src/Mod/Mesh/Gui/Resources/icons/Mesh_Tree.svg @@ -15,11 +15,11 @@ id="svg3052" sodipodi:version="0.32" inkscape:version="0.48.5 r10040" - sodipodi:docname="Tree_Mesh.svg" + sodipodi:docname="Mesh_Tree.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> Tree_Mesh + id="title3725">Mesh_Tree image/svg+xml - Tree_Mesh + Mesh_Tree [agryson] Alexander Gryson @@ -127,7 +127,7 @@ FreeCAD - FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Tree_Mesh.svg + FreeCAD/src/Mod/Mesh/Gui/Resources/icons/Mesh._Tree.svg http://www.freecadweb.org/wiki/index.php?title=Artwork diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_af.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_af.qm index aa15813bf4..a606adf564 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_af.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_af.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ar.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ar.qm index 141a4ca592..988adcd35f 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ar.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ar.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ca.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ca.qm index b27a23f6e0..df3d7f7bf2 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ca.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ca.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_cs.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_cs.qm index 30ed9a09a6..acd66dbff8 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_cs.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_cs.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_de.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_de.qm index fa844e38f0..e6a9ab5eff 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_de.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_de.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_el.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_el.qm index a27dc850da..0f464246e7 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_el.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_el.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_es-ES.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_es-ES.qm index cbdf8aeb5a..9ef3d67123 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_es-ES.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_es-ES.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_eu.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_eu.qm index a320c90512..dd8a8b0fe7 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_eu.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_eu.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fi.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fi.qm index c1a744b385..b4877fb71d 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fi.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fi.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fil.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fil.qm index 5046bfaf39..b3868c1976 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fil.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fil.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.qm index caa92b8b6a..ab03bd1787 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_fr.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_gl.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_gl.qm index 18f614872b..5d4e789fb8 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_gl.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_gl.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.qm index 3811334519..2569b53958 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.ts b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.ts index e9b7b6191e..e9706d4850 100644 --- a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.ts +++ b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hr.ts @@ -2058,12 +2058,12 @@ Posjetite http://www.openscad.org/index.html da biste ga instalirali. Compressed X3D - Compressed X3D + Komprimirani X3D WebGL/X3D - WebGL/X3D + WebGL/X3D @@ -2088,7 +2088,7 @@ Posjetite http://www.openscad.org/index.html da biste ga instalirali. Asymptote Format - Asymptote Format + Format asimptote diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hu.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hu.qm index ff4b4dffcf..e11da13104 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_hu.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_hu.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_id.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_id.qm index fe52b9e87b..0c9525528e 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_id.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_id.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_it.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_it.qm index 08e2e87bd5..2e28e6d239 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_it.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_it.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ja.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ja.qm index 4bcb01fd17..2bc297c817 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ja.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ja.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_kab.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_kab.qm index 54197e8b75..0d3700ee8b 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_kab.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_kab.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ko.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ko.qm index 8a474d156b..e5f922fe18 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ko.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ko.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_lt.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_lt.qm index 772e567e47..78655f6033 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_lt.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_lt.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_nl.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_nl.qm index 741c2c0e7e..baabb6a6cf 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_nl.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_nl.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_no.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_no.qm index 3ab1068dd3..2ebd19ca69 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_no.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_no.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pl.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pl.qm index 02e01caba6..08d6a092e2 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pl.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pl.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-BR.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-BR.qm index 55b3f60dad..649074c92b 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-BR.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-BR.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-PT.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-PT.qm index d9a16f9dad..d6197dc184 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-PT.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_pt-PT.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ro.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ro.qm index 6342f58f23..c40ad27bc9 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ro.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ro.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ru.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ru.qm index ed99abd72d..6051756edb 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_ru.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_ru.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sk.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sk.qm index 14d03f4143..18a3f32b76 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sk.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sk.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sl.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sl.qm index 83a447a209..8541c89066 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sl.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sl.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.qm index 94f821792d..e909aed4e7 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.ts b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.ts index c45b884447..8a1c74181e 100644 --- a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.ts +++ b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sr.ts @@ -87,14 +87,14 @@ Decimation... - Decimation... + Децимација... Decimates a mesh - Decimates a mesh + Дециматира модел @@ -152,7 +152,7 @@ Check solid mesh - Check solid mesh + Провери модел чврстог тела @@ -171,7 +171,7 @@ Evaluate and repair mesh... - Evaluate and repair mesh... + Процени и поправи модел... @@ -354,12 +354,12 @@ Merge - Merge + Обједини Merges selected meshes into one - Merges selected meshes into one + Спаја одабране моделе у један @@ -467,13 +467,13 @@ Refinement... - Refinement... + Усавршавање... Refine existing mesh - Refine existing mesh + Усаврши постојећи модел @@ -524,12 +524,12 @@ Scale... - Scale... + Размера... Scale selected meshes - Scale selected meshes + Скалирај одабране моделе @@ -542,13 +542,13 @@ Create section from mesh and plane - Create section from mesh and plane + Направи пресек од модела и равни Section from mesh and plane - Section from mesh and plane + Пресек од модела и равни @@ -580,13 +580,13 @@ Create mesh segments from best-fit surfaces... - Create mesh segments from best-fit surfaces... + Креирај сегменте модела од најбоље прилагођених површина... Create mesh segments from best-fit surfaces - Create mesh segments from best-fit surfaces + Креирај сегменте модела од најбоље прилагођених површина @@ -721,12 +721,12 @@ Decimating - Decimating + Децимација Reduction - Reduction + Redukcija @@ -736,13 +736,13 @@ Full - Full + Пун Absolute number - Absolute number + Апсолутни број @@ -752,7 +752,7 @@ Absolute number (Maximum: %1) - Absolute number (Maximum: %1) + Апсолутни број (Максимално: %1) @@ -884,7 +884,7 @@ Settings... - Settings... + Подешавања... @@ -1065,7 +1065,7 @@ Please run the command to repair folds first Evaluation settings - Evaluation settings + Подешавања евалуације @@ -1075,17 +1075,17 @@ Please run the command to repair folds first Check for non-manifold points - Check for non-manifold points + Провери да ли постоје вишеструке тачке Enable check for folds on surface - Enable check for folds on surface + Омогући проверу набора на површини Only consider zero area faces as degenerated - Only consider zero area faces as degenerated + Сматрај изопаченима само делове са нултом површином @@ -1113,7 +1113,7 @@ Please run the command to repair folds first Alt+O - Alt+O + Алт+О @@ -1229,7 +1229,7 @@ Please run the command to repair folds first Mesh Formats - Mesh Formats + Формати облика @@ -1239,32 +1239,32 @@ Please run the command to repair folds first Maximal deviation between mesh and object - Maximal deviation between mesh and object + Максимално одступање између модела и објекта Deviation of tessellation to the actual surface - Deviation of tessellation to the actual surface + Одступање постављања геометријских облика на стварну површину <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg 2; 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-family:MS Shell Dlg 2; 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-family:MS Shell Dlg 2; 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;">Постављање геометријских облика у равни</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;">Дефинише максимално одступање постављених геометријских облика на површину. Што је вредност мања, то је брзина рендеровања мања што доводи до повећаних детаља/резолуције.</span></p></body></html> Maximum mesh deviation - Maximum mesh deviation + Макcимално одcтупање модела ZIP compression is used when writing a mesh file in AMF format - ZIP compression is used when writing a mesh file in AMF format + ZIP компресија се користи при писању датотеке модела у AMF формату Export AMF files using compression - Export AMF files using compression + Извези AMF датотеку користећи компресију @@ -1280,8 +1280,8 @@ Please run the command to repair folds first This parameter indicates whether ZIP compression is used when writing a file in AMF format - This parameter indicates whether ZIP compression -is used when writing a file in AMF format + Овај параметар показује да ли се ZIP компресија + користи приликом писања датотеке у AMF формату @@ -1309,7 +1309,7 @@ is used when writing a file in AMF format Default color for new meshes - Default color for new meshes + Подразумевана боја за нове мреже @@ -1325,7 +1325,7 @@ is used when writing a file in AMF format A bounding box will be displayed - A bounding box will be displayed + Приказаће се гранични оквир @@ -1485,7 +1485,7 @@ to a smoother appearance. Frontal - Frontal + Предњи @@ -1495,7 +1495,7 @@ to a smoother appearance. Parallelograms - Parallelograms + Паралелограми @@ -1585,7 +1585,7 @@ to a smoother appearance. Compute - Compute + Израчунај @@ -1839,7 +1839,7 @@ to a smoother appearance. Parameters... - Parameters... + Параметри... @@ -2087,7 +2087,7 @@ Please visit http://www.openscad.org/index.html to install it. Asymptote Format - Asymptote Format + Формат асимптоте @@ -2142,7 +2142,7 @@ Please visit http://www.openscad.org/index.html to install it. Enter scaling factor: - Enter scaling factor: + Унети фактор размере: @@ -2157,7 +2157,7 @@ Please visit http://www.openscad.org/index.html to install it. Display segments - Display segments + Прикажи сегменте diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.qm index 26070725ba..1bcb55e715 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.ts b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.ts index 24fcc83aef..51a5a9c971 100644 --- a/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.ts +++ b/src/Mod/Mesh/Gui/Resources/translations/Mesh_sv-SE.ts @@ -87,7 +87,7 @@ Decimation... - Decimation... + Decimering... @@ -1632,7 +1632,7 @@ to a smoother appearance. Gmsh - Gmsh + Gmsh @@ -1642,7 +1642,7 @@ to a smoother appearance. Kill - Kill + Döda diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.qm index f349687184..ab979d7a2a 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.ts b/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.ts index cf4d213eb7..d532173d65 100644 --- a/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.ts +++ b/src/Mod/Mesh/Gui/Resources/translations/Mesh_tr.ts @@ -994,7 +994,7 @@ Please run the command to repair folds first %1 degenerated faces - %1 dejenere yüzler + %1 bozulmuş yüzeyler @@ -1009,7 +1009,7 @@ Please run the command to repair folds first %1 duplicated faces - %1 Çoğaltılan Yüzler + %1 Çoğaltılan Yüzeyler @@ -1046,7 +1046,7 @@ Please run the command to repair folds first %1 folds on surface - Yüzey üzerinde% 1 kıvrım var + Yüzeyde %1 kıvrım var @@ -1324,7 +1324,7 @@ is used when writing a file in AMF format A bounding box will be displayed - A bounding box will be displayed + Bir sınır kutusu görüntülenecek @@ -1937,7 +1937,7 @@ to a smoother appearance. Boundings of %1: - % 1'in limiti: + %1'in limiti: diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_uk.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_uk.qm index e989136ea5..23332d1557 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_uk.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_uk.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_val-ES.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_val-ES.qm index 649732547c..9828f5c141 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_val-ES.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_val-ES.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_vi.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_vi.qm index 96451deb9d..cb2d7d6136 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_vi.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_vi.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-CN.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-CN.qm index 5c183e27a4..5034737d90 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-CN.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-CN.qm differ diff --git a/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-TW.qm b/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-TW.qm index e914f20156..d891ba2d85 100644 Binary files a/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-TW.qm and b/src/Mod/Mesh/Gui/Resources/translations/Mesh_zh-TW.qm differ diff --git a/src/Mod/Mesh/Gui/ViewProvider.cpp b/src/Mod/Mesh/Gui/ViewProvider.cpp index 8e7601dd48..1cb57b763f 100644 --- a/src/Mod/Mesh/Gui/ViewProvider.cpp +++ b/src/Mod/Mesh/Gui/ViewProvider.cpp @@ -503,7 +503,7 @@ void ViewProviderMesh::updateData(const App::Property* prop) QIcon ViewProviderMesh::getIcon() const { #if 1 - static QIcon icon = Gui::BitmapFactory().pixmap("Tree_Mesh"); + static QIcon icon = Gui::BitmapFactory().pixmap("Mesh_Tree"); return icon; #else static const char * const Mesh_Feature_xpm[] = { @@ -871,7 +871,7 @@ public: } void cutMesh() { Gui::Document* gui = mesh->getDocument(); - gui->openCommand("Cut"); + gui->openCommand(QT_TRANSLATE_NOOP("Command", "Cut")); ViewProviderMesh* copy = makeCopy(); mesh->cutMesh(poly, proj, false); copy->cutMesh(poly, proj, true); @@ -880,7 +880,7 @@ public: } void trimMesh() { Gui::Document* gui = mesh->getDocument(); - gui->openCommand("Trim"); + gui->openCommand(QT_TRANSLATE_NOOP("Command", "Trim")); ViewProviderMesh* copy = makeCopy(); mesh->trimMesh(poly, proj, false); copy->trimMesh(poly, proj, true); @@ -926,7 +926,7 @@ void ViewProviderMesh::clipMeshCallback(void * ud, SoEventCallback * n) std::vector views = view->getDocument()->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); if (!views.empty()) { - Gui::Application::Instance->activeDocument()->openCommand("Cut"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Cut")); bool commitCommand = false; for (std::vector::iterator it = views.begin(); it != views.end(); ++it) { ViewProviderMesh* self = static_cast(*it); @@ -987,7 +987,7 @@ void ViewProviderMesh::trimMeshCallback(void * ud, SoEventCallback * n) std::vector views = view->getDocument()->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); if (!views.empty()) { - Gui::Application::Instance->activeDocument()->openCommand("Trim"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Trim")); bool commitCommand = false; for (std::vector::iterator it = views.begin(); it != views.end(); ++it) { ViewProviderMesh* self = static_cast(*it); @@ -1064,7 +1064,7 @@ void ViewProviderMesh::partMeshCallback(void * ud, SoEventCallback * cb) Base::Sequencer().setLocked(locked); // Open a transaction object for the undo/redo stuff - Gui::Application::Instance->activeDocument()->openCommand("Split"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Split")); try { std::vector views = view->getDocument()->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); @@ -1128,7 +1128,7 @@ void ViewProviderMesh::segmMeshCallback(void * ud, SoEventCallback * cb) Base::Sequencer().setLocked(locked); // Open a transaction object for the undo/redo stuff - Gui::Application::Instance->activeDocument()->openCommand("Segment"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Segment")); try { std::vector views = view->getDocument()->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); @@ -1723,7 +1723,7 @@ void ViewProviderMesh::markPartCallback(void * ud, SoEventCallback * n) } } else if (rm == id) { - Gui::Application::Instance->activeDocument()->openCommand("Delete"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Delete")); std::vector views = view->getDocument()->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); for (std::vector::iterator it = views.begin(); it != views.end(); ++it) { static_cast(*it)->deleteSelection(); @@ -1830,7 +1830,7 @@ void ViewProviderMesh::fillHole(unsigned long uFacet) return; // nothing to do //add the facets to the mesh and open a transaction object for the undo/redo stuff - Gui::Application::Instance->activeDocument()->openCommand("Fill hole"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Fill hole")); Mesh::MeshObject* kernel = fea->Mesh.startEditing(); kernel->addFacets(newFacets, newPoints, true); fea->Mesh.finishEditing(); diff --git a/src/Mod/Mesh/Gui/Workbench.cpp b/src/Mod/Mesh/Gui/Workbench.cpp index 8443589716..9faa733849 100644 --- a/src/Mod/Mesh/Gui/Workbench.cpp +++ b/src/Mod/Mesh/Gui/Workbench.cpp @@ -226,6 +226,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const << cutting << "Separator" << "Mesh_Merge" + << "Mesh_SplitComponents" << "Separator"; Gui::CommandManager& mgr = Gui::Application::Instance->commandManager(); if (mgr.getCommandByName("MeshPart_CreateFlatMesh")) diff --git a/src/Mod/MeshPart/App/AppMeshPartPy.cpp b/src/Mod/MeshPart/App/AppMeshPartPy.cpp index 07463bca91..c33f16daa8 100644 --- a/src/Mod/MeshPart/App/AppMeshPartPy.cpp +++ b/src/Mod/MeshPart/App/AppMeshPartPy.cpp @@ -421,7 +421,7 @@ private: Mesh::MeshObject* mesh = static_cast(m)->getMeshObjectPtr(); std::vector segm; segm.reserve(list.size()); - for (unsigned int i=0; i fixed_nodes; // input ColMat xyz_nodes; // compute from uv_mesh (xyz = A * poles) ColMat uv_nodes; // input - ColMat ze_nodes; // copute + ColMat ze_nodes; // compute // nurbs ColMat ze_poles; // compute @@ -82,4 +82,4 @@ public: }; -#endif // MESHFLATTENING +#endif // MESHFLATTENING diff --git a/src/Mod/MeshPart/Gui/Command.cpp b/src/Mod/MeshPart/Gui/Command.cpp index 4afe0c7dab..38ea426665 100644 --- a/src/Mod/MeshPart/Gui/Command.cpp +++ b/src/Mod/MeshPart/Gui/Command.cpp @@ -126,7 +126,7 @@ void CmdMeshPartTrimByPlane::activated(int) Base::Placement plnPlacement = static_cast(plane.front())->Placement.getValue(); - openCommand("Trim with plane"); + openCommand(QT_TRANSLATE_NOOP("Command", "Trim with plane")); std::vector docObj = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); for (std::vector::iterator it = docObj.begin(); it != docObj.end(); ++it) { Base::Vector3d normal(0,0,1); @@ -212,7 +212,7 @@ void CmdMeshPartSection::activated(int) plm.getRotation().multVec(normal, normal); Base::Vector3d base = plm.getPosition(); - openCommand("Section with plane"); + openCommand(QT_TRANSLATE_NOOP("Command", "Section with plane")); std::vector docObj = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); Mesh::MeshObject::TPlane tplane; tplane.first = Base::convertTo(base); diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_af.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_af.qm index 381f9d6ecc..3950b53096 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_af.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_af.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ar.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ar.qm index 425c0be75c..73896f100d 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ar.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ar.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ca.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ca.qm index a36a49dd75..7f4d5fed3f 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ca.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ca.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_cs.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_cs.qm index f709a7596b..ffd0e6e90f 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_cs.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_cs.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.qm index 5201cb03e5..c55275b1cd 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.ts index b38a5fc013..7ff4ed9b0b 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_de.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Erstellt eine ungefähre Kurve über einem Netz. +Dieser Befehl funktioniert nur mit einem 'mesh'-Objekt. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Drücke 'Start' und wähle dann Punkte im Netz; wenn genug Punkte gesetzt wurden, klicke mit der rechten Maustaste und wähle 'Erstellen'. Wiederholen Sie diesen Prozess, um weitere Splines zu erstellen. Schließen Sie diese Taskleiste, um den Vorgang abzuschließen. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Dieser Befehl funktioniert nur mit einem 'mesh' Objekt, nicht mit einer normalen Fläche oder Oberfläche. Um ein Objekt in ein Netz zu konvertieren, verwenden Sie die Werkzeuge der Mesh Workbench. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Einrast-Toleranz zu Netzpunkten diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_el.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_el.qm index 09ddc77a65..80bd545a11 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_el.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_el.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.qm index 798dc6181f..0d4b8c5c9e 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.ts index 971a11047a..352538ef98 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_es-ES.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Crea una curva aproximada encima de una malla. +Este comando solo funciona con un objeto 'malla'. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Pulse 'Empezar', luego seleccione puntos en la malla; cuando se hayan establecido suficientes puntos, haga clic derecho y seleccione 'Crear'. Repetir este proceso para crear más curvas. Cierre este panel de tareas para completar la operación. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Este comando solo funciona con un objeto 'malla', no con una cara regular o superficie. Para convertir un objeto a una malla utilice las herramientas del Banco de Trabajo Mesh. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Ajustar la tolerancia a los vértices diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.qm index 05c05cdcbe..084ac89386 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.ts index 1396a3dd5c..d89ff1ea28 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_eu.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Amaraun baten gainean hari egokitzen zaion gutxi gora beherako kurba bat sortzen du. +Komando honek 'amarauna' objektuetan soilik funtzionatzen du. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Sakatu 'Hasi', ondoren aukeratu amarauneko puntuak; nahiko puntu ezarri direnean, egin eskuineko klik eta aukeratu 'Sortu'. Errepikatu prozesu hori spline gehiago sortzeko. Itxi atazen panel hau eragiketa osatzeko. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Komando honek 'amarauna' objektuetan soilik funtzionatzen du, ez aurpegi edo gainazal erregularretan. Objektu bat amaraun bihurtzeko, erabili amaraunen lan-mahaiko tresnak. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Erpinen atxikitze-tolerantzia @@ -297,7 +297,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Maximal linear deflection of a mesh section from the surface of the object - Amaraun-sekzio baten makurdura lineal maimoa objektuaren gainazaletik + Amaraun-sekzio baten makurdura lineal maximoa objektuaren gainazaletik diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fi.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fi.qm index f8b6029592..82ae377001 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fi.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fi.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fil.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fil.qm index 78a67fbe40..694db7d69e 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fil.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fil.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.qm index af8308d283..aeeb865ab2 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts index 41ea3a8acc..0ae814fa2d 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_fr.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - 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. +Cette commande ne fonctionne qu'avec un objet 'mesh'. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Appuyez sur "Démarrer", puis sélectionnez les points sur le maillage ; lorsque suffisamment de points ont été définis, faites un clic droit et choisissez "Créer". Répétez ce processus pour créer plus de splines. Fermez ce panneau de tâches pour terminer l'opération. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Cette commande ne fonctionne qu'avec un objet 'Mesh', pas avec une face ou une surface régulière. Pour convertir un objet en maillage, utilisez les outils de l'atelier Mesh. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Tolérance d'accrochage aux sommets diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_gl.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_gl.qm index 3d29f8f478..e9e0f2734d 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_gl.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_gl.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.qm index cf7729b3ee..f92dec6c6a 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.ts index 15fe0e76aa..bfb9c0559a 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hr.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Stvara približnu krivulju na vrhu mreže. +Ova naredba radi samo s 'mrežnim' objektom. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Pritisnite "Start", a zatim odaberite točke na mreži; kada se postavi dovoljno točaka, kliknite desnu tipku miša i odaberite 'Stvori'. Ponovite ovaj postupak da biste stvorili više zavoja. Zatvorite ovu ploču zadataka da biste dovršili operaciju. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Ova naredba radi samo s 'mreža', objektom a ne s uobičajenim licem ili površinom. Za pretvaranje objekta u mrežu koristite alate radne površine Mreža @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Tolerancija kod privuci na vrhove diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.qm index f361de46d2..84abc4cdee 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.ts index a294a0f2d9..78bb0529eb 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_hu.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Közelítő ívet hoz létre a háló tetején. +Ez a parancs csak 'háló' objektummal működik. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Nyomja le a 'Start' gombot, majd válasszon pontokat a hálón; ha elegendő pont van beállítva, kattintson a jobb gombbal, és válassza a 'Létrehozás' parancsot. Ismételje meg ezt a folyamatot, hogy több görbét hozzon létre. A művelet végrehajtásához zárja be ezt a feladatpanelt. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Ez a parancs csak 'háló' objektummal működik, normál felülettel vagy felszínnel nem. Az objektum hálóvá alakításához használja a Háló munkaterület eszközeit. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + A csúcsokkal szembeni raszteres tűrés diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_id.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_id.qm index e1aed16a18..5c315ba76b 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_id.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_id.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.qm index 25139d2b4b..3b0b73d01d 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.ts index cdeb2a6405..7fe40f96a2 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_it.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Crea una curva approssimativa su di un solido. +Questo comando funziona solo con un oggetto 'solido'. diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ja.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ja.qm index 4c9d416aa7..3f9a17b969 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ja.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ja.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_kab.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_kab.qm index 5971f5183b..dacb083453 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_kab.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_kab.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ko.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ko.qm index a0ebe6d057..ff51b72428 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ko.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ko.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_lt.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_lt.qm index 30ff6d6959..acde5965ce 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_lt.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_lt.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.qm index 24e156b6bd..cf82535bcf 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_nl.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_no.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_no.qm index 930c70a135..b41b2aa62c 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_no.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_no.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.qm index 6eb59bce61..fe7caa2185 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.ts index 5f34e046a3..222838174c 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pl.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Tworzy przybliżoną krzywą na siatce. +Ta komenda działa tylko z obiektem 'mesh'. @@ -159,7 +159,7 @@ This command only works with a 'mesh' object. Failure - Failure + Niepowodzenie @@ -172,7 +172,7 @@ This command only works with a 'mesh' object. Close wire - Krzywa zamknięta + Zamknij linie łamaną @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Naciśnij 'Start', a następnie wybierz punkty na siatce; gdy zaznaczona jest wystarczająca ilość punktów, kliknij prawym przyciskiem myszy i wybierz 'Utwórz'. Powtórz ten proces, aby utworzyć więcej krzywych. Zamknij ten panel zadań, aby zakończyć operację. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Ta komenda działa tylko z obiektem 'mesh', a nie zwykłą płaszczyzną lub powierzchnią. Aby przetworzyć obiekt na siatkę, użyj narzędzi w środowisku pracy siatki. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Tolerancja przyciągania wierzchołków @@ -292,7 +292,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Use the standard mesher - Use the standard mesher + Użyj standardowego generatora siatek @@ -348,7 +348,7 @@ tą funkcję (np. format OBJ). Use the Mefisto mesher - Use the Mefisto mesher + Użyj generatora siatek Mefisto @@ -370,7 +370,7 @@ The smallest value is 0. Use the Netgen mesher - Use the Netgen mesher + Użyj generatora siatek Netgen @@ -475,7 +475,7 @@ A value in the range of 0.2-10. gmsh - gmsh + gmsh diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-BR.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-BR.qm index cae03bd711..257527f5bb 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-BR.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-BR.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-PT.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-PT.qm index 49ae2bcc44..bee606cfa0 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-PT.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_pt-PT.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ro.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ro.qm index 5dcfa97ad8..ea247cf539 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ro.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ro.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.qm index 7113818495..70f46ced91 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.ts index 5b0fc4695a..3a4ebe11e8 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_ru.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Создает приблизительную кривую поверх полигональной сетки. +Эта команда работает только с объектом 'полигональная сетка'. @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Нажмите 'Начать', затем выберите точки на полигональной сетке; когда будет установлено достаточное количество точек, щёлкните правой кнопкой мыши и выберите 'Создать'. Повторите этот процесс, чтобы создать больше сплайнов. Закройте эту панель задач для завершения операции. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Эта команда работает только с объектом 'полигональная сетка', а не с обычными гранью или поверхностью. Для преобразования объекта в полигональную сетку используйте инструменты верстака Mesh. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Привязать допуск к вершинам diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sk.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sk.qm index 8f72189d39..0c86d92eea 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sk.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sk.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.qm index 7f0b99f717..52a287bb5c 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.ts index e13360b0ca..ed856baa54 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sl.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Ustvari približno krivuljo po vrhu ploskovja. +Ta ukaz deluje le s "ploskovji". @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + Pritisnite "Začni" in nato izberite točke na ploskovju; ko je izbranih dovolj točk, kliknite z desno miškino tipko in izberite "Ustvari". Ponavljajte ta postopek, da ustvarite več zlepkov. Za dokončanje dejanja zaprite ta opravilni pult. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Ta ukaz deluje le na "ploskovjih" in ne na pravilnih ploskvah ali površjih. Če želite pretvoriti predmet v ploskovje, uporabi orodja delovnega okolja Ploskovje. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Dopustno odstopanje pri pripenjanju na oglišča diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.qm index 697256bf72..9f1cf7a0df 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.ts index bc3ab1bfc5..e1daed506a 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sr.ts @@ -67,7 +67,7 @@ This command only works with a 'mesh' object. Create section from mesh and plane - Create section from mesh and plane + Направи пресек од модела и равни diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.qm index 79a72ed37d..d9efe50e23 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.ts index abb3850139..dab2f7cd63 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_sv-SE.ts @@ -159,7 +159,7 @@ This command only works with a 'mesh' object. Failure - Failure + Misslyckande @@ -365,7 +365,7 @@ The smallest value is 0. Estimate - Estimate + Uppskattning @@ -527,12 +527,12 @@ A value in the range of 0.2-10. Below - Below + Nedanför Above - Above + Ovanför diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.qm index 3ae2568a64..b9ac8c6142 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.ts b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.ts index 20d0e79dd7..d3732cd5ea 100644 --- a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.ts +++ b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_tr.ts @@ -35,8 +35,8 @@ Creates an approximated curve on top of a mesh. This command only works with a 'mesh' object. - Creates an approximated curve on top of a mesh. -This command only works with a 'mesh' object. + Bir ağın üstünde yaklaşık bir eğri oluşturur. +Bu komut yalnızca bir 'ağ' nesnesiyle çalışır. @@ -154,12 +154,12 @@ This command only works with a 'mesh' object. Connect edges if distance less than - Connect edges if distance less than + Mesafe şundan azsa kenarları birleştirin Failure - Failure + Başarısız @@ -182,7 +182,7 @@ This command only works with a 'mesh' object. Cancel - İptal et + İptal @@ -207,9 +207,9 @@ This command only works with a 'mesh' object. Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. - Press 'Start', then pick points on the mesh; when enough points have been set, right-click and choose 'Create'. Repeat this process to create more splines. Close this task panel to complete the operation. + "Başlat"a basın, ardından ağ üzerindeki noktaları seçin; Yeterli nokta ayarlandığında, sağ tıklayın ve 'Oluştur'u seçin. Daha fazla spline oluşturmak için bu işlemi tekrarlayın. İşlemi tamamlamak için bu görev panelini kapatın. -This command only works with a 'mesh' object, not a regular face or surface. To convert an object to a mesh use the tools of the Mesh Workbench. +Bu komut, normal bir yüz veya yüzeyle değil, yalnızca 'ağ' nesnesiyle çalışır. Bir nesneyi ağa dönüştürmek için Mesh Çalışma Tezgahının araçlarını kullanın. @@ -219,7 +219,7 @@ This command only works with a 'mesh' object, not a regular face or surface. To Snap tolerance to vertices - Snap tolerance to vertices + Toleransı köşelere yasla @@ -292,12 +292,12 @@ This command only works with a 'mesh' object, not a regular face or surface. To Use the standard mesher - Use the standard mesher + Standart mesher kullanın Maximal linear deflection of a mesh section from the surface of the object - Maximal linear deflection of a mesh section from the surface of the object + Ağ bölümünün, nesnenin yüzeyinden en fazla doğrusal sapması @@ -307,14 +307,13 @@ This command only works with a 'mesh' object, not a regular face or surface. To Maximal angular deflection of a mesh section to the next section - Maximal angular deflection of a mesh section to the next section + Bir ağ bölümünün, sonraki bölüme en fazla açısal sapması The maximal linear deviation of a mesh segment will be the specified Surface deviation multiplied by the length of the current mesh segment (edge) - The maximal linear deviation of a mesh segment will be the specified -Surface deviation multiplied by the length of the current mesh segment (edge) + Bir ağ bölümünün en fazla doğrusal sapması, belirtilen Yüzey sapmasının mevcut ağ bölümünün (kenar) uzunluğu ile çarpımı olacaktır @@ -324,7 +323,7 @@ Surface deviation multiplied by the length of the current mesh segment (edge) Mesh will get face colors of the object - Mesh will get face colors of the object + Ağ, nesnenin yüz renklerini alacak @@ -336,9 +335,8 @@ Surface deviation multiplied by the length of the current mesh segment (edge)Mesh segments will be grouped according to the color of the object faces. These groups will be exported for mesh output formats supporting this feature (e.g. the format OBJ). - Mesh segments will be grouped according to the color of the object faces. -These groups will be exported for mesh output formats supporting -this feature (e.g. the format OBJ). + Ağ (Kafes) bölümleri, nesne yüzlerinin rengine göre gruplandırılacaktır. +Bu gruplar, bu özelliği destekleyen ağ (örgü) çıktı biçimleri için dışa aktarılacaktır (ör. OBJ biçimi). @@ -348,7 +346,7 @@ this feature (e.g. the format OBJ). Use the Mefisto mesher - Use the Mefisto mesher + Mefisto mesher kullanın @@ -359,18 +357,18 @@ this feature (e.g. the format OBJ). If this number is smaller the mesh becomes finer. The smallest value is 0. - If this number is smaller the mesh becomes finer. -The smallest value is 0. + Bu sayı daha küçükse, ağ daha ince hale gelir. +En küçük değer 0'dır. Estimate - Estimate + Tahmin Use the Netgen mesher - Use the Netgen mesher + Netgen mesher kullanın @@ -416,8 +414,8 @@ The smallest value is 0. If this parameter is smaller, the mesh becomes finer. A value in the range of 0.1-1. - If this parameter is smaller, the mesh becomes finer. -A value in the range of 0.1-1. + Bu parametre daha küçükse, ağ daha ince hale gelir. +0.1-1 aralığında bir değer. @@ -429,8 +427,7 @@ A value in the range of 0.1-1. If this parameter is larger, the mesh becomes finer. A value in the range of 0.2-10. - If this parameter is larger, the mesh becomes finer. -A value in the range of 0.2-10. + Bu parametre daha büyükse, ağ daha ince hale gelir. 0,2-10 aralığında bir değer. @@ -440,7 +437,7 @@ A value in the range of 0.2-10. Whether optimization of surface shape will be done - Whether optimization of surface shape will be done + Yüzey şekli optimizasyonunun yapılıp yapılmayacağı @@ -450,7 +447,7 @@ A value in the range of 0.2-10. Whether second order elements will be generated - Whether second order elements will be generated + İkinci dereceden elemanların üretilip üretilmeyeceği @@ -460,7 +457,7 @@ A value in the range of 0.2-10. Whether meshes will be arranged preferably using quadrilateral faces - Whether meshes will be arranged preferably using quadrilateral faces + Ağların tercihen dörtgen yüzler kullanılarak düzenlenip düzenlenmeyeceği @@ -470,12 +467,12 @@ A value in the range of 0.2-10. Leave panel open - Leave panel open + Paneli açık bırak gmsh - gmsh + gmsh @@ -527,12 +524,12 @@ A value in the range of 0.2-10. Below - Below + Altta Above - Above + Üstünde diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_uk.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_uk.qm index d597724479..b1ec78469e 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_uk.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_uk.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_val-ES.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_val-ES.qm index 0bd4ea3b54..f810ea8bca 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_val-ES.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_val-ES.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_vi.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_vi.qm index ba99370e45..2e14576ff6 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_vi.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_vi.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-CN.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-CN.qm index fc522cbc69..21a7efc927 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-CN.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-CN.qm differ diff --git a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-TW.qm b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-TW.qm index d242bb4039..5b5724d238 100644 Binary files a/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-TW.qm and b/src/Mod/MeshPart/Gui/Resources/translations/MeshPart_zh-TW.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_af.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_af.qm index 7e6d3cdeb1..efd278170c 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_af.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_af.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ar.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ar.qm index ad17bd2e9f..377a3dea80 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ar.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ar.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ca.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ca.qm index 3de6371d11..5408840f2a 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ca.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ca.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_cs.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_cs.qm index d9e7f08111..b5b3651846 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_cs.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_cs.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.qm index 19119d18a7..8104857c2c 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.ts b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.ts index d4a50ead91..fe72cded5a 100644 --- a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.ts +++ b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_de.ts @@ -366,7 +366,7 @@ Create Resize Mesh Feature - Create Resize Mesh Feature + Grösse des Netz-Elements anpassen @@ -374,12 +374,12 @@ Scale Mesh Feature... - Scale Mesh Feature... + Netz Element skalieren... Create Scale Mesh Feature - Create Scale Mesh Feature + Erzeuge Netz Element skalierung diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_el.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_el.qm index 7ca0819853..2f28af50a0 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_el.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_el.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_es-ES.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_es-ES.qm index 28f4b2ff06..da07f7b96b 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_es-ES.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_es-ES.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_eu.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_eu.qm index 078ce33825..0fa91e3b67 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_eu.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_eu.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fi.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fi.qm index 25f293ff70..7dacd80721 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fi.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fi.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fil.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fil.qm index 668c77f257..3310f5eb59 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fil.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fil.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_fr.qm index 03c3b512ed..f2c0463b62 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_gl.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_gl.qm index b56d70306d..e574d18964 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_gl.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_gl.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.qm index 6f29870a71..f2087ba1fe 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.ts b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.ts index c9f11965d5..51c419ef62 100644 --- a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.ts +++ b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hr.ts @@ -379,7 +379,7 @@ Create Scale Mesh Feature - Create Scale Mesh Feature + Stvori Svojstvo Skaliranje Mreža diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hu.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hu.qm index f81bae0090..0d114ee88f 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hu.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_hu.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_id.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_id.qm index 06879c8e84..9eec2808c4 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_id.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_id.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_it.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_it.qm index d04674d428..530f30974e 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_it.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_it.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ja.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ja.qm index aaff0eb00c..6bd43f44c4 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ja.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ja.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_kab.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_kab.qm index 97a31ca05f..db47201f8d 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_kab.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_kab.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ko.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ko.qm index 178fe06097..50a0bc1ea2 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ko.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ko.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_lt.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_lt.qm index f1dbe7ef5c..7624ddf2e0 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_lt.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_lt.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_nl.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_nl.qm index 3d1b55197a..ba15cc3618 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_nl.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_nl.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_no.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_no.qm index 28a0d7e5f2..99768214c6 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_no.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_no.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pl.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pl.qm index e352862253..a4df0d7d49 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pl.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pl.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-BR.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-BR.qm index e17c943223..081f01d839 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-BR.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-BR.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-PT.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-PT.qm index 20f7b71ddc..a6584f4f9e 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-PT.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_pt-PT.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ro.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ro.qm index 7e288fbf55..233a8026d9 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ro.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ro.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ru.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ru.qm index 51fae6fbc6..d8e38f8137 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ru.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_ru.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sk.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sk.qm index c85b686169..fc2bb2d5c0 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sk.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sk.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sl.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sl.qm index f00878021d..5f48390be5 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sl.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sl.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sr.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sr.qm index 94f9ed2c5c..fe79f2622d 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sr.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sr.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sv-SE.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sv-SE.qm index c991eb26e0..16674604f3 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sv-SE.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_sv-SE.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_tr.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_tr.qm index eddc966ae8..69aa1064b9 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_tr.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_tr.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_uk.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_uk.qm index 737fb34fd4..f0d18692d6 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_uk.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_uk.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_val-ES.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_val-ES.qm index 0d36efb4a8..f830ba2c62 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_val-ES.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_val-ES.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_vi.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_vi.qm index cf2ae4f987..ad956a93da 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_vi.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_vi.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-CN.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-CN.qm index cc8b31281e..25b3c73c21 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-CN.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-CN.qm differ diff --git a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-TW.qm b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-TW.qm index 667fdf1588..d816513c87 100644 Binary files a/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-TW.qm and b/src/Mod/OpenSCAD/Resources/translations/OpenSCAD_zh-TW.qm differ diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp index 5e86624b16..8fe6ca350b 100644 --- a/src/Mod/Part/App/AppPart.cpp +++ b/src/Mod/Part/App/AppPart.cpp @@ -1,11 +1,23 @@ /*************************************************************************** + * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2011 Werner Mayer * * * - * This program 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. * - * for detail see the LICENCE text file. * - * Jürgen Riegel 2002 * + * 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 * * * ***************************************************************************/ @@ -61,6 +73,7 @@ #include "Geometry.h" #include "GeometryExtension.h" #include "GeometryDefaultExtension.h" +#include "GeometryMigrationExtension.h" #include "Geometry2d.h" #include "Mod/Part/App/GeometryIntExtensionPy.h" #include "Mod/Part/App/GeometryStringExtensionPy.h" @@ -392,45 +405,47 @@ PyMOD_INIT_FUNC(Part) Part::Reverse ::init(); // Geometry types - Part::GeometryExtension ::init(); - Part::GeometryIntExtension ::init(); - Part::GeometryStringExtension ::init(); - Part::GeometryBoolExtension ::init(); - Part::GeometryDoubleExtension ::init(); - Part::Geometry ::init(); - Part::GeomPoint ::init(); - Part::GeomCurve ::init(); - Part::GeomBoundedCurve ::init(); - Part::GeomBezierCurve ::init(); - Part::GeomBSplineCurve ::init(); - Part::GeomConic ::init(); - Part::GeomTrimmedCurve ::init(); - Part::GeomArcOfConic ::init(); - Part::GeomCircle ::init(); - Part::GeomArcOfCircle ::init(); - Part::GeomArcOfEllipse ::init(); - Part::GeomArcOfParabola ::init(); - Part::GeomArcOfHyperbola ::init(); - Part::GeomEllipse ::init(); - Part::GeomHyperbola ::init(); - Part::GeomParabola ::init(); - Part::GeomLine ::init(); - Part::GeomLineSegment ::init(); - Part::GeomOffsetCurve ::init(); - Part::GeomSurface ::init(); - Part::GeomBezierSurface ::init(); - Part::GeomBSplineSurface ::init(); - Part::GeomCylinder ::init(); - Part::GeomCone ::init(); - Part::GeomSphere ::init(); - Part::GeomToroid ::init(); - Part::GeomPlane ::init(); - Part::GeomOffsetSurface ::init(); - Part::GeomPlateSurface ::init(); - Part::GeomTrimmedSurface ::init(); - Part::GeomSurfaceOfRevolution ::init(); - Part::GeomSurfaceOfExtrusion ::init(); - Part::Datum ::init(); + Part::GeometryExtension ::init(); + Part::GeometryPersistenceExtension ::init(); + Part::GeometryIntExtension ::init(); + Part::GeometryStringExtension ::init(); + Part::GeometryBoolExtension ::init(); + Part::GeometryDoubleExtension ::init(); + Part::GeometryMigrationExtension ::init(); + Part::Geometry ::init(); + Part::GeomPoint ::init(); + Part::GeomCurve ::init(); + Part::GeomBoundedCurve ::init(); + Part::GeomBezierCurve ::init(); + Part::GeomBSplineCurve ::init(); + Part::GeomConic ::init(); + Part::GeomTrimmedCurve ::init(); + Part::GeomArcOfConic ::init(); + Part::GeomCircle ::init(); + Part::GeomArcOfCircle ::init(); + Part::GeomArcOfEllipse ::init(); + Part::GeomArcOfParabola ::init(); + Part::GeomArcOfHyperbola ::init(); + Part::GeomEllipse ::init(); + Part::GeomHyperbola ::init(); + Part::GeomParabola ::init(); + Part::GeomLine ::init(); + Part::GeomLineSegment ::init(); + Part::GeomOffsetCurve ::init(); + Part::GeomSurface ::init(); + Part::GeomBezierSurface ::init(); + Part::GeomBSplineSurface ::init(); + Part::GeomCylinder ::init(); + Part::GeomCone ::init(); + Part::GeomSphere ::init(); + Part::GeomToroid ::init(); + Part::GeomPlane ::init(); + Part::GeomOffsetSurface ::init(); + Part::GeomPlateSurface ::init(); + Part::GeomTrimmedSurface ::init(); + Part::GeomSurfaceOfRevolution ::init(); + Part::GeomSurfaceOfExtrusion ::init(); + Part::Datum ::init(); // Geometry2d types Part::Geometry2d ::init(); diff --git a/src/Mod/Part/App/AppPartPy.cpp b/src/Mod/Part/App/AppPartPy.cpp index 8bafa61b1d..5d206bf3cc 100644 --- a/src/Mod/Part/App/AppPartPy.cpp +++ b/src/Mod/Part/App/AppPartPy.cpp @@ -793,21 +793,20 @@ private: Py::Object getFacets(const Py::Tuple& args) { PyObject *shape; - PyObject *list = PyList_New(0); + Py::List list; if (!PyArg_ParseTuple(args.ptr(), "O", &shape)) throw Py::Exception(); auto theShape = static_cast(shape)->getTopoShapePtr()->getShape(); - for(TopExp_Explorer ex(theShape, TopAbs_FACE); ex.More(); ex.Next()) - { + for (TopExp_Explorer ex(theShape, TopAbs_FACE); ex.More(); ex.Next()) { TopoDS_Face currentFace = TopoDS::Face(ex.Current()); TopLoc_Location loc; Handle(Poly_Triangulation) facets = BRep_Tool::Triangulation(currentFace, loc); const TopAbs_Orientation anOrientation = currentFace.Orientation(); bool flip = (anOrientation == TopAbs_REVERSED); - if(!facets.IsNull()){ - auto nodes = facets->Nodes(); - auto triangles = facets->Triangles(); - for(int i = 1; i <= triangles.Length(); i++){ + if (!facets.IsNull()) { + const TColgp_Array1OfPnt& nodes = facets->Nodes(); + const Poly_Array1OfTriangle& triangles = facets->Triangles(); + for (int i = 1; i <= triangles.Length(); i++) { Standard_Integer n1,n2,n3; triangles(i).Get(n1, n2, n3); gp_Pnt p1 = nodes(n1); @@ -821,19 +820,17 @@ private: PyObject *t1 = PyTuple_Pack(3, PyFloat_FromDouble(p1.X()), PyFloat_FromDouble(p1.Y()), PyFloat_FromDouble(p1.Z())); PyObject *t2 = PyTuple_Pack(3, PyFloat_FromDouble(p2.X()), PyFloat_FromDouble(p2.Y()), PyFloat_FromDouble(p2.Z())); PyObject *t3 = PyTuple_Pack(3, PyFloat_FromDouble(p3.X()), PyFloat_FromDouble(p3.Y()), PyFloat_FromDouble(p3.Z())); - PyObject *points; - if(flip) - { - points = PyTuple_Pack(3, t2, t1, t3); - } else { - points = PyTuple_Pack(3, t1, t2, t3); + if (flip) { + list.append(Py::asObject(PyTuple_Pack(3, t2, t1, t3))); + } + else { + list.append(Py::asObject(PyTuple_Pack(3, t1, t2, t3))); } - PyList_Append(list, points); } } } - } - return Py::asObject(list); + } + return list; } Py::Object makeCompound(const Py::Tuple& args) { diff --git a/src/Mod/Part/App/AttachEnginePyImp.cpp b/src/Mod/Part/App/AttachEnginePyImp.cpp index fa746c1db6..0057a048ae 100644 --- a/src/Mod/Part/App/AttachEnginePyImp.cpp +++ b/src/Mod/Part/App/AttachEnginePyImp.cpp @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2016 Viktor Titov (DeepSOIC) * + * * + * 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 diff --git a/src/Mod/Part/App/Attacher.cpp b/src/Mod/Part/App/Attacher.cpp index ab008b7db5..441b5d6c07 100644 --- a/src/Mod/Part/App/Attacher.cpp +++ b/src/Mod/Part/App/Attacher.cpp @@ -33,23 +33,16 @@ # include # include # include -# include # include # include # include -# include -# include -# include -# include -# include -# include -# include # include # include # include # include # include # include +# include # include # include # include @@ -2119,70 +2112,28 @@ gp_Pnt AttachEnginePoint::getProximityPoint(eMapMode mmode, const TopoDS_Shape& BRepAdaptor_Curve crv(TopoDS::Edge(edge)); GeomAdaptor_Curve typedcrv; - - switch(crv.GetType()) { - case GeomAbs_Line: - { - Handle(Geom_Line) geomt = new Geom_Line(crv.Line()); - typedcrv.Load(geomt); - break; - } - case GeomAbs_Circle: - { - Handle(Geom_Circle) geomt = new Geom_Circle(crv.Circle()); - typedcrv.Load(geomt); - break; - } - case GeomAbs_Ellipse: - { - Handle(Geom_Ellipse) geomt = new Geom_Ellipse(crv.Ellipse()); - typedcrv.Load(geomt); - break; - } - case GeomAbs_Hyperbola: - { - Handle(Geom_Hyperbola) geomt = new Geom_Hyperbola(crv.Hyperbola()); - typedcrv.Load(geomt); - break; - } - case GeomAbs_Parabola: - { - Handle(Geom_Parabola) geomt = new Geom_Parabola(crv.Parabola()); - typedcrv.Load(geomt); - break; - } - case GeomAbs_BezierCurve: - { - Handle(Geom_BezierCurve) geomt = crv.Bezier(); - typedcrv.Load(geomt); - break; - } - case GeomAbs_BSplineCurve: - { - Handle(Geom_BSplineCurve) geomt = crv.BSpline(); - typedcrv.Load(geomt); - break; - } - #if OCC_VERSION_HEX >= 0x070000 - case GeomAbs_OffsetCurve: - #endif - case GeomAbs_OtherCurve: - Base::Console().Warning("AttachEnginePoint::getProximityPoint curve not supported, intersection may not work properly"); - typedcrv = crv.Curve(); - break; + try { + // Important note about BRepIntCurveSurface_Inter and GeomAdaptor_Curve + // + // A GeomAdaptor_Curve obtained directly from BRepAdaptor_Curve will lose the information + // about Location/orientation of the edge. + // + // That's why GeomAdaptor::MakeCurve() is used to create a new geometry with the + // transformation applied. + typedcrv.Load(GeomAdaptor::MakeCurve(crv)); + } + catch (const Standard_DomainError&) { + Handle(Geom_Curve) curve = crv.Curve().Curve(); + if (curve.IsNull()) { + // Can this ever happen? + typedcrv = crv.Curve(); + } + else { + curve = Handle(Geom_Curve)::DownCast(curve->Copy()); + curve->Transform(crv.Trsf()); + typedcrv.Load(curve); + } } - - // Important note about BRepIntCurveSurface_Inter and GeomAdaptor_Curve - // - // In OCCT 7.4 (and apparently <= 7.4 too): - // - // A GeomAdaptor_Curve obtained directly from BRepAdaptor_Curve will not work because it won't respect the - // Location/orientation of the underlying curve. - // - // This is why the code above is necessary to generate an intermediary curve handle, from which to get an - // GeomAdaptor_Curve that will maintain the location and orientation. - // - // To test this apparent OCCT bug, just change in intCS.Init below typedcrv with crv.Curve(). BRepIntCurveSurface_Inter intCS; intCS.Init(face, typedcrv, Precision::Confusion()); diff --git a/src/Mod/Part/App/BezierCurvePy.xml b/src/Mod/Part/App/BezierCurvePy.xml index 466b89c40c..214bc69b20 100644 --- a/src/Mod/Part/App/BezierCurvePy.xml +++ b/src/Mod/Part/App/BezierCurvePy.xml @@ -156,5 +156,15 @@ ensures that: |t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D + + + Interpolates a list of constraints. + Each constraint is a list of a point and some optional derivatives + An optional list of parameters can be passed. It must be of same size as constraint list. + Otherwise, a simple uniform parametrization is used. + Example : + bezier.interpolate([[pt1, deriv11, deriv12], [pt2,], [pt3, deriv31]], [0, 0.4, 1.0]) + + diff --git a/src/Mod/Part/App/BezierCurvePyImp.cpp b/src/Mod/Part/App/BezierCurvePyImp.cpp index 32275a5b89..95c902ddfe 100644 --- a/src/Mod/Part/App/BezierCurvePyImp.cpp +++ b/src/Mod/Part/App/BezierCurvePyImp.cpp @@ -27,6 +27,9 @@ # include # include # include +# include +# include +# include #endif #include @@ -380,6 +383,101 @@ Py::Object BezierCurvePy::getEndPoint(void) const return Py::Vector(Base::Vector3d(pnt.X(), pnt.Y(), pnt.Z())); } +PyObject* BezierCurvePy::interpolate(PyObject * args) +{ + PyObject* obj; + PyObject* par=0; + if (!PyArg_ParseTuple(args, "O|O", &obj, &par)) + return 0; + try { + Handle(Geom_BezierCurve) curve = Handle(Geom_BezierCurve)::DownCast + (getGeometryPtr()->handle()); + Py::Sequence constraints(obj); + int nb_pts = constraints.size(); + if (nb_pts < 2) + Standard_Failure::Raise("not enough points given"); + + TColStd_Array1OfReal params(1, nb_pts); + if (par) { + Py::Sequence plist(par); + int param_size = plist.size(); + if (param_size != nb_pts) + Standard_Failure::Raise("number of points and parameters don't match"); + int idx=1; + for (Py::Sequence::iterator pit = plist.begin(); pit != plist.end(); ++pit) { + Py::Float val(*pit); + params(idx++) = (double)val; + } + } + else { + for (int idx=0; idx curve->MaxDegree()) + Standard_Failure::Raise("number of constraints exceeds bezier curve capacity"); + // create a bezier-type knot sequence + TColStd_Array1OfReal knots(1, 2*num_poles); + for (int idx=1; idx<=num_poles; ++idx) { + knots(idx) = params(1); + knots(num_poles+idx) = params(nb_pts); + } + math_Matrix OCCmatrix(1, num_poles, 1, num_poles, 0.0); + math_Vector res_x(1, num_poles, 0.0); + math_Vector res_y(1, num_poles, 0.0); + math_Vector res_z(1, num_poles, 0.0); + int row_idx = 1; + int cons_idx = 1; + for (Py::Sequence::iterator it1 = constraints.begin(); it1 != constraints.end(); ++it1) { + Py::Sequence row(*it1); + math_Matrix bezier_eval(1, row.size(), 1, num_poles, 0.0); + Standard_Integer first_non_zero; + BSplCLib::EvalBsplineBasis(row.size()-1, num_poles, knots, params(cons_idx), first_non_zero, bezier_eval, Standard_False); + int idx2 = 1; + for (Py::Sequence::iterator it2 = row.begin(); it2 != row.end(); ++it2) { + OCCmatrix.SetRow(row_idx, bezier_eval.Row(idx2)); + Py::Vector v(*it2); + Base::Vector3d pnt = v.toVector(); + res_x(row_idx) = pnt.x; + res_y(row_idx) = pnt.y; + res_z(row_idx) = pnt.z; + idx2++; + row_idx++; + } + cons_idx++; + } + math_Gauss gauss(OCCmatrix); + gauss.Solve(res_x); + if (!gauss.IsDone()) + Standard_Failure::Raise("Failed to solve equations"); + gauss.Solve(res_y); + if (!gauss.IsDone()) + Standard_Failure::Raise("Failed to solve equations"); + gauss.Solve(res_z); + if (!gauss.IsDone()) + Standard_Failure::Raise("Failed to solve equations"); + + TColgp_Array1OfPnt poles(1,num_poles); + for (int idx=1; idx<=num_poles; ++idx) { + poles.SetValue(idx, gp_Pnt(res_x(idx),res_y(idx),res_z(idx))); + } + + Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(poles); + this->getGeomBezierCurvePtr()->setHandle(bezier); + Py_Return; + } + catch (Standard_Failure& e) { + PyErr_SetString(PartExceptionOCCError, e.GetMessageString()); + return 0; + } +} + PyObject *BezierCurvePy::getCustomAttributes(const char* /*attr*/) const { return 0; diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt index d291c20e45..9adfcf8e3f 100644 --- a/src/Mod/Part/App/CMakeLists.txt +++ b/src/Mod/Part/App/CMakeLists.txt @@ -404,6 +404,8 @@ SET(Part_SRCS GeometryExtension.h GeometryDefaultExtension.cpp GeometryDefaultExtension.h + GeometryMigrationExtension.h + GeometryMigrationExtension.cpp Geometry.cpp Geometry.h Geometry2d.cpp diff --git a/src/Mod/Part/App/FT2FC.cpp b/src/Mod/Part/App/FT2FC.cpp index 41826b12d6..379a58c90f 100644 --- a/src/Mod/Part/App/FT2FC.cpp +++ b/src/Mod/Part/App/FT2FC.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2013 wandererfan * + * Copyright (c) 2013 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -105,30 +105,31 @@ PyObject* FT2FC(const Py_UNICODE *PyUString, const size_t length, const char *FontSpec, const double stringheight, // fc coords - const double tracking) { // fc coords - FT_Library FTLib; - FT_Face FTFont; - FT_Error error; - FT_Long FaceIndex = 0; // some fonts have multiple faces - FT_Vector kern; - FT_UInt FTLoadFlags = FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP; + const double tracking) // fc coords +{ + FT_Library FTLib; + FT_Face FTFont; + FT_Error error; + FT_Long FaceIndex = 0; // some fonts have multiple faces + FT_Vector kern; + FT_UInt FTLoadFlags = FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP; - std::stringstream ErrorMsg; - double PenPos = 0, scalefactor; - UNICHAR prevchar = 0, currchar = 0; - int cadv; - size_t i; - PyObject *WireList, *CharList; + std::stringstream ErrorMsg; + double PenPos = 0, scalefactor; + UNICHAR prevchar = 0, currchar = 0; + int cadv; + size_t i; + Py::List CharList; - error = FT_Init_FreeType(&FTLib); - if(error) { - ErrorMsg << "FT_Init_FreeType failed: " << error; - throw std::runtime_error(ErrorMsg.str()); - } + error = FT_Init_FreeType(&FTLib); + if (error) { + ErrorMsg << "FT_Init_FreeType failed: " << error; + throw std::runtime_error(ErrorMsg.str()); + } #ifdef FC_OS_WIN32 Base::FileInfo fi(FontSpec); - if (!fi.isReadable()) { + if (!fi.isReadable()) { ErrorMsg << "Font file not found (Win): " << FontSpec; throw std::runtime_error(ErrorMsg.str()); } @@ -143,58 +144,61 @@ PyObject* FT2FC(const Py_UNICODE *PyUString, #endif - error = FT_New_Face(FTLib,FontSpec,FaceIndex, &FTFont); - if(error) { - ErrorMsg << "FT_New_Face failed: " << error; - throw std::runtime_error(ErrorMsg.str()); - } + error = FT_New_Face(FTLib,FontSpec,FaceIndex, &FTFont); + if (error) { + ErrorMsg << "FT_New_Face failed: " << error; + throw std::runtime_error(ErrorMsg.str()); + } //TODO: check that FTFont is scalable? only relevant for hinting etc? // FT2 blows up if char size is not set to some non-zero value. // This sets size to 48 point. Magic. - error = FT_Set_Char_Size(FTFont, - 0, /* char_width in 1/64th of points */ - 48*64, /* char_height in 1/64th of points */ - 0, /* horizontal device resolution */ - 0 ); /* vertical device resolution */ - if(error) { - ErrorMsg << "FT_Set_Char_Size failed: " << error; - throw std::runtime_error(ErrorMsg.str()); - } + error = FT_Set_Char_Size(FTFont, + 0, /* char_width in 1/64th of points */ + 48*64, /* char_height in 1/64th of points */ + 0, /* horizontal device resolution */ + 0 ); /* vertical device resolution */ + if (error) { + ErrorMsg << "FT_Set_Char_Size failed: " << error; + throw std::runtime_error(ErrorMsg.str()); + } - CharList = PyList_New(0); - scalefactor = stringheight/float(FTFont->height); - for (i=0; iheight); + for (i=0; iglyph->advance.x; - kern = getKerning(FTFont,prevchar,currchar); - PenPos += kern.x; - WireList = getGlyphContours(FTFont,currchar,PenPos, scalefactor,i,tracking); - if (!PyList_Size(WireList)) // empty ==> whitespace - Base::Console().Log("FT2FC char '0x%04x'/'%d' has no Wires!\n", currchar, currchar); - else - PyList_Append(CharList, WireList); - PenPos += cadv; - prevchar = currchar; - } + cadv = FTFont->glyph->advance.x; + kern = getKerning(FTFont,prevchar,currchar); + PenPos += kern.x; + try { + Py::List WireList(getGlyphContours(FTFont, currchar, PenPos, scalefactor, i, tracking), true); + CharList.append(WireList); + } + catch (Py::Exception& e) { + e.clear(); + Base::Console().Log("FT2FC char '0x%04x'/'%d' has no Wires!\n", currchar, currchar); + } - error = FT_Done_FreeType(FTLib); - if(error) { - ErrorMsg << "FT_Done_FreeType failed: " << error; - throw std::runtime_error(ErrorMsg.str()); - } + PenPos += cadv; + prevchar = currchar; + } - return(CharList); - } + error = FT_Done_FreeType(FTLib); + if (error) { + ErrorMsg << "FT_Done_FreeType failed: " << error; + throw std::runtime_error(ErrorMsg.str()); + } + + return Py::new_reference_to(CharList); +} //********** FT Decompose callbacks and data defns // FT Decomp Context for 1 char @@ -333,7 +337,7 @@ PyObject* getGlyphContours(FT_Face FTFont, UNICHAR currchar, double PenPos, doub } //a ttf outer contour is clockwise with material on the right. -//an occ outer contour has material on the left, so it must be reversed? +//an occ outer contour has material on the left, so it must be reversed? FT_Orientation ftOrient = FT_Outline_Get_Orientation(&FTFont->glyph->outline); @@ -341,8 +345,8 @@ PyObject* getGlyphContours(FT_Face FTFont, UNICHAR currchar, double PenPos, doub if (ftOrient == FT_ORIENTATION_TRUETYPE) { isTTF = true; } - - PyObject* ret = PyList_New(0); + + Py::List list; gp_Vec pointer = gp_Vec(PenPos * Scale + charNum*tracking,0.0,0.0); gp_Trsf xForm; @@ -352,9 +356,9 @@ PyObject* getGlyphContours(FT_Face FTFont, UNICHAR currchar, double PenPos, doub bool bCopy = true; // no effect? - int wCount = 0; + int wCount = 0; for(std::vector::iterator iWire=ctx.Wires.begin();iWire != ctx.Wires.end(); ++iWire, wCount++) { - if ((ctx.wDir[wCount] == CLOCKWISE) && isTTF) { //ttf outer wire. fill inside / right + if ((ctx.wDir[wCount] == CLOCKWISE) && isTTF) { //ttf outer wire. fill inside / right (*iWire).Orientation(TopAbs_REVERSED); } else if ((ctx.wDir[wCount] == CLOCKWISE) && !isTTF) { //ps inner wire. fill outside / right (*iWire).Orientation(TopAbs_REVERSED); @@ -372,9 +376,11 @@ PyObject* getGlyphContours(FT_Face FTFont, UNICHAR currchar, double PenPos, doub ErrorMsg << "FT2FC OCC BRepScale failed \n"; throw std::runtime_error(ErrorMsg.str()); } - PyList_Append(ret,new TopoShapeWirePy(new TopoShape(TopoDS::Wire(BRepScale.Shape())))); + + PyObject* wire = new TopoShapeWirePy(new TopoShape(TopoDS::Wire(BRepScale.Shape()))); + list.append(Py::asObject(wire)); } - return(ret); + return Py::new_reference_to(list); } // get kerning values for this char pair diff --git a/src/Mod/Part/App/FT2FC.h b/src/Mod/Part/App/FT2FC.h index 0c59844394..f7b8eb4968 100644 --- a/src/Mod/Part/App/FT2FC.h +++ b/src/Mod/Part/App/FT2FC.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2013 wandererfan * + * Copyright (c) 2013 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Part/App/FeatureFillet.cpp b/src/Mod/Part/App/FeatureFillet.cpp index db14614ab7..dae4016c17 100644 --- a/src/Mod/Part/App/FeatureFillet.cpp +++ b/src/Mod/Part/App/FeatureFillet.cpp @@ -35,6 +35,7 @@ #include "FeatureFillet.h" #include +#include using namespace Part; diff --git a/src/Mod/Part/App/FeatureGeometrySet.cpp b/src/Mod/Part/App/FeatureGeometrySet.cpp index 16284f7ade..2134d186c6 100644 --- a/src/Mod/Part/App/FeatureGeometrySet.cpp +++ b/src/Mod/Part/App/FeatureGeometrySet.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ #endif diff --git a/src/Mod/Part/App/FeaturePartBox.cpp b/src/Mod/Part/App/FeaturePartBox.cpp index b5f0a9b3f7..c3281aa4cc 100644 --- a/src/Mod/Part/App/FeaturePartBox.cpp +++ b/src/Mod/Part/App/FeaturePartBox.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ # include diff --git a/src/Mod/Part/App/FeaturePartCurveNet.cpp b/src/Mod/Part/App/FeaturePartCurveNet.cpp index a527ca3656..fcb783561e 100644 --- a/src/Mod/Part/App/FeaturePartCurveNet.cpp +++ b/src/Mod/Part/App/FeaturePartCurveNet.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ #endif diff --git a/src/Mod/Part/App/FeaturePartCut.cpp b/src/Mod/Part/App/FeaturePartCut.cpp index e15d836f12..85d036d13f 100644 --- a/src/Mod/Part/App/FeaturePartCut.cpp +++ b/src/Mod/Part/App/FeaturePartCut.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ # include diff --git a/src/Mod/Part/App/FeaturePartImportBrep.cpp b/src/Mod/Part/App/FeaturePartImportBrep.cpp index f645290265..d697efb32b 100644 --- a/src/Mod/Part/App/FeaturePartImportBrep.cpp +++ b/src/Mod/Part/App/FeaturePartImportBrep.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ # include diff --git a/src/Mod/Part/App/FeaturePartImportIges.cpp b/src/Mod/Part/App/FeaturePartImportIges.cpp index 04da295796..72932ebd3b 100644 --- a/src/Mod/Part/App/FeaturePartImportIges.cpp +++ b/src/Mod/Part/App/FeaturePartImportIges.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ # include diff --git a/src/Mod/Part/App/FeaturePartImportStep.cpp b/src/Mod/Part/App/FeaturePartImportStep.cpp index 9c31806803..e8f2dfd9b0 100644 --- a/src/Mod/Part/App/FeaturePartImportStep.cpp +++ b/src/Mod/Part/App/FeaturePartImportStep.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ # include diff --git a/src/Mod/Part/App/FeaturePartSpline.cpp b/src/Mod/Part/App/FeaturePartSpline.cpp index 3917e01e90..617ce3538c 100644 --- a/src/Mod/Part/App/FeaturePartSpline.cpp +++ b/src/Mod/Part/App/FeaturePartSpline.cpp @@ -20,7 +20,7 @@ * * ***************************************************************************/ - + #include "PreCompiled.h" #ifndef _PreComp_ #endif diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index 6db39e0680..9c3ba11ce2 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -140,8 +140,11 @@ #include #include +#include "GeometryMigrationExtension.h" + #include "Geometry.h" + using namespace Part; @@ -187,7 +190,6 @@ const char* gce_ErrorStatusText(gce_ErrorType et) TYPESYSTEM_SOURCE_ABSTRACT(Part::Geometry,Base::Persistence) Geometry::Geometry() - : Construction(false) { createNewTag(); } @@ -205,29 +207,35 @@ unsigned int Geometry::getMemSize (void) const void Geometry::Save(Base::Writer &writer) const { - if( extensions.size()>0 ) { + // We always store an extension array even if empty, so that restoring is consistent. - writer.incInd(); - - writer.Stream() << writer.ind() << "" << std::endl; - - for(auto att:extensions) { - att->Save(writer); - } - - writer.decInd(); - writer.Stream() << writer.ind() << "" << std::endl; + // Get the number of persistent extensions + int counter = 0; + for(auto att:extensions) { + if(att->isDerivedFrom(Part::GeometryPersistenceExtension::getClassTypeId())) + counter++; } - const char c = Construction?'1':'0'; - writer.Stream() << writer.ind() << "" << std::endl; + writer.Stream() << writer.ind() << "" << std::endl; + + writer.incInd(); + + for(auto att:extensions) { + if(att->isDerivedFrom(Part::GeometryPersistenceExtension::getClassTypeId())) + std::static_pointer_cast(att)->Save(writer); + } + + writer.decInd(); + writer.Stream() << writer.ind() << "" << std::endl; } void Geometry::Restore(Base::XMLReader &reader) { + // In legacy file format, there are no extensions and there is a construction XML tag + // In the new format, this is migrated into extensions, and we get an array with extensions reader.readElement(); - if(strcmp(reader.localName(),"GeoExtensions") == 0) { + if(strcmp(reader.localName(),"GeoExtensions") == 0) { // new format int count = reader.getAttributeAsInteger("count"); @@ -235,21 +243,28 @@ void Geometry::Restore(Base::XMLReader &reader) reader.readElement("GeoExtension"); const char* TypeName = reader.getAttribute("type"); Base::Type type = Base::Type::fromName(TypeName); - GeometryExtension *newE = (GeometryExtension *)type.createInstance(); + GeometryPersistenceExtension *newE = (GeometryPersistenceExtension *)type.createInstance(); newE->Restore(reader); extensions.push_back(std::shared_ptr(newE)); } reader.readEndElement("GeoExtensions"); - - reader.readElement("Construction"); // prepare for reading construction attribute - } - else if(strcmp(reader.localName(),"Construction") != 0) { // ignore anything not known - reader.readElement("Construction"); } + else if(strcmp(reader.localName(),"Construction") == 0) { // legacy - Construction = (int)reader.getAttributeAsInteger("value")==0?false:true; + bool construction = (int)reader.getAttributeAsInteger("value")==0?false:true; + + // prepare migration + if(!this->hasExtension(GeometryMigrationExtension::getClassTypeId())) + this->setExtension(std::make_unique()); + + auto ext = std::static_pointer_cast(this->getExtension(GeometryMigrationExtension::getClassTypeId()).lock()); + + ext->setMigrationType(GeometryMigrationExtension::Construction); + ext->setConstruction(construction); + + } } @@ -288,7 +303,7 @@ bool Geometry::hasExtension(std::string name) const return false; } -std::weak_ptr Geometry::getExtension(Base::Type type) const +std::weak_ptr Geometry::getExtension(Base::Type type) { for( auto ext : extensions) { if(ext->getTypeId() == type) @@ -298,7 +313,7 @@ std::weak_ptr Geometry::getExtension(Base::Type type) c throw Base::ValueError("No geometry extension of the requested type."); } -std::weak_ptr Geometry::getExtension(std::string name) const +std::weak_ptr Geometry::getExtension(std::string name) { for( auto ext : extensions) { if(ext->getName() == name) @@ -308,6 +323,17 @@ std::weak_ptr Geometry::getExtension(std::string name) throw Base::ValueError("No geometry extension with the requested name."); } +std::weak_ptr Geometry::getExtension(Base::Type type) const +{ + return const_cast(this)->getExtension(type).lock(); +} + +std::weak_ptr Geometry::getExtension(std::string name) const +{ + return const_cast(this)->getExtension(name).lock(); +} + + void Geometry::setExtension(std::unique_ptr && geo) { bool hasext=false; @@ -372,13 +398,18 @@ void Geometry::assignTag(const Part::Geometry * geo) throw Base::TypeError("Geometry tag can not be assigned as geometry types do not match."); } +void Geometry::copyNonTag(const Part::Geometry * src) +{ + for(auto & ext: src->extensions) + this->extensions.push_back(ext->copy()); +} + Geometry *Geometry::clone(void) const { Geometry* cpy = this->copy(); cpy->tag = this->tag; - for(auto & ext: extensions) - cpy->extensions.push_back(ext->copy()); + // class copy is responsible for copying extensions return cpy; } @@ -472,7 +503,7 @@ void GeomPoint::setHandle(const Handle(Geom_CartesianPoint)& p) Geometry *GeomPoint::copy(void) const { GeomPoint *newPoint = new GeomPoint(myPoint); - newPoint->Construction = this->Construction; + newPoint->copyNonTag(this); return newPoint; } @@ -929,7 +960,7 @@ const Handle(Geom_Geometry)& GeomBezierCurve::handle() const Geometry *GeomBezierCurve::copy(void) const { GeomBezierCurve *newCurve = new GeomBezierCurve(myCurve); - newCurve->Construction = this->Construction; + newCurve->copyNonTag(this); return newCurve; } @@ -1118,7 +1149,7 @@ Geometry *GeomBSplineCurve::copy(void) const { try { GeomBSplineCurve *newCurve = new GeomBSplineCurve(myCurve); - newCurve->Construction = this->Construction; + newCurve->copyNonTag(this); return newCurve; } catch (Standard_Failure& e) { @@ -1746,7 +1777,7 @@ const Handle(Geom_Geometry)& GeomTrimmedCurve::handle() const Geometry *GeomTrimmedCurve::copy(void) const { GeomTrimmedCurve *newCurve = new GeomTrimmedCurve(myCurve); - newCurve->Construction = this->Construction; + newCurve->copyNonTag(this); return newCurve; } @@ -2033,7 +2064,7 @@ void GeomCircle::setHandle(const Handle(Geom_Circle)& c) Geometry *GeomCircle::copy(void) const { GeomCircle *newCirc = new GeomCircle(myCurve); - newCirc->Construction = this->Construction; + newCirc->copyNonTag(this); return newCirc; } @@ -2225,7 +2256,7 @@ Geometry *GeomArcOfCircle::copy(void) const { GeomArcOfCircle* copy = new GeomArcOfCircle(); copy->setHandle(this->myCurve); - copy->Construction = this->Construction; + copy->copyNonTag(this); return copy; } @@ -2454,7 +2485,7 @@ void GeomEllipse::setHandle(const Handle(Geom_Ellipse) &e) Geometry *GeomEllipse::copy(void) const { GeomEllipse *newEllipse = new GeomEllipse(myCurve); - newEllipse->Construction = this->Construction; + newEllipse->copyNonTag(this); return newEllipse; } @@ -2710,7 +2741,7 @@ Geometry *GeomArcOfEllipse::copy(void) const { GeomArcOfEllipse* copy = new GeomArcOfEllipse(); copy->setHandle(this->myCurve); - copy->Construction = this->Construction; + copy->copyNonTag(this); return copy; } @@ -2979,7 +3010,7 @@ void GeomHyperbola::setHandle(const Handle(Geom_Hyperbola)& c) Geometry *GeomHyperbola::copy(void) const { GeomHyperbola *newHyp = new GeomHyperbola(myCurve); - newHyp->Construction = this->Construction; + newHyp->copyNonTag(this); return newHyp; } @@ -3148,7 +3179,7 @@ Geometry *GeomArcOfHyperbola::copy(void) const { GeomArcOfHyperbola* copy = new GeomArcOfHyperbola(); copy->setHandle(this->myCurve); - copy->Construction = this->Construction; + copy->copyNonTag(this); return copy; } @@ -3407,7 +3438,7 @@ void GeomParabola::setHandle(const Handle(Geom_Parabola)& c) Geometry *GeomParabola::copy(void) const { GeomParabola *newPar = new GeomParabola(myCurve); - newPar->Construction = this->Construction; + newPar->copyNonTag(this); return newPar; } @@ -3557,7 +3588,7 @@ Geometry *GeomArcOfParabola::copy(void) const { GeomArcOfParabola* copy = new GeomArcOfParabola(); copy->setHandle(this->myCurve); - copy->Construction = this->Construction; + copy->copyNonTag(this); return copy; } @@ -3785,7 +3816,7 @@ void GeomLine::setHandle(const Handle(Geom_Line)& l) Geometry *GeomLine::copy(void) const { GeomLine *newLine = new GeomLine(myCurve); - newLine->Construction = this->Construction; + newLine->copyNonTag(this); return newLine; } @@ -3883,7 +3914,7 @@ Geometry *GeomLineSegment::copy(void)const { GeomLineSegment *tempCurve = new GeomLineSegment(); tempCurve->myCurve = Handle(Geom_TrimmedCurve)::DownCast(myCurve->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4029,7 +4060,7 @@ GeomOffsetCurve::~GeomOffsetCurve() Geometry *GeomOffsetCurve::copy(void) const { GeomOffsetCurve *newCurve = new GeomOffsetCurve(myCurve); - newCurve->Construction = this->Construction; + newCurve->copyNonTag(this); return newCurve; } @@ -4201,7 +4232,7 @@ void GeomBezierSurface::setHandle(const Handle(Geom_BezierSurface)& b) Geometry *GeomBezierSurface::copy(void) const { GeomBezierSurface *newSurf = new GeomBezierSurface(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4260,7 +4291,7 @@ const Handle(Geom_Geometry)& GeomBSplineSurface::handle() const Geometry *GeomBSplineSurface::copy(void) const { GeomBSplineSurface *newSurf = new GeomBSplineSurface(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4307,7 +4338,7 @@ Geometry *GeomCylinder::copy(void) const { GeomCylinder *tempCurve = new GeomCylinder(); tempCurve->mySurface = Handle(Geom_CylindricalSurface)::DownCast(mySurface->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4354,7 +4385,7 @@ Geometry *GeomCone::copy(void) const { GeomCone *tempCurve = new GeomCone(); tempCurve->mySurface = Handle(Geom_ConicalSurface)::DownCast(mySurface->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4401,7 +4432,7 @@ Geometry *GeomToroid::copy(void) const { GeomToroid *tempCurve = new GeomToroid(); tempCurve->mySurface = Handle(Geom_ToroidalSurface)::DownCast(mySurface->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4448,7 +4479,7 @@ Geometry *GeomSphere::copy(void) const { GeomSphere *tempCurve = new GeomSphere(); tempCurve->mySurface = Handle(Geom_SphericalSurface)::DownCast(mySurface->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4495,7 +4526,7 @@ Geometry *GeomPlane::copy(void) const { GeomPlane *tempCurve = new GeomPlane(); tempCurve->mySurface = Handle(Geom_Plane)::DownCast(mySurface->Copy()); - tempCurve->Construction = this->Construction; + tempCurve->copyNonTag(this); return tempCurve; } @@ -4544,7 +4575,7 @@ const Handle(Geom_Geometry)& GeomOffsetSurface::handle() const Geometry *GeomOffsetSurface::copy(void) const { GeomOffsetSurface *newSurf = new GeomOffsetSurface(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4599,7 +4630,7 @@ const Handle(Geom_Geometry)& GeomPlateSurface::handle() const Geometry *GeomPlateSurface::copy(void) const { GeomPlateSurface *newSurf = new GeomPlateSurface(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4654,7 +4685,7 @@ const Handle(Geom_Geometry)& GeomTrimmedSurface::handle() const Geometry *GeomTrimmedSurface::copy(void) const { GeomTrimmedSurface *newSurf = new GeomTrimmedSurface(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4703,7 +4734,7 @@ const Handle(Geom_Geometry)& GeomSurfaceOfRevolution::handle() const Geometry *GeomSurfaceOfRevolution::copy(void) const { GeomSurfaceOfRevolution *newSurf = new GeomSurfaceOfRevolution(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -4752,7 +4783,7 @@ const Handle(Geom_Geometry)& GeomSurfaceOfExtrusion::handle() const Geometry *GeomSurfaceOfExtrusion::copy(void) const { GeomSurfaceOfExtrusion *newSurf = new GeomSurfaceOfExtrusion(mySurface); - newSurf->Construction = this->Construction; + newSurf->copyNonTag(this); return newSurf; } @@ -5053,7 +5084,7 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou { if (c->IsKind(STANDARD_TYPE(Geom_Circle))) { Handle(Geom_Circle) circ = Handle(Geom_Circle)::DownCast(c); - std::unique_ptr arc(new GeomArcOfCircle()); + std::unique_ptr arc(new GeomArcOfCircle()); Handle(Geom_TrimmedCurve) this_arc = Handle(Geom_TrimmedCurve)::DownCast (arc->handle()); Handle(Geom_Circle) this_circ = Handle(Geom_Circle)::DownCast @@ -5064,7 +5095,7 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou } else if (c->IsKind(STANDARD_TYPE(Geom_Ellipse))) { Handle(Geom_Ellipse) ellp = Handle(Geom_Ellipse)::DownCast(c); - std::unique_ptr arc(new GeomArcOfEllipse()); + std::unique_ptr arc(new GeomArcOfEllipse()); Handle(Geom_TrimmedCurve) this_arc = Handle(Geom_TrimmedCurve)::DownCast (arc->handle()); Handle(Geom_Ellipse) this_ellp = Handle(Geom_Ellipse)::DownCast @@ -5075,7 +5106,7 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou } else if (c->IsKind(STANDARD_TYPE(Geom_Hyperbola))) { Handle(Geom_Hyperbola) hypr = Handle(Geom_Hyperbola)::DownCast(c); - std::unique_ptr arc(new GeomArcOfHyperbola()); + std::unique_ptr arc(new GeomArcOfHyperbola()); Handle(Geom_TrimmedCurve) this_arc = Handle(Geom_TrimmedCurve)::DownCast (arc->handle()); Handle(Geom_Hyperbola) this_hypr = Handle(Geom_Hyperbola)::DownCast @@ -5086,7 +5117,7 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou } else if (c->IsKind(STANDARD_TYPE(Geom_Line))) { Handle(Geom_Line) line = Handle(Geom_Line)::DownCast(c); - std::unique_ptr segm(new GeomLineSegment()); + std::unique_ptr segm(new GeomLineSegment()); Handle(Geom_TrimmedCurve) this_segm = Handle(Geom_TrimmedCurve)::DownCast (segm->handle()); Handle(Geom_Line) this_line = Handle(Geom_Line)::DownCast @@ -5097,7 +5128,7 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou } else if (c->IsKind(STANDARD_TYPE(Geom_Parabola))) { Handle(Geom_Parabola) para = Handle(Geom_Parabola)::DownCast(c); - std::unique_ptr arc(new GeomArcOfParabola()); + std::unique_ptr arc(new GeomArcOfParabola()); Handle(Geom_TrimmedCurve) this_arc = Handle(Geom_TrimmedCurve)::DownCast (arc->handle()); Handle(Geom_Parabola) this_para = Handle(Geom_Parabola)::DownCast @@ -5109,19 +5140,19 @@ std::unique_ptr makeFromTrimmedCurve(const Handle(Geom_Curve)& c, dou else if (c->IsKind(STANDARD_TYPE(Geom_BezierCurve))) { Handle(Geom_BezierCurve) bezier = Handle(Geom_BezierCurve)::DownCast(c->Copy()); bezier->Segment(f, l); - return std::unique_ptr(new GeomBezierCurve(bezier)); + return std::unique_ptr(new GeomBezierCurve(bezier)); } else if (c->IsKind(STANDARD_TYPE(Geom_BSplineCurve))) { Handle(Geom_BSplineCurve) bspline = Handle(Geom_BSplineCurve)::DownCast(c->Copy()); bspline->Segment(f, l); - return std::unique_ptr(new GeomBSplineCurve(bspline)); + return std::unique_ptr(new GeomBSplineCurve(bspline)); } else if (c->IsKind(STANDARD_TYPE(Geom_OffsetCurve))) { Handle(Geom_OffsetCurve) oc = Handle(Geom_OffsetCurve)::DownCast(c); double v = oc->Offset(); gp_Dir dir = oc->Direction(); std::unique_ptr bc(makeFromTrimmedCurve(oc->BasisCurve(), f, l)); - return std::unique_ptr(new GeomOffsetCurve(Handle(Geom_Curve)::DownCast(bc->handle()), v, dir)); + return std::unique_ptr(new GeomOffsetCurve(Handle(Geom_Curve)::DownCast(bc->handle()), v, dir)); } else if (c->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) { Handle(Geom_TrimmedCurve) trc = Handle(Geom_TrimmedCurve)::DownCast(c); diff --git a/src/Mod/Part/App/Geometry.h b/src/Mod/Part/App/Geometry.h index 611784c018..e594ce5f47 100644 --- a/src/Mod/Part/App/Geometry.h +++ b/src/Mod/Part/App/Geometry.h @@ -93,11 +93,6 @@ public: /// If you do not desire to have the same tag, then a copy can be performed by using a constructor (which will generate another tag) /// and then, if necessary (e.g. if the constructor did not take a handle as a parameter), set a new handle. Geometry *clone(void) const; - /// construction geometry (means no impact on a later built topo) - /// Note: In the Sketcher and only for the specific case of a point, it has a special meaning: - /// a construction point has fixed coordinates for the solver (it has fixed parameters) - inline bool getConstruction(void) const {return Construction;}; - inline void setConstruction(bool construction) {Construction = construction;}; /// returns the tag of the geometry object boost::uuids::uuid getTag() const; @@ -107,6 +102,8 @@ public: bool hasExtension(std::string name) const; std::weak_ptr getExtension(Base::Type type) const; std::weak_ptr getExtension(std::string name) const; + std::weak_ptr getExtension(Base::Type type); + std::weak_ptr getExtension(std::string name); void setExtension(std::unique_ptr &&geo); void deleteExtension(Base::Type type); void deleteExtension(std::string name); @@ -124,6 +121,8 @@ protected: /// copies the tag from the geometry passed as a parameter to this object void assignTag(const Part::Geometry *); + void copyNonTag(const Part::Geometry *); + protected: Geometry(); @@ -134,9 +133,6 @@ protected: private: Geometry(const Geometry&); Geometry& operator = (const Geometry&); - -protected: - bool Construction; }; class PartExport GeomPoint : public Geometry diff --git a/src/Mod/Part/App/Geometry2d.cpp b/src/Mod/Part/App/Geometry2d.cpp index cdd822b8b8..4d2da2c7d7 100644 --- a/src/Mod/Part/App/Geometry2d.cpp +++ b/src/Mod/Part/App/Geometry2d.cpp @@ -2293,7 +2293,7 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& { if (c->IsKind(STANDARD_TYPE(Geom2d_Circle))) { Handle(Geom2d_Circle) circ = Handle(Geom2d_Circle)::DownCast(c); - std::unique_ptr arc(new Geom2dArcOfCircle()); + std::unique_ptr arc(new Geom2dArcOfCircle()); Handle(Geom2d_TrimmedCurve) this_arc = Handle(Geom2d_TrimmedCurve)::DownCast (arc->handle()); @@ -2305,7 +2305,7 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& } else if (c->IsKind(STANDARD_TYPE(Geom2d_Ellipse))) { Handle(Geom2d_Ellipse) ellp = Handle(Geom2d_Ellipse)::DownCast(c); - std::unique_ptr arc(new Geom2dArcOfEllipse()); + std::unique_ptr arc(new Geom2dArcOfEllipse()); Handle(Geom2d_TrimmedCurve) this_arc = Handle(Geom2d_TrimmedCurve)::DownCast (arc->handle()); @@ -2317,7 +2317,7 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& } else if (c->IsKind(STANDARD_TYPE(Geom2d_Hyperbola))) { Handle(Geom2d_Hyperbola) hypr = Handle(Geom2d_Hyperbola)::DownCast(c); - std::unique_ptr arc(new Geom2dArcOfHyperbola()); + std::unique_ptr arc(new Geom2dArcOfHyperbola()); Handle(Geom2d_TrimmedCurve) this_arc = Handle(Geom2d_TrimmedCurve)::DownCast (arc->handle()); @@ -2329,7 +2329,7 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& } else if (c->IsKind(STANDARD_TYPE(Geom2d_Line))) { Handle(Geom2d_Line) line = Handle(Geom2d_Line)::DownCast(c); - std::unique_ptr segm(new Geom2dLineSegment()); + std::unique_ptr segm(new Geom2dLineSegment()); Handle(Geom2d_TrimmedCurve) this_segm = Handle(Geom2d_TrimmedCurve)::DownCast (segm->handle()); @@ -2341,7 +2341,7 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& } else if (c->IsKind(STANDARD_TYPE(Geom2d_Parabola))) { Handle(Geom2d_Parabola) para = Handle(Geom2d_Parabola)::DownCast(c); - std::unique_ptr arc(new Geom2dArcOfParabola()); + std::unique_ptr arc(new Geom2dArcOfParabola()); Handle(Geom2d_TrimmedCurve) this_arc = Handle(Geom2d_TrimmedCurve)::DownCast (arc->handle()); @@ -2354,18 +2354,18 @@ std::unique_ptr makeFromTrimmedCurve2d(const Handle(Geom2d_Curve)& else if (c->IsKind(STANDARD_TYPE(Geom2d_BezierCurve))) { Handle(Geom2d_BezierCurve) bezier = Handle(Geom2d_BezierCurve)::DownCast(c->Copy()); bezier->Segment(f, l); - return std::unique_ptr(new Geom2dBezierCurve(bezier)); + return std::unique_ptr(new Geom2dBezierCurve(bezier)); } else if (c->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve))) { Handle(Geom2d_BSplineCurve) bspline = Handle(Geom2d_BSplineCurve)::DownCast(c->Copy()); bspline->Segment(f, l); - return std::unique_ptr(new Geom2dBSplineCurve(bspline)); + return std::unique_ptr(new Geom2dBSplineCurve(bspline)); } else if (c->IsKind(STANDARD_TYPE(Geom2d_OffsetCurve))) { Handle(Geom2d_OffsetCurve) oc = Handle(Geom2d_OffsetCurve)::DownCast(c); double v = oc->Offset(); std::unique_ptr bc(makeFromTrimmedCurve2d(oc->BasisCurve(), f, l)); - return std::unique_ptr(new Geom2dOffsetCurve(Handle(Geom2d_Curve)::DownCast(bc->handle()), v)); + return std::unique_ptr(new Geom2dOffsetCurve(Handle(Geom2d_Curve)::DownCast(bc->handle()), v)); } else if (c->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve))) { Handle(Geom2d_TrimmedCurve) trc = Handle(Geom2d_TrimmedCurve)::DownCast(c); diff --git a/src/Mod/Part/App/GeometryDefaultExtension.cpp b/src/Mod/Part/App/GeometryDefaultExtension.cpp index 1a4e79ded0..7e78941a27 100644 --- a/src/Mod/Part/App/GeometryDefaultExtension.cpp +++ b/src/Mod/Part/App/GeometryDefaultExtension.cpp @@ -45,12 +45,6 @@ GeometryDefaultExtension::GeometryDefaultExtension(const T& val, std::string } // Persistence implementer -template -unsigned int GeometryDefaultExtension::getMemSize (void) const -{ - return 1; -} - template void GeometryDefaultExtension::Save(Base::Writer &writer) const { @@ -114,7 +108,7 @@ namespace Part { //typedef Part::GeometryStringExtension GeometryStringExtension; // ---------- GeometryIntExtension ---------- -TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryIntExtension,Part::GeometryExtension) +TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryIntExtension,Part::GeometryPersistenceExtension) template <> PyObject * GeometryDefaultExtension::getPyObject(void) @@ -131,7 +125,7 @@ void GeometryDefaultExtension::Restore(Base::XMLReader &reader) } // ---------- GeometryStringExtension ---------- -TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryStringExtension,Part::GeometryExtension) +TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryStringExtension,Part::GeometryPersistenceExtension) template <> PyObject * GeometryDefaultExtension::getPyObject(void) @@ -140,7 +134,7 @@ PyObject * GeometryDefaultExtension::getPyObject(void) } // ---------- GeometryBoolExtension ---------- -TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryBoolExtension,Part::GeometryExtension) +TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryBoolExtension,Part::GeometryPersistenceExtension) template <> PyObject * GeometryDefaultExtension::getPyObject(void) @@ -157,7 +151,7 @@ void GeometryDefaultExtension::Restore(Base::XMLReader &reader) } // ---------- GeometryDoubleExtension ---------- -TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryDoubleExtension,Part::GeometryExtension) +TYPESYSTEM_SOURCE_TEMPLATE_T(Part::GeometryDoubleExtension,Part::GeometryPersistenceExtension) template <> PyObject * GeometryDefaultExtension::getPyObject(void) diff --git a/src/Mod/Part/App/GeometryDefaultExtension.h b/src/Mod/Part/App/GeometryDefaultExtension.h index 629e133f2b..b4e0817825 100644 --- a/src/Mod/Part/App/GeometryDefaultExtension.h +++ b/src/Mod/Part/App/GeometryDefaultExtension.h @@ -30,7 +30,7 @@ namespace Part { template - class PartExport GeometryDefaultExtension: public Part::GeometryExtension + class PartExport GeometryDefaultExtension: public Part::GeometryPersistenceExtension { TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: @@ -42,7 +42,6 @@ namespace Part { inline const T &getValue() const {return value;}; // Persistence implementer --------------------- - virtual unsigned int getMemSize(void) const override; virtual void Save(Base::Writer &/*writer*/) const override; virtual void Restore(Base::XMLReader &/*reader*/) override; diff --git a/src/Mod/Part/App/GeometryExtension.cpp b/src/Mod/Part/App/GeometryExtension.cpp index a7f9296441..fd8c6fad0c 100644 --- a/src/Mod/Part/App/GeometryExtension.cpp +++ b/src/Mod/Part/App/GeometryExtension.cpp @@ -28,16 +28,26 @@ #include #include "GeometryExtension.h" +#include "GeometryExtensionPy.h" using namespace Part; -TYPESYSTEM_SOURCE_ABSTRACT(Part::GeometryExtension,Base::Persistence) +TYPESYSTEM_SOURCE_ABSTRACT(Part::GeometryExtension,Base::BaseClass) GeometryExtension::GeometryExtension() { } -void GeometryExtension::restoreNameAttribute(Base::XMLReader &reader) +PyObject* GeometryExtension::copyPyObject() const +{ + Py::Tuple tuple; + Py::Object obj = Py::asObject(const_cast(this)->getPyObject()); + return static_cast(obj.ptr())->copy(tuple.ptr()); +} + +TYPESYSTEM_SOURCE_ABSTRACT(Part::GeometryPersistenceExtension,Part::GeometryExtension) + +void GeometryPersistenceExtension::restoreNameAttribute(Base::XMLReader &reader) { if(reader.hasAttribute("name")) { std::string name = reader.getAttribute("name"); diff --git a/src/Mod/Part/App/GeometryExtension.h b/src/Mod/Part/App/GeometryExtension.h index 552f1239b0..02119670ab 100644 --- a/src/Mod/Part/App/GeometryExtension.h +++ b/src/Mod/Part/App/GeometryExtension.h @@ -32,20 +32,16 @@ namespace Part { -class PartExport GeometryExtension: public Base::Persistence +class PartExport GeometryExtension: public Base::BaseClass { TYPESYSTEM_HEADER(); public: virtual ~GeometryExtension() = default; - // Persistence implementer --------------------- - virtual unsigned int getMemSize(void) const = 0; - virtual void Save(Base::Writer &/*writer*/) const = 0; - virtual void Restore(Base::XMLReader &/*reader*/) = 0; - virtual std::unique_ptr copy(void) const = 0; virtual PyObject *getPyObject(void) = 0; + PyObject* copyPyObject() const; inline void setName(const std::string& str) {name = str;} inline const std::string &getName () const {return name;} @@ -55,12 +51,26 @@ protected: GeometryExtension(const GeometryExtension &obj) = default; GeometryExtension& operator= (const GeometryExtension &obj) = default; - void restoreNameAttribute(Base::XMLReader &/*reader*/); - private: std::string name; }; + + +class PartExport GeometryPersistenceExtension : public Part::GeometryExtension +{ + TYPESYSTEM_HEADER(); +public: + virtual ~GeometryPersistenceExtension() = default; + + // Own Persistence implementer - Not Base::Persistence - managed by Part::Geometry + virtual void Save(Base::Writer &/*writer*/) const = 0; + virtual void Restore(Base::XMLReader &/*reader*/) = 0; + +protected: + void restoreNameAttribute(Base::XMLReader &/*reader*/); +}; + } #endif // PART_GEOMETRYEXTENSION_H diff --git a/src/Mod/Part/App/GeometryMigrationExtension.cpp b/src/Mod/Part/App/GeometryMigrationExtension.cpp new file mode 100644 index 0000000000..813e7f059c --- /dev/null +++ b/src/Mod/Part/App/GeometryMigrationExtension.cpp @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2020 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#include "PreCompiled.h" + +#include "GeometryMigrationExtension.h" + +#include + +using namespace Part; + + +//---------- Geometry Extension +TYPESYSTEM_SOURCE(Part::GeometryMigrationExtension,Part::GeometryExtension) + +GeometryMigrationExtension::GeometryMigrationExtension():ConstructionState(false) +{ + +} + +std::unique_ptr GeometryMigrationExtension::copy(void) const +{ + auto cpy = std::make_unique(); + + cpy->ConstructionState = this->ConstructionState; + cpy->GeometryMigrationFlags = this->GeometryMigrationFlags; + + cpy->setName(this->getName()); // Base Class + +#if defined (__GNUC__) && (__GNUC__ <=4) + return std::move(cpy); +#else + return cpy; +#endif +} + +PyObject * GeometryMigrationExtension::getPyObject(void) +{ + THROWM(Base::NotImplementedError, "GeometryMigrationExtension does not have a Python counterpart"); +} diff --git a/src/Mod/Part/App/GeometryMigrationExtension.h b/src/Mod/Part/App/GeometryMigrationExtension.h new file mode 100644 index 0000000000..28cca0875d --- /dev/null +++ b/src/Mod/Part/App/GeometryMigrationExtension.h @@ -0,0 +1,82 @@ +/*************************************************************************** + * Copyright (c) 2020 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#ifndef PART_GEOMETRYMIGRATIONEXTENSION_H +#define PART_GEOMETRYMIGRATIONEXTENSION_H + +#include +#include + +namespace Part +{ + +// This is a light-weight c++ only geometry extension to enable migration of information that was stored within +// the Part WB and should be migrated to another WB +// +// It is designed so that a single extension can migrate different types of data. +// +// To migrate data: +// 1. Add an enum bit to indicate the type of migration type +// 2. Add the data members to store the information and accessors +class PartExport GeometryMigrationExtension : public Part::GeometryExtension +{ + TYPESYSTEM_HEADER_WITH_OVERRIDE(); +public: + + // Indicates the type of migration to be performed, it is stored as a bitset, so several + // migrations may take place in a single extension. + // It is intended to support also LinkStage3 migration with a single framework (Id, Ref, ...) + enum MigrationType { + None = 0, + Construction = 1, + NumMigrationType // Must be the last + }; + + GeometryMigrationExtension(); + virtual ~GeometryMigrationExtension() override = default; + + virtual std::unique_ptr copy(void) const override; + + virtual PyObject *getPyObject(void) override; + + + virtual bool getConstruction() const {return ConstructionState;} + virtual void setConstruction(bool construction) {ConstructionState = construction;} + + virtual bool testMigrationType(int flag) const { return GeometryMigrationFlags.test((size_t)(flag)); }; + virtual void setMigrationType(int flag, bool v=true) { GeometryMigrationFlags.set((size_t)(flag), v); }; + + +private: + GeometryMigrationExtension(const GeometryMigrationExtension&) = default; + +private: + using MigrationTypeFlagType = std::bitset<32>; + MigrationTypeFlagType GeometryMigrationFlags; + bool ConstructionState; + +}; + +} //namespace Part + + +#endif // PART_GEOMETRYMIGRATIONEXTENSION_H diff --git a/src/Mod/Part/App/GeometryPy.xml b/src/Mod/Part/App/GeometryPy.xml index 87d69de4bb..b8d5cc425f 100644 --- a/src/Mod/Part/App/GeometryPy.xml +++ b/src/Mod/Part/App/GeometryPy.xml @@ -93,13 +93,6 @@ It describes the common behavior of these objects when: Returns a list with information about the geometry extensions. - - - Defines this geometry as a construction one which -means that it is not part of a later built shape. - - - Gives the tag of the geometry as string. diff --git a/src/Mod/Part/App/GeometryPyImp.cpp b/src/Mod/Part/App/GeometryPyImp.cpp index c621036f8e..ded486b763 100644 --- a/src/Mod/Part/App/GeometryPyImp.cpp +++ b/src/Mod/Part/App/GeometryPyImp.cpp @@ -248,8 +248,7 @@ PyObject* GeometryPy::getExtensionOfType(PyObject *args) std::shared_ptr ext(this->getGeometryPtr()->getExtension(type)); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -260,6 +259,10 @@ PyObject* GeometryPy::getExtensionOfType(PyObject *args) PyErr_SetString(PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } else { @@ -282,8 +285,7 @@ PyObject* GeometryPy::getExtensionOfName(PyObject *args) std::shared_ptr ext(this->getGeometryPtr()->getExtension(std::string(o))); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -294,6 +296,10 @@ PyObject* GeometryPy::getExtensionOfName(PyObject *args) PyErr_SetString(PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } @@ -406,9 +412,7 @@ PyObject* GeometryPy::getExtensions(PyObject *args) try { const std::vector> ext = this->getGeometryPtr()->getExtensions(); - PyObject* list = PyList_New(ext.size()); - - Py::Tuple tuple(ext.size()); + Py::List list; for (std::size_t i=0; i(p->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - PyList_SetItem( list, i, cpy); + try { + list.append(Py::asObject(p->copyPyObject())); + } + catch(Base::NotImplementedError) { + // silently ignoring extensions not having a Python object + } } } - return list; + return Py::new_reference_to(list); } catch(const Base::ValueError& e) { PyErr_SetString(PartExceptionOCCError, e.what()); @@ -432,17 +440,6 @@ PyObject* GeometryPy::getExtensions(PyObject *args) } -Py::Boolean GeometryPy::getConstruction(void) const -{ - return Py::Boolean(getGeometryPtr()->getConstruction()); -} - -void GeometryPy::setConstruction(Py::Boolean arg) -{ - if (getGeometryPtr()->getTypeId() != Part::GeomPoint::getClassTypeId()) - getGeometryPtr()->setConstruction(arg); -} - Py::String GeometryPy::getTag(void) const { std::string tmp = boost::uuids::to_string(getGeometryPtr()->getTag()); diff --git a/src/Mod/Part/App/GeometrySurfacePy.xml b/src/Mod/Part/App/GeometrySurfacePy.xml index a15a2d63fd..339ad0eef2 100644 --- a/src/Mod/Part/App/GeometrySurfacePy.xml +++ b/src/Mod/Part/App/GeometrySurfacePy.xml @@ -172,18 +172,19 @@ Checks if the surface is planar within a certain tolerance. of the nearest orthogonal projection of the point. - + Returns a B-Spline representation of this surface. -The required arguments are: -* tolerance -* continuity in u (as string e.g. C0, G0, G1, C1, G2, C3, CN) -* continuity in v (as string e.g. C0, G0, G1, C1, G2, C3, CN) -* maximum degree in u -* maximum degree in v -* maximum number of segments -* precision code (optional, default=0) + The optional arguments are: + * tolerance (default=1e-7) + * continuity in u (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1') + * continuity in v (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1') + * maximum degree in u (default=25) + * maximum degree in v (default=25) + * maximum number of segments (default=1000) + * precision code (default=0) + Will raise an exception if surface is infinite in U or V (like planes, cones or cylinders) diff --git a/src/Mod/Part/App/GeometrySurfacePyImp.cpp b/src/Mod/Part/App/GeometrySurfacePyImp.cpp index 1866ae0d33..67bfe22da1 100644 --- a/src/Mod/Part/App/GeometrySurfacePyImp.cpp +++ b/src/Mod/Part/App/GeometrySurfacePyImp.cpp @@ -44,6 +44,7 @@ # include # include # include +# include #endif #include @@ -705,18 +706,25 @@ Py::String GeometrySurfacePy::getContinuity(void) const return Py::String(str); } -PyObject* GeometrySurfacePy::toBSpline(PyObject * args) +PyObject* GeometrySurfacePy::toBSpline(PyObject * args, PyObject * kwds) { - double tol3d; - char *ucont, *vcont; - int maxDegU,maxDegV,maxSegm,prec=0; - if (!PyArg_ParseTuple(args, "dssiii|i",&tol3d,&ucont,&vcont, - &maxDegU,&maxDegV,&maxSegm,&prec)) - return 0; + double tol3d=Precision::Confusion(); + char *ucont="C1", *vcont="C1"; + int maxDegU=Geom_BSplineSurface::MaxDegree(); + int maxDegV=Geom_BSplineSurface::MaxDegree(); + int maxSegm=1000, prec=0; + + static char *kwlist[] = {"Tol3d", "UContinuity", "VContinuity", "MaxDegreeU", "MaxDegreeV", "MaxSegments", "PrecisCode", nullptr}; + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|dssiiii", kwlist, + &tol3d, &ucont, &vcont, + &maxDegU, &maxDegV, &maxSegm, &prec)) + return nullptr; - std::string uc = ucont; GeomAbs_Shape absU, absV; - if (uc == "C0") + std::string uc = ucont; + if (maxDegU <= 1) + absU = GeomAbs_C0; + else if (uc == "C0") absU = GeomAbs_C0; else if (uc == "C1") absU = GeomAbs_C1; @@ -732,7 +740,9 @@ PyObject* GeometrySurfacePy::toBSpline(PyObject * args) absU = GeomAbs_G2; std::string vc = vcont; - if (vc == "C0") + if (maxDegV <= 1) + absV = GeomAbs_C0; + else if (vc == "C0") absV = GeomAbs_C0; else if (vc == "C1") absV = GeomAbs_C1; diff --git a/src/Mod/Part/App/OpenCascadeAll.h b/src/Mod/Part/App/OpenCascadeAll.h index d16089e6d5..0bdd759f57 100644 --- a/src/Mod/Part/App/OpenCascadeAll.h +++ b/src/Mod/Part/App/OpenCascadeAll.h @@ -358,6 +358,7 @@ #include #include #include +#include #include #include #include diff --git a/src/Mod/Part/App/Part2DObjectPyImp.cpp b/src/Mod/Part/App/Part2DObjectPyImp.cpp index 795e5aba45..c72110cba3 100644 --- a/src/Mod/Part/App/Part2DObjectPyImp.cpp +++ b/src/Mod/Part/App/Part2DObjectPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2011 Werner Mayer * + * * + * 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" @@ -25,7 +46,7 @@ PyObject *Part2DObjectPy::getCustomAttributes(const char* /*attr*/) const int Part2DObjectPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } diff --git a/src/Mod/Part/App/PreCompiled.h b/src/Mod/Part/App/PreCompiled.h index 19169f1141..16377c8016 100644 --- a/src/Mod/Part/App/PreCompiled.h +++ b/src/Mod/Part/App/PreCompiled.h @@ -93,10 +93,14 @@ #include #include "OpenCascadeAll.h" +#include +#include #elif defined(FC_OS_WIN32) #define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX #define NOMINMAX +#endif #include #endif //_PreComp_ diff --git a/src/Mod/Part/App/PrimitiveFeature.cpp b/src/Mod/Part/App/PrimitiveFeature.cpp index ba05cca1d3..4841f871f6 100644 --- a/src/Mod/Part/App/PrimitiveFeature.cpp +++ b/src/Mod/Part/App/PrimitiveFeature.cpp @@ -30,7 +30,6 @@ # include # include # include -# include # include # include # include @@ -775,34 +774,14 @@ App::DocumentObjectExecReturn *Torus::execute(void) if (Radius2.getValue() < Precision::Confusion()) return new App::DocumentObjectExecReturn("Radius of torus too small"); try { -#if 1 - // Build a torus - gp_Circ circle; - circle.SetRadius(Radius2.getValue()); - gp_Pnt pos(Radius1.getValue(),0,0); - gp_Dir dir(0,1,0); - circle.SetAxis(gp_Ax1(pos, dir)); - - BRepBuilderAPI_MakeEdge mkEdge(circle, Base::toRadians(Angle1.getValue()+180.0f), - Base::toRadians(Angle2.getValue()+180.0f)); - BRepBuilderAPI_MakeWire mkWire; - mkWire.Add(mkEdge.Edge()); - BRepBuilderAPI_MakeFace mkFace(mkWire.Wire()); - BRepPrimAPI_MakeRevol mkRevol(mkFace.Face(), gp_Ax1(gp_Pnt(0,0,0), gp_Dir(0,0,1)), - Base::toRadians(Angle3.getValue()), Standard_True); - TopoDS_Shape ResultShape = mkRevol.Shape(); -#else - BRepPrimAPI_MakeTorus mkTorus(Radius1.getValue(), - Radius2.getValue(), - Angle1.getValue()/180.0f*Standard_PI, - Angle2.getValue()/180.0f*Standard_PI, - Angle3.getValue()/180.0f*Standard_PI); - const TopoDS_Solid& ResultShape = mkTorus.Solid(); -#endif - this->Shape.setValue(ResultShape); + TopoShape shape; + this->Shape.setValue(shape.makeTorus(Radius1.getValue(), + Radius2.getValue(), + Angle1.getValue(), + Angle2.getValue(), + Angle3.getValue())); } catch (Standard_Failure& e) { - return new App::DocumentObjectExecReturn(e.GetMessageString()); } diff --git a/src/Mod/Part/App/PrimitiveFeature.h b/src/Mod/Part/App/PrimitiveFeature.h index 287db148ac..6dadd664b2 100644 --- a/src/Mod/Part/App/PrimitiveFeature.h +++ b/src/Mod/Part/App/PrimitiveFeature.h @@ -340,7 +340,7 @@ public: Spiral(); App::PropertyLength Growth; - App::PropertyLength Rotations; + App::PropertyQuantityConstraint Rotations; App::PropertyLength Radius; /** @name methods override feature */ diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index 0e523ef3a6..3246fbe4b5 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -78,6 +78,7 @@ # include # include # include +# include # include # include # include @@ -144,6 +145,7 @@ # include # include # include +# include # include # include # include @@ -169,6 +171,8 @@ # include # include # include +# include +# include #if OCC_VERSION_HEX < 0x070300 # include @@ -989,7 +993,8 @@ void TopoShape::exportStep(const char *filename) const throw Base::FileException("Error in transferring STEP"); APIHeaderSection_MakeHeader makeHeader(aWriter.Model()); - makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)(encodeFilename(filename).c_str()))); + // https://forum.freecadweb.org/viewtopic.php?f=8&t=52967 + //makeHeader.SetName(new TCollection_HAsciiString((Standard_CString)(encodeFilename(filename).c_str()))); makeHeader.SetAuthorValue (1, new TCollection_HAsciiString("FreeCAD")); makeHeader.SetOrganizationValue (1, new TCollection_HAsciiString("FreeCAD")); makeHeader.SetOriginatingSystem(new TCollection_HAsciiString("FreeCAD")); @@ -2287,6 +2292,48 @@ TopoDS_Shape TopoShape::makeSweep(const TopoDS_Shape& profile, double tol, int f return mkBuilder.Face(); } +TopoDS_Shape TopoShape::makeTorus(Standard_Real radius1, Standard_Real radius2, + Standard_Real angle1, Standard_Real angle2, + Standard_Real angle3, Standard_Boolean isSolid) const +{ + // https://forum.freecadweb.org/viewtopic.php?f=3&t=1445 + // https://forum.freecadweb.org/viewtopic.php?f=3&t=52719 +#if 1 + // Build a torus + gp_Circ circle; + circle.SetRadius(radius2); + gp_Pnt pos(radius1,0,0); + gp_Dir dir(0,1,0); + circle.SetAxis(gp_Ax1(pos, dir)); + + BRepBuilderAPI_MakeEdge mkEdge(circle, Base::toRadians(angle1), + Base::toRadians(angle2)); + BRepBuilderAPI_MakeWire mkWire; + mkWire.Add(mkEdge.Edge()); + + if ((angle1 > -180.0 || angle2 < 180.0) && isSolid) { + BRepBuilderAPI_MakeVertex mkVertex(pos); + BRepBuilderAPI_MakeEdge mkEdge1(mkVertex.Vertex(), mkEdge.Vertex1()); + BRepBuilderAPI_MakeEdge mkEdge2(mkVertex.Vertex(), mkEdge.Vertex2()); + mkWire.Add(mkEdge1.Edge()); + mkWire.Add(mkEdge2.Edge()); + } + + BRepBuilderAPI_MakeFace mkFace(mkWire.Wire()); + BRepPrimAPI_MakeRevol mkRevol(mkFace.Face(), gp_Ax1(gp_Pnt(0,0,0), gp_Dir(0,0,1)), + Base::toRadians(angle3), Standard_True); + return mkRevol.Shape(); +#else + (void)isSolid; + BRepPrimAPI_MakeTorus mkTorus(radius1, + radius2, + Base::toRadians(angle1), + Base::toRadians(angle2), + Base::toRadians(angle3)); + return mkTorus.Solid(); +#endif +} + TopoDS_Shape TopoShape::makeHelix(Standard_Real pitch, Standard_Real height, Standard_Real radius, Standard_Real angle, Standard_Boolean leftHanded, @@ -4116,26 +4163,13 @@ bool TopoShape::findPlane(gp_Pln &pln, double tol) const { if(_Shape.IsNull()) return false; TopoDS_Shape shape = _Shape; - TopExp_Explorer exp(_Shape,TopAbs_FACE); + TopExp_Explorer exp(_Shape,TopAbs_EDGE); if(exp.More()) { - auto face = exp.Current(); + TopoDS_Shape edge = exp.Current(); exp.Next(); - if(!exp.More()) { - BRepAdaptor_Surface adapt(TopoDS::Face(face)); - if(adapt.GetType() != GeomAbs_Plane) - return false; - pln = adapt.Plane(); - return true; - } - }else{ - TopExp_Explorer exp(_Shape,TopAbs_EDGE); - if(exp.More()) { - TopoDS_Shape edge = exp.Current(); - exp.Next(); - if(!exp.More()) { - // To deal with OCCT bug of wrong edge transformation - shape = BRepBuilderAPI_Copy(edge).Shape(); - } + if (!exp.More()) { + // To deal with OCCT bug of wrong edge transformation + shape = BRepBuilderAPI_Copy(_Shape).Shape(); } } try { @@ -4143,6 +4177,24 @@ bool TopoShape::findPlane(gp_Pln &pln, double tol) const { if (!finder.Found()) return false; pln = GeomAdaptor_Surface(finder.Surface()).Plane(); + + // To make the returned plane normal more stable, if the shape has any + // face, use the normal of the first face. + TopExp_Explorer exp(shape, TopAbs_FACE); + if(exp.More()) { + BRepAdaptor_Surface adapt(TopoDS::Face(exp.Current())); + double u = adapt.FirstUParameter() + + (adapt.LastUParameter() - adapt.FirstUParameter())/2.; + double v = adapt.FirstVParameter() + + (adapt.LastVParameter() - adapt.FirstVParameter())/2.; + BRepLProp_SLProps prop(adapt,u,v,2,Precision::Confusion()); + if(prop.IsNormalDefined()) { + gp_Pnt pnt; gp_Vec vec; + // handles the orientation state of the shape + BRepGProp_Face(TopoDS::Face(exp.Current())).Normal(u,v,pnt,vec); + pln = gp_Pln(pnt, gp_Dir(vec)); + } + } return true; }catch (Standard_Failure &e) { // For some reason the above BRepBuilderAPI_Copy failed to copy diff --git a/src/Mod/Part/App/TopoShape.h b/src/Mod/Part/App/TopoShape.h index 650eebecf4..96ccb0df9f 100644 --- a/src/Mod/Part/App/TopoShape.h +++ b/src/Mod/Part/App/TopoShape.h @@ -247,6 +247,9 @@ public: TopoDS_Shape revolve(const gp_Ax1&, double d, Standard_Boolean isSolid=Standard_False) const; TopoDS_Shape makeSweep(const TopoDS_Shape& profile, double, int) const; TopoDS_Shape makeTube(double radius, double tol, int cont, int maxdeg, int maxsegm) const; + TopoDS_Shape makeTorus(Standard_Real radius1, Standard_Real radius2, + Standard_Real angle1, Standard_Real angle2, Standard_Real angle3, + Standard_Boolean isSolid=Standard_True) const; TopoDS_Shape makeHelix(Standard_Real pitch, Standard_Real height, Standard_Real radius, Standard_Real angle=0, Standard_Boolean left=Standard_False, Standard_Boolean style=Standard_False) const; diff --git a/src/Mod/Part/App/TopoShapePyImp.cpp b/src/Mod/Part/App/TopoShapePyImp.cpp index 8d40f2577b..4d5f69718b 100644 --- a/src/Mod/Part/App/TopoShapePyImp.cpp +++ b/src/Mod/Part/App/TopoShapePyImp.cpp @@ -2524,16 +2524,16 @@ PyObject* TopoShapePy::proximity(PyObject *args) PyObject* ps2; Standard_Real tol = Precision::Confusion(); if (!PyArg_ParseTuple(args, "O!|d",&(TopoShapePy::Type), &ps2, &tol)) - return 0; + return nullptr; const TopoDS_Shape& s1 = getTopoShapePtr()->getShape(); const TopoDS_Shape& s2 = static_cast(ps2)->getTopoShapePtr()->getShape(); if (s1.IsNull()) { PyErr_SetString(PyExc_ValueError, "proximity: Shape object is invalid"); - return 0; + return nullptr; } if (s2.IsNull()) { PyErr_SetString(PyExc_ValueError, "proximity: Shape parameter is invalid"); - return 0; + return nullptr; } BRepExtrema_ShapeProximity proximity; @@ -2551,7 +2551,7 @@ PyObject* TopoShapePy::proximity(PyObject *args) BRep_Tool::Triangulation(TopoDS::Face(xp.Current()), aLoc); if (aTriangulation.IsNull()) { PyErr_SetString(PartExceptionOCCError, "BRepExtrema_ShapeProximity not done, call 'tessellate' beforehand"); - return 0; + return nullptr; } } @@ -2561,7 +2561,7 @@ PyObject* TopoShapePy::proximity(PyObject *args) BRep_Tool::Triangulation(TopoDS::Face(xp.Current()), aLoc); if (aTriangulation.IsNull()) { PyErr_SetString(PartExceptionOCCError, "BRepExtrema_ShapeProximity not done, call 'tessellate' beforehand"); - return 0; + return nullptr; } } @@ -2572,7 +2572,7 @@ PyObject* TopoShapePy::proximity(PyObject *args) BRep_Tool::Polygon3D(TopoDS::Edge(xp.Current()), aLoc); if (aPoly3D.IsNull()) { PyErr_SetString(PartExceptionOCCError, "BRepExtrema_ShapeProximity not done, call 'tessellate' beforehand"); - return 0; + return nullptr; } } @@ -2582,37 +2582,29 @@ PyObject* TopoShapePy::proximity(PyObject *args) BRep_Tool::Polygon3D(TopoDS::Edge(xp.Current()), aLoc); if (aPoly3D.IsNull()) { PyErr_SetString(PartExceptionOCCError, "BRepExtrema_ShapeProximity not done, call 'tessellate' beforehand"); - return 0; + return nullptr; } } // another problem must have occurred PyErr_SetString(PartExceptionOCCError, "BRepExtrema_ShapeProximity not done"); - return 0; + return nullptr; } - //PyObject* overlappss1 = PyList_New(0); - //PyObject* overlappss2 = PyList_New(0); - PyObject* overlappssindex1 = PyList_New(0); - PyObject* overlappssindex2 = PyList_New(0); + + Py::List overlappssindex1; + Py::List overlappssindex2; for (BRepExtrema_OverlappedSubShapes::Iterator anIt1 (proximity.OverlapSubShapes1()); anIt1.More(); anIt1.Next()) { - //PyList_Append(overlappss1, new TopoShapeFacePy(new TopoShape(proximity.GetSubShape1 (anIt1.Key())))); -#if PY_MAJOR_VERSION >= 3 - PyList_Append(overlappssindex1,PyLong_FromLong(anIt1.Key()+1)); -#else - PyList_Append(overlappssindex1,PyInt_FromLong(anIt1.Key()+1)); -#endif + overlappssindex1.append(Py::Long(anIt1.Key() + 1)); } for (BRepExtrema_OverlappedSubShapes::Iterator anIt2 (proximity.OverlapSubShapes2()); anIt2.More(); anIt2.Next()) { - //PyList_Append(overlappss2, new TopoShapeFacePy(new TopoShape(proximity.GetSubShape2 (anIt2.Key())))); -#if PY_MAJOR_VERSION >= 3 - PyList_Append(overlappssindex2,PyLong_FromLong(anIt2.Key()+1)); -#else - PyList_Append(overlappssindex2,PyInt_FromLong(anIt2.Key()+1)); -#endif + overlappssindex2.append(Py::Long(anIt2.Key() + 1)); } - //return Py_BuildValue("OO", overlappss1, overlappss2); //subshapes - return Py_BuildValue("OO", overlappssindex1, overlappssindex2); //face indexes + + Py::Tuple tuple(2); + tuple.setItem(0, overlappssindex1); + tuple.setItem(1, overlappssindex2); + return Py::new_reference_to(tuple); //face indexes #else (void)args; PyErr_SetString(PyExc_NotImplementedError, "proximity requires OCCT >= 6.8.1"); diff --git a/src/Mod/Part/App/TopologyPy.cpp b/src/Mod/Part/App/TopologyPy.cpp index bfd1af59f5..8fc0351617 100644 --- a/src/Mod/Part/App/TopologyPy.cpp +++ b/src/Mod/Part/App/TopologyPy.cpp @@ -1,6 +1,5 @@ - /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -20,7 +19,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2002 * ***************************************************************************/ diff --git a/src/Mod/Part/App/TopologyPy.h b/src/Mod/Part/App/TopologyPy.h index 030a22c633..051095e7cf 100644 --- a/src/Mod/Part/App/TopologyPy.h +++ b/src/Mod/Part/App/TopologyPy.h @@ -1,5 +1,5 @@ /*************************************************************************** - * (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -10,16 +10,15 @@ * for detail see the LICENCE text file. * * * * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * 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 FreeCAD; if not, write to the Free Software * + * License along with FreeCAD; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * * USA * * * - * Juergen Riegel 2002 * ***************************************************************************/ diff --git a/src/Mod/Part/BasicShapes/CommandShapes.py b/src/Mod/Part/BasicShapes/CommandShapes.py new file mode 100644 index 0000000000..1b2601f2f5 --- /dev/null +++ b/src/Mod/Part/BasicShapes/CommandShapes.py @@ -0,0 +1,63 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2020 Werner Mayer * +# * * +# * 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 * +# * * +# *************************************************************************** + +__title__ = "BasicShapes.CommandShapes" +__author__ = "Werner Mayer" +__url__ = "http://www.freecadweb.org" +__doc__ = "Basic shapes" + + +import FreeCAD +from FreeCAD import Qt +import FreeCADGui + +import Part +from . import Shapes +from . import ViewProviderShapes +import math +import sys + + + +class CommandTube: + """Command for creating Tube.""" + def GetResources(self): + return {'MenuText': Qt.QT_TRANSLATE_NOOP("Part_Tube","Create tube"), + 'Accel': "", + 'CmdType': "AlterDoc:Alter3DView:AlterSelection", + 'Pixmap': "Part_Tube", + 'ToolTip': Qt.QT_TRANSLATE_NOOP("Part_Tube","Creates a tube")} + + def Activated(self): + text = FreeCAD.Qt.translate("QObject", "Create tube") + FreeCAD.ActiveDocument.openTransaction(text) + tube = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Tube") + Shapes.TubeFeature(tube) + vp = ViewProviderShapes.ViewProviderTube(tube.ViewObject) + FreeCAD.ActiveDocument.recompute() + vp.startDefaultEditMode(tube.ViewObject) + + def IsActive(self): + return not FreeCAD.ActiveDocument is None + + +FreeCADGui.addCommand('Part_Tube', CommandTube()) diff --git a/src/Mod/Part/BasicShapes/Shapes.py b/src/Mod/Part/BasicShapes/Shapes.py index 0607ead9ae..a8140b6074 100644 --- a/src/Mod/Part/BasicShapes/Shapes.py +++ b/src/Mod/Part/BasicShapes/Shapes.py @@ -26,11 +26,7 @@ __url__ = "http://www.freecadweb.org" __doc__ = "Basic shapes" -import FreeCAD -from FreeCAD import Qt import Part -import math -import sys def makeTube(outerRadius, innerRadius, height): outer_cylinder = Part.makeCylinder(outerRadius, height) @@ -53,52 +49,3 @@ class TubeFeature: if fp.InnerRadius >= fp.OuterRadius: raise ValueError("Inner radius must be smaller than outer radius") fp.Shape = makeTube(fp.OuterRadius, fp.InnerRadius, fp.Height) - - -# Only if GUI is running -if FreeCAD.GuiUp: - import FreeCADGui - - - class ViewProviderTube: - def __init__(self, obj): - ''' Set this object to the proxy object of the actual view provider ''' - obj.Proxy = self - - def attach(self, obj): - ''' Setup the scene sub-graph of the view provider, this method is mandatory ''' - return - - def getIcon(self): - return ":/icons/parametric/Part_Tube_Parametric.svg" - - def __getstate__(self): - return None - - def __setstate__(self,state): - return None - - - class CommandTube: - """Command for creating Tube.""" - def GetResources(self): - return {'MenuText': Qt.QT_TRANSLATE_NOOP("Part_Tube","Create tube"), - 'Accel': "", - 'CmdType': "AlterDoc:Alter3DView:AlterSelection", - 'Pixmap': "Part_Tube", - 'ToolTip': Qt.QT_TRANSLATE_NOOP("Part_Tube","Creates a tube")} - - def Activated(self): - FreeCAD.ActiveDocument.openTransaction("Create tube") - tube = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Tube") - TubeFeature(tube) - ViewProviderTube(tube.ViewObject) - FreeCAD.ActiveDocument.commitTransaction() - FreeCAD.ActiveDocument.recompute() - - def IsActive(self): - return not FreeCAD.ActiveDocument is None - - - FreeCADGui.addCommand('Part_Tube', CommandTube()) - diff --git a/src/Mod/Part/BasicShapes/TaskTube.ui b/src/Mod/Part/BasicShapes/TaskTube.ui new file mode 100644 index 0000000000..94495b1fa1 --- /dev/null +++ b/src/Mod/Part/BasicShapes/TaskTube.ui @@ -0,0 +1,136 @@ + + + PartGui::TaskTube + + + + 0 + 0 + 367 + 125 + + + + Tube + + + true + + + + + + Parameter + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 6 + + + + + false + + + mm + + + 0.000000000000000 + + + 2.000000000000000 + + + + + + + false + + + mm + + + 0.000000000000000 + + + 10.000000000000000 + + + + + + + Height: + + + + + + + Outer radius + + + + + + + Inner radius + + + + + + + false + + + mm + + + 0.000000000000000 + + + 4.000000000000000 + + + + + + + + + + + + + + Gui::QuantitySpinBox + QWidget +
      Gui/QuantitySpinBox.h
      +
      +
      + + tubeOuterRadius + tubeInnerRadius + tubeHeight + + + + + +
      diff --git a/src/Mod/Part/BasicShapes/ViewProviderShapes.py b/src/Mod/Part/BasicShapes/ViewProviderShapes.py new file mode 100644 index 0000000000..2933eca80a --- /dev/null +++ b/src/Mod/Part/BasicShapes/ViewProviderShapes.py @@ -0,0 +1,128 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2020 Werner Mayer * +# * * +# * 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 * +# * * +# *************************************************************************** + +__title__ = "BasicShapes.ViewProviderShapes" +__author__ = "Werner Mayer" +__url__ = "http://www.freecadweb.org" +__doc__ = "Basic shapes" + + +import os +import FreeCAD +import FreeCADGui + +from PySide import QtGui + +class ViewProviderTube: + def __init__(self, obj): + ''' Set this object to the proxy object of the actual view provider ''' + obj.Proxy = self + obj.addExtension("PartGui::ViewProviderAttachExtensionPython", self) + obj.setIgnoreOverlayIcon(True, "PartGui::ViewProviderAttachExtensionPython") + + def attach(self, obj): + ''' Setup the scene sub-graph of the view provider, this method is mandatory ''' + return + + def setupContextMenu(self, viewObject, menu): + action = menu.addAction(FreeCAD.Qt.translate("QObject", "Edit %1").replace("%1", viewObject.Object.Label)) + action.triggered.connect(lambda: self.startDefaultEditMode(viewObject)) + return False + + def startDefaultEditMode(self, viewObject): + document = viewObject.Document.Document + if not document.HasPendingTransaction: + text = FreeCAD.Qt.translate("QObject", "Edit %1").replace("%1", viewObject.Object.Label) + document.openTransaction(text) + viewObject.Document.setEdit(viewObject.Object, 0) + + def setEdit(self, viewObject, mode): + if mode == 0: + FreeCADGui.Control.showDialog(TaskTubeUI(viewObject)) + return True + + def unsetEdit(self, viewObject, mode): + if mode == 0: + FreeCADGui.Control.closeDialog() + return True + + def getIcon(self): + return ":/icons/parametric/Part_Tube_Parametric.svg" + + def __getstate__(self): + return None + + def __setstate__(self,state): + return None + + +class TaskTubeUI: + """A default task panel for editing tube objects.""" + + def __init__(self, viewObject): + self.viewObject = viewObject + ui_file = os.path.join(os.path.dirname(__file__), "TaskTube.ui") + ui = FreeCADGui.UiLoader() + self.form = ui.load(ui_file) + + object = self.viewObject.Object + self.form.tubeOuterRadius.setProperty("rawValue", object.OuterRadius.Value) + self.form.tubeInnerRadius.setProperty("rawValue", object.InnerRadius.Value) + self.form.tubeHeight.setProperty("rawValue", object.Height.Value) + + self.form.tubeOuterRadius.valueChanged.connect(lambda x: self.onChangeOuterRadius(x)) + self.form.tubeInnerRadius.valueChanged.connect(lambda x: self.onChangeInnerRadius(x)) + self.form.tubeHeight.valueChanged.connect(lambda x: self.onChangeHeight(x)) + + def onChangeOuterRadius(self, radius): + object = self.viewObject.Object + object.OuterRadius = radius + object.recompute() + + def onChangeInnerRadius(self, radius): + object = self.viewObject.Object + object.InnerRadius = radius + object.recompute() + + def onChangeHeight(self, height): + object = self.viewObject.Object + object.Height = height + object.recompute() + + def accept(self): + object = self.viewObject.Object + if not object.isValid(): + QtGui.QMessageBox.warning(None, "Error", object.getStatusString()) + return False + document = self.viewObject.Document.Document + document.commitTransaction() + document.recompute() + self.viewObject.Document.resetEdit() + return True + + def reject(self): + guidocument = self.viewObject.Document + document = guidocument.Document + document.abortTransaction() + document.recompute() + guidocument.resetEdit() + return True diff --git a/src/Mod/Part/CMakeLists.txt b/src/Mod/Part/CMakeLists.txt index 3e69359e06..e231288c21 100644 --- a/src/Mod/Part/CMakeLists.txt +++ b/src/Mod/Part/CMakeLists.txt @@ -31,6 +31,14 @@ set(BasicShapes_Scripts BasicShapes/Shapes.py ) +if(BUILD_GUI) + list (APPEND BasicShapes_Scripts + BasicShapes/CommandShapes.py + BasicShapes/ViewProviderShapes.py + BasicShapes/TaskTube.ui + ) +endif(BUILD_GUI) + set(BOPTools_Scripts BOPTools/__init__.py BOPTools/GeneralFuseResult.py diff --git a/src/Mod/Part/Gui/AppPartGui.cpp b/src/Mod/Part/Gui/AppPartGui.cpp index b16805d213..e6c62db27b 100644 --- a/src/Mod/Part/Gui/AppPartGui.cpp +++ b/src/Mod/Part/Gui/AppPartGui.cpp @@ -38,6 +38,7 @@ #include "ViewProvider.h" #include "ViewProviderExt.h" #include "ViewProviderPython.h" +#include "ViewProviderPrimitive.h" #include "ViewProviderBox.h" #include "ViewProviderCurveNet.h" #include "ViewProviderImport.h" @@ -155,6 +156,8 @@ PyMOD_INIT_FUNC(PartGui) PartGui::SoFCControlPoints ::initClass(); PartGui::ViewProviderAttachExtension ::init(); PartGui::ViewProviderAttachExtensionPython ::init(); + PartGui::ViewProviderSplineExtension ::init(); + PartGui::ViewProviderSplineExtensionPython ::init(); PartGui::ViewProviderPartExt ::init(); PartGui::ViewProviderPart ::init(); PartGui::ViewProviderPrimitive ::init(); diff --git a/src/Mod/Part/Gui/CMakeLists.txt b/src/Mod/Part/Gui/CMakeLists.txt index cdebc8a913..29dba58cfe 100644 --- a/src/Mod/Part/Gui/CMakeLists.txt +++ b/src/Mod/Part/Gui/CMakeLists.txt @@ -233,6 +233,8 @@ SET(PartGui_SRCS ViewProviderBoolean.h ViewProviderRuledSurface.cpp ViewProviderRuledSurface.h + ViewProviderPrimitive.cpp + ViewProviderPrimitive.h Workbench.cpp Workbench.h TaskFaceColors.cpp diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index 7ce1d1c472..ffc469b5c9 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -144,7 +144,7 @@ CmdPartBox2::CmdPartBox2() void CmdPartBox2::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Part Box Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part Box Create")); doCommand(Doc,"from FreeCAD import Base"); doCommand(Doc,"import Part"); doCommand(Doc,"__fb__ = App.ActiveDocument.addObject(\"Part::Box\",\"PartBox\")"); @@ -185,7 +185,7 @@ CmdPartBox3::CmdPartBox3() void CmdPartBox3::activated(int iMsg) { Q_UNUSED(iMsg); - openCommand("Part Box Create"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part Box Create")); doCommand(Doc,"from FreeCAD import Base"); doCommand(Doc,"import Part"); doCommand(Doc,"__fb__ = App.ActiveDocument.addObject(\"Part::Box\",\"PartBox\")"); @@ -304,7 +304,7 @@ void CmdPartCut::activated(int iMsg) std::string FeatName = getUniqueObjectName("Cut"); - openCommand("Part Cut"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part Cut")); doCommand(Doc,"App.activeDocument().addObject(\"Part::Cut\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Base = App.activeDocument().%s",FeatName.c_str(),Sel[0].getFeatName()); doCommand(Doc,"App.activeDocument().%s.Tool = App.activeDocument().%s",FeatName.c_str(),Sel[1].getFeatName()); @@ -405,7 +405,7 @@ void CmdPartCommon::activated(int iMsg) } str << "]"; - openCommand("Common"); + openCommand(QT_TRANSLATE_NOOP("Command", "Common")); doCommand(Doc,"App.activeDocument().addObject(\"Part::MultiCommon\",\"%s\")",FeatName.c_str()); runCommand(Doc,str.str().c_str()); @@ -505,7 +505,7 @@ void CmdPartFuse::activated(int iMsg) } str << "]"; - openCommand("Fusion"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fusion")); doCommand(Doc,"App.activeDocument().addObject(\"Part::MultiFuse\",\"%s\")",FeatName.c_str()); runCommand(Doc,str.str().c_str()); @@ -918,7 +918,7 @@ void CmdPartCompound::activated(int iMsg) } str << "]"; - openCommand("Compound"); + openCommand(QT_TRANSLATE_NOOP("Command", "Compound")); doCommand(Doc,"App.activeDocument().addObject(\"Part::Compound\",\"%s\")",FeatName.c_str()); runCommand(Doc,str.str().c_str()); updateActive(); @@ -963,7 +963,7 @@ void CmdPartSection::activated(int iMsg) std::string BaseName = Sel[0].getFeatName(); std::string ToolName = Sel[1].getFeatName(); - openCommand("Section"); + openCommand(QT_TRANSLATE_NOOP("Command", "Section")); doCommand(Doc,"App.activeDocument().addObject(\"Part::Section\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Base = App.activeDocument().%s",FeatName.c_str(),BaseName.c_str()); doCommand(Doc,"App.activeDocument().%s.Tool = App.activeDocument().%s",FeatName.c_str(),ToolName.c_str()); @@ -1014,7 +1014,7 @@ void CmdPartImport::activated(int iMsg) if (!pDoc) return; // no document fn = Base::Tools::escapeEncodeFilename(fn); - openCommand("Import Part"); + openCommand(QT_TRANSLATE_NOOP("Command", "Import Part")); if (select == filter[1] || select == filter[3]) { doCommand(Doc, "import ImportGui"); @@ -1120,7 +1120,7 @@ void CmdPartImportCurveNet::activated(int iMsg) QString fn = Gui::FileDialog::getOpenFileName(Gui::getMainWindow(), QString(), QString(), filter.join(QLatin1String(";;"))); if (!fn.isEmpty()) { QFileInfo fi; fi.setFile(fn); - openCommand("Part Import Curve Net"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part Import Curve Net")); doCommand(Doc,"f = App.activeDocument().addObject(\"Part::CurveNet\",\"%s\")", (const char*)fi.baseName().toLatin1()); doCommand(Doc,"f.FileName = \"%s\"",(const char*)fn.toLatin1()); commitCommand(); @@ -1236,7 +1236,7 @@ void CmdPartReverseShape::activated(int iMsg) Q_UNUSED(iMsg); std::vector objs = Gui::Selection().getObjectsOfType (Part::Feature::getClassTypeId()); - openCommand("Reverse"); + openCommand(QT_TRANSLATE_NOOP("Command", "Reverse")); for (std::vector::iterator it = objs.begin(); it != objs.end(); ++it) { const TopoDS_Shape& shape = Part::Feature::getShape(*it); if (!shape.IsNull()) { @@ -1358,7 +1358,7 @@ void CmdPartMakeFace::activated(int iMsg) auto sketches = Gui::Selection().getObjectsOfType(App::DocumentObject::getClassTypeId(),0,3); if(sketches.empty()) return; - openCommand("Make face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make face")); try { App::DocumentT doc(sketches.front()->getDocument()); @@ -1652,7 +1652,7 @@ void CmdPartOffset::activated(int iMsg) App::DocumentObject* shape = shapes.front(); std::string offset = getUniqueObjectName("Offset"); - openCommand("Make Offset"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make Offset")); doCommand(Doc,"App.ActiveDocument.addObject(\"Part::Offset\",\"%s\")",offset.c_str()); doCommand(Doc,"App.ActiveDocument.%s.Source = App.ActiveDocument.%s" ,offset.c_str(), shape->getNameInDocument()); doCommand(Doc,"App.ActiveDocument.%s.Value = 1.0",offset.c_str()); @@ -1704,7 +1704,7 @@ void CmdPartOffset2D::activated(int iMsg) App::DocumentObject* shape = shapes.front(); std::string offset = getUniqueObjectName("Offset2D"); - openCommand("Make 2D Offset"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make 2D Offset")); doCommand(Doc,"App.ActiveDocument.addObject(\"Part::Offset2D\",\"%s\")",offset.c_str()); doCommand(Doc,"App.ActiveDocument.%s.Source = App.ActiveDocument.%s" ,offset.c_str(), shape->getNameInDocument()); doCommand(Doc,"App.ActiveDocument.%s.Value = 1.0",offset.c_str()); @@ -1872,7 +1872,7 @@ void CmdPartThickness::activated(int iMsg) std::string thick = getUniqueObjectName("Thickness"); - openCommand("Make Thickness"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make Thickness")); doCommand(Doc,"App.ActiveDocument.addObject(\"Part::Thickness\",\"%s\")",thick.c_str()); doCommand(Doc,"App.ActiveDocument.%s.Faces = %s" ,thick.c_str(), selection.c_str()); doCommand(Doc,"App.ActiveDocument.%s.Value = 1.0",thick.c_str()); @@ -2097,7 +2097,7 @@ void CmdPartRuledSurface::activated(int iMsg) return; } - openCommand("Create ruled surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create ruled surface")); doCommand(Doc, "FreeCAD.ActiveDocument.addObject('Part::RuledSurface', 'Ruled Surface')"); doCommand(Doc, "FreeCAD.ActiveDocument.ActiveObject.Curve1=(FreeCAD.ActiveDocument.%s,['%s'])" ,obj1.c_str(), link1.c_str()); diff --git a/src/Mod/Part/Gui/CommandSimple.cpp b/src/Mod/Part/Gui/CommandSimple.cpp index a9ed616530..36f84098fa 100644 --- a/src/Mod/Part/Gui/CommandSimple.cpp +++ b/src/Mod/Part/Gui/CommandSimple.cpp @@ -69,7 +69,7 @@ void CmdPartSimpleCylinder::activated(int iMsg) if (dlg.exec()== QDialog::Accepted) { Base::Vector3d dir = dlg.getDirection(); Base::Vector3d pos = dlg.getPosition(); - openCommand("Create Part Cylinder"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Part Cylinder")); doCommand(Doc,"from FreeCAD import Base"); doCommand(Doc,"import Part"); doCommand(Doc,"App.ActiveDocument.addObject(\"Part::Feature\",\"Cylinder\")" @@ -126,7 +126,7 @@ void CmdPartShapeFromMesh::activated(int iMsg) bool ok; double tol = QInputDialog::getDouble(Gui::getMainWindow(), QObject::tr("Sewing Tolerance"), - QObject::tr("Enter tolerance for sewing shape:"), 0.1, minimal_tolerance, 10.0, decimals, &ok); + QObject::tr("Enter tolerance for sewing shape:"), 0.1, minimal_tolerance, 10.0, decimals, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; Base::Type meshid = Base::Type::fromName("Mesh::Feature"); @@ -134,7 +134,7 @@ void CmdPartShapeFromMesh::activated(int iMsg) meshes = Gui::Selection().getObjectsOfType(meshid); Gui::WaitCursor wc; std::vector::iterator it; - openCommand("Convert mesh"); + openCommand(QT_TRANSLATE_NOOP("Command", "Convert mesh")); for (it = meshes.begin(); it != meshes.end(); ++it) { App::Document* doc = (*it)->getDocument(); std::string mesh = (*it)->getNameInDocument(); @@ -193,7 +193,7 @@ void CmdPartPointsFromMesh::activated(int iMsg) meshes = Gui::Selection().getObjectsOfType(meshid); Gui::WaitCursor wc; std::vector::iterator it; - openCommand("Points from mesh"); + openCommand(QT_TRANSLATE_NOOP("Command", "Points from mesh")); for (it = meshes.begin(); it != meshes.end(); ++it) { App::Document* doc = (*it)->getDocument(); @@ -370,7 +370,7 @@ void CmdPartRefineShape::activated(int iMsg) Gui::WaitCursor wc; Base::Type partid = Base::Type::fromName("Part::Feature"); std::vector objs = Gui::Selection().getObjectsOfType(partid); - openCommand("Refine shape"); + openCommand(QT_TRANSLATE_NOOP("Command", "Refine shape")); std::for_each(objs.begin(), objs.end(), [](App::DocumentObject* obj) { try { doCommand(Doc,"App.ActiveDocument.addObject('Part::Refine','%s').Source=" @@ -427,7 +427,7 @@ void CmdPartDefeaturing::activated(int iMsg) Gui::WaitCursor wc; Base::Type partid = Base::Type::fromName("Part::Feature"); std::vector objs = Gui::Selection().getSelectionEx(0, partid); - openCommand("Defeaturing"); + openCommand(QT_TRANSLATE_NOOP("Command", "Defeaturing")); for (std::vector::iterator it = objs.begin(); it != objs.end(); ++it) { try { std::string shape; diff --git a/src/Mod/Part/Gui/DlgPrimitives.cpp b/src/Mod/Part/Gui/DlgPrimitives.cpp index 5b720aed44..e701003925 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.cpp +++ b/src/Mod/Part/Gui/DlgPrimitives.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #endif @@ -56,6 +57,8 @@ #include #include "DlgPrimitives.h" +#include "ui_DlgPrimitives.h" +#include "ui_Location.h" using namespace PartGui; @@ -187,108 +190,109 @@ private: DlgPrimitives::DlgPrimitives(QWidget* parent, Part::Primitive* feature) : QWidget(parent) + , ui(new Ui_DlgPrimitives) , featurePtr(feature) { - ui.setupUi(this); + ui->setupUi(this); Gui::Command::doCommand(Gui::Command::Doc, "from FreeCAD import Base"); Gui::Command::doCommand(Gui::Command::Doc, "import Part,PartGui"); // set limits // // plane - ui.planeLength->setRange(0, INT_MAX); - ui.planeWidth->setRange(0, INT_MAX); + ui->planeLength->setRange(0, INT_MAX); + ui->planeWidth->setRange(0, INT_MAX); // box - ui.boxLength->setRange(0, INT_MAX); - ui.boxWidth->setRange(0, INT_MAX); - ui.boxHeight->setRange(0, INT_MAX); + ui->boxLength->setRange(0, INT_MAX); + ui->boxWidth->setRange(0, INT_MAX); + ui->boxHeight->setRange(0, INT_MAX); // cylinder - ui.cylinderRadius->setRange(0, INT_MAX); - ui.cylinderHeight->setRange(0, INT_MAX); - ui.cylinderAngle->setRange(0, 360); + ui->cylinderRadius->setRange(0, INT_MAX); + ui->cylinderHeight->setRange(0, INT_MAX); + ui->cylinderAngle->setRange(0, 360); // cone - ui.coneRadius1->setRange(0, INT_MAX); - ui.coneRadius2->setRange(0, INT_MAX); - ui.coneHeight->setRange(0, INT_MAX); - ui.coneAngle->setRange(0, 360); + ui->coneRadius1->setRange(0, INT_MAX); + ui->coneRadius2->setRange(0, INT_MAX); + ui->coneHeight->setRange(0, INT_MAX); + ui->coneAngle->setRange(0, 360); // sphere - ui.sphereRadius->setRange(0, INT_MAX); - ui.sphereAngle1->setRange(-90, 90); - ui.sphereAngle2->setRange(-90, 90); - ui.sphereAngle3->setRange(0, 360); + ui->sphereRadius->setRange(0, INT_MAX); + ui->sphereAngle1->setRange(-90, 90); + ui->sphereAngle2->setRange(-90, 90); + ui->sphereAngle3->setRange(0, 360); // ellipsoid - ui.ellipsoidRadius1->setRange(0, INT_MAX); - ui.ellipsoidRadius2->setRange(0, INT_MAX); - ui.ellipsoidRadius3->setRange(0, INT_MAX); - ui.ellipsoidAngle1->setRange(-90, 90); - ui.ellipsoidAngle2->setRange(-90, 90); - ui.ellipsoidAngle3->setRange(0, 360); + ui->ellipsoidRadius1->setRange(0, INT_MAX); + ui->ellipsoidRadius2->setRange(0, INT_MAX); + ui->ellipsoidRadius3->setRange(0, INT_MAX); + ui->ellipsoidAngle1->setRange(-90, 90); + ui->ellipsoidAngle2->setRange(-90, 90); + ui->ellipsoidAngle3->setRange(0, 360); // torus - ui.torusRadius1->setRange(0, INT_MAX); - ui.torusRadius2->setRange(0, INT_MAX); - ui.torusAngle1->setRange(-180, 180); - ui.torusAngle2->setRange(-180, 180); - ui.torusAngle3->setRange(0, 360); + ui->torusRadius1->setRange(0, INT_MAX); + ui->torusRadius2->setRange(0, INT_MAX); + ui->torusAngle1->setRange(-180, 180); + ui->torusAngle2->setRange(-180, 180); + ui->torusAngle3->setRange(0, 360); // prism - ui.prismCircumradius->setRange(0, INT_MAX); - ui.prismHeight->setRange(0, INT_MAX); + ui->prismCircumradius->setRange(0, INT_MAX); + ui->prismHeight->setRange(0, INT_MAX); // wedge - ui.wedgeXmin->setMinimum(INT_MIN); - ui.wedgeXmin->setMaximum(INT_MAX); - ui.wedgeYmin->setMinimum(INT_MIN); - ui.wedgeYmin->setMaximum(INT_MAX); - ui.wedgeZmin->setMinimum(INT_MIN); - ui.wedgeZmin->setMaximum(INT_MAX); - ui.wedgeX2min->setMinimum(INT_MIN); - ui.wedgeX2min->setMaximum(INT_MAX); - ui.wedgeZ2min->setMinimum(INT_MIN); - ui.wedgeZ2min->setMaximum(INT_MAX); - ui.wedgeXmax->setMinimum(INT_MIN); - ui.wedgeXmax->setMaximum(INT_MAX); - ui.wedgeYmax->setMinimum(INT_MIN); - ui.wedgeYmax->setMaximum(INT_MAX); - ui.wedgeZmax->setMinimum(INT_MIN); - ui.wedgeZmax->setMaximum(INT_MAX); - ui.wedgeX2max->setMinimum(INT_MIN); - ui.wedgeX2max->setMaximum(INT_MAX); - ui.wedgeZ2max->setMinimum(INT_MIN); - ui.wedgeZ2max->setMaximum(INT_MAX); + ui->wedgeXmin->setMinimum(INT_MIN); + ui->wedgeXmin->setMaximum(INT_MAX); + ui->wedgeYmin->setMinimum(INT_MIN); + ui->wedgeYmin->setMaximum(INT_MAX); + ui->wedgeZmin->setMinimum(INT_MIN); + ui->wedgeZmin->setMaximum(INT_MAX); + ui->wedgeX2min->setMinimum(INT_MIN); + ui->wedgeX2min->setMaximum(INT_MAX); + ui->wedgeZ2min->setMinimum(INT_MIN); + ui->wedgeZ2min->setMaximum(INT_MAX); + ui->wedgeXmax->setMinimum(INT_MIN); + ui->wedgeXmax->setMaximum(INT_MAX); + ui->wedgeYmax->setMinimum(INT_MIN); + ui->wedgeYmax->setMaximum(INT_MAX); + ui->wedgeZmax->setMinimum(INT_MIN); + ui->wedgeZmax->setMaximum(INT_MAX); + ui->wedgeX2max->setMinimum(INT_MIN); + ui->wedgeX2max->setMaximum(INT_MAX); + ui->wedgeZ2max->setMinimum(INT_MIN); + ui->wedgeZ2max->setMaximum(INT_MAX); // helix - ui.helixPitch->setRange(0, INT_MAX); - ui.helixHeight->setRange(0, INT_MAX); - ui.helixRadius->setRange(0, INT_MAX); - ui.helixAngle->setRange(0, 90); + ui->helixPitch->setRange(0, INT_MAX); + ui->helixHeight->setRange(0, INT_MAX); + ui->helixRadius->setRange(0, INT_MAX); + ui->helixAngle->setRange(0, 90); // circle - ui.circleRadius->setRange(0, INT_MAX); - ui.circleAngle0->setRange(0, 360); - ui.circleAngle1->setRange(0, 360); + ui->circleRadius->setRange(0, INT_MAX); + ui->circleAngle0->setRange(0, 360); + ui->circleAngle1->setRange(0, 360); // ellipse - ui.ellipseMajorRadius->setRange(0, INT_MAX); - ui.ellipseMinorRadius->setRange(0, INT_MAX); - ui.ellipseAngle0->setRange(0, 360); - ui.ellipseAngle1->setRange(0, 360); + ui->ellipseMajorRadius->setRange(0, INT_MAX); + ui->ellipseMinorRadius->setRange(0, INT_MAX); + ui->ellipseAngle0->setRange(0, 360); + ui->ellipseAngle1->setRange(0, 360); // vertex - ui.vertexX->setMaximum(INT_MAX); - ui.vertexY->setMaximum(INT_MAX); - ui.vertexZ->setMaximum(INT_MAX); - ui.vertexX->setMinimum(INT_MIN); - ui.vertexY->setMinimum(INT_MIN); - ui.vertexZ->setMinimum(INT_MIN); + ui->vertexX->setMaximum(INT_MAX); + ui->vertexY->setMaximum(INT_MAX); + ui->vertexZ->setMaximum(INT_MAX); + ui->vertexX->setMinimum(INT_MIN); + ui->vertexY->setMinimum(INT_MIN); + ui->vertexZ->setMinimum(INT_MIN); // line - ui.edgeX1->setMaximum(INT_MAX); - ui.edgeX1->setMinimum(INT_MIN); - ui.edgeY1->setMaximum(INT_MAX); - ui.edgeY1->setMinimum(INT_MIN); - ui.edgeZ1->setMaximum(INT_MAX); - ui.edgeZ1->setMinimum(INT_MIN); - ui.edgeX2->setMaximum(INT_MAX); - ui.edgeX2->setMinimum(INT_MIN); - ui.edgeY2->setMaximum(INT_MAX); - ui.edgeY2->setMinimum(INT_MIN); - ui.edgeZ2->setMaximum(INT_MAX); - ui.edgeZ2->setMinimum(INT_MIN); + ui->edgeX1->setMaximum(INT_MAX); + ui->edgeX1->setMinimum(INT_MIN); + ui->edgeY1->setMaximum(INT_MAX); + ui->edgeY1->setMinimum(INT_MIN); + ui->edgeZ1->setMaximum(INT_MAX); + ui->edgeZ1->setMinimum(INT_MIN); + ui->edgeX2->setMaximum(INT_MAX); + ui->edgeX2->setMinimum(INT_MIN); + ui->edgeY2->setMaximum(INT_MAX); + ui->edgeY2->setMinimum(INT_MIN); + ui->edgeZ2->setMaximum(INT_MAX); + ui->edgeZ2->setMinimum(INT_MIN); // RegularPolygon - ui.regularPolygonCircumradius->setRange(0, INT_MAX); + ui->regularPolygonCircumradius->setRange(0, INT_MAX); // fill the dialog with data if the primitives already exists if (feature) { @@ -313,129 +317,245 @@ DlgPrimitives::DlgPrimitives(QWidget* parent, Part::Primitive* feature) Base::Type type = feature->getTypeId(); int index = std::distance(types.begin(), std::find(types.begin(), types.end(), type)); - ui.comboBox1->setCurrentIndex(index); - ui.widgetStack2->setCurrentIndex(index); + ui->PrimitiveTypeCB->setCurrentIndex(index); + ui->widgetStack2->setCurrentIndex(index); // if existing, the primitive type can not be changed by the user - ui.comboBox1->setDisabled(feature != nullptr); + ui->PrimitiveTypeCB->setDisabled(feature != nullptr); // ToDo: connect signal if there is a preview of primitives available // read values from the properties if (type == Part::Plane::getClassTypeId()) { Part::Plane* plane = static_cast(feature); - ui.planeLength->setValue(plane->Length.getQuantityValue()); - ui.planeWidth->setValue(plane->Width.getQuantityValue()); + ui->planeLength->setValue(plane->Length.getQuantityValue()); + ui->planeWidth->setValue(plane->Width.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangePlane(QWidget*))); + connectSignalMapper(ui->planeLength, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->planeWidth, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Box::getClassTypeId()) { Part::Box* box = static_cast(feature); - ui.boxLength->setValue(box->Length.getQuantityValue()); - ui.boxWidth->setValue(box->Width.getQuantityValue()); - ui.boxHeight->setValue(box->Height.getQuantityValue()); + ui->boxLength->setValue(box->Length.getQuantityValue()); + ui->boxWidth->setValue(box->Width.getQuantityValue()); + ui->boxHeight->setValue(box->Height.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeBox(QWidget*))); + connectSignalMapper(ui->boxLength, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->boxWidth, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->boxHeight, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Cylinder::getClassTypeId()) { Part::Cylinder* cyl = static_cast(feature); - ui.cylinderRadius->setValue(cyl->Radius.getQuantityValue()); - ui.cylinderHeight->setValue(cyl->Height.getQuantityValue()); - ui.cylinderAngle->setValue(cyl->Angle.getQuantityValue()); + ui->cylinderRadius->setValue(cyl->Radius.getQuantityValue()); + ui->cylinderHeight->setValue(cyl->Height.getQuantityValue()); + ui->cylinderAngle->setValue(cyl->Angle.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeCylinder(QWidget*))); + connectSignalMapper(ui->cylinderRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->cylinderHeight, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->cylinderAngle, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Cone::getClassTypeId()) { Part::Cone* cone = static_cast(feature); - ui.coneRadius1->setValue(cone->Radius1.getQuantityValue()); - ui.coneRadius2->setValue(cone->Radius2.getQuantityValue()); - ui.coneHeight->setValue(cone->Height.getQuantityValue()); - ui.coneAngle->setValue(cone->Angle.getQuantityValue()); + ui->coneRadius1->setValue(cone->Radius1.getQuantityValue()); + ui->coneRadius2->setValue(cone->Radius2.getQuantityValue()); + ui->coneHeight->setValue(cone->Height.getQuantityValue()); + ui->coneAngle->setValue(cone->Angle.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeCone(QWidget*))); + connectSignalMapper(ui->coneRadius1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->coneRadius2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->coneHeight, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->coneAngle, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Sphere::getClassTypeId()) { Part::Sphere* sphere = static_cast(feature); - ui.sphereRadius->setValue(sphere->Radius.getQuantityValue()); - ui.sphereAngle1->setValue(sphere->Angle1.getQuantityValue()); - ui.sphereAngle2->setValue(sphere->Angle2.getQuantityValue()); - ui.sphereAngle3->setValue(sphere->Angle3.getQuantityValue()); + ui->sphereRadius->setValue(sphere->Radius.getQuantityValue()); + ui->sphereAngle1->setValue(sphere->Angle1.getQuantityValue()); + ui->sphereAngle2->setValue(sphere->Angle2.getQuantityValue()); + ui->sphereAngle3->setValue(sphere->Angle3.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeSphere(QWidget*))); + connectSignalMapper(ui->sphereRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->sphereAngle1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->sphereAngle2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->sphereAngle3, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Ellipsoid::getClassTypeId()) { Part::Ellipsoid* ell = static_cast(feature); - ui.ellipsoidRadius1->setValue(ell->Radius1.getQuantityValue()); - ui.ellipsoidRadius2->setValue(ell->Radius2.getQuantityValue()); - ui.ellipsoidRadius3->setValue(ell->Radius3.getQuantityValue()); - ui.ellipsoidAngle1->setValue(ell->Angle1.getQuantityValue()); - ui.ellipsoidAngle2->setValue(ell->Angle2.getQuantityValue()); - ui.ellipsoidAngle3->setValue(ell->Angle3.getQuantityValue()); + ui->ellipsoidRadius1->setValue(ell->Radius1.getQuantityValue()); + ui->ellipsoidRadius2->setValue(ell->Radius2.getQuantityValue()); + ui->ellipsoidRadius3->setValue(ell->Radius3.getQuantityValue()); + ui->ellipsoidAngle1->setValue(ell->Angle1.getQuantityValue()); + ui->ellipsoidAngle2->setValue(ell->Angle2.getQuantityValue()); + ui->ellipsoidAngle3->setValue(ell->Angle3.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeEllipsoid(QWidget*))); + connectSignalMapper(ui->ellipsoidRadius1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipsoidRadius2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipsoidRadius3, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipsoidAngle1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipsoidAngle2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipsoidAngle3, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Torus::getClassTypeId()) { Part::Torus* torus = static_cast(feature); - ui.torusRadius1->setValue(torus->Radius1.getQuantityValue()); - ui.torusRadius2->setValue(torus->Radius2.getQuantityValue()); - ui.torusAngle1->setValue(torus->Angle1.getQuantityValue()); - ui.torusAngle2->setValue(torus->Angle2.getQuantityValue()); - ui.torusAngle3->setValue(torus->Angle3.getQuantityValue()); + ui->torusRadius1->setValue(torus->Radius1.getQuantityValue()); + ui->torusRadius2->setValue(torus->Radius2.getQuantityValue()); + ui->torusAngle1->setValue(torus->Angle1.getQuantityValue()); + ui->torusAngle2->setValue(torus->Angle2.getQuantityValue()); + ui->torusAngle3->setValue(torus->Angle3.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeTorus(QWidget*))); + connectSignalMapper(ui->torusRadius1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->torusRadius2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->torusAngle1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->torusAngle2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->torusAngle3, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Prism::getClassTypeId()) { Part::Prism* prism = static_cast(feature); - ui.prismPolygon->setValue(prism->Polygon.getValue()); - ui.prismCircumradius->setValue(prism->Circumradius.getQuantityValue()); - ui.prismHeight->setValue(prism->Height.getQuantityValue()); - ui.prismXSkew->setValue(prism->FirstAngle.getQuantityValue()); - ui.prismYSkew->setValue(prism->SecondAngle.getQuantityValue()); + ui->prismPolygon->setValue(prism->Polygon.getValue()); + ui->prismCircumradius->setValue(prism->Circumradius.getQuantityValue()); + ui->prismHeight->setValue(prism->Height.getQuantityValue()); + ui->prismXSkew->setValue(prism->FirstAngle.getQuantityValue()); + ui->prismYSkew->setValue(prism->SecondAngle.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangePrism(QWidget*))); + connectSignalMapper(ui->prismPolygon, SIGNAL(valueChanged(int)), mapper); + connectSignalMapper(ui->prismCircumradius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->prismHeight, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->prismXSkew, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->prismYSkew, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Wedge::getClassTypeId()) { Part::Wedge* wedge = static_cast(feature); - ui.wedgeXmin->setValue(wedge->Xmin.getQuantityValue()); - ui.wedgeYmin->setValue(wedge->Ymin.getQuantityValue()); - ui.wedgeZmin->setValue(wedge->Zmin.getQuantityValue()); - ui.wedgeX2min->setValue(wedge->X2min.getQuantityValue()); - ui.wedgeZ2min->setValue(wedge->Z2min.getQuantityValue()); - ui.wedgeXmax->setValue(wedge->Xmax.getQuantityValue()); - ui.wedgeYmax->setValue(wedge->Ymax.getQuantityValue()); - ui.wedgeZmax->setValue(wedge->Zmax.getQuantityValue()); - ui.wedgeX2max->setValue(wedge->X2max.getQuantityValue()); - ui.wedgeZ2max->setValue(wedge->Z2max.getQuantityValue()); + ui->wedgeXmin->setValue(wedge->Xmin.getQuantityValue()); + ui->wedgeYmin->setValue(wedge->Ymin.getQuantityValue()); + ui->wedgeZmin->setValue(wedge->Zmin.getQuantityValue()); + ui->wedgeX2min->setValue(wedge->X2min.getQuantityValue()); + ui->wedgeZ2min->setValue(wedge->Z2min.getQuantityValue()); + ui->wedgeXmax->setValue(wedge->Xmax.getQuantityValue()); + ui->wedgeYmax->setValue(wedge->Ymax.getQuantityValue()); + ui->wedgeZmax->setValue(wedge->Zmax.getQuantityValue()); + ui->wedgeX2max->setValue(wedge->X2max.getQuantityValue()); + ui->wedgeZ2max->setValue(wedge->Z2max.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeWedge(QWidget*))); + connectSignalMapper(ui->wedgeXmin, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeYmin, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeZmin, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeX2min, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeZ2min, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeXmax, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeYmax, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeZmax, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeX2max, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->wedgeZ2max, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Helix::getClassTypeId()) { Part::Helix* helix = static_cast(feature); - ui.helixPitch->setValue(helix->Pitch.getQuantityValue()); - ui.helixHeight->setValue(helix->Height.getQuantityValue()); - ui.helixRadius->setValue(helix->Radius.getQuantityValue()); - ui.helixAngle->setValue(helix->Angle.getQuantityValue()); - ui.helixLocalCS->setCurrentIndex(helix->LocalCoord.getValue()); + ui->helixPitch->setValue(helix->Pitch.getQuantityValue()); + ui->helixHeight->setValue(helix->Height.getQuantityValue()); + ui->helixRadius->setValue(helix->Radius.getQuantityValue()); + ui->helixAngle->setValue(helix->Angle.getQuantityValue()); + ui->helixLocalCS->setCurrentIndex(helix->LocalCoord.getValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeHelix(QWidget*))); + connectSignalMapper(ui->helixPitch, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->helixHeight, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->helixRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->helixAngle, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->helixLocalCS, SIGNAL(currentIndexChanged(int)), mapper); } else if (type == Part::Spiral::getClassTypeId()) { Part::Spiral* spiral = static_cast(feature); - ui.spiralGrowth->setValue(spiral->Growth.getQuantityValue()); - ui.spiralRotation->setValue(spiral->Rotations.getQuantityValue().getValue()); - ui.spiralRadius->setValue(spiral->Radius.getQuantityValue()); + ui->spiralGrowth->setValue(spiral->Growth.getQuantityValue()); + ui->spiralRotation->setValue(spiral->Rotations.getQuantityValue().getValue()); + ui->spiralRadius->setValue(spiral->Radius.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeSpiral(QWidget*))); + connectSignalMapper(ui->spiralGrowth, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->spiralRotation, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->spiralRadius, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Circle::getClassTypeId()) { Part::Circle* circle = static_cast(feature); - ui.circleRadius->setValue(circle->Radius.getQuantityValue()); - ui.circleAngle0->setValue(circle->Angle0.getQuantityValue()); - ui.circleAngle1->setValue(circle->Angle1.getQuantityValue()); + ui->circleRadius->setValue(circle->Radius.getQuantityValue()); + ui->circleAngle0->setValue(circle->Angle0.getQuantityValue()); + ui->circleAngle1->setValue(circle->Angle1.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeCircle(QWidget*))); + connectSignalMapper(ui->circleRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->circleAngle0, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->circleAngle1, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Ellipse::getClassTypeId()) { Part::Ellipse* ell = static_cast(feature); - ui.ellipseMajorRadius->setValue(ell->MajorRadius.getQuantityValue()); - ui.ellipseMinorRadius->setValue(ell->MinorRadius.getQuantityValue()); - ui.ellipseAngle0->setValue(ell->Angle0.getQuantityValue()); - ui.ellipseAngle1->setValue(ell->Angle1.getQuantityValue()); + ui->ellipseMajorRadius->setValue(ell->MajorRadius.getQuantityValue()); + ui->ellipseMinorRadius->setValue(ell->MinorRadius.getQuantityValue()); + ui->ellipseAngle0->setValue(ell->Angle0.getQuantityValue()); + ui->ellipseAngle1->setValue(ell->Angle1.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeEllipse(QWidget*))); + connectSignalMapper(ui->ellipseMajorRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipseMinorRadius, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipseAngle0, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->ellipseAngle1, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Vertex::getClassTypeId()) { Part::Vertex* v = static_cast(feature); - ui.vertexX->setValue(v->X.getQuantityValue()); - ui.vertexY->setValue(v->Y.getQuantityValue()); - ui.vertexZ->setValue(v->Z.getQuantityValue()); + ui->vertexX->setValue(v->X.getQuantityValue()); + ui->vertexY->setValue(v->Y.getQuantityValue()); + ui->vertexZ->setValue(v->Z.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeVertex(QWidget*))); + connectSignalMapper(ui->vertexX, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->vertexY, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->vertexZ, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::Line::getClassTypeId()) { Part::Line* line = static_cast(feature); - ui.edgeX1->setValue(line->X1.getQuantityValue()); - ui.edgeY1->setValue(line->Y1.getQuantityValue()); - ui.edgeZ1->setValue(line->Z1.getQuantityValue()); - ui.edgeX2->setValue(line->X2.getQuantityValue()); - ui.edgeY2->setValue(line->Y2.getQuantityValue()); - ui.edgeZ2->setValue(line->Z2.getQuantityValue()); + ui->edgeX1->setValue(line->X1.getQuantityValue()); + ui->edgeY1->setValue(line->Y1.getQuantityValue()); + ui->edgeZ1->setValue(line->Z1.getQuantityValue()); + ui->edgeX2->setValue(line->X2.getQuantityValue()); + ui->edgeY2->setValue(line->Y2.getQuantityValue()); + ui->edgeZ2->setValue(line->Z2.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeLine(QWidget*))); + connectSignalMapper(ui->edgeX1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->edgeY1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->edgeZ1, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->edgeX2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->edgeY2, SIGNAL(valueChanged(double)), mapper); + connectSignalMapper(ui->edgeZ2, SIGNAL(valueChanged(double)), mapper); } else if (type == Part::RegularPolygon::getClassTypeId()) { Part::RegularPolygon* poly = static_cast(feature); - ui.regularPolygonPolygon->setValue(poly->Polygon.getValue()); - ui.regularPolygonCircumradius->setValue(poly->Circumradius.getQuantityValue()); + ui->regularPolygonPolygon->setValue(poly->Polygon.getValue()); + ui->regularPolygonCircumradius->setValue(poly->Circumradius.getQuantityValue()); + + QSignalMapper* mapper = new QSignalMapper(this); + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangeRegularPolygon(QWidget*))); + connectSignalMapper(ui->regularPolygonPolygon, SIGNAL(valueChanged(int)), mapper); + connectSignalMapper(ui->regularPolygonCircumradius, SIGNAL(valueChanged(double)), mapper); } } } @@ -447,6 +567,12 @@ DlgPrimitives::~DlgPrimitives() { } +void DlgPrimitives::connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper) +{ + connect(sender, signal, mapper, SLOT(map())); + mapper->setMapping(sender, sender); +} + void DlgPrimitives::pickCallback(void * ud, SoEventCallback * n) { const SoMouseButtonEvent * mbe = static_cast(n->getEvent()); @@ -503,7 +629,7 @@ void DlgPrimitives::executeCallback(Picker* p) viewer->removeEventCallback(SoMouseButtonEvent::getClassTypeId(), pickCallback, p); if (ret == 0) { - p->createPrimitive(this, ui.comboBox1->currentText(), doc); + p->createPrimitive(this, ui->PrimitiveTypeCB->currentText(), doc); } } } @@ -522,10 +648,10 @@ void DlgPrimitives::createPrimitive(const QString& placement) App::Document* doc = App::GetApplication().getActiveDocument(); if (!doc) { QMessageBox::warning(this, tr("Create %1") - .arg(ui.comboBox1->currentText()), tr("No active document")); + .arg(ui->PrimitiveTypeCB->currentText()), tr("No active document")); return; } - if (ui.comboBox1->currentIndex() == 0) { // plane + if (ui->PrimitiveTypeCB->currentIndex() == 0) { // plane name = QString::fromLatin1(doc->getUniqueObjectName("Plane").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Plane\",\"%1\")\n" @@ -534,12 +660,12 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%4\n" "App.ActiveDocument.%1.Label='%5'\n") .arg(name) - .arg(ui.planeLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.planeWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->planeLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->planeWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Plane")); } - else if (ui.comboBox1->currentIndex() == 1) { // box + else if (ui->PrimitiveTypeCB->currentIndex() == 1) { // box name = QString::fromLatin1(doc->getUniqueObjectName("Box").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Box\",\"%1\")\n" @@ -549,13 +675,13 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(name) - .arg(ui.boxLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.boxWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.boxHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Box")); } - else if (ui.comboBox1->currentIndex() == 2) { // cylinder + else if (ui->PrimitiveTypeCB->currentIndex() == 2) { // cylinder name = QString::fromLatin1(doc->getUniqueObjectName("Cylinder").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Cylinder\",\"%1\")\n" @@ -565,13 +691,13 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(name) - .arg(ui.cylinderRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.cylinderHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.cylinderAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Cylinder")); } - else if (ui.comboBox1->currentIndex() == 3) { // cone + else if (ui->PrimitiveTypeCB->currentIndex() == 3) { // cone name = QString::fromLatin1(doc->getUniqueObjectName("Cone").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Cone\",\"%1\")\n" @@ -582,14 +708,14 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(name) - .arg(ui.coneRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Cone")); } - else if (ui.comboBox1->currentIndex() == 4) { // sphere + else if (ui->PrimitiveTypeCB->currentIndex() == 4) { // sphere name = QString::fromLatin1(doc->getUniqueObjectName("Sphere").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Sphere\",\"%1\")\n" @@ -600,14 +726,14 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(name) - .arg(ui.sphereRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Sphere")); } - else if (ui.comboBox1->currentIndex() == 5) { // ellipsoid + else if (ui->PrimitiveTypeCB->currentIndex() == 5) { // ellipsoid name = QString::fromLatin1(doc->getUniqueObjectName("Ellipsoid").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Ellipsoid\",\"%1\")\n" @@ -620,16 +746,16 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%8\n" "App.ActiveDocument.%1.Label='%9'\n") .arg(name) - .arg(ui.ellipsoidRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidRadius3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Ellipsoid")); } - else if (ui.comboBox1->currentIndex() == 6) { // torus + else if (ui->PrimitiveTypeCB->currentIndex() == 6) { // torus name = QString::fromLatin1(doc->getUniqueObjectName("Torus").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Torus\",\"%1\")\n" @@ -641,15 +767,15 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(name) - .arg(ui.torusRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Torus")); } - else if (ui.comboBox1->currentIndex() == 7) { // prism + else if (ui->PrimitiveTypeCB->currentIndex() == 7) { // prism name = QString::fromLatin1(doc->getUniqueObjectName("Prism").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Prism\",\"%1\")\n" @@ -661,15 +787,15 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(name) - .arg(ui.prismPolygon->value()) - .arg(ui.prismCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.prismHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.prismXSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.prismYSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->prismPolygon->value()) + .arg(ui->prismCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->prismHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->prismXSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->prismYSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Prism")); } - else if (ui.comboBox1->currentIndex() == 8) { // wedge + else if (ui->PrimitiveTypeCB->currentIndex() == 8) { // wedge name = QString::fromLatin1(doc->getUniqueObjectName("Wedge").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Wedge\",\"%1\")\n" @@ -686,20 +812,20 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%12\n" "App.ActiveDocument.%1.Label='%13'\n") .arg(name) - .arg(ui.wedgeXmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeYmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeX2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZ2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeXmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeYmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeX2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZ2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeXmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeYmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeX2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZ2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeXmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeYmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeX2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZ2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Wedge")); } - else if (ui.comboBox1->currentIndex() == 9) { // helix + else if (ui->PrimitiveTypeCB->currentIndex() == 9) { // helix name = QString::fromLatin1(doc->getUniqueObjectName("Helix").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Helix\",\"%1\")\n" @@ -712,15 +838,15 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(name) - .arg(ui.helixPitch->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.helixHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.helixRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.helixAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.helixLocalCS->currentIndex()) + .arg(ui->helixPitch->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->helixHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->helixRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->helixAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->helixLocalCS->currentIndex()) .arg(placement) .arg(tr("Helix")); } - else if (ui.comboBox1->currentIndex() == 10) { // spiral + else if (ui->PrimitiveTypeCB->currentIndex() == 10) { // spiral name = QString::fromLatin1(doc->getUniqueObjectName("Spiral").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Spiral\",\"%1\")\n" @@ -730,13 +856,13 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(name) - .arg(ui.spiralGrowth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.spiralRotation->value(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.spiralRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralGrowth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralRotation->value(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Spiral")); } - else if (ui.comboBox1->currentIndex() == 11) { // circle + else if (ui->PrimitiveTypeCB->currentIndex() == 11) { // circle name = QString::fromLatin1(doc->getUniqueObjectName("Circle").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Circle\",\"%1\")\n" @@ -746,13 +872,13 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(name) - .arg(ui.circleRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.circleAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.circleAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Circle")); } - else if (ui.comboBox1->currentIndex() == 12) { // ellipse + else if (ui->PrimitiveTypeCB->currentIndex() == 12) { // ellipse name = QString::fromLatin1(doc->getUniqueObjectName("Ellipse").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Ellipse\",\"%1\")\n" @@ -763,14 +889,14 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(name) - .arg(ui.ellipseMajorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseMinorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseMajorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseMinorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Ellipse")); } - else if (ui.comboBox1->currentIndex() == 13) { // vertex + else if (ui->PrimitiveTypeCB->currentIndex() == 13) { // vertex name = QString::fromLatin1(doc->getUniqueObjectName("Vertex").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Vertex\",\"%1\")\n" @@ -780,13 +906,13 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(name) - .arg(ui.vertexX->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.vertexY->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.vertexZ->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexX->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexY->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexZ->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Vertex")); } - else if (ui.comboBox1->currentIndex() == 14) { // line + else if (ui->PrimitiveTypeCB->currentIndex() == 14) { // line name = QString::fromLatin1(doc->getUniqueObjectName("Line").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::Line\",\"%1\")\n" @@ -799,16 +925,16 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%8\n" "App.ActiveDocument.%1.Label='%9'\n") .arg(name) - .arg(ui.edgeX1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeY1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeZ1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeX2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeY2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeZ2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeX1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeY1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeZ1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeX2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeY2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeZ2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Line")); } - else if (ui.comboBox1->currentIndex() == 15) { // RegularPolygon + else if (ui->PrimitiveTypeCB->currentIndex() == 15) { // RegularPolygon name = QString::fromLatin1(doc->getUniqueObjectName("RegularPolygon").c_str()); cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"Part::RegularPolygon\",\"%1\")\n" @@ -817,14 +943,14 @@ void DlgPrimitives::createPrimitive(const QString& placement) "App.ActiveDocument.%1.Placement=%4\n" "App.ActiveDocument.%1.Label='%5'\n") .arg(name) - .arg(ui.regularPolygonPolygon->value()) - .arg(ui.regularPolygonCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->regularPolygonPolygon->value()) + .arg(ui->regularPolygonCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement) .arg(tr("Regular polygon")); } // Execute the Python block - QString prim = tr("Create %1").arg(ui.comboBox1->currentText()); + QString prim = tr("Create %1").arg(ui->PrimitiveTypeCB->currentText()); Gui::Application::Instance->activeDocument()->openCommand(prim.toUtf8()); Gui::Command::runCommand(Gui::Command::Doc, cmd.toUtf8()); Gui::Application::Instance->activeDocument()->commitCommand(); @@ -833,7 +959,7 @@ void DlgPrimitives::createPrimitive(const QString& placement) } catch (const Base::PyException& e) { QMessageBox::warning(this, tr("Create %1") - .arg(ui.comboBox1->currentText()), QString::fromLatin1(e.what())); + .arg(ui->PrimitiveTypeCB->currentText()), QString::fromLatin1(e.what())); } } @@ -848,9 +974,6 @@ void DlgPrimitives::accept(const QString& placement) .arg(QString::fromLatin1(doc->getName())) .arg(QString::fromLatin1(featurePtr->getNameInDocument())); - // the combox with the primitive type is fixed - // therefore by reading its state we know what we need to change - // read values from the properties if (type == Part::Plane::getClassTypeId()) { command = QString::fromLatin1( @@ -858,8 +981,8 @@ void DlgPrimitives::accept(const QString& placement) "%1.Width=%3\n" "%1.Placement=%4\n") .arg(objectName) - .arg(ui.planeLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.planeWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->planeLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->planeWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Box::getClassTypeId()) { @@ -869,9 +992,9 @@ void DlgPrimitives::accept(const QString& placement) "%1.Height=%4\n" "%1.Placement=%5\n") .arg(objectName) - .arg(ui.boxLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.boxWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.boxHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxLength->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxWidth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->boxHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Cylinder::getClassTypeId()) { @@ -881,9 +1004,9 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle=%4\n" "%1.Placement=%5\n") .arg(objectName) - .arg(ui.cylinderRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.cylinderHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.cylinderAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->cylinderAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Cone::getClassTypeId()) { @@ -894,10 +1017,10 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle=%5\n" "%1.Placement=%6\n") .arg(objectName) - .arg(ui.coneRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.coneAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->coneAngle->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Sphere::getClassTypeId()) { @@ -908,10 +1031,10 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle3=%5\n" "%1.Placement=%6\n") .arg(objectName) - .arg(ui.sphereRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.sphereAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->sphereAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Ellipsoid::getClassTypeId()) { @@ -924,12 +1047,12 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle3=%7\n" "%1.Placement=%8\n") .arg(objectName) - .arg(ui.ellipsoidRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidRadius3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipsoidAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidRadius3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipsoidAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Torus::getClassTypeId()) { @@ -941,11 +1064,11 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle3=%6\n" "%1.Placement=%7\n") .arg(objectName) - .arg(ui.torusRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.torusAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusRadius1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusRadius2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->torusAngle3->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Prism::getClassTypeId()) { @@ -957,11 +1080,11 @@ void DlgPrimitives::accept(const QString& placement) "%1.SecondAngle=%6\n" "%1.Placement=%7\n") .arg(objectName) - .arg(ui.prismPolygon->value()) - .arg(ui.prismCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.prismHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.prismXSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.prismYSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->prismPolygon->value()) + .arg(ui->prismCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->prismHeight->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->prismXSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->prismYSkew->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Wedge::getClassTypeId()) { @@ -978,16 +1101,16 @@ void DlgPrimitives::accept(const QString& placement) "%1.Z2max=%11\n" "%1.Placement=%12\n") .arg(objectName) - .arg(ui.wedgeXmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeYmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeX2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZ2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeXmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeYmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeX2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.wedgeZ2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeXmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeYmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZmin->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeX2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZ2min->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeXmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeYmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZmax->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeX2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->wedgeZ2max->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Helix::getClassTypeId()) { @@ -999,11 +1122,11 @@ void DlgPrimitives::accept(const QString& placement) "%1.LocalCoord=%6\n" "%1.Placement=%7\n") .arg(objectName) - .arg(ui.helixPitch->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.helixHeight->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.helixRadius->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.helixAngle->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) - .arg(ui.helixLocalCS->currentIndex()) + .arg(ui->helixPitch->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->helixHeight->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->helixRadius->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->helixAngle->value().getValue(), 0, 'f', Base::UnitsApi::getDecimals()) + .arg(ui->helixLocalCS->currentIndex()) .arg(placement); } else if (type == Part::Spiral::getClassTypeId()) { @@ -1013,9 +1136,9 @@ void DlgPrimitives::accept(const QString& placement) "%1.Radius=%4\n" "%1.Placement=%5\n") .arg(objectName) - .arg(ui.spiralGrowth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.spiralRotation->value(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.spiralRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralGrowth->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralRotation->value(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->spiralRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Circle::getClassTypeId()) { @@ -1025,9 +1148,9 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle1=%4\n" "%1.Placement=%5\n") .arg(objectName) - .arg(ui.circleRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.circleAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.circleAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->circleAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Ellipse::getClassTypeId()) { @@ -1038,10 +1161,10 @@ void DlgPrimitives::accept(const QString& placement) "%1.Angle1=%5\n" "%1.Placement=%6\n") .arg(objectName) - .arg(ui.ellipseMajorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseMinorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.ellipseAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseMajorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseMinorRadius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseAngle0->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->ellipseAngle1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Vertex::getClassTypeId()) { @@ -1051,9 +1174,9 @@ void DlgPrimitives::accept(const QString& placement) "%1.Z=%4\n" "%1.Placement=%5\n") .arg(objectName) - .arg(ui.vertexX->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.vertexY->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.vertexZ->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexX->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexY->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->vertexZ->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::Line::getClassTypeId()) { @@ -1066,12 +1189,12 @@ void DlgPrimitives::accept(const QString& placement) "%1.Z2=%7\n" "%1.Placement=%8\n") .arg(objectName) - .arg(ui.edgeX1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeY1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeZ1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeX2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeY2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) - .arg(ui.edgeZ2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeX1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeY1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeZ1->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeX2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeY2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->edgeZ2->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } else if (type == Part::RegularPolygon::getClassTypeId()) { @@ -1080,35 +1203,390 @@ void DlgPrimitives::accept(const QString& placement) "%1.Circumradius=%3\n" "%1.Placement=%4\n") .arg(objectName) - .arg(ui.regularPolygonPolygon->value()) - .arg(ui.regularPolygonCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) + .arg(ui->regularPolygonPolygon->value()) + .arg(ui->regularPolygonCircumradius->value().getValue(),0,'f',Base::UnitsApi::getDecimals()) .arg(placement); } - // store command for undo - QString cmd = tr("Edit %1").arg(QString::fromUtf8(featurePtr->Label.getValue())); - doc->openTransaction(cmd.toLatin1()); - // execute command + // execute command, a transaction is already opened Gui::Command::runCommand(Gui::Command::App, command.toLatin1()); doc->recompute(); // commit undo command doc->commitTransaction(); } +void DlgPrimitives::reject() +{ + if (featurePtr.expired()) + return; + App::Document* doc = featurePtr->getDocument(); + doc->abortTransaction(); +} + +void DlgPrimitives::onChangePlane(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Plane* plane = featurePtr.get(); + if (widget == ui->planeLength) { + plane->Length.setValue(ui->planeLength->value().getValue()); + } + else if (widget == ui->planeWidth) { + plane->Width.setValue(ui->planeWidth->value().getValue()); + } + + plane->recomputeFeature(); +} + +void DlgPrimitives::onChangeBox(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Box* box = featurePtr.get(); + if (widget == ui->boxLength) { + box->Length.setValue(ui->boxLength->value().getValue()); + } + else if (widget == ui->boxWidth) { + box->Width.setValue(ui->boxWidth->value().getValue()); + } + else if (widget == ui->boxHeight) { + box->Height.setValue(ui->boxHeight->value().getValue()); + } + + box->recomputeFeature(); +} + +void DlgPrimitives::onChangeCylinder(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Cylinder* cyl = featurePtr.get(); + if (widget == ui->cylinderRadius) { + cyl->Radius.setValue(ui->cylinderRadius->value().getValue()); + } + else if (widget == ui->cylinderHeight) { + cyl->Height.setValue(ui->cylinderHeight->value().getValue()); + } + else if (widget == ui->cylinderAngle) { + cyl->Angle.setValue(ui->cylinderAngle->value().getValue()); + } + + cyl->recomputeFeature(); +} + +void DlgPrimitives::onChangeCone(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Cone* cone = featurePtr.get(); + if (widget == ui->coneRadius1) { + cone->Radius1.setValue(ui->coneRadius1->value().getValue()); + } + else if (widget == ui->coneRadius2) { + cone->Radius2.setValue(ui->coneRadius2->value().getValue()); + } + else if (widget == ui->coneHeight) { + cone->Height.setValue(ui->coneHeight->value().getValue()); + } + else if (widget == ui->coneAngle) { + cone->Angle.setValue(ui->coneAngle->value().getValue()); + } + + cone->recomputeFeature(); +} + +void DlgPrimitives::onChangeSphere(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Sphere* sphere = featurePtr.get(); + if (widget == ui->sphereRadius) { + sphere->Radius.setValue(ui->sphereRadius->value().getValue()); + } + else if (widget == ui->sphereAngle1) { + sphere->Angle1.setValue(ui->sphereAngle1->value().getValue()); + } + else if (widget == ui->sphereAngle2) { + sphere->Angle2.setValue(ui->sphereAngle2->value().getValue()); + } + else if (widget == ui->sphereAngle3) { + sphere->Angle3.setValue(ui->sphereAngle3->value().getValue()); + } + + sphere->recomputeFeature(); +} + +void DlgPrimitives::onChangeEllipsoid(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Ellipsoid* ell = featurePtr.get(); + if (widget == ui->ellipsoidRadius1) { + ell->Radius1.setValue(ui->ellipsoidRadius1->value().getValue()); + } + else if (widget == ui->ellipsoidRadius2) { + ell->Radius2.setValue(ui->ellipsoidRadius2->value().getValue()); + } + else if (widget == ui->ellipsoidRadius3) { + ell->Radius3.setValue(ui->ellipsoidRadius3->value().getValue()); + } + else if (widget == ui->ellipsoidAngle1) { + ell->Angle1.setValue(ui->ellipsoidAngle1->value().getValue()); + } + else if (widget == ui->ellipsoidAngle2) { + ell->Angle2.setValue(ui->ellipsoidAngle2->value().getValue()); + } + else if (widget == ui->ellipsoidAngle3) { + ell->Angle3.setValue(ui->ellipsoidAngle3->value().getValue()); + } + + ell->recomputeFeature(); +} + +void DlgPrimitives::onChangeTorus(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Torus* torus = featurePtr.get(); + if (widget == ui->torusRadius1) { + torus->Radius1.setValue(ui->torusRadius1->value().getValue()); + } + else if (widget == ui->torusRadius2) { + torus->Radius2.setValue(ui->torusRadius2->value().getValue()); + } + else if (widget == ui->torusAngle1) { + torus->Angle1.setValue(ui->torusAngle1->value().getValue()); + } + else if (widget == ui->torusAngle2) { + torus->Angle2.setValue(ui->torusAngle2->value().getValue()); + } + else if (widget == ui->torusAngle3) { + torus->Angle3.setValue(ui->torusAngle3->value().getValue()); + } + + torus->recomputeFeature(); +} + +void DlgPrimitives::onChangePrism(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Prism* prism = featurePtr.get(); + if (widget == ui->prismPolygon) { + prism->Polygon.setValue(ui->prismPolygon->value()); + } + else if (widget == ui->prismCircumradius) { + prism->Circumradius.setValue(ui->prismCircumradius->value().getValue()); + } + else if (widget == ui->prismHeight) { + prism->Height.setValue(ui->prismHeight->value().getValue()); + } + else if (widget == ui->prismXSkew) { + prism->FirstAngle.setValue(ui->prismXSkew->value().getValue()); + } + else if (widget == ui->prismYSkew) { + prism->SecondAngle.setValue(ui->prismYSkew->value().getValue()); + } + + prism->recomputeFeature(); +} + +void DlgPrimitives::onChangeWedge(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Wedge* wedge = featurePtr.get(); + if (widget == ui->wedgeXmin) { + wedge->Xmin.setValue(ui->wedgeXmin->value().getValue()); + } + else if (widget == ui->wedgeYmin) { + wedge->Ymin.setValue(ui->wedgeYmin->value().getValue()); + } + else if (widget == ui->wedgeZmin) { + wedge->Zmin.setValue(ui->wedgeZmin->value().getValue()); + } + else if (widget == ui->wedgeX2min) { + wedge->X2min.setValue(ui->wedgeX2min->value().getValue()); + } + else if (widget == ui->wedgeZ2min) { + wedge->Z2min.setValue(ui->wedgeZ2min->value().getValue()); + } + else if (widget == ui->wedgeXmax) { + wedge->Xmax.setValue(ui->wedgeXmax->value().getValue()); + } + else if (widget == ui->wedgeYmax) { + wedge->Ymax.setValue(ui->wedgeYmax->value().getValue()); + } + else if (widget == ui->wedgeZmax) { + wedge->Zmax.setValue(ui->wedgeZmax->value().getValue()); + } + else if (widget == ui->wedgeX2max) { + wedge->X2max.setValue(ui->wedgeX2max->value().getValue()); + } + else if (widget == ui->wedgeZ2max) { + wedge->Z2max.setValue(ui->wedgeZ2max->value().getValue()); + } + + wedge->recomputeFeature(); +} + +void DlgPrimitives::onChangeHelix(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Helix* helix = featurePtr.get(); + if (widget == ui->helixPitch) { + helix->Pitch.setValue(ui->helixPitch->value().getValue()); + } + else if (widget == ui->helixHeight) { + helix->Height.setValue(ui->helixHeight->value().getValue()); + } + else if (widget == ui->helixRadius) { + helix->Radius.setValue(ui->helixRadius->value().getValue()); + } + else if (widget == ui->helixAngle) { + helix->Angle.setValue(ui->helixAngle->value().getValue()); + } + else if (widget == ui->helixLocalCS) { + helix->LocalCoord.setValue(ui->helixLocalCS->currentIndex()); + } + + helix->recomputeFeature(); +} + +void DlgPrimitives::onChangeSpiral(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Spiral* spiral = featurePtr.get(); + if (widget == ui->spiralGrowth) { + spiral->Growth.setValue(ui->spiralGrowth->value().getValue()); + } + else if (widget == ui->spiralRotation) { + spiral->Rotations.setValue(ui->spiralRotation->value()); + } + else if (widget == ui->spiralRadius) { + spiral->Radius.setValue(ui->spiralRadius->value().getValue()); + } + + spiral->recomputeFeature(); +} + +void DlgPrimitives::onChangeCircle(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Circle* circle = featurePtr.get(); + if (widget == ui->circleRadius) { + circle->Radius.setValue(ui->circleRadius->value().getValue()); + } + else if (widget == ui->circleAngle0) { + circle->Angle0.setValue(ui->circleAngle0->value().getValue()); + } + else if (widget == ui->circleAngle1) { + circle->Angle1.setValue(ui->circleAngle1->value().getValue()); + } + + circle->recomputeFeature(); +} + +void DlgPrimitives::onChangeEllipse(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Ellipse* ell = featurePtr.get(); + if (widget == ui->ellipseMajorRadius) { + ell->MajorRadius.setValue(ui->ellipseMajorRadius->value().getValue()); + } + else if (widget == ui->ellipseMinorRadius) { + ell->MinorRadius.setValue(ui->ellipseMinorRadius->value().getValue()); + } + else if (widget == ui->ellipseAngle0) { + ell->Angle0.setValue(ui->ellipseAngle0->value().getValue()); + } + else if (widget == ui->ellipseAngle1) { + ell->Angle1.setValue(ui->ellipseAngle1->value().getValue()); + } + + ell->recomputeFeature(); +} + +void DlgPrimitives::onChangeVertex(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Vertex* v = featurePtr.get(); + if (widget == ui->vertexX) { + v->X.setValue(ui->vertexX->value().getValue()); + } + else if (widget == ui->vertexY) { + v->Y.setValue(ui->vertexY->value().getValue()); + } + else if (widget == ui->vertexZ) { + v->Z.setValue(ui->vertexZ->value().getValue()); + } + + v->recomputeFeature(); +} + +void DlgPrimitives::onChangeLine(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::Line* line = featurePtr.get(); + if (widget == ui->edgeX1) { + line->X1.setValue(ui->edgeX1->value().getValue()); + } + else if (widget == ui->edgeY1) { + line->Y1.setValue(ui->edgeY1->value().getValue()); + } + else if (widget == ui->edgeZ1) { + line->Z1.setValue(ui->edgeZ1->value().getValue()); + } + else if (widget == ui->edgeX2) { + line->X2.setValue(ui->edgeX2->value().getValue()); + } + else if (widget == ui->edgeY2) { + line->Y2.setValue(ui->edgeY2->value().getValue()); + } + else if (widget == ui->edgeZ2) { + line->Z2.setValue(ui->edgeZ2->value().getValue()); + } + + line->recomputeFeature(); +} + +void DlgPrimitives::onChangeRegularPolygon(QWidget* widget) +{ + if (featurePtr.expired()) + return; + Part::RegularPolygon* poly = featurePtr.get(); + if (widget == ui->regularPolygonPolygon) { + poly->Polygon.setValue(ui->regularPolygonPolygon->value()); + } + else if (widget == ui->regularPolygonCircumradius) { + poly->Circumradius.setValue(ui->regularPolygonCircumradius->value().getValue()); + } + + poly->recomputeFeature(); +} + // ---------------------------------------------- /* TRANSLATOR PartGui::Location */ Location::Location(QWidget* parent, Part::Feature* feature) + : QWidget(parent) + , ui(new Ui_Location) + , featurePtr(feature) { - Q_UNUSED(parent); mode = 0; - ui.setupUi(this); + ui->setupUi(this); - ui.XPositionQSB->setUnit(Base::Unit::Length); - ui.YPositionQSB->setUnit(Base::Unit::Length); - ui.ZPositionQSB->setUnit(Base::Unit::Length); - ui.AngleQSB->setUnit(Base::Unit::Angle); + ui->XPositionQSB->setUnit(Base::Unit::Length); + ui->YPositionQSB->setUnit(Base::Unit::Length); + ui->ZPositionQSB->setUnit(Base::Unit::Length); + ui->AngleQSB->setUnit(Base::Unit::Angle); // fill location widget if object already exists if (feature) { @@ -1116,19 +1594,28 @@ Location::Location(QWidget* parent, Part::Feature* feature) auto placement = feature->Placement.getValue(); auto position = placement.getPosition(); - ui.XPositionQSB->setValue(position.x); - ui.YPositionQSB->setValue(position.y); - ui.ZPositionQSB->setValue(position.z); + ui->XPositionQSB->setValue(position.x); + ui->YPositionQSB->setValue(position.y); + ui->ZPositionQSB->setValue(position.z); double rotationAngle; Base::Vector3d rotationAxes; auto rotation = placement.getRotation(); rotation.getRawValue(rotationAxes, rotationAngle); - ui.XDirectionEdit->setValue(rotationAxes.x); - ui.YDirectionEdit->setValue(rotationAxes.y); - ui.ZDirectionEdit->setValue(rotationAxes.z); - // the angle is in this format: 180 = PI, thus transform it to deg - ui.AngleQSB->setValue(Base::toDegrees(rotationAngle)); + ui->XDirectionEdit->setValue(rotationAxes.x); + ui->YDirectionEdit->setValue(rotationAxes.y); + ui->ZDirectionEdit->setValue(rotationAxes.z); + // the angle is rad, transform it for display to degrees + ui->AngleQSB->setValue(Base::toDegrees(rotationAngle)); + + //connect signals + connect(ui->XPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->YPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->ZPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->AngleQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->XDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->YDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + connect(ui->ZDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); } } @@ -1147,6 +1634,36 @@ Location::~Location() } } +void Location::onChangePosRot() +{ + App::GeoFeature* geom = featurePtr.get(); + if (!geom) + return; + + // read dialog values + Base::Vector3d loc; + loc.x = ui->XPositionQSB->rawValue(); + loc.y = ui->YPositionQSB->rawValue(); + loc.z = ui->ZPositionQSB->rawValue(); + double angle = ui->AngleQSB->rawValue(); + // the angle is displayed in degrees, transform it to rad + angle = Base::toRadians(angle); + Base::Vector3d rot; + rot.x = ui->XDirectionEdit->value(); + rot.y = ui->YDirectionEdit->value(); + rot.z = ui->ZDirectionEdit->value(); + + // set placement and rotation + Base::Placement placement; + Base::Rotation rotation(rot, angle); + placement.setPosition(loc); + placement.setRotation(rotation); + + // apply new placement to the feature + geom->Placement.setValue(placement); + geom->recomputeFeature(); +} + void Location::on_viewPositionButton_clicked() { Gui::Document* doc = Gui::Application::Instance->activeDocument(); @@ -1185,12 +1702,12 @@ void Location::pickCallback(void * ud, SoEventCallback * n) SbVec3f pnt = point->getPoint(); SbVec3f nor = point->getNormal(); Location* dlg = reinterpret_cast(ud); - dlg->ui.XPositionQSB->setValue(pnt[0]); - dlg->ui.YPositionQSB->setValue(pnt[1]); - dlg->ui.ZPositionQSB->setValue(pnt[2]); - dlg->ui.XDirectionEdit->setValue(nor[0]); - dlg->ui.YDirectionEdit->setValue(nor[1]); - dlg->ui.ZDirectionEdit->setValue(nor[2]); + dlg->ui->XPositionQSB->setValue(pnt[0]); + dlg->ui->YPositionQSB->setValue(pnt[1]); + dlg->ui->ZPositionQSB->setValue(pnt[2]); + dlg->ui->XDirectionEdit->setValue(nor[0]); + dlg->ui->YDirectionEdit->setValue(nor[1]); + dlg->ui->ZDirectionEdit->setValue(nor[2]); n->setHandled(); } } @@ -1215,16 +1732,16 @@ QString Location::toPlacement() const // create a command to set the position and angle of the primitive object Base::Vector3d rot; - rot.x = ui.XDirectionEdit->value(); - rot.y = ui.YDirectionEdit->value(); - rot.z = ui.ZDirectionEdit->value(); + rot.x = ui->XDirectionEdit->value(); + rot.y = ui->YDirectionEdit->value(); + rot.z = ui->ZDirectionEdit->value(); - double angle = ui.AngleQSB->rawValue(); + double angle = ui->AngleQSB->rawValue(); Base::Vector3d loc; - loc.x = ui.XPositionQSB->rawValue(); - loc.y = ui.YPositionQSB->rawValue(); - loc.z = ui.ZPositionQSB->rawValue(); + loc.x = ui->XPositionQSB->rawValue(); + loc.y = ui->YPositionQSB->rawValue(); + loc.z = ui->ZPositionQSB->rawValue(); return QString::fromLatin1("App.Placement(App.Vector(%1,%2,%3),App.Rotation(App.Vector(%4,%5,%6),%7))") .arg(loc.x, 0, 'f', Base::UnitsApi::getDecimals()) @@ -1251,7 +1768,6 @@ TaskPrimitives::TaskPrimitives() location = new Location(); taskbox = new Gui::TaskView::TaskBox(QPixmap(), location->windowTitle() ,true, 0); taskbox->groupLayout()->addWidget(location); - taskbox->hideGroupBox(); Content.push_back(taskbox); } @@ -1310,16 +1826,10 @@ TaskPrimitivesEdit::~TaskPrimitivesEdit() QDialogButtonBox::StandardButtons TaskPrimitivesEdit::getStandardButtons() const { - return QDialogButtonBox::Close | + return QDialogButtonBox::Cancel | QDialogButtonBox::Ok; } -void TaskPrimitivesEdit::modifyStandardButtons(QDialogButtonBox* box) -{ - QPushButton* btn = box->button(QDialogButtonBox::Ok); - btn->setText(QApplication::translate("PartGui::DlgPrimitives", "&OK")); -} - bool TaskPrimitivesEdit::accept() { widget->accept(location->toPlacement()); @@ -1330,6 +1840,7 @@ bool TaskPrimitivesEdit::accept() bool TaskPrimitivesEdit::reject() { + widget->reject(); std::string document = getDocumentName(); // needed because resetEdit() deletes this instance Gui::Command::doCommand(Gui::Command::Gui, "Gui.getDocument('%s').resetEdit()", document.c_str()); return true; diff --git a/src/Mod/Part/Gui/DlgPrimitives.h b/src/Mod/Part/Gui/DlgPrimitives.h index 07fadb246b..adde46ec11 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.h +++ b/src/Mod/Part/Gui/DlgPrimitives.h @@ -23,16 +23,16 @@ #ifndef PARTGUI_DLGPRIMITIVES_H #define PARTGUI_DLGPRIMITIVES_H +#include #include #include #include #include -#include -#include class gp_Ax2; class SoPickedPoint; class SoEventCallback; +class QSignalMapper; namespace App { class Document; } namespace Gui { class Document; } @@ -61,6 +61,7 @@ public: QEventLoop loop; }; +class Ui_DlgPrimitives; class DlgPrimitives : public QWidget { Q_OBJECT @@ -70,19 +71,38 @@ public: ~DlgPrimitives(); void createPrimitive(const QString&); void accept(const QString&); + void reject(); private Q_SLOTS: void on_buttonCircleFromThreePoints_clicked(); + void onChangePlane(QWidget*); + void onChangeBox(QWidget*); + void onChangeCylinder(QWidget*); + void onChangeCone(QWidget*); + void onChangeSphere(QWidget*); + void onChangeEllipsoid(QWidget*); + void onChangeTorus(QWidget*); + void onChangePrism(QWidget*); + void onChangeWedge(QWidget*); + void onChangeHelix(QWidget*); + void onChangeSpiral(QWidget*); + void onChangeCircle(QWidget*); + void onChangeEllipse(QWidget*); + void onChangeVertex(QWidget*); + void onChangeLine(QWidget*); + void onChangeRegularPolygon(QWidget*); private: static void pickCallback(void * ud, SoEventCallback * n); void executeCallback(Picker*); + void connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper); private: - Ui_DlgPrimitives ui; + std::unique_ptr ui; App::DocumentObjectWeakPtrT featurePtr; }; +class Ui_Location; class Location : public QWidget { Q_OBJECT @@ -93,13 +113,15 @@ public: QString toPlacement() const; private Q_SLOTS: + void onChangePosRot(); void on_viewPositionButton_clicked(); private: static void pickCallback(void * ud, SoEventCallback * n); int mode; QPointer activeView; - Ui_Location ui; + std::unique_ptr ui; + App::DocumentObjectWeakPtrT featurePtr; }; class TaskPrimitives : public Gui::TaskView::TaskDialog @@ -133,7 +155,6 @@ public: bool accept(); bool reject(); QDialogButtonBox::StandardButtons getStandardButtons() const; - void modifyStandardButtons(QDialogButtonBox*); private: DlgPrimitives* widget; diff --git a/src/Mod/Part/Gui/DlgPrimitives.ui b/src/Mod/Part/Gui/DlgPrimitives.ui index 6014ad7290..f3b661d254 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.ui +++ b/src/Mod/Part/Gui/DlgPrimitives.ui @@ -7,7 +7,7 @@ 0 0 360 - 380 + 298 @@ -18,7 +18,7 @@ - + 0 @@ -181,19 +181,19 @@ - 9 + 0 - 9 + 0 - 9 + 0 - 9 + 0 - 6 + 0 @@ -236,6 +236,9 @@ + + false + mm @@ -260,6 +263,9 @@ + + false + mm @@ -337,6 +343,9 @@ + + false + mm @@ -347,6 +356,9 @@ + + false + mm @@ -378,6 +390,9 @@ + + false + mm @@ -433,6 +448,9 @@ + + false + deg @@ -502,6 +520,9 @@ + + false + mm @@ -512,6 +533,9 @@ + + false + mm @@ -567,6 +591,9 @@ + + false + deg @@ -622,6 +649,9 @@ + + false + mm @@ -632,6 +662,9 @@ + + false + mm @@ -663,6 +696,9 @@ + + false + mm @@ -751,6 +787,9 @@ + + false + deg @@ -761,6 +800,9 @@ + + false + deg @@ -771,6 +813,9 @@ + + false + deg @@ -823,6 +868,9 @@ + + false + mm @@ -915,6 +963,9 @@ + + false + mm @@ -925,6 +976,9 @@ + + false + mm @@ -935,6 +989,9 @@ + + false + mm @@ -994,6 +1051,9 @@ + + false + deg @@ -1004,6 +1064,9 @@ + + false + deg @@ -1014,6 +1077,9 @@ + + false + deg @@ -1102,6 +1168,9 @@ + + false + deg @@ -1112,6 +1181,9 @@ + + false + deg @@ -1122,6 +1194,9 @@ + + false + deg @@ -1167,6 +1242,9 @@ + + false + mm @@ -1191,6 +1269,9 @@ + + false + mm @@ -1239,6 +1320,9 @@ + + false + mm @@ -1256,6 +1340,9 @@ + + false + 3 @@ -1283,6 +1370,9 @@ + + false + mm @@ -1303,6 +1393,9 @@ Angle in first direction + + false + deg @@ -1326,6 +1419,9 @@ Angle in second direction + + false + deg @@ -1401,6 +1497,9 @@ + + false + mm @@ -1408,6 +1507,9 @@ + + false + mm @@ -1418,6 +1520,9 @@ + + false + mm @@ -1425,6 +1530,9 @@ + + false + mm @@ -1435,6 +1543,9 @@ + + false + mm @@ -1442,6 +1553,9 @@ + + false + mm @@ -1452,6 +1566,9 @@ + + false + mm @@ -1462,6 +1579,9 @@ + + false + mm @@ -1472,6 +1592,9 @@ + + false + mm @@ -1482,6 +1605,9 @@ + + false + mm @@ -1605,6 +1731,9 @@ + + false + deg @@ -1612,6 +1741,9 @@ + + false + mm @@ -1622,6 +1754,9 @@ + + false + mm @@ -1632,6 +1767,9 @@ + + false + mm @@ -1714,6 +1852,9 @@ + + false + mm @@ -1724,6 +1865,9 @@ + + false + 1000.000000000000000 @@ -1734,6 +1878,9 @@ + + false + mm @@ -1788,6 +1935,9 @@ + + false + deg @@ -1795,6 +1945,9 @@ + + false + deg @@ -1805,6 +1958,9 @@ + + false + mm @@ -1888,6 +2044,9 @@ + + false + mm @@ -1898,6 +2057,9 @@ + + false + mm @@ -1908,6 +2070,9 @@ + + false + deg @@ -1915,6 +2080,9 @@ + + false + deg @@ -1976,6 +2144,9 @@ + + false + mm @@ -1983,6 +2154,9 @@ + + false + mm @@ -1990,6 +2164,9 @@ + + false + mm @@ -2016,6 +2193,23 @@ + + + + Start point + + + + + + + End point + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + @@ -2026,6 +2220,29 @@ + + + + false + + + mm + + + + + + + false + + + mm + + + 10.000000000000000 + + + @@ -2036,6 +2253,29 @@ + + + + false + + + mm + + + + + + + false + + + mm + + + 10.000000000000000 + + + @@ -2046,103 +2286,21 @@ - - - - Qt::Horizontal - - - - - - - End point - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Start point - - - - - - - X: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Y: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Z: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - mm - - - - - - - mm - - - + + false + mm - - - - mm - - - 10.000000000000000 - - - - - - - mm - - - 10.000000000000000 - - - - + + + false + mm @@ -2161,7 +2319,7 @@ 20 - 0 + 81 @@ -2211,6 +2369,9 @@ + + false + 3 @@ -2231,6 +2392,9 @@ + + false + mm @@ -2272,7 +2436,7 @@ - comboBox1 + PrimitiveTypeCB planeLength planeWidth boxLength @@ -2346,7 +2510,7 @@ - comboBox1 + PrimitiveTypeCB activated(int) widgetStack2 setCurrentIndex(int) diff --git a/src/Mod/Part/Gui/Location.ui b/src/Mod/Part/Gui/Location.ui index 8935cab708..e180e645da 100644 --- a/src/Mod/Part/Gui/Location.ui +++ b/src/Mod/Part/Gui/Location.ui @@ -40,6 +40,9 @@ + + false + @@ -58,6 +61,9 @@ + + false + @@ -76,6 +82,9 @@ + + false + diff --git a/src/Mod/Part/Gui/PreCompiled.h b/src/Mod/Part/Gui/PreCompiled.h index aae042adb1..c9de57fc46 100644 --- a/src/Mod/Part/Gui/PreCompiled.h +++ b/src/Mod/Part/Gui/PreCompiled.h @@ -36,7 +36,9 @@ #endif #ifdef FC_OS_WIN32 +# ifndef NOMINMAX # define NOMINMAX +# endif #endif // here get the warnings of too long specifiers disabled (needed for VC6) diff --git a/src/Mod/Part/Gui/Resources/translations/Part_af.qm b/src/Mod/Part/Gui/Resources/translations/Part_af.qm index eafbdfb045..96bc5355a6 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_af.qm and b/src/Mod/Part/Gui/Resources/translations/Part_af.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ar.qm b/src/Mod/Part/Gui/Resources/translations/Part_ar.qm index 1a0171ae02..6f8061f945 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ar.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ar.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ca.qm b/src/Mod/Part/Gui/Resources/translations/Part_ca.qm index 96976e6d9c..891a5664de 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ca.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ca.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_cs.qm b/src/Mod/Part/Gui/Resources/translations/Part_cs.qm index 17fc03824c..f5ed119ca7 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_cs.qm and b/src/Mod/Part/Gui/Resources/translations/Part_cs.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_de.qm b/src/Mod/Part/Gui/Resources/translations/Part_de.qm index c4a0d324da..a4976e01d8 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_de.qm and b/src/Mod/Part/Gui/Resources/translations/Part_de.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_de.ts b/src/Mod/Part/Gui/Resources/translations/Part_de.ts index 8160610286..99fd6e6883 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_de.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_de.ts @@ -132,10 +132,10 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Filtern Sie Objekte aus einem ausgewählten Verbund nach Eigenschaften wie Volumen, +Bereich oder Länge, oder indem Sie bestimmte Elemente auswählen. +Wenn ein zweites Objekt ausgewählt ist, wird es als Referenz verwendet, zum Beispiel +für Kollisions- oder Distanzfilterung.
      @@ -150,7 +150,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Wählen Sie zuerst eine Form aus einem Verbund. Wenn ein zweites Objekt ausgewählt (optional) wird, wird dieses als Schablone behandelt. @@ -195,8 +195,8 @@ klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen" Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Aufteilen eines Zusammenhangs von Formen in separate Objekte. +Es wird einen 'Compound-Filter' für jede Form erzeugen. @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Wählen Sie zuerst eine Form aus, die ein Verbundobjekt ist. @@ -267,11 +267,7 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: - -{err} - -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. + Klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen", um abzubrechen. @@ -304,7 +300,7 @@ klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen" Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Wählen Sie mindestens zwei Objekte oder eine oder mehrere Verbundobjekte @@ -314,7 +310,7 @@ klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen" Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Wählen Sie ein Basisobjekt, dann das einzubettende Objekt und rufen Sie dieses Werkzeug auf. @@ -324,7 +320,7 @@ klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen" Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Wählen Sie das Objekt, in dem ein Ausschnitt erstellt werden soll, dann das Objekt, das in den Ausschnitt passt, und rufen Sie dieses Werkzeug auf. @@ -336,11 +332,7 @@ klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen" {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: - -{err} - -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. + Klicken Sie auf "Weiter", um das Element trotzdem zu erstellen, oder "Abbrechen", um abzubrechen. @@ -355,7 +347,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Boolesche Fragmente @@ -364,16 +356,16 @@ or from the shapes inside a compound. This is a boolean union which is then sliced at the intersections of the original shapes. A 'Compound Filter' can be used to extract the individual slices. - Create a 'Boolean Fragments' object from two or more selected objects, -or from the shapes inside a compound. -This is a boolean union which is then sliced at the intersections -of the original shapes. -A 'Compound Filter' can be used to extract the individual slices. + Erstelle ein 'Boolesche Fragments' Objekt aus zwei oder mehr ausgewählten Objekten, +oder aus den Formen innerhalb einer Verbundobjekt. +Dies ist eine boolesche Union, die dann an den Kreuzungen +der ursprünglichen Formen zerlegt wird. +Ein 'Compound Filter' kann verwendet werden, um die einzelnen Scheiben zu extrahieren. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Wählen Sie zuerst mindestens zwei Objekte oder eine oder mehrere Verbindungen aus. Wenn nur eine Verbindung ausgewählt wird, werden die zusammengesetzten Formen untereinander geschnitten (andernfalls wären Verbindungen mit Selbstschnittpunkten ungültig). @@ -385,19 +377,19 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + Schneiden Sie ein ausgewähltes Objekt auf, indem Sie andere Objekte als Schneidewerkzeuge verwenden. +Die resultierenden Stücke werden in einem Verbundobjekt gespeichert. +Ein 'Verbundobjekt-Filter' kann verwendet werden, um die einzelnen Scheiben zu extrahieren. Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Mindestens zwei Objekte auswählen. Das erste ist das zu schneidende Objekt; die weiteren Objekte sind die, mit denen geschnitten wird. Slice apart - Auseinander Schneiden + Auseinanderschneiden diff --git a/src/Mod/Part/Gui/Resources/translations/Part_el.qm b/src/Mod/Part/Gui/Resources/translations/Part_el.qm index 26dbc2be9b..6e6d27d931 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_el.qm and b/src/Mod/Part/Gui/Resources/translations/Part_el.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_es-ES.qm b/src/Mod/Part/Gui/Resources/translations/Part_es-ES.qm index a49a348aac..5f1d41a745 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_es-ES.qm and b/src/Mod/Part/Gui/Resources/translations/Part_es-ES.qm differ 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 86b4c584f0..21c5f02097 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_es-ES.ts @@ -267,11 +267,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + El cálculo del resultado falló con un error: {err} -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. @@ -336,11 +336,11 @@ Haga clic en 'Continuar' para crear la operación de todos modos, o 'Abortar' pa {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + El cálculo del resultado falló con un error: {err} -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. @@ -355,7 +355,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Fragmentos booleanos @@ -392,7 +392,7 @@ A 'Compound Filter' can be used to extract the individual slices. Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Seleccione al menos dos objetos. El primero es el objeto a cortar; el resto son objetos con los que cortar. @@ -428,8 +428,8 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by other objects, and split it apart. It will create a 'Compound Filter' for each slice. - Slice a selected object by other objects, and split it apart. -It will create a 'Compound Filter' for each slice. + Cortar un objeto seleccionado por otros objetos, y dividirlo por separado. +Se creará un 'Filtro Compuesto' para cada corte. @@ -465,10 +465,10 @@ Haga clic en 'Continuar' para crear la operación de todos modos, o 'Abortar' pa or with the shapes inside a compound. This means the overlapping volumes of the shapes will be removed. A 'Compound Filter' can be used to extract the remaining pieces. - Perform an 'exclusive OR' boolean operation with two or more selected objects, -or with the shapes inside a compound. -This means the overlapping volumes of the shapes will be removed. -A 'Compound Filter' can be used to extract the remaining pieces. + Realiza una operación booleana 'exclusiva OR' con dos o más objetos seleccionados, +o con las formas dentro de un componente. +Esto significa que los volúmenes superpuestos de las formas se eliminarán. +Un 'Filtro Compuesto' se puede utilizar para extraer las piezas restantes. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_eu.qm b/src/Mod/Part/Gui/Resources/translations/Part_eu.qm index 688a0313af..a898057f1d 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_eu.qm and b/src/Mod/Part/Gui/Resources/translations/Part_eu.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_eu.ts b/src/Mod/Part/Gui/Resources/translations/Part_eu.ts index 3483b69750..feaec15ef8 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_eu.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_eu.ts @@ -132,10 +132,10 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Iragazi konposatu hautatu bateko objektuak beren ezaugarrien arabera, adibidez +bolumenaren, arearen edo luzeraren arabera, edo elementu zehatzak aukeratuta. +Bigarren objektu bat hautatzen bada, erreferentzia modura erabiliko da, +adibidez talketarako edo distantzien iragazkietarako. @@ -150,7 +150,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Lehenengo, hautatu konposatua den forma bat. Bigarren elementu bat hautatzen bada (aukerakoa), txantiloi gisa erabiliko da. @@ -195,8 +195,8 @@ Egin klik 'Jarraitu' aukeran eginbidea sortzeko, edo 'Abortatu' bertan behera uz Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Zatitu formen koponsatu bat banakako objektuetan. +'Konposatu-iragazki' bat sortuko du forma bakoitzerako. @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Lehenengo, aukeratu konposatua den forma bat. @@ -267,11 +267,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Errorea gertatu da emaitza kalkulatzean: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Hala ere elementua sortu nahi baduzu, egin klik 'Jarraitu' aukeran, edo bestela sakatu 'Abortatu' bertan behera uzteko. @@ -304,7 +304,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Hautatu bi objektu gutxienez, edo konposatu bat edo gehiago @@ -314,7 +314,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Hautatu oinarri-objektua, ondoren kapsulatuko den objektua, eta ondoren aplikatu tresna hau. @@ -324,7 +324,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Hautatu inausiko den objektua, ondoren inausitakoan doituko den objektua, eta ondoren aplikatu tresna hau. @@ -336,11 +336,11 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Errorea gertatu da emaitza kalkulatzean: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Hala ere elementua sortu nahi baduzu, egin klik 'Jarraitu' aukeran, edo bestela sakatu 'Abortatu' bertan behera uzteko. @@ -355,7 +355,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Zati boolearrak @@ -364,16 +364,15 @@ or from the shapes inside a compound. This is a boolean union which is then sliced at the intersections of the original shapes. A 'Compound Filter' can be used to extract the individual slices. - Create a 'Boolean Fragments' object from two or more selected objects, -or from the shapes inside a compound. -This is a boolean union which is then sliced at the intersections -of the original shapes. -A 'Compound Filter' can be used to extract the individual slices. + Sortu 'zati boolearrak' objektua hautatutako bi objektu edo gehiagorekin, +edo konposatu baten barruko formekin. +Batuketa boolearra da, jatorrizko formen ebakiduretan xerratzen dena. +'Konposatu-iragazki' bat erabili daiteke banakako xerrak erauzteko. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Hautatu gutxienez bi objektu edo konposatu bat edo gehiago. Konposatu bakar bat hautatzen baduzu, konposatutako formak elkarrekin ebakiko dira (bestela, autoebakidurak dituzten konposatuak baliogabeak dira). @@ -385,14 +384,14 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + Xerratu objektu hautatu bat beste objektu batzuk mozte-tresna gisa erabilita. +Sortuko diren piezak konposatu batean biltegiratuko dira. +'Konposatu-iragazki' bat erabili daiteke banakako xerrak erauzteko. Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Lehenengo, hautatu bi objektu gutxienez. Lehena xerratuko den objektua da; gainerakoak xerratzeko erabiliko dira. @@ -428,8 +427,8 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by other objects, and split it apart. It will create a 'Compound Filter' for each slice. - Slice a selected object by other objects, and split it apart. -It will create a 'Compound Filter' for each slice. + Xerratu objektu hautatu bat beste objektu batzuekin, eta banandu. +'Konposatu-iragazki' bat sortuko da xerra bakoitzerako. @@ -465,10 +464,10 @@ Sakatu 'Jarraitu' elementua sortzeko, edo 'Abortatu' eragiketa uzteko. - Perform an 'exclusive OR' boolean operation with two or more selected objects, -or with the shapes inside a compound. -This means the overlapping volumes of the shapes will be removed. -A 'Compound Filter' can be used to extract the remaining pieces. + Gauzatu 'exclusive OR' eragiketa boolear bat hautatutako bi objekturekin edo gehiagorekin, +edo konposatu baten barruko formekin. +Horrek esan nahi du gainjarrita dauden formen bolumenak kendu egingo direla. +'Konposatu-iragazki' bat erabili daiteke gainerako piezak erauzteko. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fi.qm b/src/Mod/Part/Gui/Resources/translations/Part_fi.qm index 833acdfcb8..a842c78fb1 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_fi.qm and b/src/Mod/Part/Gui/Resources/translations/Part_fi.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fil.qm b/src/Mod/Part/Gui/Resources/translations/Part_fil.qm index a762c1107f..d93f5cf32b 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_fil.qm and b/src/Mod/Part/Gui/Resources/translations/Part_fil.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fr.qm b/src/Mod/Part/Gui/Resources/translations/Part_fr.qm index 231334ce4a..93df2d37b7 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_fr.qm and b/src/Mod/Part/Gui/Resources/translations/Part_fr.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_fr.ts b/src/Mod/Part/Gui/Resources/translations/Part_fr.ts index 2c465f62cf..31a6878076 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_fr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_fr.ts @@ -132,10 +132,9 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Filtrer les objets d'un composé sélectionné par des caractéristiques telles que le volume, la surface, la longueur ou en choisissant des éléments spécifiques. +Si un second objet est sélectionné, il sera utilisé comme référence, par exemple +pour le filtrage de collision ou de distance. @@ -150,7 +149,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Sélectionnez d'abord une forme qui est un composé. Si un second objet est sélectionné (optionnel), il sera traité comme un pochoir. @@ -195,8 +194,8 @@ Cliquez sur 'Continuer' pour créer la fonctionnalité quand même, ou 'Abandonn Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Diviser un composé de formes en objets séparés. +Cela créera un 'filtre composé' pour chaque forme. @@ -211,7 +210,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Sélectionnez d'abord une forme qui est un composé. @@ -267,11 +266,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Le calcul du résultat a échoué avec une erreur : {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Cliquez sur 'Continuer' pour créer la fonction quand même, ou 'Abandonner' pour annuler. @@ -304,7 +303,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Sélectionnez au moins deux objets, ou au moins un composé @@ -314,7 +313,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Sélectionnez l'objet de base, puis l'objet à incorporer, puis lancez cet outil. @@ -324,7 +323,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Sélectionnez l'objet dans lequel effectuer une découpe, puis l'objet à insérer dans la découpe et lancez cet outil. @@ -336,11 +335,11 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Le calcul du résultat a échoué avec une erreur : {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Cliquez sur 'Continuer' pour créer la fonction quand même, ou 'Abandonner' pour annuler. @@ -355,7 +354,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Résidus booléens @@ -364,16 +363,16 @@ or from the shapes inside a compound. This is a boolean union which is then sliced at the intersections of the original shapes. A 'Compound Filter' can be used to extract the individual slices. - Create a 'Boolean Fragments' object from two or more selected objects, -or from the shapes inside a compound. -This is a boolean union which is then sliced at the intersections -of the original shapes. -A 'Compound Filter' can be used to extract the individual slices. + Crée un objet 'Residu booléen' à partir de deux ou plusieurs objets sélectionnés, +ou à partir des formes à l'intérieur d'un composé. +Ceci est une union booléenne qui est ensuite coupée aux intersections +des formes originales. +Un 'Filtre composé' peut être utilisé pour extraire les tranches individuelles. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Sélectionnez au moins deux objets, ou au moins un composé ! Si un seul composé est sélectionné, les formes composées seront intersectées les unes avec les autres (sinon, les composés avec auto-intersections ne sont pas valides). @@ -385,14 +384,14 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + Couper un objet sélectionné en utilisant d'autres objets comme outils de coupe. +Les pièces résultantes seront stockées dans un composé. +Un 'Filtre composé' peut être utilisé pour extraire les tranches individuelles. Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Sélectionnez au moins deux objets. Le premier est l'objet à couper; les autres objets seront utilisés pour la coupe. @@ -428,8 +427,8 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by other objects, and split it apart. It will create a 'Compound Filter' for each slice. - Slice a selected object by other objects, and split it apart. -It will create a 'Compound Filter' for each slice. + Coupe un objet sélectionné par d'autres objets et le sépare. +Cela va créer un 'filtre composé' pour chaque morceau. @@ -465,10 +464,10 @@ Cliquez sur « Continuer » pour créer la fonction de toute façon, ou « An or with the shapes inside a compound. This means the overlapping volumes of the shapes will be removed. A 'Compound Filter' can be used to extract the remaining pieces. - Perform an 'exclusive OR' boolean operation with two or more selected objects, -or with the shapes inside a compound. -This means the overlapping volumes of the shapes will be removed. -A 'Compound Filter' can be used to extract the remaining pieces. + Effectuez une opération booléenne 'OU exclusif' avec au moins deux objets sélectionnés, +ou avec les formes à l'intérieur d'un composé. +Cela signifie que les volumes de chevauchement des formes seront supprimés. +Un 'Filtre composé' peut être utilisé pour extraire les parties restantes. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_gl.qm b/src/Mod/Part/Gui/Resources/translations/Part_gl.qm index 5ed6492456..6eb56b956c 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_gl.qm and b/src/Mod/Part/Gui/Resources/translations/Part_gl.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_hr.qm b/src/Mod/Part/Gui/Resources/translations/Part_hr.qm index d8f29c74f3..c77acf8344 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_hr.qm and b/src/Mod/Part/Gui/Resources/translations/Part_hr.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_hu.qm b/src/Mod/Part/Gui/Resources/translations/Part_hu.qm index 110295b37e..3ac68b2079 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_hu.qm and b/src/Mod/Part/Gui/Resources/translations/Part_hu.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_hu.ts b/src/Mod/Part/Gui/Resources/translations/Part_hu.ts index 445422c9bf..000939b6c0 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_hu.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_hu.ts @@ -132,10 +132,9 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Objektumok kiszűrése a kiválasztott összetevőkből olyan jellemzők szerint, mint a térfogat, terület vagy a hossz, vagy adott elemek kiválasztásával. +Ha egy második objektum van kiválasztva, akkor referenciaként használja, például: +ütközéshez vagy távolságszűréshez. @@ -150,7 +149,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Először jelöljön ki egy összetett alakzatot. Ha egy második objektum van kiválasztva (nem kötelező), akkor a program rajzsablonként kezeli. @@ -195,8 +194,8 @@ Kattintson a "Folytatás" gombra a funkció létrehozásához a hiba ellenére,, Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Az alakzatok egy részét külön objektumokra osztja. +Ez létrehoz egy 'Összetett szűrő'-t minden alakzathoz. @@ -211,7 +210,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Először jelöljön ki egy összetett alakzatot. @@ -267,11 +266,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Az eredmény kiszámítása hiba miatt meghiúsult: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kattintson a 'Folytatás' gombra a funkció létrehozásához, vagy a 'Megszakítás' gombra a megszakításhoz. @@ -304,7 +303,7 @@ kattintson "Folytatás" gombra, hogy mindenképp létrehozza a funkciót, vagy a Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Jelöljön ki legalább két objektumot vagy egy vagy több összetevőt @@ -314,7 +313,7 @@ kattintson "Folytatás" gombra, hogy mindenképp létrehozza a funkciót, vagy a Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Jelölje ki az alapobjektumot, majd a beágyazandó objektumot, majd hívja meg az eszközt. @@ -324,7 +323,7 @@ kattintson "Folytatás" gombra, hogy mindenképp létrehozza a funkciót, vagy a Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Jelölje ki azt az objektumot, amelyben ki szeretné vágni, majd jelölje ki azt az objektumot, amelynek illeszkednie kell a kivágásba, majd hívja meg ezt az eszközt. @@ -336,11 +335,11 @@ kattintson "Folytatás" gombra, hogy mindenképp létrehozza a funkciót, vagy a {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Az eredmény kiszámítása hiba miatt meghiúsult: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kattintson a 'Folytatás' gombra a funkció létrehozásához, vagy a 'Megszakítás' gombra a megszakításhoz. @@ -355,7 +354,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Logikai töredékek @@ -364,16 +363,15 @@ or from the shapes inside a compound. This is a boolean union which is then sliced at the intersections of the original shapes. A 'Compound Filter' can be used to extract the individual slices. - Create a 'Boolean Fragments' object from two or more selected objects, -or from the shapes inside a compound. -This is a boolean union which is then sliced at the intersections -of the original shapes. -A 'Compound Filter' can be used to extract the individual slices. + 'Logikai töredékek' objektum létrehozása két vagy több kijelölt objektumból, +vagy az összetevőkön belüli alakzatokból. +Ez egy logikai egyesülés, amit aztán az eredeti formák metszéspontjai szelnek. +Az 'összetett szűrő' használható az egyes szeletek kibontásához. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Jelöljön ki legalább két objektumot, vagy egy vagy több összetevőt. Ha csak egy összetevő van kijelölve, az összetett alakzatok metszik egymást (ellenkező esetben az önmetszéssel rendelkező összetevők érvénytelenek). @@ -385,14 +383,14 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + A kijelölt objektumot más objektumokkal mint vágóeszközzel szeletelje. +A kapott darabokat egy összetevőként tárolja. +Az 'Összetevő szűrő' használható az egyes szeletek kibontásához. Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Jelöljön ki legalább két objektumot. Az első a szeletelendő objektum; a többi olyan tárgy, amivel szeletelni kell. @@ -428,8 +426,8 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by other objects, and split it apart. It will create a 'Compound Filter' for each slice. - Slice a selected object by other objects, and split it apart. -It will create a 'Compound Filter' for each slice. + A kijelölt objektumot más objektumokkal szeletelje fel, és ossza részekre. +Ez létrehoz egy 'Összetevő szűrő'-t minden szeletre. @@ -465,10 +463,10 @@ kattintson "Folytatás" gombra, hogy mindenképp létrehozza a funkciót, vagy a or with the shapes inside a compound. This means the overlapping volumes of the shapes will be removed. A 'Compound Filter' can be used to extract the remaining pieces. - Perform an 'exclusive OR' boolean operation with two or more selected objects, -or with the shapes inside a compound. -This means the overlapping volumes of the shapes will be removed. -A 'Compound Filter' can be used to extract the remaining pieces. + 'Kizárólagos VAGY1 logikai művelet végrehajtása két vagy több kijelölt objektummal, +vagy az összetevőn belüli alakzatokkal. +Ez azt jelenti, hogy az alakzatok egymást átfedő formái törlődnek. +A fennmaradó darabok kivonására az 'összetevő szűrő' használható. diff --git a/src/Mod/Part/Gui/Resources/translations/Part_id.qm b/src/Mod/Part/Gui/Resources/translations/Part_id.qm index 32a32f161e..045d4d71e8 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_id.qm and b/src/Mod/Part/Gui/Resources/translations/Part_id.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_it.qm b/src/Mod/Part/Gui/Resources/translations/Part_it.qm index a79c827b4a..6bd55443cf 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_it.qm and b/src/Mod/Part/Gui/Resources/translations/Part_it.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ja.qm b/src/Mod/Part/Gui/Resources/translations/Part_ja.qm index 59f9e0c521..1af2f88657 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ja.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ja.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_kab.qm b/src/Mod/Part/Gui/Resources/translations/Part_kab.qm index 874d374c6c..4e87994c46 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_kab.qm and b/src/Mod/Part/Gui/Resources/translations/Part_kab.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ko.qm b/src/Mod/Part/Gui/Resources/translations/Part_ko.qm index fa93022370..0fea726f03 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ko.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ko.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_lt.qm b/src/Mod/Part/Gui/Resources/translations/Part_lt.qm index a8b40fdd42..1e31578fe5 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_lt.qm and b/src/Mod/Part/Gui/Resources/translations/Part_lt.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_nl.qm b/src/Mod/Part/Gui/Resources/translations/Part_nl.qm index 4ba4c8db4b..39c562ce4a 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_nl.qm and b/src/Mod/Part/Gui/Resources/translations/Part_nl.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_no.qm b/src/Mod/Part/Gui/Resources/translations/Part_no.qm index a04a90bc09..b20d712e9c 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_no.qm and b/src/Mod/Part/Gui/Resources/translations/Part_no.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pl.qm b/src/Mod/Part/Gui/Resources/translations/Part_pl.qm index 82d4da5af1..7287a538bb 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_pl.qm and b/src/Mod/Part/Gui/Resources/translations/Part_pl.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pl.ts b/src/Mod/Part/Gui/Resources/translations/Part_pl.ts index 54df291835..985602223c 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_pl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_pl.ts @@ -132,10 +132,10 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Filtruj obiekty z wybranego kształtu złożonego, według kryteriów takich jak objętość, pole powierzchni +lub długość, lub wybierając określone elementy. +Jeśli zostanie wybrany drugi obiekt, będzie on używany jako punkt odniesienia, na przykład +do filtrowania według kolizji lub odległości. @@ -150,7 +150,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Najpierw wybierz kształt, który jest kształtem złożonym. Jeśli wybrany zostanie drugi obiekt (opcjonalnie) zostanie on traktowany jako szablon. @@ -195,8 +195,8 @@ Kliknij "Kontynuuj", aby i tak utworzyć element, lub "Przerwij", aby anulować. Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Rozdziel kształt złożony na osobne obiekty. +Stworzy to „Filtr kompozytowy” dla każdej kształtu. @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Najpierw wybierz kształt, który jest kształtem złożonym. @@ -267,11 +267,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Obliczanie wyniku zakończyły się błędem: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kliknij "Kontynuuj", aby mimo to utworzyć element, lub "Przerwij", aby anulować. @@ -304,7 +304,7 @@ Kliknij "Kontynuuj", aby i tak utworzyć element, lub "Przerwij", aby anulować. Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Wybierz co najmniej dwa obiekty, bądź jedno lub więcej złożeń @@ -314,17 +314,17 @@ Kliknij "Kontynuuj", aby i tak utworzyć element, lub "Przerwij", aby anulować. Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Wybierz obiekt podstawowy, a następnie obiekt do osadzenia, kolejnie uruchom to narzędzie. Select the object to make a cutout in, then the object that should fit into the cutout, and invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and invoke this tool. + Wybierz obiekt, w którym chcesz wykonać wycięcie, a następnie obiekt, za pomocą którego chcesz wykonać wycięcie, i uruchom to narzędzie. Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Wybierz obiekt, w którym chcesz wykonać wycięcie, a następnie obiekt, za pomocą którego chcesz wykonać wycięcie, a następnie uruchom to narzędzie. @@ -336,11 +336,11 @@ Kliknij "Kontynuuj", aby i tak utworzyć element, lub "Przerwij", aby anulować. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Obliczanie wyniku zakończyły się błędem: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kliknij "Kontynuuj", aby mimo to utworzyć element, lub "Przerwij", aby anulować. @@ -373,7 +373,7 @@ A 'Compound Filter' can be used to extract the individual slices. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Wybierz co najmniej dwa obiekty bądź jedno lub więcej założeń. Jeśli wybrane zostanie tylko jeden kształt złożony, jego kształty zostaną przecięte między sobą (w przeciwnym razie złożenie z własnymi przecięciami jest nieważne). @@ -385,14 +385,14 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + Pokrój zaznaczony obiekt, używając innych obiektów jako narzędzi tnących. +Powstałe w ten sposób elementy będą umieszczone w złożeniu. +Do wyodrębnienia poszczególnych wycinków można użyć "filtra złożeń". Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Najpierw zaznacz co najmniej dwa obiekty! Pierwszym z nich jest obiekt do podzielenia, pozostałe to obiekty przecinające. @@ -412,12 +412,12 @@ A 'Compound Filter' can be used to extract the individual slices. Split object by intersections with other objects, and pack the pieces into a compound. - Split object by intersections with other objects, and pack the pieces into a compound. + Podziel obiekt przez przecięcia z innymi obiektami i umieść kawałki w złożeniu. Split object by intersections with other objects. - Split object by intersections with other objects. + Podziel obiekt poprzez przecięcia z innymi obiektami. @@ -1988,12 +1988,12 @@ A 'Compound Filter' can be used to extract the remaining pieces. Make compound - Utwórz kombinację + Utwórz kształt złożony Make a compound of several shapes - Utwórz kombinację kilku kształtów + Stwórz złożenie z kilku kształtów @@ -4726,7 +4726,7 @@ Zaznacz wcześniej jedną lub więcej krawędzi. RectoVerso - RectoVerso + Obie strony diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.qm b/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.qm index 21dff07297..9c798d3a58 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.qm and b/src/Mod/Part/Gui/Resources/translations/Part_pt-BR.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.qm b/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.qm index dcad4a1e73..c91016af38 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.qm and b/src/Mod/Part/Gui/Resources/translations/Part_pt-PT.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ro.qm b/src/Mod/Part/Gui/Resources/translations/Part_ro.qm index 633c298a60..10731b417b 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ro.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ro.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ru.qm b/src/Mod/Part/Gui/Resources/translations/Part_ru.qm index 6f3e3403ea..98c7c3274e 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_ru.qm and b/src/Mod/Part/Gui/Resources/translations/Part_ru.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_ru.ts b/src/Mod/Part/Gui/Resources/translations/Part_ru.ts index 048e437dbe..c70f2bbe2e 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_ru.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_ru.ts @@ -132,10 +132,10 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Отфильтровать объекты из выбранного соединения по характеристикам, таким как объем, площадь +или длина, или выбрав конкретные элементы. +Если выбран второй объект, он будет использоваться, как образец, например, +для фильтрации пересечений или расстояния. @@ -150,7 +150,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Сначала выберите фигуру - составной объект! Если второй объект выделен (необязательно), он будет рассматриваться, как трафарет. @@ -195,8 +195,8 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Разделить составной объект на отдельные объекты. +Это создаст 'Фильтр Составного объекта' для каждой фигуры. @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Сначала выберите фигуру - составной объект. @@ -267,11 +267,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Вычисление результата завершилось ошибкой: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Нажмите «Продолжить», чтобы всё равно создать элемент, или «Отмена», чтобы отменить. @@ -304,7 +304,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Выберите по крайней мере два объекта или один или несколько составных объекта @@ -314,7 +314,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Выберите базовый объект, затем объект для встраивания и затем используйте этот инструмент. @@ -324,7 +324,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Выберите объект, в котором требуется сделать вырез, потом объект, который должен быть вырезан и используйте этот инструмент. @@ -336,11 +336,11 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Вычисление результата завершилось ошибкой: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Нажмите «Продолжить», чтобы всё равно создать элемент, или «Отмена», чтобы отменить. @@ -355,7 +355,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Логические фрагменты diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sk.qm b/src/Mod/Part/Gui/Resources/translations/Part_sk.qm index 23f8288c82..fc620123cc 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_sk.qm and b/src/Mod/Part/Gui/Resources/translations/Part_sk.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sl.qm b/src/Mod/Part/Gui/Resources/translations/Part_sl.qm index 12b91611d4..27939c815a 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_sl.qm and b/src/Mod/Part/Gui/Resources/translations/Part_sl.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sl.ts b/src/Mod/Part/Gui/Resources/translations/Part_sl.ts index e25c2b642f..bdb10b4140 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sl.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sl.ts @@ -132,10 +132,10 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Izloči iz izbranega sestava predmete glede na lastnosti, kot so prostornina, +površina ali dolžina, lahko pa tudi izberete željene reči. +Če je izbran drugi predmete, bo uporabljen kot sklic npr. za +presejanje pri trkih ali razdaljah. @@ -150,7 +150,7 @@ for collision or distance filtering. First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. - First select a shape that is a compound. If a second object is selected (optional) it will be treated as a stencil. + Najprej izberite obliko, ki je sestav! Če je označen še dugi predmet (neobvezno), bo obravnavan kot vzorec. @@ -195,8 +195,8 @@ Klikni "Nadaljuj", če želiš vseeno ustvariti značilnost, ali "Prekini" za pr Split up a compound of shapes into separate objects. It will create a 'Compound Filter' for each shape. - Split up a compound of shapes into separate objects. -It will create a 'Compound Filter' for each shape. + Razcepi sestav oblik na ločene predmete. +Za vsako obliko bo ustvarjeno "Sito sestava". @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Najprej izberite obliko, ki je sestav. @@ -267,11 +267,11 @@ It will create a 'Compound Filter' for each shape. {err} Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Pri izračunavanju razultata je prišlo do napake: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kliknite "Nadaljuj", če želite vseeno ustvariti značilnost, ali "Prekini", za preklic. @@ -304,7 +304,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select at least two objects, or one or more compounds - Select at least two objects, or one or more compounds + Izberite vsaj dva predmeta ali enega oz. več sestavov @@ -314,7 +314,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select base object, then the object to embed, and then invoke this tool. - Select base object, then the object to embed, and then invoke this tool. + Izberite osnovni predmet, nato predmet za vgradnjo in za tem prikličite to orodje. @@ -324,7 +324,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. - Select the object to make a cutout in, then the object that should fit into the cutout, and then invoke this tool. + Izberite predmet, v katerem želite narediti izrez, nato izberite predmet, kateremu se naj izrez prilega, in za tem prikličite to orodje. @@ -336,11 +336,11 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. - Computing the result failed with an error: + Pri izračunavanju razultata je prišlo do napake: {err} -Click 'Continue' to create the feature anyway, or 'Abort' to cancel. +Kliknite "Nadaljuj", če želite vseeno ustvariti značilnost, ali "Prekini", za preklic. @@ -355,7 +355,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Logična vrednost drobcev @@ -364,16 +364,15 @@ or from the shapes inside a compound. This is a boolean union which is then sliced at the intersections of the original shapes. A 'Compound Filter' can be used to extract the individual slices. - Create a 'Boolean Fragments' object from two or more selected objects, -or from the shapes inside a compound. -This is a boolean union which is then sliced at the intersections -of the original shapes. -A 'Compound Filter' can be used to extract the individual slices. + Ustvari predmet "Logična vrednost drobcev" iz enega ali več izbranih predmetov, +ali iz oblik znotraj sestava. +To je seštevek logičnih vrednosti, ki je nato zarezan na presekih izvirnih oblik. +S "Sitom sestava" lahko izvlečete posamezne rezine. Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). - Select at least two objects, or one or more compounds. If only one compound is selected, the compounded shapes will be intersected between each other (otherwise, compounds with self-intersections are invalid). + Izberitev vsaj dva predmeta ali enega oz. več sestavov! Če je izbran le en sestav, bo med sestavljenimi oblikami izveden presek (sicer so sestavi, ki sekajo sami sebe, neveljavni). @@ -385,14 +384,14 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by using other objects as cutting tools. The resulting pieces will be stored in a compound. A 'Compound Filter' can be used to extract the individual slices. - Slice a selected object by using other objects as cutting tools. -The resulting pieces will be stored in a compound. -A 'Compound Filter' can be used to extract the individual slices. + Razreži izbrani predmet z drugimi predmeti, ki služijo kot rezilo. +Dobljeni kosi bodo shranjeni v sestav. +Posamezne rezine lahko izločite s pomočje "Sita sestavov". Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. - Select at least two objects. The first one is the object to be sliced; the rest are objects to slice with. + Izberite vsaj dva predmeta! Prvi predmet bo razrezan z ostalimi predmeti. @@ -428,8 +427,8 @@ A 'Compound Filter' can be used to extract the individual slices. Slice a selected object by other objects, and split it apart. It will create a 'Compound Filter' for each slice. - Slice a selected object by other objects, and split it apart. -It will create a 'Compound Filter' for each slice. + Razreži izbrani predmet z drugimi predmeti in ga razcepi. +Za vsako rezino bo ustvarjeno "sito sestava". @@ -465,10 +464,10 @@ Kliknite "Nadaljuj", če želite vseeno ustvariti značilnost, ali "Prekini", za or with the shapes inside a compound. This means the overlapping volumes of the shapes will be removed. A 'Compound Filter' can be used to extract the remaining pieces. - Perform an 'exclusive OR' boolean operation with two or more selected objects, -or with the shapes inside a compound. -This means the overlapping volumes of the shapes will be removed. -A 'Compound Filter' can be used to extract the remaining pieces. + Izvêdi logično dejanje "izključno ALI" z dvema ali več predmeti, +oz. z oblikami znotraj sestava. +To pomeni, da bodo prekrivajoči deli oblik odstranjeni. +Ostale dele lahko izvelečet s "sitom sestava". diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sr.qm b/src/Mod/Part/Gui/Resources/translations/Part_sr.qm index ad5e276ec2..8ee66e2c18 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_sr.qm and b/src/Mod/Part/Gui/Resources/translations/Part_sr.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sr.ts b/src/Mod/Part/Gui/Resources/translations/Part_sr.ts index 3a984cf4f8..21552b787a 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sr.ts @@ -6,7 +6,7 @@ No object named {name} - No object named {name} + Непостојећи објекат именован {име} @@ -168,7 +168,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Bad selection - Bad selection + Лош одабир @@ -216,7 +216,7 @@ It will create a 'Compound Filter' for each shape. Bad selection - Bad selection + Лош одабир @@ -224,7 +224,7 @@ It will create a 'Compound Filter' for each shape. Connect objects - Connect objects + Повежи објекте @@ -276,7 +276,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Bad selection - Bad selection + Лош одабир @@ -345,7 +345,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Bad selection - Bad selection + Лош одабир @@ -876,7 +876,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Normal to edge AttachmentLine mode caption - Normal to edge + Нормално на ивицу @@ -888,7 +888,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Binormal AttachmentLine mode caption - Binormal + Бинормала @@ -1090,7 +1090,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Normal to edge AttachmentPlane mode caption - Normal to edge + Нормално на ивицу @@ -1128,7 +1128,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Concentric AttachmentPlane mode caption - Concentric + Концентрично @@ -1152,7 +1152,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Plane by 3 points AttachmentPlane mode caption - Plane by 3 points + Раван са 3 тачке @@ -1176,7 +1176,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Folding AttachmentPlane mode caption - Folding + Савијање @@ -1325,7 +1325,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Concentric Attachment3D mode caption - Concentric + Концентрично @@ -1373,7 +1373,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Folding Attachment3D mode caption - Folding + Савијање @@ -2280,7 +2280,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. 3D Offset... - 3D Offset... + 3Д одступање... @@ -2298,7 +2298,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. 2D Offset... - 2D Offset... + 2Д одступање... @@ -2945,7 +2945,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Symmetric - Symmetric + Симетрично @@ -3127,7 +3127,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Edges to chamfer - Edges to chamfer + Ивице за обарање @@ -3877,7 +3877,7 @@ Please check one or more edge entities first. Revolution axis - Revolution axis + Оса обртања @@ -3929,7 +3929,7 @@ Please check one or more edge entities first. Symmetric angle - Symmetric angle + Симетрични угао @@ -4003,7 +4003,7 @@ Please check one or more edge entities first. <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg 2; 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-family:MS Shell Dlg 2; 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-family:MS Shell Dlg 2; 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;">Постављање геометријских облика у равни</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;">Дефинише максимално одступање постављених геометријских облика на површину. Што је вредност мања, то је брзина рендеровања мања што доводи до повећаних детаља/резолуције.</span></p></body></html> @@ -4142,7 +4142,7 @@ Please check one or more edge entities first. Random shape color - Random shape color + Насумична боја облика @@ -4191,12 +4191,12 @@ Please check one or more edge entities first. Available profiles - Available profiles + Доступни профили Selected profiles - Selected profiles + Изабрани профили @@ -4259,7 +4259,7 @@ Please check one or more edge entities first. Base point - Base point + Базна тачка @@ -4389,12 +4389,12 @@ Please check one or more edge entities first. Available profiles - Available profiles + Доступни профили Selected profiles - Selected profiles + Изабрани профили @@ -4805,7 +4805,7 @@ Please check one or more edge entities first. Planar - Planar + Раванско @@ -4887,7 +4887,7 @@ in the 3D view for the sweep path. Simple - Simple + Једноставно @@ -5381,7 +5381,7 @@ Do you want to continue? Show control points - Show control points + Прикажи контролне тачке @@ -5424,7 +5424,7 @@ Do you want to continue? Join - Join + Придружи diff --git a/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.qm b/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.qm index 1f1eed1b66..6a0a1e06ef 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.qm and b/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.qm differ 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 f73cf4cdae..fdb9fc1452 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_sv-SE.ts @@ -355,7 +355,7 @@ Click 'Continue' to create the feature anyway, or 'Abort' to cancel. Boolean fragments - Boolean fragments + Booleska fragment diff --git a/src/Mod/Part/Gui/Resources/translations/Part_tr.qm b/src/Mod/Part/Gui/Resources/translations/Part_tr.qm index 6f3bc70581..9c8d3126f0 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_tr.qm and b/src/Mod/Part/Gui/Resources/translations/Part_tr.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_tr.ts b/src/Mod/Part/Gui/Resources/translations/Part_tr.ts index 9b2d63f9d8..b919904d74 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_tr.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_tr.ts @@ -211,7 +211,7 @@ It will create a 'Compound Filter' for each shape. First select a shape that is a compound. - First select a shape that is a compound. + Önce bileşik olan bir şekil seçin. @@ -593,7 +593,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Torus Attacher reference type - Simit + Halka @@ -2118,12 +2118,12 @@ A 'Compound Filter' can be used to extract the remaining pieces. Extrude... - Patlat... + Uzat... Extrude a selected sketch - Seçili bir eskiza kalınlık ver + Seçili bir eskize kalınlık ver @@ -2262,7 +2262,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Mirroring... - Aynalanıyor... + Aynala... @@ -2570,7 +2570,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Torus - Simit + Halka @@ -2989,7 +2989,9 @@ A 'Compound Filter' can be used to extract the remaining pieces. Creating Extrusion failed. %1 - Ekstrüzyon oluşturulurken hata oluştu + Ekstrüzyon oluşturma işlemi başarısız oldu. + +%1 @@ -3553,13 +3555,13 @@ Lütfen önce bir veya daha fazla kenarlı varlıkları kontrol edin. Ellipsoid - Elipsoid + Elipsoit Torus - Simit + Halka @@ -3946,7 +3948,9 @@ Lütfen önce bir veya daha fazla kenarlı varlıkları kontrol edin.Revolution axis link is invalid. %1 - Devir ekseni bağlantısı geçersiz + Devir ekseni bağlantısı geçersiz. + +%1 @@ -3964,7 +3968,9 @@ Lütfen önce bir veya daha fazla kenarlı varlıkları kontrol edin.Creating Revolve failed. %1 - Dönme başarısız oldu + Döndürerek katılama başarısız oldu. + +%1 @@ -4605,7 +4611,7 @@ Lütfen önce bir veya daha fazla kenarlı varlıkları kontrol edin. %1 (add %2) - % 1 (% 2 ekle) + %1 (%2 ekle) diff --git a/src/Mod/Part/Gui/Resources/translations/Part_uk.qm b/src/Mod/Part/Gui/Resources/translations/Part_uk.qm index dcbf2c5b69..7b767420c0 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_uk.qm and b/src/Mod/Part/Gui/Resources/translations/Part_uk.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_uk.ts b/src/Mod/Part/Gui/Resources/translations/Part_uk.ts index 48053f37d8..6aca543f67 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_uk.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_uk.ts @@ -76,7 +76,7 @@ Failed to resolve links. {err} - Failed to resolve links. {err} + Неможливе посилання. {err} @@ -86,7 +86,7 @@ Attached with mode {mode} - Attached with mode {mode} + Приєднано з режимом {mode} @@ -96,17 +96,17 @@ Attachment Offset: - Attachment Offset: + Зміщення прикріплення: Attachment Offset (in local coordinates): - Attachment Offset (in local coordinates): + Зміщення прикріплення (в локальних координатах): Attachment Offset (inactive - not attached): - Attachment Offset (inactive - not attached): + Зміщення прикріплення (неактивний - не приєднано): @@ -116,7 +116,7 @@ Edit attachment of selected object. - Edit attachment of selected object. + Редагувати приєднання вибраного об'єкта. @@ -124,7 +124,7 @@ Compound Filter - Compound Filter + Фільтр з'єднань @@ -132,20 +132,20 @@ area, or length, or by choosing specific items. If a second object is selected, it will be used as reference, for example, for collision or distance filtering. - Filter out objects from a selected compound by characteristics like volume, -area, or length, or by choosing specific items. -If a second object is selected, it will be used as reference, for example, -for collision or distance filtering. + Відфільтруйте об'єкти з вибраного з'єднання за такими характеристиками, як об'єм, +площа, довжина, або шляхом вибору конкретних елементів. +Якщо вибрано другий об'єкт, він буде використаний як зразок, наприклад, +для фільтрування перетину або відстані. Compound Filter: remove some childs from a compound - Compound Filter: remove some childs from a compound + Фільтр з'єднань: видалення деяких частин із з'єднання Select a shape that is a compound, first! Second selected item (optional) will be treated as a stencil. - Select a shape that is a compound, first! Second selected item (optional) will be treated as a stencil. + Спершу виберіть фігуру, яка є складовою! Другий вибраний елемент (за бажанням) буде розглядатися як трафарет. @@ -2623,7 +2623,7 @@ A 'Compound Filter' can be used to extract the remaining pieces. Attachment Offset: - Attachment Offset: + Зміщення прикріплення: @@ -4508,7 +4508,7 @@ Please check one or more edge entities first. Attachment Offset: - Attachment Offset: + Зміщення прикріплення: @@ -4573,7 +4573,7 @@ Please check one or more edge entities first. Attachment Offset (inactive - not attached): - Attachment Offset (inactive - not attached): + Зміщення прикріплення (неактивний - не приєднано): diff --git a/src/Mod/Part/Gui/Resources/translations/Part_val-ES.qm b/src/Mod/Part/Gui/Resources/translations/Part_val-ES.qm index 4e89fe7db4..b236d1d94e 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_val-ES.qm and b/src/Mod/Part/Gui/Resources/translations/Part_val-ES.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_vi.qm b/src/Mod/Part/Gui/Resources/translations/Part_vi.qm index c1026f1112..252f60c1aa 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_vi.qm and b/src/Mod/Part/Gui/Resources/translations/Part_vi.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.qm b/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.qm index 08b5c5550d..b00ec07548 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.qm and b/src/Mod/Part/Gui/Resources/translations/Part_zh-CN.qm differ diff --git a/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.qm b/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.qm index 4625fac7f3..8fc9bb5fd6 100644 Binary files a/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.qm and b/src/Mod/Part/Gui/Resources/translations/Part_zh-TW.qm differ diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index bac4819481..682443e34d 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -1054,7 +1054,7 @@ TaskDlgAttacher::~TaskDlgAttacher() void TaskDlgAttacher::open() { Gui::Document* document = Gui::Application::Instance->getDocument(ViewProvider->getObject()->getDocument()); - document->openCommand("Edit attachment"); + document->openCommand(QT_TRANSLATE_NOOP("Command", "Edit attachment")); } void TaskDlgAttacher::clicked(int) diff --git a/src/Mod/Part/Gui/TaskFaceColors.cpp b/src/Mod/Part/Gui/TaskFaceColors.cpp index 276d1350cb..980a12b5b7 100644 --- a/src/Mod/Part/Gui/TaskFaceColors.cpp +++ b/src/Mod/Part/Gui/TaskFaceColors.cpp @@ -429,7 +429,7 @@ void FaceColors::updatePanel() void FaceColors::open() { Gui::Document* doc = Gui::Application::Instance->getDocument(d->vp->getObject()->getDocument()); - doc->openCommand("Change face colors"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Change face colors")); } bool FaceColors::accept() diff --git a/src/Mod/Part/Gui/TaskLoft.cpp b/src/Mod/Part/Gui/TaskLoft.cpp index ab212ed354..0f783137a8 100644 --- a/src/Mod/Part/Gui/TaskLoft.cpp +++ b/src/Mod/Part/Gui/TaskLoft.cpp @@ -199,7 +199,7 @@ bool LoftWidget::accept() Gui::Document* doc = Gui::Application::Instance->getDocument(d->document.c_str()); if (!doc) throw Base::RuntimeError("Document doesn't exist anymore"); - doc->openCommand("Loft"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Loft")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); doc->getDocument()->recompute(); App::DocumentObject* obj = doc->getDocument()->getActiveObject(); diff --git a/src/Mod/Part/Gui/TaskShapeBuilder.cpp b/src/Mod/Part/Gui/TaskShapeBuilder.cpp index 034cd78e50..f75b3b46eb 100644 --- a/src/Mod/Part/Gui/TaskShapeBuilder.cpp +++ b/src/Mod/Part/Gui/TaskShapeBuilder.cpp @@ -237,7 +237,7 @@ void ShapeBuilderWidget::createEdgeFromVertex() ).arg(elements[0]).arg(elements[1]); try { - Gui::Application::Instance->activeDocument()->openCommand("Edge"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Edge")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -278,7 +278,7 @@ void ShapeBuilderWidget::createWireFromEdge() "del _\n" ).arg(list); try { - Gui::Application::Instance->activeDocument()->openCommand("Wire"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Wire")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -330,7 +330,7 @@ void ShapeBuilderWidget::createFaceFromVertex() } try { - Gui::Application::Instance->activeDocument()->openCommand("Face"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Face")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -382,7 +382,7 @@ void ShapeBuilderWidget::createFaceFromEdge() } try { - Gui::Application::Instance->activeDocument()->openCommand("Face"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Face")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -445,7 +445,7 @@ void ShapeBuilderWidget::createShellFromFace() } try { - Gui::Application::Instance->activeDocument()->openCommand("Shell"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Shell")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } @@ -497,7 +497,7 @@ void ShapeBuilderWidget::createSolidFromShell() } try { - Gui::Application::Instance->activeDocument()->openCommand("Solid"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Solid")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); Gui::Application::Instance->activeDocument()->commitCommand(); } diff --git a/src/Mod/Part/Gui/TaskShapeBuilder.ui b/src/Mod/Part/Gui/TaskShapeBuilder.ui index b6507a0603..e3bfe18ba7 100644 --- a/src/Mod/Part/Gui/TaskShapeBuilder.ui +++ b/src/Mod/Part/Gui/TaskShapeBuilder.ui @@ -125,10 +125,13 @@ Qt::Vertical + + QSizePolicy::Fixed + 20 - 127 + 20 diff --git a/src/Mod/Part/Gui/TaskSweep.cpp b/src/Mod/Part/Gui/TaskSweep.cpp index 0ba958f34e..7200a9c2e9 100644 --- a/src/Mod/Part/Gui/TaskSweep.cpp +++ b/src/Mod/Part/Gui/TaskSweep.cpp @@ -339,7 +339,7 @@ bool SweepWidget::accept() Gui::Document* doc = Gui::Application::Instance->getDocument(d->document.c_str()); if (!doc) throw Base::RuntimeError("Document doesn't exist anymore"); - doc->openCommand("Sweep"); + doc->openCommand(QT_TRANSLATE_NOOP("Command", "Sweep")); Gui::Command::runCommand(Gui::Command::App, cmd.toLatin1()); doc->getDocument()->recompute(); App::DocumentObject* obj = doc->getDocument()->getActiveObject(); diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp index efe17f7298..7bcf7f773d 100644 --- a/src/Mod/Part/Gui/ViewProvider.cpp +++ b/src/Mod/Part/Gui/ViewProvider.cpp @@ -31,15 +31,11 @@ #include #include #include -#include #include -#include #include -#include #include "ViewProvider.h" -#include "DlgPrimitives.h" using namespace PartGui; @@ -57,10 +53,9 @@ ViewProviderPart::~ViewProviderPart() bool ViewProviderPart::doubleClicked(void) { - std::string Msg("Edit "); - Msg += this->pcObject->Label.getValue(); try { - Gui::Command::openCommand(Msg.c_str()); + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); FCMD_SET_EDIT(pcObject); return true; } @@ -100,53 +95,6 @@ void ViewProviderPart::applyTransparency(const float& transparency, // ---------------------------------------------------------------------------- -PROPERTY_SOURCE(PartGui::ViewProviderPrimitive, PartGui::ViewProviderPart) - -ViewProviderPrimitive::ViewProviderPrimitive() -{ -} - -ViewProviderPrimitive::~ViewProviderPrimitive() -{ - -} - -void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) -{ - QAction* act; - act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); - ViewProviderPart::setupContextMenu(menu, receiver, member); -} - -bool ViewProviderPrimitive::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - if (Gui::Control().activeDialog()) - return false; - PartGui::TaskPrimitivesEdit* dlg - = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); - Gui::Control().showDialog(dlg); - return true; - } - else { - ViewProviderPart::setEdit(ModNum); - return true; - } -} - -void ViewProviderPrimitive::unsetEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - Gui::Control().closeDialog(); - } - else { - ViewProviderPart::unsetEdit(ModNum); - } -} - -// ---------------------------------------------------------------------------- - void ViewProviderShapeBuilder::buildNodes(const App::Property* , std::vector& ) const { } diff --git a/src/Mod/Part/Gui/ViewProvider.h b/src/Mod/Part/Gui/ViewProvider.h index cb32fa3cbe..7246e32ce7 100644 --- a/src/Mod/Part/Gui/ViewProvider.h +++ b/src/Mod/Part/Gui/ViewProvider.h @@ -61,23 +61,6 @@ protected: std::vector& colors); }; -class PartGuiExport ViewProviderPrimitive : public ViewProviderPart -{ - PROPERTY_HEADER(PartGui::ViewProviderPrimitive); - -public: - /// constructor - ViewProviderPrimitive(); - /// destructor - virtual ~ViewProviderPrimitive(); - - void setupContextMenu(QMenu*, QObject*, const char*); - -protected: - bool setEdit(int ModNum); - void unsetEdit(int ModNum); -}; - } // namespace PartGui diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp index c7f04339be..2b789892ca 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp @@ -28,12 +28,17 @@ # define _USE_MATH_DEFINES # include # endif //_MSC_VER +# include +# include #endif #include "ViewProviderAttachExtension.h" +#include "TaskAttacher.h" #include +#include #include +#include using namespace PartGui; @@ -104,6 +109,36 @@ void ViewProviderAttachExtension::extensionUpdateData(const App::Property* prop) } +void ViewProviderAttachExtension::extensionSetupContextMenu(QMenu* menu, QObject*, const char*) +{ + // toggle command to display components + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Attachment editor")); + if (Gui::Control().activeDialog()) + act->setDisabled(true); + func->trigger(act, boost::bind(&ViewProviderAttachExtension::showAttachmentEditor, this)); +} + +void ViewProviderAttachExtension::showAttachmentEditor() +{ + // See PropertyEnumAttacherItem::openTask() + Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog(); + TaskDlgAttacher* task; + task = qobject_cast(dlg); + + if (dlg && !task) { + // there is already another task dialog which must be closed first + Gui::Control().showDialog(dlg); + return; + } + + if (!task) { + task = new TaskDlgAttacher(getExtendedViewProvider()); + } + + Gui::Control().showDialog(task); +} + namespace Gui { EXTENSION_PROPERTY_SOURCE_TEMPLATE(PartGui::ViewProviderAttachExtensionPython, PartGui::ViewProviderAttachExtension) diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.h b/src/Mod/Part/Gui/ViewProviderAttachExtension.h index ede18a5ea0..0df1ec2b1d 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.h +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.h @@ -42,7 +42,10 @@ public: virtual QIcon extensionMergeOverlayIcons(const QIcon & orig) const override; virtual void extensionUpdateData(const App::Property*) override; + virtual void extensionSetupContextMenu(QMenu*, QObject*, const char*) override; +private: + void showAttachmentEditor(); }; typedef Gui::ViewProviderExtensionPythonT ViewProviderAttachExtensionPython; diff --git a/src/Mod/Part/Gui/ViewProviderBox.h b/src/Mod/Part/Gui/ViewProviderBox.h index 8d3679d7e0..6ea74f83cb 100644 --- a/src/Mod/Part/Gui/ViewProviderBox.h +++ b/src/Mod/Part/Gui/ViewProviderBox.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERBOX_H #define PARTGUI_VIEWPROVIDERBOX_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderCircleParametric.h b/src/Mod/Part/Gui/ViewProviderCircleParametric.h index 5d63b3ecc6..da4eb5388b 100644 --- a/src/Mod/Part/Gui/ViewProviderCircleParametric.h +++ b/src/Mod/Part/Gui/ViewProviderCircleParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCIRCLEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCIRCLEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderConeParametric.h b/src/Mod/Part/Gui/ViewProviderConeParametric.h index 1df27bd312..230d7b258d 100644 --- a/src/Mod/Part/Gui/ViewProviderConeParametric.h +++ b/src/Mod/Part/Gui/ViewProviderConeParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCONEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCONEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderCylinderParametric.h b/src/Mod/Part/Gui/ViewProviderCylinderParametric.h index 00a1d7cf64..39af793a07 100644 --- a/src/Mod/Part/Gui/ViewProviderCylinderParametric.h +++ b/src/Mod/Part/Gui/ViewProviderCylinderParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERCYLINDERPARAMETRIC_H #define PARTGUI_VIEWPROVIDERCYLINDERPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderEllipseParametric.h b/src/Mod/Part/Gui/ViewProviderEllipseParametric.h index a217bb79c4..8be4d7a183 100644 --- a/src/Mod/Part/Gui/ViewProviderEllipseParametric.h +++ b/src/Mod/Part/Gui/ViewProviderEllipseParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERELLIPSEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERELLIPSEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderHelixParametric.cpp b/src/Mod/Part/Gui/ViewProviderHelixParametric.cpp index 81ba05609f..3f39353cab 100644 --- a/src/Mod/Part/Gui/ViewProviderHelixParametric.cpp +++ b/src/Mod/Part/Gui/ViewProviderHelixParametric.cpp @@ -28,21 +28,18 @@ # include #endif -#include -#include -#include -#include "DlgPrimitives.h" #include "ViewProviderHelixParametric.h" using namespace PartGui; -PROPERTY_SOURCE(PartGui::ViewProviderHelixParametric, PartGui::ViewProviderSpline) +PROPERTY_SOURCE(PartGui::ViewProviderHelixParametric, PartGui::ViewProviderPrimitive) ViewProviderHelixParametric::ViewProviderHelixParametric() { sPixmap = "Part_Helix_Parametric"; + extension.initExtension(this); } ViewProviderHelixParametric::~ViewProviderHelixParametric() @@ -62,46 +59,18 @@ std::vector ViewProviderHelixParametric::getDisplayModes(void) cons void ViewProviderHelixParametric::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit helix"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); - ViewProviderSpline::setupContextMenu(menu, receiver, member); -} - -bool ViewProviderHelixParametric::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - if (Gui::Control().activeDialog()) - return false; - PartGui::TaskPrimitivesEdit* dlg - = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); - Gui::Control().showDialog(dlg); - return true; - } - else { - ViewProviderSpline::setEdit(ModNum); - return true; - } -} - -void ViewProviderHelixParametric::unsetEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - Gui::Control().closeDialog(); - } - else { - ViewProviderSpline::unsetEdit(ModNum); - } + ViewProviderPrimitive::setupContextMenu(menu, receiver, member); } // ------------------------------------------------------------------ -PROPERTY_SOURCE(PartGui::ViewProviderSpiralParametric, PartGui::ViewProviderSpline) +PROPERTY_SOURCE(PartGui::ViewProviderSpiralParametric, PartGui::ViewProviderPrimitive) ViewProviderSpiralParametric::ViewProviderSpiralParametric() { sPixmap = "Part_Spiral_Parametric"; + extension.initExtension(this); } ViewProviderSpiralParametric::~ViewProviderSpiralParametric() @@ -121,34 +90,5 @@ std::vector ViewProviderSpiralParametric::getDisplayModes(void) con void ViewProviderSpiralParametric::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit spiral"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); - ViewProviderSpline::setupContextMenu(menu, receiver, member); -} - -bool ViewProviderSpiralParametric::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - if (Gui::Control().activeDialog()) - return false; - PartGui::TaskPrimitivesEdit* dlg - = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); - Gui::Control().showDialog(dlg); - return true; - } - else { - ViewProviderSpline::setEdit(ModNum); - return true; - } -} - -void ViewProviderSpiralParametric::unsetEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default) { - Gui::Control().closeDialog(); - } - else { - ViewProviderSpline::unsetEdit(ModNum); - } + ViewProviderPrimitive::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/Part/Gui/ViewProviderHelixParametric.h b/src/Mod/Part/Gui/ViewProviderHelixParametric.h index e0476105a1..a7b26b069a 100644 --- a/src/Mod/Part/Gui/ViewProviderHelixParametric.h +++ b/src/Mod/Part/Gui/ViewProviderHelixParametric.h @@ -25,11 +25,12 @@ #define PARTGUI_VIEWPROVIDERHELIXPARAMETRIC_H #include "ViewProviderSpline.h" +#include "ViewProviderPrimitive.h" namespace PartGui { -class PartGuiExport ViewProviderHelixParametric : public ViewProviderSpline +class PartGuiExport ViewProviderHelixParametric : public ViewProviderPrimitive { PROPERTY_HEADER(PartGui::ViewProviderHelixParametric); @@ -41,12 +42,11 @@ public: std::vector getDisplayModes(void) const; void setupContextMenu(QMenu*, QObject*, const char*); -protected: - bool setEdit(int ModNum); - void unsetEdit(int ModNum); +private: + ViewProviderSplineExtension extension; }; -class PartGuiExport ViewProviderSpiralParametric : public ViewProviderSpline +class PartGuiExport ViewProviderSpiralParametric : public ViewProviderPrimitive { PROPERTY_HEADER(PartGui::ViewProviderSpiralParametric); @@ -58,9 +58,8 @@ public: std::vector getDisplayModes(void) const; void setupContextMenu(QMenu*, QObject*, const char*); -protected: - bool setEdit(int ModNum); - void unsetEdit(int ModNum); +private: + ViewProviderSplineExtension extension; }; } // namespace PartGui diff --git a/src/Mod/Part/Gui/ViewProviderLineParametric.h b/src/Mod/Part/Gui/ViewProviderLineParametric.h index c7ff10224e..aa4ea4d244 100644 --- a/src/Mod/Part/Gui/ViewProviderLineParametric.h +++ b/src/Mod/Part/Gui/ViewProviderLineParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERLINEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERLINEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderMirror.cpp b/src/Mod/Part/Gui/ViewProviderMirror.cpp index 45c1bfee9c..d0e42fddce 100644 --- a/src/Mod/Part/Gui/ViewProviderMirror.cpp +++ b/src/Mod/Part/Gui/ViewProviderMirror.cpp @@ -196,7 +196,7 @@ bool ViewProviderMirror::onDelete(const std::vector &) void ViewProviderMirror::dragStartCallback(void *, SoDragger *) { // This is called when a manipulator is about to manipulating - Gui::Application::Instance->activeDocument()->openCommand("Edit Mirror"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Edit Mirror")); } void ViewProviderMirror::dragFinishCallback(void *, SoDragger *) diff --git a/src/Mod/Part/Gui/ViewProviderPlaneParametric.h b/src/Mod/Part/Gui/ViewProviderPlaneParametric.h index 515779d826..20423224f0 100644 --- a/src/Mod/Part/Gui/ViewProviderPlaneParametric.h +++ b/src/Mod/Part/Gui/ViewProviderPlaneParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPLANEPARAMETRIC_H #define PARTGUI_VIEWPROVIDERPLANEPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderPointParametric.h b/src/Mod/Part/Gui/ViewProviderPointParametric.h index 7f42462608..443a08cfee 100644 --- a/src/Mod/Part/Gui/ViewProviderPointParametric.h +++ b/src/Mod/Part/Gui/ViewProviderPointParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPOINTPARAMETRIC_H #define PARTGUI_VIEWPROVIDERPOINTPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp new file mode 100644 index 0000000000..4057f190ee --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp @@ -0,0 +1,108 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * 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 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ViewProviderPrimitive.h" +#include "DlgPrimitives.h" + + +using namespace PartGui; + + +PROPERTY_SOURCE(PartGui::ViewProviderPrimitive, PartGui::ViewProviderPart) + +ViewProviderPrimitive::ViewProviderPrimitive() +{ + extension.initExtension(this); + extension.setIgnoreOverlayIcon(true); +} + +ViewProviderPrimitive::~ViewProviderPrimitive() +{ + +} + +void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) +{ + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); + act->setData(QVariant((int)ViewProvider::Default)); + func->trigger(act, boost::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); + + ViewProviderPart::setupContextMenu(menu, receiver, member); +} + +void ViewProviderPrimitive::startDefaultEditMode() +{ + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); + + Gui::Document* document = this->getDocument(); + if (document) { + document->setEdit(this, ViewProvider::Default); + } +} + +bool ViewProviderPrimitive::setEdit(int ModNum) +{ + if (ModNum == ViewProvider::Default) { + if (Gui::Control().activeDialog()) + return false; + PartGui::TaskPrimitivesEdit* dlg + = new PartGui::TaskPrimitivesEdit(dynamic_cast(getObject())); + Gui::Control().showDialog(dlg); + return true; + } + else { + ViewProviderPart::setEdit(ModNum); + return true; + } +} + +void ViewProviderPrimitive::unsetEdit(int ModNum) +{ + if (ModNum == ViewProvider::Default) { + Gui::Control().closeDialog(); + } + else { + ViewProviderPart::unsetEdit(ModNum); + } +} diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.h b/src/Mod/Part/Gui/ViewProviderPrimitive.h new file mode 100644 index 0000000000..65e0f5a5b8 --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.h @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2020 Werner Mayer * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef PARTGUI_VIEWPROVIDERPRIMITIVE_H +#define PARTGUI_VIEWPROVIDERPRIMITIVE_H + +#include +#include + + +namespace PartGui { + +class PartGuiExport ViewProviderPrimitive : public ViewProviderPart +{ + PROPERTY_HEADER(PartGui::ViewProviderPrimitive); + +public: + /// constructor + ViewProviderPrimitive(); + /// destructor + virtual ~ViewProviderPrimitive(); + + void setupContextMenu(QMenu*, QObject*, const char*); + +protected: + bool setEdit(int ModNum); + void unsetEdit(int ModNum); + +private: + void startDefaultEditMode(); + +private: + ViewProviderAttachExtension extension; +}; + +} // namespace PartGui + + +#endif // PARTGUI_VIEWPROVIDERPRIMITIVE_H + diff --git a/src/Mod/Part/Gui/ViewProviderPrism.h b/src/Mod/Part/Gui/ViewProviderPrism.h index ee61da7825..8c2c233cf1 100644 --- a/src/Mod/Part/Gui/ViewProviderPrism.h +++ b/src/Mod/Part/Gui/ViewProviderPrism.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERPRISM_H #define PARTGUI_VIEWPROVIDERPRISM_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderRegularPolygon.h b/src/Mod/Part/Gui/ViewProviderRegularPolygon.h index 00610c0d34..63f7dddbb5 100644 --- a/src/Mod/Part/Gui/ViewProviderRegularPolygon.h +++ b/src/Mod/Part/Gui/ViewProviderRegularPolygon.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERREGULARPOLYGON_H #define PARTGUI_VIEWPROVIDERREGULARPOLYGON_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderSphereParametric.h b/src/Mod/Part/Gui/ViewProviderSphereParametric.h index c94394c00a..d677739b48 100644 --- a/src/Mod/Part/Gui/ViewProviderSphereParametric.h +++ b/src/Mod/Part/Gui/ViewProviderSphereParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERSPHEREPARAMETRIC_H #define PARTGUI_VIEWPROVIDERSPHEREPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" namespace PartGui { diff --git a/src/Mod/Part/Gui/ViewProviderSpline.cpp b/src/Mod/Part/Gui/ViewProviderSpline.cpp index d856f2c0c4..e9d1ce23c4 100644 --- a/src/Mod/Part/Gui/ViewProviderSpline.cpp +++ b/src/Mod/Part/Gui/ViewProviderSpline.cpp @@ -168,7 +168,12 @@ void ViewProviderSpline::showControlPointsOfEdge(const TopoDS_Edge& edge) { std::list poles, knots; Standard_Integer nCt=0; - BRepAdaptor_Curve curve(edge); + + TopoDS_Edge edge_loc(edge); + TopLoc_Location aLoc; + edge_loc.Location(aLoc); + + BRepAdaptor_Curve curve(edge_loc); switch (curve.GetType()) { case GeomAbs_BezierCurve: @@ -232,10 +237,13 @@ void ViewProviderSpline::showControlPointsOfFace(const TopoDS_Face& face) std::list knots; std::vector > poles; Standard_Integer nCtU=0, nCtV=0; - BRepAdaptor_Surface surface(face); - BRepAdaptor_Surface clSurface(face); - switch (clSurface.GetType()) + TopoDS_Face face_loc(face); + TopLoc_Location aLoc; + face_loc.Location(aLoc); + + BRepAdaptor_Surface surface(face_loc); + switch (surface.GetType()) { case GeomAbs_BezierSurface: { @@ -306,3 +314,258 @@ void ViewProviderSpline::showControlPointsOfFace(const TopoDS_Face& face) pcControlPoints->addChild(nodes); } + +// ---------------------------------------------------------------------------- + +EXTENSION_PROPERTY_SOURCE(PartGui::ViewProviderSplineExtension, Gui::ViewProviderExtension) + + +ViewProviderSplineExtension::ViewProviderSplineExtension() + : pcControlPoints(nullptr) +{ + initExtensionType(ViewProviderSplineExtension::getExtensionClassTypeId()); + EXTENSION_ADD_PROPERTY(ControlPoints,(false)); +} + +void ViewProviderSplineExtension::toggleControlPoints(bool on) +{ + ControlPoints.setValue(on); +} + +void ViewProviderSplineExtension::extensionSetupContextMenu(QMenu* menu, QObject*, const char*) +{ + // toggle command to display components + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Show control points")); + act->setCheckable(true); + act->setChecked(ControlPoints.getValue()); + func->toggle(act, boost::bind(&ViewProviderSplineExtension::toggleControlPoints, this, bp::_1)); +} + +void ViewProviderSplineExtension::extensionUpdateData(const App::Property* prop) +{ + Gui::ViewProviderExtension::extensionUpdateData(prop); + if (prop->getTypeId() == Part::PropertyPartShape::getClassTypeId() && strcmp(prop->getName(), "Shape") == 0) { + // update control points if there + if (pcControlPoints) { + Gui::coinRemoveAllChildren(pcControlPoints); + showControlPoints(this->ControlPoints.getValue(), prop); + } + } +} + +void ViewProviderSplineExtension::extensionOnChanged(const App::Property* prop) +{ + if (prop == &ControlPoints) { + App::DocumentObject* obj = getExtendedViewProvider()->getObject(); + App::Property* shape = obj->getPropertyByName("Shape"); + showControlPoints(ControlPoints.getValue(), shape); + } + else { + Gui::ViewProviderExtension::extensionOnChanged(prop); + } +} + +void ViewProviderSplineExtension::showControlPoints(bool show, const App::Property* prop) +{ + if (!pcControlPoints && show) { + pcControlPoints = new SoSwitch(); + SoSeparator* root = getExtendedViewProvider()->getRoot(); + root->addChild(pcControlPoints); + } + + if (pcControlPoints) { + pcControlPoints->whichChild = (show ? SO_SWITCH_ALL : SO_SWITCH_NONE); + } + + if (!show || !pcControlPoints || pcControlPoints->getNumChildren() > 0) + return; + + // ask for the property we are interested in + if (prop && prop->getTypeId() == Part::PropertyPartShape::getClassTypeId()) { + const TopoDS_Shape& shape = static_cast(prop)->getValue(); + if (shape.IsNull()) + return; // empty shape + + for (TopExp_Explorer xp(shape, TopAbs_SHELL); xp.More(); xp.Next()) { + const TopoDS_Shell& shell = TopoDS::Shell(xp.Current()); + for (TopExp_Explorer xp2(shell, TopAbs_FACE); xp2.More(); xp2.Next()) { + const TopoDS_Face& face = TopoDS::Face(xp2.Current()); + showControlPointsOfFace(face); + } + } + for (TopExp_Explorer xp(shape, TopAbs_FACE, TopAbs_SHELL); xp.More(); xp.Next()) { + const TopoDS_Face& face = TopoDS::Face(xp.Current()); + showControlPointsOfFace(face); + } + for (TopExp_Explorer xp(shape, TopAbs_WIRE, TopAbs_FACE); xp.More(); xp.Next()) { + const TopoDS_Wire& wire = TopoDS::Wire(xp.Current()); + for (TopExp_Explorer xp2(wire, TopAbs_EDGE); xp2.More(); xp2.Next()) { + const TopoDS_Edge& edge = TopoDS::Edge(xp2.Current()); + showControlPointsOfEdge(edge); + } + } + for (TopExp_Explorer xp(shape, TopAbs_EDGE, TopAbs_WIRE); xp.More(); xp.Next()) { + const TopoDS_Edge& edge = TopoDS::Edge(xp.Current()); + showControlPointsOfEdge(edge); + } + } +} + +void ViewProviderSplineExtension::showControlPointsOfEdge(const TopoDS_Edge& edge) +{ + std::list poles, knots; + Standard_Integer nCt=0; + + TopoDS_Edge edge_loc(edge); + TopLoc_Location aLoc; + edge_loc.Location(aLoc); + + BRepAdaptor_Curve curve(edge_loc); + switch (curve.GetType()) + { + case GeomAbs_BezierCurve: + { + Handle(Geom_BezierCurve) hBezier = curve.Bezier(); + nCt = hBezier->NbPoles(); + for (Standard_Integer i = 1; i <= nCt; i++) + poles.push_back(hBezier->Pole(i)); + if (hBezier->IsClosed()) { + nCt++; + poles.push_back(hBezier->Pole(1)); + } + } break; + case GeomAbs_BSplineCurve: + { + Handle(Geom_BSplineCurve) hBSpline = curve.BSpline(); + nCt = hBSpline->NbPoles(); + for (Standard_Integer i = 1; i <= nCt; i++) + poles.push_back(hBSpline->Pole(i)); + if (hBSpline->IsClosed()) { + nCt++; + poles.push_back(hBSpline->Pole(1)); + } + for (Standard_Integer i = hBSpline->FirstUKnotIndex()+1; i <= hBSpline->LastUKnotIndex()-1; i++) + knots.push_back(hBSpline->Value(hBSpline->Knot(i))); + } break; + default: + break; + } + + if (poles.empty()) + return; // nothing to do + + SoCoordinate3 * controlcoords = new SoCoordinate3; + controlcoords->point.setNum(nCt + knots.size()); + + int index=0; + SbVec3f* verts = controlcoords->point.startEditing(); + for (std::list::iterator p = poles.begin(); p != poles.end(); ++p) { + verts[index++].setValue((float)p->X(), (float)p->Y(), (float)p->Z()); + } + for (std::list::iterator k = knots.begin(); k != knots.end(); ++k) { + verts[index++].setValue((float)k->X(), (float)k->Y(), (float)k->Z()); + } + controlcoords->point.finishEditing(); + + + SoFCControlPoints* controlpoints = new SoFCControlPoints(); + controlpoints->numPolesU = nCt; + controlpoints->numPolesV = 1; + + SoSeparator* nodes = new SoSeparator(); + nodes->addChild(controlcoords); + nodes->addChild(controlpoints); + + pcControlPoints->addChild(nodes); +} + +void ViewProviderSplineExtension::showControlPointsOfFace(const TopoDS_Face& face) +{ + std::list knots; + std::vector > poles; + Standard_Integer nCtU=0, nCtV=0; + + TopoDS_Face face_loc(face); + TopLoc_Location aLoc; + face_loc.Location(aLoc); + + BRepAdaptor_Surface surface(face_loc); + switch (surface.GetType()) + { + case GeomAbs_BezierSurface: + { + Handle(Geom_BezierSurface) hBezier = surface.Bezier(); + nCtU = hBezier->NbUPoles(); + nCtV = hBezier->NbVPoles(); + poles.resize(nCtU); + for (Standard_Integer u = 1; u <= nCtU; u++) { + poles[u-1].resize(nCtV); + for (Standard_Integer v = 1; v <= nCtV; v++) + poles[u-1][v-1] = hBezier->Pole(u, v); + } + } break; + case GeomAbs_BSplineSurface: + { + Handle(Geom_BSplineSurface) hBSpline = surface.BSpline(); + nCtU = hBSpline->NbUPoles(); + nCtV = hBSpline->NbVPoles(); + poles.resize(nCtU); + for (Standard_Integer u = 1; u <= nCtU; u++) { + poles[u-1].resize(nCtV); + for (Standard_Integer v = 1; v <= nCtV; v++) + poles[u-1][v-1] = hBSpline->Pole(u, v); + } + + //Standard_Integer nKnU = hBSpline->NbUKnots(); + //Standard_Integer nKnV = hBSpline->NbVKnots(); + for (Standard_Integer u = 1; u <= hBSpline->NbUKnots(); u++) { + for (Standard_Integer v = 1; v <= hBSpline->NbVKnots(); v++) + knots.push_back(hBSpline->Value(hBSpline->UKnot(u), hBSpline->VKnot(v))); + } + } break; + default: + break; + } + + if (poles.empty()) + return; // nothing to do + + SoCoordinate3 * coords = new SoCoordinate3; + coords->point.setNum(nCtU * nCtV + knots.size()); + + int index=0; + SbVec3f* verts = coords->point.startEditing(); + for (std::vector >::iterator u = poles.begin(); u != poles.end(); ++u) { + for (std::vector::iterator v = u->begin(); v != u->end(); ++v) { + verts[index++].setValue((float)v->X(), (float)v->Y(), (float)v->Z()); + } + } + for (std::list::iterator k = knots.begin(); k != knots.end(); ++k) { + verts[index++].setValue((float)k->X(), (float)k->Y(), (float)k->Z()); + } + coords->point.finishEditing(); + + + SoFCControlPoints* control = new SoFCControlPoints(); + control->numPolesU = nCtU; + control->numPolesV = nCtV; + + //if (knots.size() > 0) { + // control->numKnotsU = nKnU; + // control->numKnotsV = nKnV; + //} + + SoSeparator* nodes = new SoSeparator(); + nodes->addChild(coords); + nodes->addChild(control); + + pcControlPoints->addChild(nodes); +} + +namespace Gui { + EXTENSION_PROPERTY_SOURCE_TEMPLATE(PartGui::ViewProviderSplineExtensionPython, PartGui::ViewProviderSplineExtension) + +// explicit template instantiation + template class PartGuiExport ViewProviderExtensionPythonT; +} diff --git a/src/Mod/Part/Gui/ViewProviderSpline.h b/src/Mod/Part/Gui/ViewProviderSpline.h index 8ba3ccb70c..6861a2cdfe 100644 --- a/src/Mod/Part/Gui/ViewProviderSpline.h +++ b/src/Mod/Part/Gui/ViewProviderSpline.h @@ -24,6 +24,7 @@ #define PARTGUI_VIEWPROVIDERPARTSPLINE_H #include "ViewProviderExt.h" +#include namespace PartGui { @@ -55,6 +56,32 @@ protected: SoSwitch *pcControlPoints; }; +class PartGuiExport ViewProviderSplineExtension : public Gui::ViewProviderExtension +{ + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(PartGui::ViewProviderSplineExtension); + +public: + /// Constructor + ViewProviderSplineExtension(void); + virtual ~ViewProviderSplineExtension() = default; + + App::PropertyBool ControlPoints; + + virtual void extensionUpdateData(const App::Property*) override; + virtual void extensionSetupContextMenu(QMenu*, QObject*, const char*) override; + +protected: + virtual void extensionOnChanged(const App::Property* p) override; + void toggleControlPoints(bool); + void showControlPoints(bool, const App::Property* prop); + void showControlPointsOfEdge(const TopoDS_Edge&); + void showControlPointsOfFace(const TopoDS_Face&); + + SoSwitch *pcControlPoints; +}; + +typedef Gui::ViewProviderExtensionPythonT ViewProviderSplineExtensionPython; + } //namespace PartGui diff --git a/src/Mod/Part/Gui/ViewProviderTorusParametric.h b/src/Mod/Part/Gui/ViewProviderTorusParametric.h index 79cb84d05d..a36f8a5f55 100644 --- a/src/Mod/Part/Gui/ViewProviderTorusParametric.h +++ b/src/Mod/Part/Gui/ViewProviderTorusParametric.h @@ -24,7 +24,7 @@ #ifndef PARTGUI_VIEWPROVIDERTORUSPARAMETRIC_H #define PARTGUI_VIEWPROVIDERTORUSPARAMETRIC_H -#include "ViewProvider.h" +#include "ViewProviderPrimitive.h" class TopoDS_Shape; diff --git a/src/Mod/Part/InitGui.py b/src/Mod/Part/InitGui.py index 866f1fdf12..5e3fecaea6 100644 --- a/src/Mod/Part/InitGui.py +++ b/src/Mod/Part/InitGui.py @@ -43,7 +43,7 @@ class PartWorkbench(Gui.Workbench): import PartGui try: - import BasicShapes.Shapes + import BasicShapes.CommandShapes except ImportError as err: App.Console.PrintError("'BasicShapes' package cannot be loaded. " "{err}\n".format(err=str(err))) diff --git a/src/Mod/Part/part.dox b/src/Mod/Part/part.dox index 85df47ad0a..cafa3ef8b9 100644 --- a/src/Mod/Part/part.dox +++ b/src/Mod/Part/part.dox @@ -1,5 +1,8 @@ /** \defgroup PART Part - * \ingroup CWORKBENCHES + * \ingroup CWORKBENCHES * \brief Main anchor point with OpenCasCade functionality, base geometry tools - */ + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + +*/ diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index b1494cb10d..383a15021f 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -71,7 +71,7 @@ namespace PartDesign { const char* Hole::DepthTypeEnums[] = { "Dimension", "ThroughAll", /*, "UpToFirst", */ NULL }; const char* Hole::ThreadTypeEnums[] = { "None", "ISOMetricProfile", "ISOMetricFineProfile", "UNC", "UNF", "UNEF", NULL}; -const char* Hole::ThreadFitEnums[] = { "Standard", "Close", NULL}; +const char* Hole::ThreadFitEnums[] = { "Standard", "Close", "Wide", NULL}; const char* Hole::DrillPointEnums[] = { "Flat", "Angled", NULL}; /* "None" profile */ @@ -90,293 +90,386 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { /* None */ { - { "---", 6.0, 0.0 }, + { "---", 6.0, 0.0, 0.0 }, }, - /* ISO metric coarse */ + /* ISO metric regular */ + /* ISO metric threaded core hole diameters according to ISO 2306 */ + // {name, thread diameter, thread pitch, core hole diameter} { - { "M1.6", 1.60, 0.35 }, - { "M2", 2.00, 0.40 }, - { "M2.5", 2.50, 0.45 }, - { "M3", 3.00, 0.50 }, - { "M3.5", 3.50, 0.60 }, - { "M4", 4.00, 0.70 }, - { "M5", 5.00, 0.80 }, - { "M6", 6.00, 1.00 }, - { "M8", 8.00, 1.25 }, - { "M10", 10.00, 1.50 }, - { "M12", 12.00, 1.75 }, - { "M14", 14.00, 2.00 }, - { "M16", 16.00, 2.00 }, - { "M20", 20.00, 2.50 }, - { "M22", 22.00, 2.50 }, - { "M24", 24.00, 3.00 }, - { "M27", 27.00, 3.00 }, - { "M30", 30.00, 3.50 }, - { "M36", 36.00, 4.00 }, - { "M42", 42.00, 4.50 }, - { "M48", 48.00, 5.00 }, - { "M56", 56.00, 5.50 }, - { "M64", 64.00, 6.00 }, - { "M68", 68.00, 6.00 }, + { "M1", 1.0, 0.25, 0.75 }, + { "M1.1", 1.1, 0.25, 0.85 }, + { "M1.2", 1.2, 0.25, 0.95 }, + { "M1.4", 1.4, 0.30, 1.10 }, + { "M1.6", 1.6, 0.35, 1.25 }, + { "M1.8", 1.8, 0.35, 1.45 }, + { "M2", 2.0, 0.40, 1.60 }, + { "M2.2", 2.2, 0.45, 1.75 }, + { "M2.5", 2.5, 0.45, 2.05 }, + { "M3", 3.0, 0.50, 2.50 }, + { "M3.5", 3.5, 0.60, 2.90 }, + { "M4", 4.0, 0.70, 3.30 }, + { "M4.5", 4.5, 0.75, 3.70 }, + { "M5", 5.0, 0.80, 4.20 }, + { "M6", 6.0, 1.00, 5.00 }, + { "M7", 7.0, 1.00, 6.00 }, + { "M8", 8.0, 1.25, 6.80 }, + { "M9", 9.0, 1.25, 7.80 }, + { "M10", 10.0, 1.50, 8.50 }, + { "M11", 11.0, 1.50, 9.50 }, + { "M12", 12.0, 1.75, 10.20 }, + { "M14", 14.0, 2.00, 12.00 }, + { "M16", 16.0, 2.00, 14.00 }, + { "M18", 18.0, 2.50, 15.50 }, + { "M20", 20.0, 2.50, 17.50 }, + { "M22", 22.0, 2.50, 19.50 }, + { "M24", 24.0, 3.00, 21.00 }, + { "M27", 27.0, 3.00, 24.00 }, + { "M30", 30.0, 3.50, 26.50 }, + { "M33", 33.0, 3.50, 29.50 }, + { "M36", 36.0, 4.00, 32.00 }, + { "M39", 39.0, 4.00, 35.00 }, + { "M42", 42.0, 4.50, 37.50 }, + { "M45", 45.0, 4.50, 40.50 }, + { "M48", 48.0, 5.00, 43.00 }, + { "M52", 52.0, 5.00, 47.00 }, + { "M56", 56.0, 5.50, 50.50 }, + { "M60", 60.0, 5.50, 54.50 }, + { "M64", 64.0, 6.00, 58.00 }, + { "M68", 68.0, 6.00, 62.00 }, }, - /* ISO metric fine */ + /* ISO metric fine (core hole entry is calculated exactly by diameter - pitch) */ { - { "M1.0x0.2", 1.0, 0.20 }, - { "M1.1x0.2", 1.1, 0.20 }, - { "M1.2x0.2", 1.2, 0.20 }, - { "M1.4x0.2", 1.4, 0.20 }, - { "M1.6x0.2", 1.6, 0.20 }, - { "M1.8x0.2", 1.8, 0.20 }, - { "M2x0.25", 2.0, 0.25 }, - { "M2.2x0.25", 2.2, 0.25 }, - { "M2.5x0.35", 2.5, 0.35 }, - { "M3x0.35", 3.0, 0.35 }, - { "M3.5x0.35", 3.5, 0.35 }, - { "M4x0.5", 4.0, 0.50 }, - { "M4.5x0.5", 4.5, 0.50 }, - { "M5x0.5", 5.0, 0.50 }, - { "M5.5x0.5", 5.5, 0.50 }, - { "M6x0.75", 6.0, 0.75 }, - { "M7x0.75", 7.0, 0.75 }, - { "M8x0.75", 8.0, 0.75 }, - { "M8x1.0", 8.0, 1.00 }, - { "M9x0.75", 9.0, 0.75 }, - { "M9x1", 9.0, 1.00 }, - { "M10x0.75", 10.0, 0.75 }, - { "M10x1", 10.0, 1.00 }, - { "M10x1.25", 10.0, 1.25 }, - { "M11x0.75", 11.0, 0.75 }, - { "M11x1", 11.0, 1.00 }, - { "M12x1", 12.0, 1.00 }, - { "M12x1.25", 12.0, 1.25 }, - { "M12x1.5", 12.0, 1.50 }, - { "M14x1.0", 14.0, 1.00 }, - { "M14x1.25", 14.0, 1.25 }, - { "M14x1.5", 14.0, 1.50 }, - { "M15x1", 15.0, 1.00 }, - { "M15x1.5", 15.0, 1.50 }, - { "M16x1", 16.0, 1.00 }, - { "M16x1.5", 16.0, 1.50 }, - { "M17x1.0", 17.0, 1.00 }, - { "M17x1.5", 17.0, 1.50 }, - { "M18x1.0", 18.0, 1.00 }, - { "M18x1.5", 18.0, 1.50 }, - { "M18x2.0", 18.0, 2.00 }, - { "M20x1.0", 20.0, 1.00 }, - { "M20x1.5", 20.0, 1.50 }, - { "M20x2.0", 20.0, 2.00 }, - { "M22x1.0", 22.0, 1.00 }, - { "M22x1.5", 22.0, 1.50 }, - { "M22x2.0", 22.0, 2.00 }, - { "M24x1.0", 24.0, 1.00 }, - { "M24x1.5", 24.0, 1.50 }, - { "M24x2.0", 24.0, 2.00 }, - { "M25x1.0", 25.0, 1.00 }, - { "M25x1.5", 25.0, 1.50 }, - { "M25x2.0", 25.0, 2.00 }, - { "M27x1.0", 27.0, 1.00 }, - { "M27x1.5", 27.0, 1.50 }, - { "M27x2.0", 27.0, 2.00 }, - { "M28x1.0", 28.0, 1.00 }, - { "M28x1.5", 28.0, 1.50 }, - { "M28x2.0", 28.0, 2.00 }, - { "M30x1.0", 30.0, 1.00 }, - { "M30x1.5", 30.0, 1.50 }, - { "M30x2.0", 30.0, 2.00 }, - { "M30x3.0", 30.0, 3.00 }, - { "M32x1.5", 32.0, 1.50 }, - { "M32x2.0", 32.0, 2.00 }, - { "M33x1.5", 33.0, 1.50 }, - { "M33x2.0", 33.0, 2.00 }, - { "M33x3.0", 33.0, 3.00 }, - { "M35x1.5", 35.0, 1.50 }, - { "M35x2.0", 35.0, 2.00 }, - { "M36x1.5", 36.0, 1.50 }, - { "M36x2.0", 36.0, 2.00 }, - { "M36x3.0", 36.0, 3.00 }, - { "M39x1.5", 39.0, 1.50 }, - { "M39x2.0", 39.0, 2.00 }, - { "M39x3.0", 39.0, 3.00 }, - { "M40x1.5", 40.0, 1.50 }, - { "M40x2.0", 40.0, 2.00 }, - { "M40x3.0", 40.0, 3.00 }, - { "M42x1.5", 42.0, 1.50 }, - { "M42x2.0", 42.0, 2.00 }, - { "M42x3.0", 42.0, 3.00 }, - { "M42x4.0", 42.0, 4.00 }, - { "M45x1.5", 45.0, 1.50 }, - { "M45x2.0", 45.0, 2.00 }, - { "M45x3.0", 45.0, 3.00 }, - { "M45x4.0", 45.0, 4.00 }, - { "M48x1.5", 48.0, 1.50 }, - { "M48x2.0", 48.0, 2.00 }, - { "M48x3.0", 48.0, 3.00 }, - { "M48x4.0", 48.0, 4.00 }, - { "M50x1.5", 50.0, 1.50 }, - { "M50x2.0", 50.0, 2.00 }, - { "M50x3.0", 50.0, 3.00 }, - { "M52x1.5", 52.0, 1.50 }, - { "M52x2.0", 52.0, 2.00 }, - { "M52x3.0", 52.0, 3.00 }, - { "M52x4.0", 52.0, 4.00 }, - { "M55x1.5", 55.0, 1.50 }, - { "M55x2.0", 55.0, 2.00 }, - { "M55x3.0", 55.0, 3.00 }, - { "M55x4.0", 55.0, 4.00 }, - { "M56x1.5", 56.0, 1.50 }, - { "M56x2.0", 56.0, 2.00 }, - { "M56x3.0", 56.0, 3.00 }, - { "M56x4.0", 56.0, 4.00 }, - { "M58x1.5", 58.0, 1.50 }, - { "M58x2.0", 58.0, 2.00 }, - { "M58x3.0", 58.0, 3.00 }, - { "M58x4.0", 58.0, 4.00 }, - { "M60x1.5", 60.0, 1.50 }, - { "M60x2.0", 60.0, 2.00 }, - { "M60x3.0", 60.0, 3.00 }, - { "M60x4.0", 60.0, 4.00 }, - { "M62x1.5", 62.0, 1.50 }, - { "M62x2.0", 62.0, 2.00 }, - { "M62x3.0", 62.0, 3.00 }, - { "M62x4.0", 62.0, 4.00 }, - { "M64x1.5", 64.0, 1.50 }, - { "M64x2.0", 64.0, 2.00 }, - { "M64x3.0", 64.0, 3.00 }, - { "M64x4.0", 64.0, 4.00 }, - { "M65x1.5", 65.0, 1.50 }, - { "M65x2.0", 65.0, 2.00 }, - { "M65x3.0", 65.0, 3.00 }, - { "M65x4.0", 65.0, 4.00 }, - { "M68x1.5", 68.0, 1.50 }, - { "M68x2.0", 68.0, 2.00 }, - { "M68x3.0", 68.0, 3.00 }, - { "M68x4.0", 68.0, 4.00 }, - { "M70x1.5", 70.0, 1.50 }, - { "M70x2.0", 70.0, 2.00 }, - { "M70x3.0", 70.0, 3.00 }, - { "M70x4.0", 70.0, 4.00 }, - { "M70x6.0", 70.0, 6.00 }, - { "M72x1.5", 72.0, 1.50 }, - { "M72x2.0", 72.0, 2.00 }, - { "M72x3.0", 72.0, 3.00 }, - { "M72x4.0", 72.0, 4.00 }, - { "M72x6.0", 72.0, 6.00 }, - { "M75x1.5", 75.0, 1.50 }, - { "M75x2.0", 75.0, 2.00 }, - { "M75x3.0", 75.0, 3.00 }, - { "M75x4.0", 75.0, 4.00 }, - { "M75x6.0", 75.0, 6.00 }, - { "M76x1.5", 76.0, 1.50 }, - { "M76x2.0", 76.0, 2.00 }, - { "M76x3.0", 76.0, 3.00 }, - { "M76x4.0", 76.0, 4.00 }, - { "M76x6.0", 76.0, 6.00 }, - { "M80x1.5", 80.0, 1.50 }, - { "M80x2.0", 80.0, 2.00 }, - { "M80x3.0", 80.0, 3.00 }, - { "M80x4.0", 80.0, 4.00 }, - { "M80x6.0", 80.0, 6.00 }, - { "M85x2.0", 85.0, 2.00 }, - { "M85x3.0", 85.0, 3.00 }, - { "M85x4.0", 85.0, 4.00 }, - { "M85x6.0", 85.0, 6.00 }, - { "M90x2.0", 90.0, 2.00 }, - { "M90x3.0", 90.0, 3.00 }, - { "M90x4.0", 90.0, 4.00 }, - { "M90x6.0", 90.0, 6.00 }, - { "M95x2.0", 95.0, 2.00 }, - { "M95x3.0", 95.0, 3.00 }, - { "M95x4.0", 95.0, 4.00 }, - { "M95x6.0", 95.0, 6.00 }, - { "M100x2.0", 100.0, 2.00 }, - { "M100x3.0", 100.0, 3.00 }, - { "M100x4.0", 100.0, 4.00 }, - { "M100x6.0", 100.0, 6.00 } + { "M1x0.2", 1.0, 0.20, 0.80 }, + { "M1.1x0.2", 1.1, 0.20, 0.90 }, + { "M1.2x0.2", 1.2, 0.20, 1.00 }, + { "M1.4x0.2", 1.4, 0.20, 1.20 }, + { "M1.6x0.2", 1.6, 0.20, 1.40 }, + { "M1.8x0.2", 1.8, 0.20, 1.60 }, + { "M2x0.25", 2.0, 0.25, 1.75 }, + { "M2.2x0.25", 2.2, 0.25, 1.95 }, + { "M2.5x0.35", 2.5, 0.35, 2.15 }, + { "M3x0.35", 3.0, 0.35, 2.65 }, + { "M3.5x0.35", 3.5, 0.35, 3.15 }, + { "M4x0.5", 4.0, 0.50, 3.50 }, + { "M4.5x0.5", 4.5, 0.50, 4.00 }, + { "M5x0.5", 5.0, 0.50, 4.50 }, + { "M5.5x0.5", 5.5, 0.50, 5.00 }, + { "M6x0.75", 6.0, 0.75, 5.25 }, + { "M7x0.75", 7.0, 0.75, 6.25 }, + { "M8x0.75", 8.0, 0.75, 7.25 }, + { "M8x1.0", 8.0, 1.00, 7.00 }, + { "M9x0.75", 9.0, 0.75, 8.25 }, + { "M9x1.0", 9.0, 1.00, 8.00 }, + { "M10x0.75", 10.0, 0.75, 9.25 }, + { "M10x1.0", 10.0, 1.00, 9.00 }, + { "M10x1.25", 10.0, 1.25, 8.75 }, + { "M11x0.75", 11.0, 0.75, 10.25 }, + { "M11x1.0", 11.0, 1.00, 10.00 }, + { "M12x1.0", 12.0, 1.00, 11.00 }, + { "M12x1.25", 12.0, 1.25, 10.75 }, + { "M12x1.5", 12.0, 1.50, 10.50 }, + { "M14x1.0", 14.0, 1.00, 13.00 }, + { "M14x1.25", 14.0, 1.25, 12.75 }, + { "M14x1.5", 14.0, 1.50, 12.50 }, + { "M15x1.0", 15.0, 1.00, 14.00 }, + { "M15x1.5", 15.0, 1.50, 13.50 }, + { "M16x1.0", 16.0, 1.00, 15.00 }, + { "M16x1.5", 16.0, 1.50, 14.50 }, + { "M17x1.0", 17.0, 1.00, 16.00 }, + { "M17x1.5", 17.0, 1.50, 15.50 }, + { "M18x1.0", 18.0, 1.00, 17.00 }, + { "M18x1.5", 18.0, 1.50, 16.50 }, + { "M18x2.0", 18.0, 2.00, 16.00 }, + { "M20x1.0", 20.0, 1.00, 19.00 }, + { "M20x1.5", 20.0, 1.50, 18.50 }, + { "M20x2.0", 20.0, 2.00, 18.00 }, + { "M22x1.0", 22.0, 1.00, 21.00 }, + { "M22x1.5", 22.0, 1.50, 20.50 }, + { "M22x2.0", 22.0, 2.00, 20.00 }, + { "M24x1.0", 24.0, 1.00, 23.00 }, + { "M24x1.5", 24.0, 1.50, 22.50 }, + { "M24x2.0", 24.0, 2.00, 22.00 }, + { "M25x1.0", 25.0, 1.00, 24.00 }, + { "M25x1.5", 25.0, 1.50, 23.50 }, + { "M25x2.0", 25.0, 2.00, 23.00 }, + { "M27x1.0", 27.0, 1.00, 26.00 }, + { "M27x1.5", 27.0, 1.50, 25.50 }, + { "M27x2.0", 27.0, 2.00, 25.00 }, + { "M28x1.0", 28.0, 1.00, 27.00 }, + { "M28x1.5", 28.0, 1.50, 26.50 }, + { "M28x2.0", 28.0, 2.00, 26.00 }, + { "M30x1.0", 30.0, 1.00, 29.00 }, + { "M30x1.5", 30.0, 1.50, 28.50 }, + { "M30x2.0", 30.0, 2.00, 28.00 }, + { "M30x3.0", 30.0, 3.00, 27.00 }, + { "M32x1.5", 32.0, 1.50, 30.50 }, + { "M32x2.0", 32.0, 2.00, 30.00 }, + { "M33x1.5", 33.0, 1.50, 31.50 }, + { "M33x2.0", 33.0, 2.00, 31.00 }, + { "M33x3.0", 33.0, 3.00, 30.00 }, + { "M35x1.5", 35.0, 1.50, 33.50 }, + { "M35x2.0", 35.0, 2.00, 33.00 }, + { "M36x1.5", 36.0, 1.50, 34.50 }, + { "M36x2.0", 36.0, 2.00, 34.00 }, + { "M36x3.0", 36.0, 3.00, 33.00 }, + { "M39x1.5", 39.0, 1.50, 37.50 }, + { "M39x2.0", 39.0, 2.00, 37.00 }, + { "M39x3.0", 39.0, 3.00, 36.00 }, + { "M40x1.5", 40.0, 1.50, 38.50 }, + { "M40x2.0", 40.0, 2.00, 38.00 }, + { "M40x3.0", 40.0, 3.00, 37.00 }, + { "M42x1.5", 42.0, 1.50, 40.50 }, + { "M42x2.0", 42.0, 2.00, 40.00 }, + { "M42x3.0", 42.0, 3.00, 39.00 }, + { "M42x4.0", 42.0, 4.00, 38.00 }, + { "M45x1.5", 45.0, 1.50, 43.50 }, + { "M45x2.0", 45.0, 2.00, 43.00 }, + { "M45x3.0", 45.0, 3.00, 42.00 }, + { "M45x4.0", 45.0, 4.00, 41.00 }, + { "M48x1.5", 48.0, 1.50, 46.50 }, + { "M48x2.0", 48.0, 2.00, 46.00 }, + { "M48x3.0", 48.0, 3.00, 45.00 }, + { "M48x4.0", 48.0, 4.00, 44.00 }, + { "M50x1.5", 50.0, 1.50, 48.50 }, + { "M50x2.0", 50.0, 2.00, 48.00 }, + { "M50x3.0", 50.0, 3.00, 47.00 }, + { "M52x1.5", 52.0, 1.50, 50.50 }, + { "M52x2.0", 52.0, 2.00, 50.00 }, + { "M52x3.0", 52.0, 3.00, 49.00 }, + { "M52x4.0", 52.0, 4.00, 48.00 }, + { "M55x1.5", 55.0, 1.50, 53.50 }, + { "M55x2.0", 55.0, 2.00, 53.00 }, + { "M55x3.0", 55.0, 3.00, 52.00 }, + { "M55x4.0", 55.0, 4.00, 51.00 }, + { "M56x1.5", 56.0, 1.50, 54.50 }, + { "M56x2.0", 56.0, 2.00, 54.00 }, + { "M56x3.0", 56.0, 3.00, 53.00 }, + { "M56x4.0", 56.0, 4.00, 52.00 }, + { "M58x1.5", 58.0, 1.50, 56.50 }, + { "M58x2.0", 58.0, 2.00, 56.00 }, + { "M58x3.0", 58.0, 3.00, 55.00 }, + { "M58x4.0", 58.0, 4.00, 54.00 }, + { "M60x1.5", 60.0, 1.50, 58.50 }, + { "M60x2.0", 60.0, 2.00, 58.00 }, + { "M60x3.0", 60.0, 3.00, 57.00 }, + { "M60x4.0", 60.0, 4.00, 56.00 }, + { "M62x1.5", 62.0, 1.50, 60.50 }, + { "M62x2.0", 62.0, 2.00, 60.00 }, + { "M62x3.0", 62.0, 3.00, 59.00 }, + { "M62x4.0", 62.0, 4.00, 58.00 }, + { "M64x1.5", 64.0, 1.50, 62.50 }, + { "M64x2.0", 64.0, 2.00, 62.00 }, + { "M64x3.0", 64.0, 3.00, 61.00 }, + { "M64x4.0", 64.0, 4.00, 60.00 }, + { "M65x1.5", 65.0, 1.50, 63.50 }, + { "M65x2.0", 65.0, 2.00, 63.00 }, + { "M65x3.0", 65.0, 3.00, 62.00 }, + { "M65x4.0", 65.0, 4.00, 61.00 }, + { "M68x1.5", 68.0, 1.50, 66.50 }, + { "M68x2.0", 68.0, 2.00, 66.00 }, + { "M68x3.0", 68.0, 3.00, 65.00 }, + { "M68x4.0", 68.0, 4.00, 64.00 }, + { "M70x1.5", 70.0, 1.50, 68.50 }, + { "M70x2.0", 70.0, 2.00, 68.00 }, + { "M70x3.0", 70.0, 3.00, 67.00 }, + { "M70x4.0", 70.0, 4.00, 66.00 }, + { "M70x6.0", 70.0, 6.00, 64.00 }, + { "M72x1.5", 72.0, 1.50, 70.50 }, + { "M72x2.0", 72.0, 2.00, 70.00 }, + { "M72x3.0", 72.0, 3.00, 69.00 }, + { "M72x4.0", 72.0, 4.00, 68.00 }, + { "M72x6.0", 72.0, 6.00, 66.00 }, + { "M75x1.5", 75.0, 1.50, 73.50 }, + { "M75x2.0", 75.0, 2.00, 73.00 }, + { "M75x3.0", 75.0, 3.00, 72.00 }, + { "M75x4.0", 75.0, 4.00, 71.00 }, + { "M75x6.0", 75.0, 6.00, 69.00 }, + { "M76x1.5", 76.0, 1.50, 74.50 }, + { "M76x2.0", 76.0, 2.00, 74.00 }, + { "M76x3.0", 76.0, 3.00, 73.00 }, + { "M76x4.0", 76.0, 4.00, 72.00 }, + { "M76x6.0", 76.0, 6.00, 70.00 }, + { "M80x1.5", 80.0, 1.50, 78.50 }, + { "M80x2.0", 80.0, 2.00, 78.00 }, + { "M80x3.0", 80.0, 3.00, 77.00 }, + { "M80x4.0", 80.0, 4.00, 76.00 }, + { "M80x6.0", 80.0, 6.00, 74.00 }, + { "M85x2.0", 85.0, 2.00, 83.00 }, + { "M85x3.0", 85.0, 3.00, 82.00 }, + { "M85x4.0", 85.0, 4.00, 81.00 }, + { "M85x6.0", 85.0, 6.00, 79.00 }, + { "M90x2.0", 90.0, 2.00, 88.00 }, + { "M90x3.0", 90.0, 3.00, 87.00 }, + { "M90x4.0", 90.0, 4.00, 86.00 }, + { "M90x6.0", 90.0, 6.00, 84.00 }, + { "M95x2.0", 95.0, 2.00, 93.00 }, + { "M95x3.0", 95.0, 3.00, 92.00 }, + { "M95x4.0", 95.0, 4.00, 91.00 }, + { "M95x6.0", 95.0, 6.00, 89.00 }, + { "M100x2.0", 100.0, 2.00, 98.00 }, + { "M100x3.0", 100.0, 3.00, 97.00 }, + { "M100x4.0", 100.0, 4.00, 96.00 }, + { "M100x6.0", 100.0, 6.00, 94.00 } }, /* UNC */ { - { "#1", 1.8542, 0.3969 }, - { "#2", 2.1844, 0.4536 }, - { "#3", 2.5146, 0.5292 }, - { "#4", 2.8448, 0.6350 }, - { "#5", 3.1750, 0.6350 }, - { "#6", 3.5052, 0.7938 }, - { "#8", 4.1656, 0.7938 }, - { "#10", 4.8260, 1.0583 }, - { "#12", 5.4864, 1.0583 }, - { "1/4", 6.3500, 1.2700 }, - { "5/16", 7.9375, 1.4111 }, - { "3/8", 9.5250, 1.5875 }, - { "7/16", 11.1125, 1.8143 }, - { "1/2", 12.7000, 1.9538 }, - { "9/16", 14.2875, 2.1167 }, - { "5/8", 15.8750, 2.3091 }, - { "3/4", 19.0500, 2.5400 }, - { "7/8", 22.2250, 2.8222 }, - { "1", 25.4000, 3.1750 }, + { "#1", 1.854, 0.397, 1.50 }, + { "#2", 2.184, 0.454, 1.85 }, + { "#3", 2.515, 0.529, 2.10 }, + { "#4", 2.845, 0.635, 2.35 }, + { "#5", 3.175, 0.635, 2.65 }, + { "#6", 3.505, 0.794, 2.85 }, + { "#8", 4.166, 0.794, 3.50 }, + { "#10", 4.826, 1.058, 3.90 }, + { "#12", 5.486, 1.058, 4.50 }, + { "1/4", 6.350, 1.270, 5.10 }, + { "5/16", 7.938, 1.411, 6.60 }, + { "3/8", 9.525, 1.588, 8.00 }, + { "7/16", 11.113, 1.814, 9.40 }, + { "1/2", 12.700, 1.954, 10.80 }, + { "9/16", 14.288, 2.117, 12.20 }, + { "5/8", 15.875, 2.309, 13.50 }, + { "3/4", 19.050, 2.540, 16.50 }, + { "7/8", 22.225, 2.822, 19.50 }, + { "1", 25.400, 3.175, 22.25 }, + { "1 1/8", 28.575, 3.628, 25.00 }, + { "1 1/4", 31.750, 3.628, 28.00 }, + { "1 3/8", 34.925, 4.233, 30.75 }, + { "1 1/2", 38.100, 4.233, 34.00 }, + { "1 3/4", 44.450, 5.080, 39.50 }, + { "2", 50.800, 5.644, 45.00 }, + { "2 1/4", 57.150, 5.644, 51.50 }, + { "2 1/2", 63.500, 6.350, 57.00 }, + { "2 3/4", 69.850, 6.350, 63.50 }, + { "3", 76.200, 6.350, 70.00 }, + { "3 1/4", 82.550, 6.350, 76.50 }, + { "3 1/2", 88.900, 6.350, 83.00 }, + { "3 3/4", 95.250, 6.350, 89.00 }, + { "4", 101.600, 6.350, 95.50 }, }, /* UNF */ { - { "#0", 1.5240, 0.3175 }, - { "#1", 1.8542, 0.3528 }, - { "#2", 2.1844, 0.3969 }, - { "#3", 2.5146, 0.4536 }, - { "#4", 2.8448, 0.5292 }, - { "#5", 3.1750, 0.5773 }, - { "#6", 3.5052, 0.6350 }, - { "#8", 4.1656, 0.7056 }, - { "#10", 4.8260, 0.7938 }, - { "#12", 5.4864, 0.9071 }, - { "1/4", 6.3500, 0.9071 }, - { "5/16", 7.9375, 1.0583 }, - { "3/8", 9.5250, 1.0583 }, - { "7/16", 11.1125, 1.2700 }, - { "1/2", 12.7000, 1.2700 }, - { "9/16", 14.2875, 1.4111 }, - { "5/8", 15.8750, 1.4111 }, - { "3/4", 19.0500, 1.5875 }, - { "7/8", 22.2250, 1.8143 }, - { "1", 25.4000, 2.1167 }, + { "#0", 1.524, 0.317, 1.20 }, + { "#1", 1.854, 0.353, 1.55 }, + { "#2", 2.184, 0.397, 1.85 }, + { "#3", 2.515, 0.454, 2.10 }, + { "#4", 2.845, 0.529, 2.40 }, + { "#5", 3.175, 0.577, 2.70 }, + { "#6", 3.505, 0.635, 2.95 }, + { "#8", 4.166, 0.706, 3.50 }, + { "#10", 4.826, 0.794, 4.10 }, + { "#12", 5.486, 0.907, 4.70 }, + { "1/4", 6.350, 0.907, 5.50 }, + { "5/16", 7.938, 1.058, 6.90 }, + { "3/8", 9.525, 1.058, 8.50 }, + { "7/16", 11.113, 1.270, 9.90 }, + { "1/2", 12.700, 1.270, 11.50 }, + { "9/16", 14.288, 1.411, 12.90 }, + { "5/8", 15.875, 1.411, 14.50 }, + { "3/4", 19.050, 1.588, 17.50 }, + { "7/8", 22.225, 1.814, 20.40 }, + { "1", 25.400, 2.117, 23.25 }, + { "1 1/8", 28.575, 2.117, 26.50 }, + { "1 1/4", 31.750, 2.117, 29.50 }, + { "1 3/8", 34.925, 2.117, 32.75 }, + { "1 1/2", 38.100, 2.117, 36.00 }, } , /* UNEF */ { - { "#12", 5.4864, 0.7938 }, - { "1/4", 6.3500, 0.7938 }, - { "5/16", 7.9375, 0.7938 }, - { "3/8", 9.5250, 0.7938 }, - { "7/16", 11.1125, 0.9071 }, - { "1/2", 12.7000, 0.9071 }, - { "9/16", 14.2875, 1.0583 }, - { "5/8", 15.8750, 1.0583 }, - { "3/4", 19.0500, 1.2700 }, - { "7/8", 22.2250, 1.2700 }, - { "1", 25.4000, 1.2700 }, + { "#12", 5.486, 0.794, 4.80 }, + { "1/4", 6.350, 0.794, 5.70 }, + { "5/16", 7.938, 0.794, 7.25 }, + { "3/8", 9.525, 0.794, 8.85 }, + { "7/16", 11.113, 0.907, 10.35 }, + { "1/2", 12.700, 0.907, 11.80 }, + { "9/16", 14.288, 1.058, 13.40 }, + { "5/8", 15.875, 1.058, 15.00 }, + { "11/16", 17.462, 1.058, 16.60 }, + { "3/4", 19.050, 1.270, 18.00 }, + { "13/16", 20.638, 1.270, 19.60 }, + { "7/8", 22.225, 1.270, 21.15 }, + { "15/16", 23.812, 1.270, 22.70 }, + { "1", 25.400, 1.270, 24.30 }, + { "1 1/16", 26.988, 1.411, 25.80 }, + { "1 1/8", 28.575, 1.411, 27.35 }, + { "1 1/4", 31.750, 1.411, 30.55 }, + { "1 5/16", 33.338, 1.411, 32.10 }, + { "1 3/8", 34.925, 1.411, 33.70 }, + { "1 7/16", 36.512, 1.411, 35.30 }, + { "1 1/2", 38.100, 1.411, 36.90 }, + { "1 9/16", 39.688, 1.411, 38.55 }, + { "1 5/8", 41.275, 1.411, 40.10 }, + { "1 11/16", 42.862, 1.411, 41.60 }, } }; +const double Hole::metricHoleDiameters[36][4] = +{ + /* ISO metric clearance hole diameters according to ISO 273 */ + // {screw diameter, close, standard, coarse} + { 1.0, 1.1, 1.2, 1.3}, + { 1.2, 1.3, 1.4, 1.5}, + { 1.4, 1.5, 1.6, 1.8}, + { 1.6, 1.7, 1.8, 2.0}, + { 1.8, 2.0, 2.1, 2.2}, + { 2.0, 2.2, 2.4, 2.6}, + { 2.5, 2.7, 2.9, 3.1}, + { 3.0, 3.2, 3.4, 3.6}, + { 3.5, 3.7, 3.9, 4.2}, + { 4.0, 4.3, 4.5, 4.8}, + { 4.5, 4.8, 5.0, 5.3}, + { 5.0, 5.3, 5.5, 5.8}, + { 6.0, 6.4, 6.6, 7.0}, + { 7.0, 7.4, 7.6, 8.0}, + { 8.0, 8.4, 9.0, 10.0}, + { 10.0, 10.5, 11.0, 12.0}, + { 12.0, 13.0, 13.5, 14.5}, + { 14.0, 15.0, 15.5, 16.5}, + { 16.0, 17.0, 17.5, 18.5}, + { 18.0, 19.0, 20.0, 21.0}, + { 20.0, 21.0, 22.0, 24.0}, + { 22.0, 23.0, 24.0, 26.0}, + { 24.0, 25.0, 26.0, 28.0}, + { 27.0, 28.0, 30.0, 32.0}, + { 30.0, 31.0, 33.0, 35.0}, + { 33.0, 34.0, 36.0, 38.0}, + { 36.0, 37.0, 39.0, 42.0}, + { 39.0, 40.0, 42.0, 45.0}, + { 42.0, 43.0, 45.0, 48.0}, + { 45.0, 46.0, 48.0, 52.0}, + { 48.0, 50.0, 52.0, 56.0}, + { 52.0, 54.0, 56.0, 62.0}, + { 56.0, 58.0, 62.0, 66.0}, + { 60.0, 62.0, 66.0, 70.0}, + { 64.0, 66.0, 70.0, 74.0}, + { 68.0, 70.0, 77.0, 78.0} +}; + /* ISO coarse metric enums */ std::vector Hole::HoleCutType_ISOmetric_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)" }; -const char* Hole::ThreadSize_ISOmetric_Enums[] = { "M1.6", "M2", "M2.5", "M3", - "M3.5", "M4", "M5", "M6", - "M8", "M10", "M12", "M14", - "M16", "M20", "M22", "M24", - "M27", "M30", "M36", "M42", - "M48", "M56", "M64", "M68", NULL }; +const char* Hole::ThreadSize_ISOmetric_Enums[] = { "M1", "M1.1", "M1.2", "M1.4", "M1.6", + "M1.8", "M2", "M2.2", "M2.5", "M3", + "M3.5", "M4", "M4.5", "M5", "M6", + "M7", "M8", "M9", "M10", "M11", + "M12", "M14", "M16", "M18", "M20", + "M22", "M24", "M27", "M30", "M33", + "M36", "M39", "M42", "M45", "M48", + "M52", "M56", "M60", "M64", "M68", NULL }; const char* Hole::ThreadClass_ISOmetric_Enums[] = { "4G", "4H", "5G", "5H", "6G", "6H", "7G", "7H","8G", "8H", NULL }; std::vector Hole::HoleCutType_ISOmetricfine_Enums = { "None", "Counterbore", "Countersink", "Cheesehead (deprecated)", "Countersink socket screw (deprecated)", "Cap screw (deprecated)" }; const char* Hole::ThreadSize_ISOmetricfine_Enums[] = { - "M1.0x0.2", "M1.1x0.2", "M1.2x0.2", "M1.4x0.2", + "M1x0.2", "M1.1x0.2", "M1.2x0.2", "M1.4x0.2", "M1.6x0.2", "M1.8x0.2", "M2x0.25", "M2.2x0.25", "M2.5x0.35", "M3x0.35", "M3.5x0.35", "M4x0.5", "M4.5x0.5", "M5x0.5", "M5.5x0.5", "M6x0.75", "M7x0.75", "M8x0.75", "M8x1.0", - "M9x0.75", "M9x 1", "M10x0.75", "M10x1", - "M10x1.25", "M11x0.75", "M11x1", "M12x1", + "M9x0.75", "M9x1.0", "M10x0.75", "M10x1.0", + "M10x1.25", "M11x0.75", "M11x1.0", "M12x1.0", "M12x1.25", "M12x1.5", "M14x1.0", "M14x1.25", - "M14x1.5", "M15x1", "M15x1.5", "M16x1", + "M14x1.5", "M15x1.0", "M15x1.5", "M16x1.0", "M16x1.5", "M17x1.0", "M17x1.5", "M18x1.0", "M18x1.5", "M18x2.0", "M20x1.0", "M20x1.5", "M20x2.0", "M22x1.0", "M22x1.5", "M22x2.0", @@ -419,22 +512,29 @@ const char* Hole::ThreadClass_ISOmetricfine_Enums[] = { "4G", "4H", "5G", "5H", const char* Hole::HoleCutType_UNC_Enums[] = { "None", "Counterbore", "Countersink", NULL}; const char* Hole::ThreadSize_UNC_Enums[] = { "#1", "#2", "#3", "#4", "#5", "#6", "#8", "#10", "#12", - "1/4", "5/16", "3/8", "7/16", "1/2", - "9/16", "5/8", "3/4", "7/8", "1", NULL }; + "1/4", "5/16", "3/8", "7/16", "1/2", "9/16", + "5/8", "3/4", "7/8", "1", "1 1/8", "1 1/4", + "1 3/8", "1 1/2", "1 3/4", "2", "2 1/4", + "2 1/2", "2 3/4", "3", "3 1/4", "3 1/2", + "3 3/4", "4", NULL }; const char* Hole::ThreadClass_UNC_Enums[] = { "1B", "2B", "3B", NULL }; /* UTS fine */ const char* Hole::HoleCutType_UNF_Enums[] = { "None", "Counterbore", "Countersink", NULL}; -const char* Hole::ThreadSize_UNF_Enums[] = { "#1", "#2", "#3", "#4", "#5", "#6", +const char* Hole::ThreadSize_UNF_Enums[] = { "#0", "#1", "#2", "#3", "#4", "#5", "#6", "#8", "#10", "#12", - "1/4", "5/16", "3/8", "7/16", "1/2", - "9/16", "5/8", "3/4", "7/8", "1", NULL }; + "1/4", "5/16", "3/8", "7/16", "1/2", "9/16", + "5/8", "3/4", "7/8", "1", "1 1/8", "1 1/4", + "1 3/8", "1 1/2", NULL }; const char* Hole::ThreadClass_UNF_Enums[] = { "1B", "2B", "3B", NULL }; /* UTS extrafine */ const char* Hole::HoleCutType_UNEF_Enums[] = { "None", "Counterbore", "Countersink", NULL}; const char* Hole::ThreadSize_UNEF_Enums[] = { "#12", "1/4", "5/16", "3/8", "7/16", "1/2", - "9/16", "5/8", "3/4", "7/8", "1", NULL }; + "9/16", "5/8", "11/16", "3/4", "13/16", "7/8", + "15/16", "1", "1 1/16", "1 1/8", "1 1/4", + "1 5/16", "1 3/8", "1 7/16", "1 1/2", "1 9/16", + "1 5/8", "1 11/16", NULL }; const char* Hole::ThreadClass_UNEF_Enums[] = { "1B", "2B", "3B", NULL }; const char* Hole::ThreadDirectionEnums[] = { "Right", "Left", NULL}; @@ -498,20 +598,63 @@ Hole::Hole() void Hole::updateHoleCutParams() { - std::string threadType = ThreadType.getValueAsString(); + std::string holeCutType = HoleCutType.getValueAsString(); + // there is no cut, thus return + if (holeCutType == "None") + return; + + if (ThreadType.getValue() < 0) { + throw Base::IndexError("Thread type out of range"); + return; + } + + std::string threadType = ThreadType.getValueAsString(); if (threadType == "ISOMetricProfile" || threadType == "ISOMetricFineProfile") { - std::string holeCutType = HoleCutType.getValueAsString(); - if (ThreadType.getValue() < 0) - throw Base::IndexError("Thread type out of range"); - if (ThreadSize.getValue() < 0) + if (ThreadSize.getValue() < 0) { throw Base::IndexError("Thread size out of range"); + return; + } + + // get diameter and size + double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; + std::string threadSize{ ThreadSize.getValueAsString() }; + + // we don't update for these settings but we need to set a value for new holes + // if we have a cut but the values are zero, we assume it is a new hole + // we take in this case the values from the norm ISO 4762 or ISO 10642 + if (holeCutType == "Counterbore") { + // read ISO 4762 values + const CutDimensionSet& counter = find_cutDimensionSet(threadType, "ISO 4762"); + const CounterBoreDimension& dimen = counter.get_bore(threadSize); + if (HoleCutDiameter.getValue() == 0.0) { + HoleCutDiameter.setValue(dimen.diameter); + HoleCutDepth.setValue(dimen.depth); + } + if (HoleCutDepth.getValue() == 0.0) + HoleCutDepth.setValue(dimen.depth); + } + else if (holeCutType == "Countersink") { + // read ISO 10642 values + const CutDimensionSet& counter = find_cutDimensionSet(threadType, "ISO 10642"); + if (HoleCutDiameter.getValue() == 0.0) { + const CounterSinkDimension& dimen = counter.get_sink(threadSize); + HoleCutDiameter.setValue(dimen.diameter); + HoleCutCountersinkAngle.setValue(counter.angle); + } + if (HoleCutCountersinkAngle.getValue() == 0.0) { + HoleCutCountersinkAngle.setValue(counter.angle); + } + } // cut definition - if (HoleCutTypeMap.count(holeCutType) ) { - std::string threadSize { ThreadSize.getValueAsString() }; - const CutDimensionSet &counter = HoleCutTypeMap.find(holeCutType)->second; + CutDimensionKey key { threadType, holeCutType }; + if (HoleCutTypeMap.count(key)) { + const CutDimensionSet &counter = find_cutDimensionSet(key); if (counter.cut_type == CutDimensionSet::Counterbore) { + // disable HoleCutCountersinkAngle and reset it to ISO's default + HoleCutCountersinkAngle.setValue(90.0); + HoleCutCountersinkAngle.setReadOnly(true); const CounterBoreDimension &dimen = counter.get_bore(threadSize); if (dimen.thread == "None") { // valid values for visual feedback @@ -526,28 +669,67 @@ void Hole::updateHoleCutParams() if (dimen.thread == "None") { // valid values for visual feedback HoleCutDiameter.setValue(Diameter.getValue() + 0.1); + // there might be an angle of zero (if no norm exists for the size) + if (HoleCutCountersinkAngle.getValue() == 0.0) { + HoleCutCountersinkAngle.setValue(counter.angle); + } } else { HoleCutDiameter.setValue(dimen.diameter); HoleCutCountersinkAngle.setValue(counter.angle); } } } + + // handle legacy types but don’t change user settings for + // user defined None, Counterbore and Countersink // handle legacy types but don’t change user settings for // user defined None, Counterbore and Countersink else if (holeCutType == "Cheesehead (deprecated)") { - double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; - HoleCutDiameter.setValue(diameter * 1.6); - HoleCutDepth.setValue(diameter * 0.6); + HoleCutDiameter.setValue(diameter * 1.6); + HoleCutDepth.setValue(diameter * 0.6); } else if (holeCutType == "Countersink socket screw (deprecated)") { - double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; - HoleCutDiameter.setValue(diameter * 2.0); - HoleCutDepth.setValue(diameter * 0.0); + HoleCutDiameter.setValue(diameter * 2.0); + HoleCutDepth.setValue(diameter * 0.0); + if (HoleCutCountersinkAngle.getValue() == 0.0) { + HoleCutCountersinkAngle.setValue(90.0); + } } else if (holeCutType == "Cap screw (deprecated)") { - double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; - HoleCutDiameter.setValue(diameter * 1.5); - HoleCutDepth.setValue(diameter * 1.25); + HoleCutDiameter.setValue(diameter * 1.5); + HoleCutDepth.setValue(diameter * 1.25); + } + } + else { // we have an UTS profile or none + // get diameter + double diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].diameter; + + // we don't update for these settings but we need to set a value for new holes + // if we have a cut but the values are zero, we assume it is a new hole + // we use rules of thumbs as proposal + if (holeCutType == "Counterbore") { + if (HoleCutDiameter.getValue() == 0.0) { + HoleCutDiameter.setValue(diameter * 1.6); + HoleCutDepth.setValue(diameter * 0.9); + } + if (HoleCutDepth.getValue() == 0.0) + HoleCutDepth.setValue(diameter * 0.9); + } + else if (holeCutType == "Countersink") { + if (HoleCutDiameter.getValue() == 0.0) { + HoleCutDiameter.setValue(diameter * 1.7); + // 82 degrees for UTS, 90 otherwise + if (threadType != "None") + HoleCutCountersinkAngle.setValue(82.0); + else + HoleCutCountersinkAngle.setValue(90.0); + } + if (HoleCutCountersinkAngle.getValue() == 0.0) { + if (threadType != "None") + HoleCutCountersinkAngle.setValue(82.0); + else + HoleCutCountersinkAngle.setValue(90.0); + } } } } @@ -593,16 +775,63 @@ void Hole::updateDiameterParam() pitch = ThreadPitch.getValue(); } - /* Use thread tap diameter, normal D - pitch */ - diameter = diameter - pitch; + // use normed diameters if possible + std::string threadType = ThreadType.getValueAsString(); + if (threadType == "ISOMetricProfile" || threadType == "UNC" + || threadType == "UNF" || threadType == "UNEF") { + diameter = threadDescription[ThreadType.getValue()][ThreadSize.getValue()].CoreHole; + } + // if nothing available, we must calculate + else { + // this fits exactly the definition for ISO metric fine + diameter = diameter - pitch; + } } - else { + else { // we have a clearance hole + bool found = false; + int MatrixRowSize = sizeof(metricHoleDiameters) / sizeof(metricHoleDiameters[0]); switch ( ThreadFit.getValue() ) { - case 0: /* standard */ - diameter = ( 5 * ( (int)( ( diameter * 110 ) / 5 ) ) ) / 100.0; + case 0: /* standard fit */ + // read diameter out of matrix + for (int i = 0; i < MatrixRowSize; i++) { + if (metricHoleDiameters[i][0] == diameter) { + diameter = metricHoleDiameters[i][2]; + found = true; + break; + } + } + // if nothing was found (e.g. if not metric), we must calculate + if (!found) { + diameter = (5 * ((int)((diameter * 110) / 5))) / 100.0; + } break; - case 1: /* close */ - diameter = ( 5 * ( (int)( ( diameter * 105 ) / 5 ) ) ) / 100.0; + case 1: /* close fit */ + // read diameter out of matrix + for (int i = 0; i < MatrixRowSize; i++) { + if (metricHoleDiameters[i][0] == diameter) { + diameter = metricHoleDiameters[i][1]; + found = true; + break; + } + } + // if nothing was found, we must calculate + if (!found) { + diameter = (5 * ((int)((diameter * 105) / 5))) / 100.0; + } + break; + case 2: /* wide fit */ + // read diameter out of matrix + for (int i = 0; i < MatrixRowSize; i++) { + if (metricHoleDiameters[i][0] == diameter) { + diameter = metricHoleDiameters[i][3]; + found = true; + break; + } + } + // if nothing was found, we must calculate + if (!found) { + diameter = (5 * ((int)((diameter * 115) / 5))) / 100.0; + } break; default: assert( 0 ); @@ -704,20 +933,15 @@ void Hole::onChanged(const App::Property *prop) } else if (holeCutType == "Countersink") { HoleCutDiameter.setReadOnly(false); - HoleCutDepth.setReadOnly(true); + HoleCutDepth.setReadOnly(false); HoleCutCountersinkAngle.setReadOnly(false); } - else { - HoleCutDiameter.setReadOnly(true); - HoleCutDepth.setReadOnly(true); - HoleCutCountersinkAngle.setReadOnly(true); + else { // screw definition + HoleCutDiameter.setReadOnly(false); + HoleCutDepth.setReadOnly(false); + HoleCutCountersinkAngle.setReadOnly(false); } - if (type == "ISOMetricProfile" || type == "ISOMetricFineProfile") - HoleCutCountersinkAngle.setValue(90.0); - else if (type == "UNC" || type == "UNF" || type == "UNEF") - HoleCutCountersinkAngle.setValue(82.0); - // Signal changes to these ProfileBased::onChanged(&ThreadSize); ProfileBased::onChanged(&ThreadClass); @@ -803,13 +1027,13 @@ void Hole::onChanged(const App::Property *prop) } else if (holeCutType == "Countersink") { HoleCutDiameter.setReadOnly(false); - HoleCutDepth.setReadOnly(true); + HoleCutDepth.setReadOnly(false); HoleCutCountersinkAngle.setReadOnly(false); } else { // screw definition - HoleCutDiameter.setReadOnly(true); - HoleCutDepth.setReadOnly(true); - HoleCutCountersinkAngle.setReadOnly(true); + HoleCutDiameter.setReadOnly(false); + HoleCutDepth.setReadOnly(false); + HoleCutCountersinkAngle.setReadOnly(false); } ProfileBased::onChanged(&HoleCutDiameter); ProfileBased::onChanged(&HoleCutDepth); @@ -1019,14 +1243,15 @@ App::DocumentObjectExecReturn *Hole::execute(void) return new App::DocumentObjectExecReturn("Hole: Invalid hole depth"); BRepBuilderAPI_MakeWire mkWire; - std::string holeCutType = HoleCutType.getValueAsString(); + const std::string holeCutType = HoleCutType.getValueAsString(); + const std::string threadType = ThreadType.getValueAsString(); bool isCountersink = (holeCutType == "Countersink" || holeCutType == "Countersink socket screw (deprecated)" || - isDynamicCountersink(holeCutType)); + isDynamicCountersink(threadType, holeCutType)); bool isCounterbore = (holeCutType == "Counterbore" || holeCutType == "Cheesehead (deprecated)" || holeCutType == "Cap screw (deprecated)" || - isDynamicCounterbore(holeCutType)); + isDynamicCounterbore(threadType, holeCutType)); double hasTaperedAngle = Tapered.getValue() ? Base::toRadians( TaperedAngle.getValue() ) : Base::toRadians(90.0); double radiusBottom = Diameter.getValue() / 2.0 - length * 1.0 / tan( hasTaperedAngle ); double radius = Diameter.getValue() / 2.0; @@ -1304,36 +1529,45 @@ App::DocumentObjectExecReturn *Hole::execute(void) } } -void Hole::addCounterType(const CutDimensionSet& dimensions) +void Hole::addCutType(const CutDimensionSet& dimensions) { - HoleCutTypeMap.emplace(dimensions.name, dimensions); + const CutDimensionSet::ThreadType thread = dimensions.thread_type; const std::string &name = dimensions.name; + std::vector *list; - switch(dimensions.thread_type) { + switch(thread) { case CutDimensionSet::Metric: + HoleCutTypeMap.emplace(CutDimensionKey("ISOMetricProfile", name), dimensions); list = &HoleCutType_ISOmetric_Enums; break; case CutDimensionSet::MetricFine: + HoleCutTypeMap.emplace(CutDimensionKey("ISOMetricFineProfile", name), dimensions); list = &HoleCutType_ISOmetricfine_Enums; break; default: return; } + // add the collected lists of JSON definitions to the lists + // if a name doesn't already exist in the list if (std::all_of(list->begin(), list->end(), [name](const std::string &x){ return x != name; })) - list->push_back(dimensions.name); + list->push_back(name); } -bool Hole::isDynamicCounterbore(const std::string &holeCutType) +bool Hole::isDynamicCounterbore(const std::string &thread, + const std::string &holeCutType) { - return HoleCutTypeMap.count(holeCutType) && - HoleCutTypeMap.find(holeCutType)->second.cut_type == CutDimensionSet::Counterbore; + CutDimensionKey key { thread, holeCutType }; + return HoleCutTypeMap.count(key) && + HoleCutTypeMap.find(key)->second.cut_type == CutDimensionSet::Counterbore; } -bool Hole::isDynamicCountersink(const std::string &holeCutType) +bool Hole::isDynamicCountersink(const std::string &thread, + const std::string &holeCutType) { - return HoleCutTypeMap.count(holeCutType) && - HoleCutTypeMap.find(holeCutType)->second.cut_type == CutDimensionSet::Countersink; + CutDimensionKey key { thread, holeCutType }; + return HoleCutTypeMap.count(key) && + HoleCutTypeMap.find(key)->second.cut_type == CutDimensionSet::Countersink; } /* @@ -1343,6 +1577,27 @@ bool Hole::isDynamicCountersink(const std::string &holeCutType) const Hole::CounterBoreDimension Hole::CounterBoreDimension::nothing { "None", 0.0, 0.0 }; const Hole::CounterSinkDimension Hole::CounterSinkDimension::nothing { "None", 0.0 }; +Hole::CutDimensionKey::CutDimensionKey(const std::string &t, const std::string &c) : + thread_type { t }, cut_name { c } +{ +} + +bool Hole::CutDimensionKey::operator<(const CutDimensionKey &b) const +{ + return thread_type < b.thread_type || + (thread_type == b.thread_type && cut_name < b.cut_name); +} + +const Hole::CutDimensionSet& Hole::find_cutDimensionSet(const std::string &t, + const std::string &c) { + return HoleCutTypeMap.find(CutDimensionKey(t, c))->second; +} + +const Hole::CutDimensionSet& Hole::find_cutDimensionSet(const CutDimensionKey &k) +{ + return HoleCutTypeMap.find(k)->second; +} + Hole::CutDimensionSet::CutDimensionSet(const std::string &nme, std::vector &&d, CutType cut, ThreadType thread) : bore_data{ std::move(d) }, cut_type{ cut }, thread_type{thread}, name{nme} @@ -1432,13 +1687,12 @@ void Hole::readCutDefinitions() std::vector<::Base::FileInfo> files { ::Base::FileInfo(dir).getDirectoryContent() }; for (const auto &f : files) { if (f.extension() == "json") { - //std::cerr << "reading: " << f.filePath() << "\n"; try { std::ifstream input(f.filePath()); nlohmann::json j; input >> j; CutDimensionSet screwtype = j.get(); - addCounterType(screwtype); + addCutType(screwtype); } catch(std::exception &e) { std::cerr << "Failed reading ‘" << f.filePath() << "’ with: "<< e.what() << "\n"; diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index a3bbf81a96..66dde28a3a 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -83,10 +83,12 @@ public: const char * designation; double diameter; double pitch; + double CoreHole; } ThreadDescription; - static const ThreadDescription threadDescription[][171]; + static const double metricHoleDiameters[36][4]; + virtual void Restore(Base::XMLReader & reader); virtual void updateProps(); @@ -169,11 +171,25 @@ private: double angle; }; - std::map HoleCutTypeMap; + class CutDimensionKey { + std::string thread_type; + std::string cut_name; + public: + CutDimensionKey() {} + CutDimensionKey(const std::string &t, const std::string &c); + bool operator<(const CutDimensionKey &b) const; + }; - void addCounterType(const CutDimensionSet& dimensions); - bool isDynamicCounterbore(const std::string &holeCutType); - bool isDynamicCountersink(const std::string &holeCutType); + std::map HoleCutTypeMap; + + const CutDimensionSet& find_cutDimensionSet(const std::string &t, + const std::string &c); + + const CutDimensionSet& find_cutDimensionSet(const CutDimensionKey &k); + + void addCutType(const CutDimensionSet& dimensions); + bool isDynamicCounterbore(const std::string &thread, const std::string &holeCutType); + bool isDynamicCountersink(const std::string &thread, const std::string &holeCutType); void updateHoleCutParams(); void updateDiameterParam(); void readCutDefinitions(); diff --git a/src/Mod/PartDesign/App/FeaturePad.cpp b/src/Mod/PartDesign/App/FeaturePad.cpp index 28c9b6cc8a..2d260ca7ec 100644 --- a/src/Mod/PartDesign/App/FeaturePad.cpp +++ b/src/Mod/PartDesign/App/FeaturePad.cpp @@ -74,6 +74,10 @@ Pad::Pad() ADD_PROPERTY_TYPE(Offset, (0.0), "Pad", App::Prop_None, "Offset from face in which pad will end"); static const App::PropertyQuantityConstraint::Constraints signedLengthConstraint = {-DBL_MAX, DBL_MAX, 1.0}; Offset.setConstraints(&signedLengthConstraint); + + // Remove the constraints and keep the type to allow to accept negative values + // https://forum.freecadweb.org/viewtopic.php?f=3&t=52075&p=448410#p447636 + Length2.setConstraints(nullptr); } short Pad::mustExecute() const @@ -269,7 +273,8 @@ App::DocumentObjectExecReturn *Pad::execute(void) return new App::DocumentObjectExecReturn("Pad: Up to face: Could not extrude the sketch!"); prism = PrismMaker.Shape(); #else - generatePrism(prism, method, base, sketchshape, supportface, upToFace, dir, 2, 1); + Standard_Integer fuse = fabs(Offset.getValue()) > Precision::Confusion() ? 1 : 2; + generatePrism(prism, method, base, sketchshape, supportface, upToFace, dir, fuse, Standard_True); #endif base.Nullify(); } else { @@ -294,7 +299,8 @@ App::DocumentObjectExecReturn *Pad::execute(void) return new App::DocumentObjectExecReturn("Pad: Up to face: Could not extrude the sketch!"); prism = PrismMaker.Shape(); #else - generatePrism(prism, method, base, sketchshape, supportface, upToFace, dir, 2, 1); + Standard_Integer fuse = fabs(Offset.getValue()) > Precision::Confusion() ? 1 : 2; + generatePrism(prism, method, base, sketchshape, supportface, upToFace, dir, fuse, Standard_True); #endif } } else { diff --git a/src/Mod/PartDesign/App/FeaturePocket.cpp b/src/Mod/PartDesign/App/FeaturePocket.cpp index b0de73ff52..d1080019ae 100644 --- a/src/Mod/PartDesign/App/FeaturePocket.cpp +++ b/src/Mod/PartDesign/App/FeaturePocket.cpp @@ -71,6 +71,10 @@ Pocket::Pocket() ADD_PROPERTY_TYPE(Offset,(0.0),"Pocket",App::Prop_None,"Offset from face in which pocket will end"); static const App::PropertyQuantityConstraint::Constraints signedLengthConstraint = {-DBL_MAX, DBL_MAX, 1.0}; Offset.setConstraints ( &signedLengthConstraint ); + + // Remove the constraints and keep the type to allow to accept negative values + // https://forum.freecadweb.org/viewtopic.php?f=3&t=52075&p=448410#p447636 + Length2.setConstraints(nullptr); } short Pocket::mustExecute() const @@ -184,7 +188,7 @@ App::DocumentObjectExecReturn *Pocket::execute(void) TopoDS_Shape prism = PrismMaker.Shape(); #else TopoDS_Shape prism; - generatePrism(prism, method, base, profileshape, supportface, upToFace, dir, 0, 1); + generatePrism(prism, method, base, profileshape, supportface, upToFace, dir, 0, Standard_True); #endif // And the really expensive way to get the SubShape... diff --git a/src/Mod/PartDesign/App/FeaturePrimitive.cpp b/src/Mod/PartDesign/App/FeaturePrimitive.cpp index b2a57c627f..f8f79bfea2 100644 --- a/src/Mod/PartDesign/App/FeaturePrimitive.cpp +++ b/src/Mod/PartDesign/App/FeaturePrimitive.cpp @@ -502,16 +502,24 @@ App::DocumentObjectExecReturn* Torus::execute(void) if (Radius2.getValue() < Precision::Confusion()) return new App::DocumentObjectExecReturn("Radius of torus too small"); try { - + // https://forum.freecadweb.org/viewtopic.php?f=3&t=52719 +#if 0 BRepPrimAPI_MakeTorus mkTorus(Radius1.getValue(), Radius2.getValue(), Angle1.getValue()/180.0f*M_PI, Angle2.getValue()/180.0f*M_PI, Angle3.getValue()/180.0f*M_PI); return FeaturePrimitive::execute(mkTorus.Solid()); +#else + Part::TopoShape shape; + return FeaturePrimitive::execute(shape.makeTorus(Radius1.getValue(), + Radius2.getValue(), + Angle1.getValue(), + Angle2.getValue(), + Angle3.getValue())); +#endif } catch (Standard_Failure& e) { - return new App::DocumentObjectExecReturn(e.GetMessageString()); } diff --git a/src/Mod/PartDesign/CMakeLists.txt b/src/Mod/PartDesign/CMakeLists.txt index dc326aa5f0..3a49c04dd8 100644 --- a/src/Mod/PartDesign/CMakeLists.txt +++ b/src/Mod/PartDesign/CMakeLists.txt @@ -136,10 +136,15 @@ INSTALL( set(PartDesignHoleDefines Resources/Hole/din7984.json Resources/Hole/iso10642.json + Resources/Hole/iso10642-fine.json + Resources/Hole/iso12474-fine.json Resources/Hole/iso14583.json Resources/Hole/iso14583part.json + Resources/Hole/iso2009.json Resources/Hole/iso4762_7089.json Resources/Hole/iso4762.json + Resources/Hole/iso4762-fine.json + Resources/Hole/iso7046.json ) add_custom_target(PartDesignHole ALL SOURCES diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index 3adeae38c2..295da09853 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -296,7 +296,7 @@ void CmdPartDesignShapeBinder::activated(int iMsg) } if (bEditSelected) { - openCommand("Edit ShapeBinder"); + openCommand(QT_TRANSLATE_NOOP("Command", "Edit ShapeBinder")); PartDesignGui::setEdit(support.getValue()); } else { PartDesign::Body *pcActiveBody = PartDesignGui::getBody(/*messageIfNot = */true); @@ -305,7 +305,7 @@ void CmdPartDesignShapeBinder::activated(int iMsg) std::string FeatName = getUniqueObjectName("ShapeBinder",pcActiveBody); - openCommand("Create ShapeBinder"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create ShapeBinder")); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::ShapeBinder','" << FeatName << "')"); // remove the body from links in case it's selected as @@ -387,7 +387,7 @@ void CmdPartDesignSubShapeBinder::activated(int iMsg) PartDesign::SubShapeBinder *binder = 0; try { - openCommand("Create SubShapeBinder"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create SubShapeBinder")); if (pcActiveBody) { FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::SubShapeBinder','" << FeatName << "')"); binder = dynamic_cast(pcActiveBody->getObject(FeatName.c_str())); @@ -441,7 +441,7 @@ void CmdPartDesignClone::activated(int iMsg) // put the clone into its own new body. // This also fixes bug #3447 because the clone is a PD feature and thus // requires a body where it is part of. - openCommand("Create Clone"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Clone")); auto obj = objs[0]; std::string FeatName = getUniqueObjectName("Clone",obj); std::string BodyName = getUniqueObjectName("Body",obj); @@ -635,7 +635,7 @@ void CmdPartDesignNewSketch::activated(int iMsg) if (result == QDialog::DialogCode::Rejected) return; else if (!dlg.radioXRef->isChecked()) { - openCommand("Make copy"); + openCommand(QT_TRANSLATE_NOOP("Command", "Make copy")); std::string sub; if (FaceFilter.match()) sub = FaceFilter.Result[0][0].getSubNames()[0]; @@ -659,7 +659,7 @@ void CmdPartDesignNewSketch::activated(int iMsg) // create Sketch on Face or Plane std::string FeatName = getUniqueObjectName("Sketch",pcActiveBody); - openCommand("Create a Sketch on Face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create a Sketch on Face")); FCMD_OBJ_CMD(pcActiveBody,"newObject('Sketcher::SketchObject','" << FeatName << "')"); auto Feat = pcActiveBody->getDocument()->getObject(FeatName.c_str()); FCMD_OBJ_CMD(Feat,"Support = " << supportString); @@ -680,7 +680,7 @@ void CmdPartDesignNewSketch::activated(int iMsg) std::vector status; // Start command early, so undo will undo any Body creation - Gui::Command::openCommand("Create a new Sketch"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create a new Sketch")); if (shouldMakeBody) { pcActiveBody = PartDesignGui::makeBody(doc); if ( !pcActiveBody ) { @@ -1115,7 +1115,7 @@ void prepareProfileBased(PartDesign::Body *pcActiveBody, Gui::Command* cmd, cons return; if (!dlg.radioXRef->isChecked()) { - Gui::Command::openCommand("Make copy"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Make copy")); auto copy = PartDesignGui::TaskFeaturePick::makeCopy(sketches[0], "", dlg.radioIndependent->isChecked()); auto oBody = PartDesignGui::getBodyFor(sketches[0], false); if (oBody) @@ -2302,7 +2302,7 @@ void CmdPartDesignMultiTransform::activated(int iMsg) if (prevFeature != NULL) Gui::Selection().addSelection(prevFeature->getDocument()->getName(), prevFeature->getNameInDocument()); - openCommand("Convert to MultiTransform feature"); + openCommand(QT_TRANSLATE_NOOP("Command", "Convert to MultiTransform feature")); Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); rcCmdMgr.runCommandByName("PartDesign_MoveTip"); @@ -2393,7 +2393,7 @@ void CmdPartDesignBoolean::activated(int iMsg) Gui::SelectionFilter BodyFilter("SELECT Part::Feature COUNT 1.."); - openCommand("Create Boolean"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Boolean")); std::string FeatName = getUniqueObjectName("Boolean",pcActiveBody); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::Boolean','"<getDocument()->getObject(FeatName.c_str()); diff --git a/src/Mod/PartDesign/Gui/CommandBody.cpp b/src/Mod/PartDesign/Gui/CommandBody.cpp index d6d753bccb..e2ec2313de 100644 --- a/src/Mod/PartDesign/Gui/CommandBody.cpp +++ b/src/Mod/PartDesign/Gui/CommandBody.cpp @@ -192,7 +192,7 @@ void CmdPartDesignBody::activated(int iMsg) } - openCommand("Add a Body"); + openCommand(QT_TRANSLATE_NOOP("Command", "Add a Body")); std::string bodyName = getUniqueObjectName("Body"); @@ -428,7 +428,7 @@ void CmdPartDesignMigrate::activated(int iMsg) } // do the actual migration - Gui::Command::openCommand("Migrate legacy part design features to Bodies"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Migrate legacy part design features to Bodies")); for ( auto chainIt = featureChains.begin(); !featureChains.empty(); featureChains.erase (chainIt), chainIt = featureChains.begin () ) { @@ -573,7 +573,7 @@ void CmdPartDesignMoveTip::activated(int iMsg) return; } - openCommand("Move tip to selected feature"); + openCommand(QT_TRANSLATE_NOOP("Command", "Move tip to selected feature")); if (selFeature == body) { FCMD_OBJ_CMD(body,"Tip = None"); @@ -618,7 +618,7 @@ void CmdPartDesignDuplicateSelection::activated(int iMsg) std::vector beforeFeatures = getDocument()->getObjects(); - openCommand("Duplicate a PartDesign object"); + openCommand(QT_TRANSLATE_NOOP("Command", "Duplicate a PartDesign object")); doCommand(Doc,"FreeCADGui.runCommand('Std_DuplicateSelection')"); if (pcActiveBody) { @@ -729,14 +729,14 @@ void CmdPartDesignMoveFeature::activated(int iMsg) QString text = QInputDialog::getItem(Gui::getMainWindow(), qApp->translate("PartDesign_MoveFeature", "Select body"), qApp->translate("PartDesign_MoveFeature", "Select a body from the list"), - items, 0, false, &ok); + items, 0, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; int index = items.indexOf(text); if (index < 0) return; PartDesign::Body* target = static_cast(target_bodies[index]); - openCommand("Move an object"); + openCommand(QT_TRANSLATE_NOOP("Command", "Move an object")); std::stringstream stream; stream << "features_ = [" << getObjectCmd(features.back()); @@ -842,13 +842,13 @@ void CmdPartDesignMoveFeatureInTree::activated(int iMsg) bool allFeaturesFromSameBody = true; if ( body ) { - bodyBase= body->BaseFeature.getValue(); + bodyBase = body->BaseFeature.getValue(); for ( auto feat: features ) { if ( !body->hasObject ( feat ) ) { allFeaturesFromSameBody = false; break; } - if ( bodyBase== feat) { + if ( bodyBase == feat) { QMessageBox::warning (0, QObject::tr( "Selection error" ), QObject::tr( "Impossible to move the base feature of a body." ) ); return; @@ -879,13 +879,13 @@ void CmdPartDesignMoveFeatureInTree::activated(int iMsg) QString text = QInputDialog::getItem(Gui::getMainWindow(), qApp->translate("PartDesign_MoveFeatureInTree", "Select feature"), qApp->translate("PartDesign_MoveFeatureInTree", "Select a feature from the list"), - items, 0, false, &ok); + items, 0, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; int index = items.indexOf(text); // first object is the beginning of the body App::DocumentObject* target = index != 0 ? model[index-1] : nullptr; - openCommand("Move an object inside tree"); + openCommand(QT_TRANSLATE_NOOP("Command", "Move an object inside tree")); App::DocumentObject* lastObject = nullptr; for ( auto feat: features ) { @@ -943,17 +943,19 @@ void CmdPartDesignMoveFeatureInTree::activated(int iMsg) // If the selected objects have been moved after the current tip then ask the // user if he wants the last object to be the new tip. - if (lastObject && body->Tip.getValue() == target) { + // Only do this for features that can hold a tip (not for e.g. datums) + if ( lastObject && body->Tip.getValue() == target + && lastObject->isDerivedFrom(PartDesign::Feature::getClassTypeId()) ) { QMessageBox msgBox(Gui::getMainWindow()); msgBox.setIcon(QMessageBox::Question); - msgBox.setWindowTitle(qApp->translate("PartDesign_MoveFeatureInTree","Move tip")); - msgBox.setText(qApp->translate("PartDesign_MoveFeatureInTree","The moved feature appears after the currently set tip.")); - msgBox.setInformativeText(qApp->translate("PartDesign_MoveFeatureInTree","Do you want the last feature to be the new tip?")); + msgBox.setWindowTitle(qApp->translate("PartDesign_MoveFeatureInTree", "Move tip")); + msgBox.setText(qApp->translate("PartDesign_MoveFeatureInTree", "The moved feature appears after the currently set tip.")); + msgBox.setInformativeText(qApp->translate("PartDesign_MoveFeatureInTree", "Do you want the last feature to be the new tip?")); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::No); int ret = msgBox.exec(); if (ret == QMessageBox::Yes) - FCMD_OBJ_CMD(body,"Tip = " << getObjectCmd(lastObject)); + FCMD_OBJ_CMD(body, "Tip = " << getObjectCmd(lastObject)); } updateActive(); diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_af.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_af.qm index 06a5bfd1b2..f267779861 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_af.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_af.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ar.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ar.qm index 8d0ec220f0..18a4fd4a9e 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ar.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ar.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.qm index 1466e868ad..d552209481 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ca.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.qm index ebcc43d11c..4d0cab7d29 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_cs.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.qm index e072efb6da..ca83a358a9 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.qm index 6c33377dde..1170e7fcd3 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_el.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.qm index f1465bee0f..925dcb8e3a 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_es-ES.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.qm index 5c5653de29..9b6a44a1d6 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_eu.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.qm index c7a8e4e285..a950965fb8 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fi.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fil.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fil.qm index 71dc583602..f51cf23428 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fil.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fil.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.qm index cb72df3f96..adde7f890d 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_fr.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.qm index 6265bd02db..b4967f4a45 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_gl.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.qm index de124d215f..67adabb0b1 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hr.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.qm index 117532a263..c5d9b75d5d 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_hu.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.qm index c1cf8c3ebb..614b2bde66 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_id.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.qm index c8bf877744..17bdfc12fa 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_it.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.qm index 19baea4a73..ae67ea5a3b 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ja.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_kab.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_kab.qm index 099239003f..506df74368 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_kab.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_kab.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.qm index 3532985129..5074d7ef6e 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ko.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_lt.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_lt.qm index 47d19173ad..a1ac3ae88f 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_lt.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_lt.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.qm index 0c1c5bfbbe..b80ecec60d 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_nl.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_no.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_no.qm index 3c8e3de2f1..6fc492a8a1 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_no.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_no.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.qm index 31ca5673a0..1a51f30dc2 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts index 7ae246ba8a..ccc8011ba0 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pl.ts @@ -281,7 +281,7 @@ Mirrored - Dublowane + Odbicie lustrzane @@ -1091,12 +1091,12 @@ Add body - Dodaj zawartość + Dodaj kontener Remove body - Usuń zawartość + Usuń kontener @@ -1336,7 +1336,7 @@ Belongs to another body - Należy do innej części + Należy do innego kontenera @@ -2285,7 +2285,7 @@ Recto Verso - Druk obustronny + Obie strony @@ -2300,7 +2300,7 @@ Make thickness inwards - Stwórz gęstość do wewnątrz + Stwórz grubość do wewnątrz @@ -2584,7 +2584,7 @@ Do you want to close this dialog? - Czy chcesz zamknąć to okno dialogowe? + Czy chcesz zamknąć to okno? @@ -2607,7 +2607,7 @@ Select an edge, face or body. - Wybierz krawędź, ścianę lub zawartość. + Wybierz krawędź, ścianę lub kontener. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.qm index 06f6df3b0f..b0bd2cb077 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-BR.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.qm index f1dd46fffd..7f82a35f25 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_pt-PT.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.qm index 5da5049b47..c3e096b169 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ro.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.qm index 9835cfbbea..7942d38af8 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_ru.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sk.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sk.qm index 8c0b27880d..10b2667d5a 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sk.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sk.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.qm index c4f0a67102..f76a15005b 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts index f2ba59e0d1..a2aec4f7fb 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sl.ts @@ -376,7 +376,7 @@ Create a new sketch - Create a new sketch + Ustvari nov očrt diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.qm index ced15d312b..bbe3395fb7 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts index 892bfe6455..d9d716f9e4 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sr.ts @@ -1789,7 +1789,7 @@ Binormal - Binormal + Бинормала diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.qm index 4fbbad66ab..f95c3faa31 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.qm differ 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 95d4048054..30bb433a90 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_sv-SE.ts @@ -1774,7 +1774,7 @@ finns inget material att avlägsna; Fixed - Fixed + Fixerad diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.qm index bf34900f12..b1f75bbb59 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts index c3698bf740..b50fed6c94 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_tr.ts @@ -11,7 +11,7 @@ Additive loft - İlave Çatılama + Çatıla @@ -29,7 +29,7 @@ Additive pipe - Ilave boru + Borula @@ -227,12 +227,12 @@ Create a datum line - Bir referans çizgisi oluştur + Bir referans doğrusu oluştur Create a new datum line - Yeni bir referans çizgisi oluştur + Yeni bir referans doğrusu oluştur @@ -281,7 +281,7 @@ Mirrored - Yansıtılmış + Aynala @@ -425,7 +425,7 @@ Pocket - Oyuk + Boşluk @@ -479,12 +479,12 @@ Revolution - Döndürme + Döndür Revolve a selected sketch - Seçili bir eskizi döndürerek katı oluştur + Seçili bir eskizi döndürerek katı cisim oluştur @@ -515,7 +515,7 @@ Create a shape binder - Şekil bağlayıcı oluşturma + Bir şekil bağlayıcı oluştur @@ -551,7 +551,7 @@ Subtractive pipe - Subtractive boru + Çıkarılabilir borulama @@ -667,12 +667,12 @@ Subtractive Ellipsoid - Çıkarımcı elipsoid + Çıkarılabilir Elipsoit Subtractive Torus - Çıkarılabilir Yumru + Çıkarılabilir Halka @@ -1721,7 +1721,7 @@ Pad parameters - Kalınlık verme parametreleri + Kalınlık parametreleri @@ -2158,7 +2158,7 @@ Revolution parameters - Dönüş değişkenleri + Döndürme değişkenleri @@ -2229,7 +2229,7 @@ Datum shape parameters - Veri şekli parametreleri + Referans şekil parametreleri @@ -2337,7 +2337,7 @@ Construction line %1 - İnşaat hattı %1 + Yapı hattı %1 @@ -2394,27 +2394,27 @@ Create an additive cylinder by its radius, height and angle - Radyusun yarıçapı, yüksekliği ve açısı ile ek bir silindir oluşturun + Yarıçapı, yüksekliği ve açısına göre bir katkı silindir oluşturun Create an additive sphere by its radius and various angles - Onun yarıçapı ve çeşitli açıları ile bir katkı küresi oluşturun + Yarıçapı ve çeşitli açıları ile ek bir küre oluşturun Create an additive cone - Katkılı bir koni oluşturun + İlave bir koni oluşturun Create an additive ellipsoid - Katkılı bir elipsoit oluşturun + İlave bir elipsoit oluşturun Create an additive torus - Katkılı bir torus yarat + İlave bir halka oluşturun @@ -2457,7 +2457,7 @@ Create a subtractive torus - Çıkarılabilir bir simit oluştur + Çıkarılabilir bir halka oluştur @@ -2633,7 +2633,7 @@ %1 works only on parts. - % 1 yalnızca parçalar üzerinde çalışıyor. + %1 sadece parçalar üzerinde çalışır. @@ -2697,7 +2697,7 @@ %1 already belongs to a body, can't use it as base feature for another body. - % 1 zaten bir cisim ait, başka bir cisim için temel özellik olarak kullanamıyor. + %1 zaten bir gövdeye ait, başka bir gövde için temel özellik olarak kullanılamaz. @@ -2707,7 +2707,7 @@ Base feature (%1) belongs to other part. - Temel özellik (% 1) başka bir parçaya ait. + Temel özellik (%1) başka bir parçaya ait. @@ -2863,7 +2863,7 @@ Bu, beklenmedik sonuçlara neden olabilir. Construction line %1 - İnşaat hattı %1 + Yapı hattı %1 @@ -3013,7 +3013,7 @@ Bu özellik bozuk ve düzenlenemiyor. Edit shape binder - Şekil bağlayıcı düzenle + Şekil bağlayıcıyı düzenle @@ -3033,7 +3033,7 @@ Bu özellik bozuk ve düzenlenemiyor. The document "%1" you are editing was designed with an old version of PartDesign workbench. - Düzenlediğiniz "% 1" belgesi, PartDesign tezgahının eski bir sürümüyle tasarlandı. + Düzenlediğiniz "%1" belgesi, ParçaTasarımı (PartDesign) tezgahının eski bir sürümüyle tasarlandı. @@ -3043,7 +3043,7 @@ Bu özellik bozuk ve düzenlenemiyor. The document "%1" seems to be either in the middle of the migration process from legacy PartDesign or have a slightly broken structure. - "% 1" belgesi ya eski PartDesign'dan geçiş işleminin ortasında veya biraz bozuk bir yapıya sahip gibi görünüyor. + "%1" belgesi ya eski ParçaTasarımı'dan (PartDesign) geçiş sürecinin ortasında ya da biraz bozuk bir yapıya sahip görünüyor. diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.qm index a3e73415ed..64c57bb012 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_uk.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.qm index eaada5b3d2..5acceb36d2 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_val-ES.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_vi.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_vi.qm index ef31883219..44e69e779d 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_vi.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_vi.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.qm index 363c8f15bd..05841fa15c 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-CN.qm differ diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.qm b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.qm index b542a6c717..0026e0ec22 100644 Binary files a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.qm and b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_zh-TW.qm differ diff --git a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp index 51413f3185..31e84795c8 100644 --- a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp @@ -332,7 +332,7 @@ void TaskChamferParameters::apply() { std::string name = DressUpView->getObject()->getNameInDocument(); - //Gui::Command::openCommand("Chamfer changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Chamfer changed")); PartDesign::Chamfer* pcChamfer = static_cast(DressUpView->getObject()); diff --git a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp index 9b8b8be7f2..1749edbb8d 100644 --- a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp @@ -235,7 +235,7 @@ void TaskFilletParameters::apply() { std::string name = getDressUpView()->getObject()->getNameInDocument(); - //Gui::Command::openCommand("Fillet changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Fillet changed")); ui->filletRadius->apply(); } diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 307e2784f2..407f5465b5 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -20,7 +20,6 @@ * * ***************************************************************************/ - #include "PreCompiled.h" #ifndef _PreComp_ @@ -30,23 +29,33 @@ #include "ui_TaskHoleParameters.h" #include "TaskHoleParameters.h" +#include +#include #include -#include #include +#include +#include +#include #include #include -#include -#include -#include #include - using namespace PartDesignGui; using namespace Gui; namespace bp = boost::placeholders; /* TRANSLATOR PartDesignGui::TaskHoleParameters */ +// See Hole::HoleCutType_ISOmetric_Enums +// and Hole::HoleCutType_ISOmetricfine_Enums +#if 0 // needed for Qt's lupdate utility + qApp->translate("PartDesignGui::TaskHoleParameters", "Counterbore"); + qApp->translate("PartDesignGui::TaskHoleParameters", "Countersink"); + qApp->translate("PartDesignGui::TaskHoleParameters", "Cheesehead (deprecated)"); + qApp->translate("PartDesignGui::TaskHoleParameters", "Countersink socket screw (deprecated)"); + qApp->translate("PartDesignGui::TaskHoleParameters", "Cap screw (deprecated)"); +#endif + TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *parent) : TaskSketchBasedParameters(HoleView, parent, "PartDesign_Hole",tr("Hole parameters")) , observer(new Observer(this, static_cast(vp->getObject()))) @@ -70,7 +79,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *pare ui->label_Angle->setVisible(false); ui->ThreadType->addItem(tr("None"), QByteArray("None")); - ui->ThreadType->addItem(tr("ISO metric coarse profile"), QByteArray("ISO")); + ui->ThreadType->addItem(tr("ISO metric regular profile"), QByteArray("ISO")); ui->ThreadType->addItem(tr("ISO metric fine profile"), QByteArray("ISO")); ui->ThreadType->addItem(tr("UTS coarse profile"), QByteArray("UTS")); ui->ThreadType->addItem(tr("UTS fine profile"), QByteArray("UTS")); @@ -118,7 +127,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *pare ui->HoleCutType->clear(); cursor = pcHole->HoleCutType.getEnums(); while (*cursor) { - ui->HoleCutType->addItem(QString::fromLatin1(*cursor)); + ui->HoleCutType->addItem(tr(*cursor)); ++cursor; } ui->HoleCutType->setCurrentIndex(pcHole->HoleCutType.getValue()); @@ -130,20 +139,25 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *pare if (pcHole->HoleCutType.isValid()) holeCutType = pcHole->HoleCutType.getValueAsString(); - if (holeCutType == "Counterbore") { + if (holeCutType == "None") { + ui->HoleCutDiameter->setEnabled(false); + ui->HoleCutDepth->setEnabled(false); + ui->HoleCutCountersinkAngle->setEnabled(false); + } + else if (holeCutType == "Counterbore") { ui->HoleCutDiameter->setEnabled(true); ui->HoleCutDepth->setEnabled(true); ui->HoleCutCountersinkAngle->setEnabled(false); } else if (holeCutType == "Countersink") { ui->HoleCutDiameter->setEnabled(true); - ui->HoleCutDepth->setEnabled(false); + ui->HoleCutDepth->setEnabled(true); ui->HoleCutCountersinkAngle->setEnabled(true); } - else { - ui->HoleCutDiameter->setEnabled(false); - ui->HoleCutDepth->setEnabled(false); - ui->HoleCutCountersinkAngle->setEnabled(false); + else { // screw definition + ui->HoleCutDiameter->setEnabled(true); + ui->HoleCutDepth->setEnabled(true); + ui->HoleCutCountersinkAngle->setEnabled(true); } ui->DepthType->setCurrentIndex(pcHole->DepthType.getValue()); @@ -153,7 +167,9 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole *HoleView, QWidget *pare else ui->drillPointAngled->setChecked(true); ui->DrillPointAngle->setValue(pcHole->DrillPointAngle.getValue()); - ui->Tapered->setChecked(pcHole->ModelActualThread.getValue()); + ui->Tapered->setChecked(pcHole->Tapered.getValue()); + // Angle is only enabled (sensible) if tapered + ui->TaperedAngle->setEnabled(pcHole->Tapered.getValue()); ui->TaperedAngle->setValue(pcHole->TaperedAngle.getValue()); ui->Reversed->setChecked(pcHole->Reversed.getValue()); @@ -263,6 +279,10 @@ void TaskHoleParameters::holeCutChanged(int index) PartDesign::Hole* pcHole = static_cast(vp->getObject()); + // the HoleCutDepth is something different for countersinks and counterbores + // therefore reset it, it will be reset to sensible values by setting the new HoleCutType + pcHole->HoleCutDepth.setValue(0.0); + pcHole->HoleCutType.setValue(index); recomputeFeature(); } @@ -279,7 +299,24 @@ void TaskHoleParameters::holeCutDepthChanged(double value) { PartDesign::Hole* pcHole = static_cast(vp->getObject()); - pcHole->HoleCutDepth.setValue(value); + if (ui->HoleCutCountersinkAngle->isEnabled()){ + // we have a countersink and recalculate the HoleCutDiameter + + // store current depth + double DepthDifference = value - pcHole->HoleCutDepth.getValue(); + // new diameter is the old one + 2*tan(angle/2)*DepthDifference + double newDiameter = pcHole->HoleCutDiameter.getValue() + + 2 * tan(Base::toRadians(pcHole->HoleCutCountersinkAngle.getValue() / 2)) * DepthDifference; + // only apply if the result is not smaller than the hole diameter + if (newDiameter > pcHole->Diameter.getValue()) { + pcHole->HoleCutDiameter.setValue(newDiameter); + pcHole->HoleCutDepth.setValue(value); + } + } + else { + pcHole->HoleCutDepth.setValue(value); + } + recomputeFeature(); } @@ -758,7 +795,7 @@ long TaskHoleParameters::getThreadClass() const long TaskHoleParameters::getThreadFit() const { - // the fit is independent if the hole is threaded or not + // the fit (clearance) is independent if the hole is threaded or not // since an unthreaded hole for a screw can also have a close fit return ui->ThreadFit->currentIndex(); } diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.ui b/src/Mod/PartDesign/Gui/TaskHoleParameters.ui index 2127434a3d..33def9abea 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.ui @@ -6,91 +6,21 @@ 0 0 - 356 - 583 + 373 + 560 + + + 0 + 0 + + Task Hole Parameters - - - - <b>Misc</b> - - - - - - - false - - - deg - - - - - - - - 0 - 0 - - - - Type - - - - - - - - - - - 0 - 0 - - - - <b>Drill point</b> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - Fit - - - - - - - false - - - mm - - - - - - - false - - - Cutoff outer - - - - + false @@ -98,44 +28,262 @@ mm + + 0.000000000000000 + - - + + + + + 0 + 0 + + + + + 140 + 16777215 + + + + + Dimension + + + + + Through all + + + + + + + + + 0 + 0 + + + + + 110 + 16777215 + + + + Hole diameter + + + mm + + + 0.000000000000000 + + + + + + + + 0 + 0 + + + + + 110 + 16777215 + + + + Hole clearance +Only available for holes without thread + + + + Standard + + + + + Close + + + + + Wide + + + + + + false - Cutoff inner + Angle - + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + <b>Hole cut</b> + + + + + + + Thread direction + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Right hand + + + + + + + Left hand + + + + + + + + + + false + + + mm + + + 0.000000000000000 + + + + - - mm + + + 0 + 0 + - - - - - - mm - - - - - - - Qt::NoContextMenu + + + 16777215 + 16777215 + mm + + 0.000000000000000 + + + 0.100000000000000 + - + + + + false + + + Model actual thread + + + + + + + + 0 + 0 + + + + Depth + + + + + + + + 0 + 0 + + + + Profile + + + + + + + 0 + 0 + + + + + 140 + 16777215 + + + + Ending of the hole if 'Depth' is set to 'Dimension' + 0 @@ -155,7 +303,7 @@ - + 0 0 @@ -170,7 +318,7 @@ - + 0 0 @@ -182,9 +330,18 @@ + + + 0 + 0 + + deg + + 0.000000000000000 + @@ -192,31 +349,23 @@
      - - - - false + + + + + 0 + 0 + - - mm + + + 16777215 + 16777215 + - - - - mm - - - - - - - Reversed - - - - + @@ -229,237 +378,53 @@ - - - - - 0 - 0 - - - - Diameter - - - - - - - - 0 - 0 - - - - Depth - - - - - - - Diameter - - - - - - - <b>Threading and size</b> - - - - - - - deg - - - - - - - Tolerance class for threaded holes according to the hole profile - - - - - - - deg - - - - - - - Threaded - - - - + Tapered - - + + false - Angle + Cutoff inner - - + + - + 0 0 - - - Dimension - - - - - Through all - - - - - - - - - - - - - - Type + + + 140 + 16777215 + - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - Countersink angle - - - - - - - Depth - - - - - - - <b>Hole cut</b> - - - - - - - false - - - Pitch - - - - - - - - 0 - 0 - - - - Profile - - - - - - - - 0 - 0 - - - - Direction - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Right hand - - - - - - - Left hand - - - - - - - - - Hole fit, only available for holes without thread + Tolerance class for threaded holes according to hole profile + + + + + + + + 0 + 0 + + + + mm - - - Standard fit - - - - - Close fit - - @@ -475,28 +440,288 @@ - - + + + + + 0 + 0 + + + + <b>Drill point</b> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + Type + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + false - Model actual thread + Cutoff outer - - - - Qt::Horizontal + + + + + 0 + 0 + - + + Type + + + + + + + false + + + deg + + + 0.000000000000000 + + + + + + + <b>Threading and size</b> + + + + + + + + 0 + 0 + + + - 40 - 20 + 140 + 16777215 - + + Cut type for screw heads + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + deg + + + 0.000000000000000 + + + + + + + <b>Misc</b> + + + + + + + + 0 + 0 + + + + Direction + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + 0 + 0 + + + + Diameter + + + + + + + Depth + + + + + + + Countersink angle + + + + + + + Diameter + + + + + + + Clearance + + + + + + + false + + + mm + + + 0.000000000000000 + + + + + + + Whether the hole gets a thread + + + Threaded + + + + + + + + 0 + 0 + + + + + 140 + 16777215 + + + + + + + + + 120 + 16777215 + + + + Taper angle for the hole +90 degree: straight hole +under 90: smaller hole radius at the bottom +over 90: larger hole radius at the bottom + + + deg + + + 0.000000000000000 + + + + + + + false + + + Pitch + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Qt::NoContextMenu + + + mm + + + 0.000000000000000 + + + 0.100000000000000 + + + + + + + Reverses the hole direction + + + Reversed + + @@ -513,5 +738,54 @@ - + + + Tapered + clicked(bool) + TaperedAngle + setEnabled(bool) + + + 40 + 540 + + + 136 + 540 + + + + + Threaded + clicked(bool) + ThreadFit + setEnabled(bool) + + + 136 + 63 + + + 322 + 254 + + + + + Threaded + clicked(bool) + ThreadClass + setEnabled(bool) + + + 136 + 63 + + + 136 + 280 + + + + diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index d01394c53b..48ff9329f9 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -288,7 +288,7 @@ void TaskMultiTransformParameters::onTransformAddMirrored() auto pcActiveBody = PartDesignGui::getBody(false); if(!pcActiveBody) return; - Gui::Command::openCommand("Mirrored"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Mirrored")); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::Mirrored','"<getDocument()->getObject(newFeatName.c_str()); //Gui::Command::updateActive(); @@ -308,7 +308,7 @@ void TaskMultiTransformParameters::onTransformAddLinearPattern() auto pcActiveBody = PartDesignGui::getBody(false); if(!pcActiveBody) return; - Gui::Command::openCommand("Make LinearPattern"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Make LinearPattern")); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::LinearPattern','"<getDocument()->getObject(newFeatName.c_str()); //Gui::Command::updateActive(); @@ -338,7 +338,7 @@ void TaskMultiTransformParameters::onTransformAddPolarPattern() auto pcActiveBody = PartDesignGui::getBody(false); if(!pcActiveBody) return; - Gui::Command::openCommand("PolarPattern"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "PolarPattern")); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::PolarPattern','"<getDocument()->getObject(newFeatName.c_str()); //Gui::Command::updateActive(); @@ -358,7 +358,7 @@ void TaskMultiTransformParameters::onTransformAddScaled() auto pcActiveBody = PartDesignGui::getBody(false); if(!pcActiveBody) return; - Gui::Command::openCommand("Scaled"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Scaled")); FCMD_OBJ_CMD(pcActiveBody,"newObject('PartDesign::Scaled','"<getDocument()->getObject(newFeatName.c_str()); //Gui::Command::updateActive(); diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.ui b/src/Mod/PartDesign/Gui/TaskPadParameters.ui index a24541cbb5..375986c44e 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.ui @@ -234,9 +234,6 @@ the sketch plane's normal vector will be used false - - 0.000000000000000 -
      diff --git a/src/Mod/PartDesign/Gui/TaskPocketParameters.ui b/src/Mod/PartDesign/Gui/TaskPocketParameters.ui index e5c29c05fe..29ea32605f 100644 --- a/src/Mod/PartDesign/Gui/TaskPocketParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskPocketParameters.ui @@ -104,9 +104,6 @@ false - - 0.000000000000000 -
      diff --git a/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp b/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp index 83c7f8448a..bc1326b71b 100644 --- a/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp @@ -396,7 +396,7 @@ void TaskRevolutionParameters::changeEvent(QEvent *e) void TaskRevolutionParameters::apply() { - //Gui::Command::openCommand("Revolution changed"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Revolution changed")); ui->revolveAngle->apply(); std::vector sub; App::DocumentObject* obj; diff --git a/src/Mod/PartDesign/Gui/ViewProvider.cpp b/src/Mod/PartDesign/Gui/ViewProvider.cpp index 87aec1239f..45aff0b35d 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.cpp +++ b/src/Mod/PartDesign/Gui/ViewProvider.cpp @@ -96,6 +96,8 @@ void ViewProvider::setupContextMenu(QMenu* menu, QObject* receiver, const char* { QAction* act = menu->addAction(QObject::tr("Set colors..."), receiver, member); act->setData(QVariant((int)ViewProvider::Color)); + // Call the extensions + Gui::ViewProvider::setupContextMenu(menu, receiver, member); } bool ViewProvider::setEdit(int ModNum) diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index 021cdf4164..073473aa8e 100644 --- a/src/Mod/PartDesign/Gui/Workbench.cpp +++ b/src/Mod/PartDesign/Gui/Workbench.cpp @@ -543,6 +543,18 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "PartDesign_Sprocket" << "PartDesign_InvoluteGear"; + // use Part's measure features also for PartDesign + Gui::MenuItem* measure = new Gui::MenuItem; + root->insertItem(item, measure); + measure->setCommand("Measure"); + *measure << "Part_Measure_Linear" + << "Part_Measure_Angular" + << "Separator" + << "Part_Measure_Refresh" + << "Part_Measure_Clear_All" + << "Part_Measure_Toggle_All" + << "Part_Measure_Toggle_3D" + << "Part_Measure_Toggle_Delta"; // For 0.13 a couple of python packages like numpy, matplotlib and others // are not deployed with the installer on Windows. Thus, the WizardShaft is @@ -608,6 +620,18 @@ Gui::ToolBarItem* Workbench::setupToolBars() const << "Separator" << "PartDesign_Boolean"; + // use Part's measure features also for PartDesign + Gui::ToolBarItem* measure = new Gui::ToolBarItem(root); + measure->setCommand("Measure"); + *measure << "Part_Measure_Linear" + << "Part_Measure_Angular" + << "Separator" + << "Part_Measure_Refresh" + << "Part_Measure_Clear_All" + << "Part_Measure_Toggle_All" + << "Part_Measure_Toggle_3D" + << "Part_Measure_Toggle_Delta"; + return root; } diff --git a/src/Mod/PartDesign/InitGui.py b/src/Mod/PartDesign/InitGui.py index c935ffb033..f7b7ac747e 100644 --- a/src/Mod/PartDesign/InitGui.py +++ b/src/Mod/PartDesign/InitGui.py @@ -39,7 +39,10 @@ class PartDesignWorkbench ( Workbench ): def Initialize(self): # load the module try: + import traceback from PartDesign.WizardShaft import WizardShaft + except RuntimeError: + print ("{}".format(traceback.format_exc())) except ImportError: print("Wizard shaft module cannot be loaded") try: diff --git a/src/Mod/PartDesign/Resources/Hole/iso10642-fine.json b/src/Mod/PartDesign/Resources/Hole/iso10642-fine.json new file mode 100644 index 0000000000..9fb6eb5e5a --- /dev/null +++ b/src/Mod/PartDesign/Resources/Hole/iso10642-fine.json @@ -0,0 +1,25 @@ +{ + "name": "ISO 10642", + "cut_type": "countersink", + "thread_type": "metricfine", + "angle": 90, + "data": [ + { "thread": "M1.6x0.2", "diameter": 3.6 }, + { "thread": "M2x0.25", "diameter": 4.5 }, + { "thread": "M2.5x0.35", "diameter": 5.6 }, + { "thread": "M3x0.35", "diameter": 6.7 }, + { "thread": "M4x0.5", "diameter": 9.0 }, + { "thread": "M5x0.5", "diameter": 12.2 }, + { "thread": "M6x0.75", "diameter": 13.5 }, + { "thread": "M8x0.75", "diameter": 18.0 }, + { "thread": "M8x1.0", "diameter": 18.0 }, + { "thread": "M10x1.0", "diameter": 22.4 }, + { "thread": "M10x1.25", "diameter": 22.4 }, + { "thread": "M12x1.25", "diameter": 26.8 }, + { "thread": "M12x1.5", "diameter": 26.8 }, + { "thread": "M14x1.5", "diameter": 30.9 }, + { "thread": "M16x1.5", "diameter": 33.6 }, + { "thread": "M20x1.5", "diameter": 40.3 }, + { "thread": "M20x2.0", "diameter": 40.3 } + ] +} diff --git a/src/Mod/PartDesign/Resources/Hole/iso10642.json b/src/Mod/PartDesign/Resources/Hole/iso10642.json index 3287c30179..4ab3affb6d 100644 --- a/src/Mod/PartDesign/Resources/Hole/iso10642.json +++ b/src/Mod/PartDesign/Resources/Hole/iso10642.json @@ -4,6 +4,9 @@ "thread_type": "metric", "angle": 90, "data": [ + { "thread": "M1.6", "diameter": 3.6 }, + { "thread": "M2", "diameter": 4.5 }, + { "thread": "M2.5", "diameter": 5.6 }, { "thread": "M3", "diameter": 6.7 }, { "thread": "M4", "diameter": 9.0 }, { "thread": "M5", "diameter": 12.2 }, diff --git a/src/Mod/PartDesign/Resources/Hole/iso12474-fine.json b/src/Mod/PartDesign/Resources/Hole/iso12474-fine.json new file mode 100644 index 0000000000..75812c6a3a --- /dev/null +++ b/src/Mod/PartDesign/Resources/Hole/iso12474-fine.json @@ -0,0 +1,23 @@ +{ + "name": "ISO 12474", + "cut_type": "counterbore", + "thread_type": "metricfine", + "data": [ + { "thread": "M8x1.0", "diameter": 15.0, "depth": 8.6 }, + { "thread": "M10x1.0", "diameter": 18.0, "depth": 10.6 }, + { "thread": "M10x1.25", "diameter": 18.0, "depth": 10.6 }, + { "thread": "M12x1.25", "diameter": 20.0, "depth": 12.6 }, + { "thread": "M12x1.5", "diameter": 20.0, "depth": 12.6 }, + { "thread": "M14x1.5", "diameter": 24.0, "depth": 14.6 }, + { "thread": "M16x1.5", "diameter": 26.0, "depth": 16.6 }, + { "thread": "M18x1.5", "diameter": 30.0, "depth": 18.6 }, + { "thread": "M20x1.5", "diameter": 33.0, "depth": 20.6 }, + { "thread": "M20x2.0", "diameter": 33.0, "depth": 20.6 }, + { "thread": "M22x1.5", "diameter": 36.0, "depth": 22.8 }, + { "thread": "M24x2.0", "diameter": 40.0, "depth": 24.8 }, + { "thread": "M30x2.0", "diameter": 50.0, "depth": 31.0 }, + { "thread": "M33x1.5", "diameter": 54.0, "depth": 34.0 }, + { "thread": "M36x3.0", "diameter": 58.0, "depth": 37.0 }, + { "thread": "M42x3.0", "diameter": 69.0, "depth": 41.0 } + ] +} diff --git a/src/Mod/PartDesign/Resources/Hole/iso2009.json b/src/Mod/PartDesign/Resources/Hole/iso2009.json new file mode 100644 index 0000000000..3c35196709 --- /dev/null +++ b/src/Mod/PartDesign/Resources/Hole/iso2009.json @@ -0,0 +1,17 @@ +{ + "name": "ISO 2009", + "cut_type": "countersink", + "thread_type": "metric", + "angle": 90, + "data": [ + { "thread": "M2", "diameter": 4.3 }, + { "thread": "M2.5", "diameter": 5.3 }, + { "thread": "M3", "diameter": 6.3 }, + { "thread": "M4", "diameter": 9.5 }, + { "thread": "M5", "diameter": 10.5 }, + { "thread": "M6", "diameter": 12.7 }, + { "thread": "M8", "diameter": 17.7 }, + { "thread": "M10", "diameter": 20.2 }, + { "thread": "M12", "diameter": 24.7 } + ] +} diff --git a/src/Mod/PartDesign/Resources/Hole/iso4762-fine.json b/src/Mod/PartDesign/Resources/Hole/iso4762-fine.json new file mode 100644 index 0000000000..48dc5ee3ab --- /dev/null +++ b/src/Mod/PartDesign/Resources/Hole/iso4762-fine.json @@ -0,0 +1,35 @@ +{ + "name": "ISO 4762", + "cut_type": "counterbore", + "thread_type": "metricfine", + "data": [ + { "thread": "M1.6x0.2", "diameter": 3.5, "depth": 1.7 }, + { "thread": "M2x0.25", "diameter": 4.3, "depth": 2.1 }, + { "thread": "M2.5x0.35", "diameter": 5.0, "depth": 3.0 }, + { "thread": "M3x0.35", "diameter": 6.0, "depth": 3.4 }, + { "thread": "M3.5x0.35", "diameter": 6.5, "depth": 3.9 }, + { "thread": "M4x0.5", "diameter": 8.0, "depth": 4.4 }, + { "thread": "M5x0.5", "diameter": 10.0, "depth": 5.4 }, + { "thread": "M6x0.75", "diameter": 11.0, "depth": 6.4 }, + { "thread": "M8x0.75", "diameter": 15.0, "depth": 8.6 }, + { "thread": "M8x1.0", "diameter": 15.0, "depth": 8.6 }, + { "thread": "M10x1.0", "diameter": 18.0, "depth": 10.6 }, + { "thread": "M10x1.25", "diameter": 18.0, "depth": 10.6 }, + { "thread": "M12x1.25", "diameter": 20.0, "depth": 12.6 }, + { "thread": "M12x1.5", "diameter": 20.0, "depth": 12.6 }, + { "thread": "M14x1.5", "diameter": 24.0, "depth": 14.6 }, + { "thread": "M16x1.5", "diameter": 26.0, "depth": 16.6 }, + { "thread": "M18x1.5", "diameter": 30.0, "depth": 18.6 }, + { "thread": "M18x2.0", "diameter": 30.0, "depth": 18.6 }, + { "thread": "M20x1.5", "diameter": 33.0, "depth": 20.6 }, + { "thread": "M20x2.0", "diameter": 33.0, "depth": 20.6 }, + { "thread": "M22x1.5", "diameter": 36.0, "depth": 22.8 }, + { "thread": "M22x2.0", "diameter": 36.0, "depth": 22.8 }, + { "thread": "M24x2.0", "diameter": 40.0, "depth": 24.8 }, + { "thread": "M30x2.0", "diameter": 50.0, "depth": 31.0 }, + { "thread": "M33x2.0", "diameter": 54.0, "depth": 34.0 }, + { "thread": "M36x3.0", "diameter": 58.0, "depth": 37.0 }, + { "thread": "M42x3.0", "diameter": 69.0, "depth": 43.0 }, + { "thread": "M48x3.0", "diameter": 78.0, "depth": 49.0 } + ] +} diff --git a/src/Mod/PartDesign/Resources/Hole/iso4762.json b/src/Mod/PartDesign/Resources/Hole/iso4762.json index 4adc0e3022..3adc79d9d5 100644 --- a/src/Mod/PartDesign/Resources/Hole/iso4762.json +++ b/src/Mod/PartDesign/Resources/Hole/iso4762.json @@ -4,9 +4,9 @@ "thread_type": "metric", "data": [ { "thread": "M1.6", "diameter": 3.5, "depth": 1.7 }, - { "thread": "M2", "diameter": 4.4, "depth": 2.1 }, - { "thread": "M2.5", "diameter": 5.5, "depth": 3.0 }, - { "thread": "M3", "diameter": 6.5, "depth": 3.4 }, + { "thread": "M2", "diameter": 4.3, "depth": 2.1 }, + { "thread": "M2.5", "diameter": 5.0, "depth": 3.0 }, + { "thread": "M3", "diameter": 6.0, "depth": 3.4 }, { "thread": "M3.5", "diameter": 6.5, "depth": 3.9 }, { "thread": "M4", "diameter": 8.0, "depth": 4.4 }, { "thread": "M5", "diameter": 10.0, "depth": 5.4 }, @@ -20,11 +20,12 @@ { "thread": "M20", "diameter": 33.0, "depth": 20.6 }, { "thread": "M22", "diameter": 36.0, "depth": 22.8 }, { "thread": "M24", "diameter": 40.0, "depth": 24.8 }, - { "thread": "M27", "diameter": 46.0, "depth": 31.0 }, - { "thread": "M30", "diameter": 50.0, "depth": 34.0 }, - { "thread": "M33", "diameter": 54.0, "depth": 36.0 }, + { "thread": "M30", "diameter": 50.0, "depth": 31.0 }, + { "thread": "M33", "diameter": 54.0, "depth": 34.0 }, { "thread": "M36", "diameter": 58.0, "depth": 37.0 }, { "thread": "M42", "diameter": 69.0, "depth": 43.0 }, - { "thread": "M48", "diameter": 78.0, "depth": 49.0 } + { "thread": "M48", "diameter": 78.0, "depth": 49.0 }, + { "thread": "M54", "diameter": 90.0, "depth": 55.0 }, + { "thread": "M64", "diameter": 103.0, "depth": 65.0 } ] } diff --git a/src/Mod/PartDesign/Resources/Hole/iso7046.json b/src/Mod/PartDesign/Resources/Hole/iso7046.json new file mode 100644 index 0000000000..6a4bbec5be --- /dev/null +++ b/src/Mod/PartDesign/Resources/Hole/iso7046.json @@ -0,0 +1,16 @@ +{ + "name": "ISO 7046", + "cut_type": "countersink", + "thread_type": "metric", + "angle": 90, + "data": [ + { "thread": "M2", "diameter": 4.3 }, + { "thread": "M2.5", "diameter": 5.3 }, + { "thread": "M3", "diameter": 6.3 }, + { "thread": "M4", "diameter": 9.5 }, + { "thread": "M5", "diameter": 10.5 }, + { "thread": "M6", "diameter": 12.7 }, + { "thread": "M8", "diameter": 17.7 }, + { "thread": "M10", "diameter": 20.5 } + ] +} diff --git a/src/Mod/PartDesign/WizardShaft/Shaft.py b/src/Mod/PartDesign/WizardShaft/Shaft.py index bcae55df69..b8f3a1841e 100644 --- a/src/Mod/PartDesign/WizardShaft/Shaft.py +++ b/src/Mod/PartDesign/WizardShaft/Shaft.py @@ -53,12 +53,12 @@ class Shaft: wstrings = (("", "", "", "", ""), ("Translation [y]", "x", "mm", "w_y", "mm"), ("Translation [z]", "x", "mm", "w_z", "mm")) - sigmaNstrings = (("Normal stress [x]", "x", "mm", "\sigma_x", u"N/mm²"), - ("Shear stress [y]", "x", "mm", "\sigma_y", u"N/mm²"), - ("Shear stress [z]", "x", "mm", "\sigma_z", u"N/mm²")) - sigmaBstrings = (("Torque stress [x]", "x", "mm", "\tau_t", u"N/mm²"), - ("Bending stress [z]", "x", "mm", "\sigma_{b,z}", u"N/mm²"), - ("Bending stress [y]", "x", "mm", "\sigma_{b,y}", u"N/mm²")) + sigmaNstrings = (("Normal stress [x]", "x", "mm", "\\sigma_x", u"N/mm²"), + ("Shear stress [y]", "x", "mm", "\\sigma_y", u"N/mm²"), + ("Shear stress [z]", "x", "mm", "\\sigma_z", u"N/mm²")) + sigmaBstrings = (("Torque stress [x]", "x", "mm", "\\tau_t", u"N/mm²"), + ("Bending stress [z]", "x", "mm", "\\sigma_{b,z}", u"N/mm²"), + ("Bending stress [y]", "x", "mm", "\\sigma_{b,y}", u"N/mm²")) def __init__(self, parent): self.parent = parent diff --git a/src/Mod/PartDesign/WizardShaft/ShaftDiagram.py b/src/Mod/PartDesign/WizardShaft/ShaftDiagram.py index b0fdf29f72..096ab4d9ec 100644 --- a/src/Mod/PartDesign/WizardShaft/ShaftDiagram.py +++ b/src/Mod/PartDesign/WizardShaft/ShaftDiagram.py @@ -27,7 +27,7 @@ import FreeCAD, FreeCADGui class Diagram: def create(self, title, function, xlength, xname, xunit, xscale, yname, yunit, yscale, numxpoints): # Initialize - import Plot + from freecad.plot import Plot self.title = title self.function = function # This is assumed to be always a SegmentFunction self.xlength = xlength diff --git a/src/Mod/PartDesign/WizardShaft/WizardShaft.py b/src/Mod/PartDesign/WizardShaft/WizardShaft.py index 61ed019a02..85895b90f1 100644 --- a/src/Mod/PartDesign/WizardShaft/WizardShaft.py +++ b/src/Mod/PartDesign/WizardShaft/WizardShaft.py @@ -22,6 +22,7 @@ # ******************************************************************************/ import FreeCAD, FreeCADGui +import traceback from PySide import QtCore, QtGui from .WizardShaftTable import WizardShaftTable from .Shaft import Shaft @@ -75,7 +76,7 @@ class TaskWizardShaft: self.shaft = Shaft(self) # Create table widget self.form = QtGui.QWidget() - self.table = WizardShaftTable(self, self.shaft) + self.table = WizardShaftTable(self, self.shaft) # The top layout will contain the Shaft Wizard layout plus the elements of the FEM constraints dialog layout = QtGui.QVBoxLayout() @@ -90,48 +91,58 @@ class TaskWizardShaft: # Switch to feature window mdi=FreeCADGui.getMainWindow().findChild(QtGui.QMdiArea) cw.setActiveSubWindow(featureWindow) - + + def showDiagram(self, diagram): + try: + self.shaft.showDiagram(diagram) + except ImportError as e: + msgBox = QtGui.QMessageBox() + msgBox.setIcon(msgBox.Information) + msgBox.setWindowTitle("Missing module") + msgBox.setText("You may have to install the Plot add-on") + msgBox.setDetailedText(traceback.format_exc()) + msgBox.exec_() def slotAllx(self): - self.shaft.showDiagram("Allx") + self.showDiagram("Allx") def slotAlly(self): - self.shaft.showDiagram("Ally") + self.showDiagram("Ally") def slotAllz(self): - self.shaft.showDiagram("Allz") + self.showDiagram("Allz") def slotFx(self): - self.shaft.showDiagram("Nx") + self.showDiagram("Nx") def slotQy(self): - self.shaft.showDiagram("Qy") + self.showDiagram("Qy") def slotQz(self): - self.shaft.showDiagram("Qz") + self.showDiagram("Qz") def slotMx(self): - self.shaft.showDiagram("Mx") + self.showDiagram("Mx") def slotMz(self): - self.shaft.showDiagram("Mz") + self.showDiagram("Mz") def slotMy(self): - self.shaft.showDiagram("My") + self.showDiagram("My") def slotNone(self): pass def slotWy(self): - self.shaft.showDiagram("wy") + self.showDiagram("wy") def slotWz(self): - self.shaft.showDiagram("wz") + self.showDiagram("wz") def slotSigmax(self): - self.shaft.showDiagram("sigmax") + self.showDiagram("sigmax") def slotSigmay(self): - self.shaft.showDiagram("sigmay") + self.showDiagram("sigmay") def slotSigmaz(self): - self.shaft.showDiagram("sigmaz") + self.showDiagram("sigmaz") def slotTaut(self): - self.shaft.showDiagram("taut") + self.showDiagram("taut") def slotSigmabz(self): - self.shaft.showDiagram("sigmabz") + self.showDiagram("sigmabz") def slotSigmaby(self): - self.shaft.showDiagram("sigmaby") + self.showDiagram("sigmaby") def updateButton(self, row, col, flag): self.buttons[row][col].setEnabled(flag) diff --git a/src/Mod/Path/App/AppPathPy.cpp b/src/Mod/Path/App/AppPathPy.cpp index a003f09be6..6e0c72d2f5 100644 --- a/src/Mod/Path/App/AppPathPy.cpp +++ b/src/Mod/Path/App/AppPathPy.cpp @@ -389,8 +389,9 @@ private: throw Py::Exception(); std::list shapes; - if (PyObject_TypeCheck(pShapes, &(Part::TopoShapePy::Type))) + if (PyObject_TypeCheck(pShapes, &(Part::TopoShapePy::Type))) { shapes.push_back(static_cast(pShapes)->getTopoShapePtr()->getShape()); + } else if (PyObject_TypeCheck(pShapes, &(PyList_Type)) || PyObject_TypeCheck(pShapes, &(PyTuple_Type))) { Py::Sequence shapeSeq(pShapes); @@ -414,21 +415,18 @@ private: bool need_arc_plane = arc_plane==Area::ArcPlaneAuto; std::list wires = Area::sortWires(shapes,start!=0,&pstart, &pend, 0, &arc_plane, PARAM_PY_FIELDS(PARAM_FARG,AREA_PARAMS_SORT)); - PyObject *list = PyList_New(0); - for(auto &wire : wires) - PyList_Append(list,Py::new_reference_to( - Part::shape2pyshape(TopoDS::Wire(wire)))); - PyObject *ret = PyTuple_New(need_arc_plane?3:2); - PyTuple_SetItem(ret,0,list); - PyTuple_SetItem(ret,1,new Base::VectorPy( - Base::Vector3d(pend.X(),pend.Y(),pend.Z()))); - if(need_arc_plane) -#if PY_MAJOR_VERSION < 3 - PyTuple_SetItem(ret,2,PyInt_FromLong(arc_plane)); -#else - PyTuple_SetItem(ret,2,PyLong_FromLong(arc_plane)); -#endif - return Py::asObject(ret); + Py::List list; + for(auto &wire : wires) { + list.append(Part::shape2pyshape(TopoDS::Wire(wire))); + } + + Py::Tuple ret(need_arc_plane ? 3 : 2); + ret.setItem(0, list); + ret.setItem(1, Py::asObject(new Base::VectorPy(Base::Vector3d(pend.X(),pend.Y(),pend.Z())))); + if (need_arc_plane) + ret.setItem(2, Py::Long(arc_plane)); + + return ret; } PATH_CATCH } }; diff --git a/src/Mod/Path/App/Area.cpp b/src/Mod/Path/App/Area.cpp index 0f80a7094d..b3f2440dcc 100644 --- a/src/Mod/Path/App/Area.cpp +++ b/src/Mod/Path/App/Area.cpp @@ -2963,20 +2963,19 @@ std::list Area::sortWires(const std::list &shapes, pstart = *_pstart; bool use_bound = !has_start || _pstart==NULL; - if(use_bound || sort_mode == SortMode2D5 || sort_mode == SortModeGreedy) { - //Second stage, group shape by its plane, and find overall boundary + //Second stage, group shape by its plane, and find overall boundary - if(arcPlaneFound || use_bound) { - for(auto &info : shape_list) { - if(arcPlaneFound) { - info.myShape.Move(trsf); - if(info.myPlanar) info.myPln.Transform(trsf); - } - if(use_bound) - BRepBndLib::Add(info.myShape, bounds, Standard_False); - } + for(auto &info : shape_list) { + if(arcPlaneFound) { + info.myShape.Move(trsf); + if(info.myPlanar) info.myPln.Transform(trsf); } + BRepBndLib::Add(info.myShape, bounds, Standard_False); + } + + if(use_bound || sort_mode == SortMode2D5 || sort_mode == SortModeGreedy) { + for(auto itNext=shape_list.begin(),it=itNext;it!=shape_list.end();it=itNext) { ++itNext; if(!it->myPlanar) continue; @@ -3005,16 +3004,36 @@ std::list Area::sortWires(const std::list &shapes, //FC_DURATION_DECL_INIT(td); + bounds.SetGap(0.0); + Standard_Real xMin, yMin, zMin, xMax, yMax, zMax; + bounds.Get(xMin, yMin, zMin, xMax, yMax, zMax); + AREA_TRACE("bound (" << xMin<<", "< toolTypes = Tool::ToolTypes(); - PyObject *list = PyList_New(0); + Py::List list; for(unsigned i = 0; i != toolTypes.size(); i++) { - PyList_Append(list, PYSTRING_FROMSTRING(toolTypes[i].c_str())); + list.append(Py::asObject(PYSTRING_FROMSTRING(toolTypes[i].c_str()))); } - return list; + return Py::new_reference_to(list); } throw Py::TypeError("This method accepts no argument"); } @@ -291,12 +291,12 @@ PyObject* ToolPy::getToolMaterials(PyObject * args) { if (PyArg_ParseTuple(args, "")) { std::vector toolMaterials = Tool::ToolMaterials(); - PyObject *list = PyList_New(0); + Py::List list;; for(unsigned i = 0; i != toolMaterials.size(); i++) { - PyList_Append(list, PYSTRING_FROMSTRING(toolMaterials[i].c_str())); + list.append(Py::asObject(PYSTRING_FROMSTRING(toolMaterials[i].c_str()))); } - return list; + return Py::new_reference_to(list); } throw Py::TypeError("This method accepts no argument"); -} \ No newline at end of file +} diff --git a/src/Mod/Path/App/TooltablePyImp.cpp b/src/Mod/Path/App/TooltablePyImp.cpp index 1e517f50a2..a48223a516 100644 --- a/src/Mod/Path/App/TooltablePyImp.cpp +++ b/src/Mod/Path/App/TooltablePyImp.cpp @@ -103,12 +103,12 @@ int TooltablePy::PyInit(PyObject* args, PyObject* /*kwd*/) Py::Dict TooltablePy::getTools(void) const { - PyObject *dict = PyDict_New(); + Py::Dict dict; for(std::map::iterator i = getTooltablePtr()->Tools.begin(); i != getTooltablePtr()->Tools.end(); ++i) { PyObject *tool = new Path::ToolPy(i->second); - PyDict_SetItem(dict,PYINT_FROMLONG(i->first),tool); + dict.setItem(Py::Long(i->first), Py::asObject(tool)); } - return Py::Dict(dict); + return dict; } void TooltablePy::setTools(Py::Dict arg) diff --git a/src/Mod/Path/CMakeLists.txt b/src/Mod/Path/CMakeLists.txt index 5b88d574de..b25189233a 100644 --- a/src/Mod/Path/CMakeLists.txt +++ b/src/Mod/Path/CMakeLists.txt @@ -111,6 +111,8 @@ SET(PathScripts_SRCS PathScripts/PathSurface.py PathScripts/PathSurfaceGui.py PathScripts/PathSurfaceSupport.py + PathScripts/PathThreadMilling.py + PathScripts/PathThreadMillingGui.py PathScripts/PathToolBit.py PathScripts/PathToolBitCmd.py PathScripts/PathToolBitEdit.py @@ -154,26 +156,29 @@ SET(PathScripts_post_SRCS ) SET(Tools_Bit_SRCS - Tools/Bit/t1.fctb - Tools/Bit/t2.fctb - Tools/Bit/t3.fctb - Tools/Bit/t4.fctb - Tools/Bit/t5.fctb - Tools/Bit/t6.fctb - Tools/Bit/t7.fctb - Tools/Bit/t8.fctb - Tools/Bit/t9.fctb + Tools/Bit/45degree_chamfer.fctb + Tools/Bit/5mm_Drill.fctb + Tools/Bit/5mm_Endmill.fctb + Tools/Bit/60degree_Vbit.fctb + Tools/Bit/6mm_Ball_End.fctb + Tools/Bit/6mm_Bullnose.fctb + Tools/Bit/slittingsaw.fctb + Tools/Bit/probe.fctb ) SET(Tools_Library_SRCS - Tools/Library/endmills.fctl + Tools/Library/Default.fctl ) SET(Tools_Shape_SRCS Tools/Shape/ballend.fcstd Tools/Shape/bullnose.fcstd Tools/Shape/drill.fcstd + Tools/Shape/chamfer.fcstd Tools/Shape/endmill.fcstd + Tools/Shape/probe.fcstd + Tools/Shape/slittingsaw.fcstd + Tools/Shape/thread-mill.fcstd Tools/Shape/v-bit.fcstd ) @@ -193,6 +198,7 @@ SET(PathTests_SRCS PathTests/TestPathPreferences.py PathTests/TestPathSetupSheet.py PathTests/TestPathStock.py + PathTests/TestPathThreadMilling.py PathTests/TestPathTool.py PathTests/TestPathToolBit.py PathTests/TestPathToolController.py @@ -221,6 +227,15 @@ SET(Path_Images ${PathImages_Tools} ) +SET(PathData_Threads + Data/Threads/metric-internal.csv + Data/Threads/imperial-internal.csv +) + +SET(Path_Data + ${PathData_Threads} +) + SET(all_files ${PathScripts_SRCS} ${PathScripts_post_SRCS} @@ -228,6 +243,7 @@ SET(all_files ${Tools_Library_SRCS} ${Tools_Shape_SRCS} ${Path_Images} + ${Path_Data} ) ADD_CUSTOM_TARGET(PathScripts ALL @@ -302,3 +318,10 @@ INSTALL( Mod/Path/Images/Tools ) +INSTALL( + FILES + ${PathData_Threads} + DESTINATION + Mod/Path/Data/Threads +) + diff --git a/src/Mod/Path/Data/Threads/imperial-internal.csv b/src/Mod/Path/Data/Threads/imperial-internal.csv new file mode 100644 index 0000000000..9a171490d9 --- /dev/null +++ b/src/Mod/Path/Data/Threads/imperial-internal.csv @@ -0,0 +1,81 @@ +name,tpi,class,dMinorMin,dMinorMax,dPitchMin,dPitchMax,dMajorMin,dMajorMax +0-80,80,2B,0.0465,0.0514,0.0519,0.0542,0.06,0.0633 +0-80,80,3B,0.0465,0.0514,0.0519,0.0536,0.06,0.0626 +1-64,64,2B,0.0561,0.0623,0.0629,0.0655,0.073,0.0768 +1-64,64,3B,0.0561,0.0623,0.0629,0.0648,0.073,0.076 +1-72,72,2B,0.058,0.0635,0.064,0.0665,0.073,0.0766 +1-72,72,3B,0.058,0.0635,0.064,0.0659,0.073,0.0759 +2-56,56,2B,0.0667,0.0737,0.0744,0.0772,0.086,0.0901 +2-56,56,3B,0.0667,0.0737,0.0744,0.0765,0.086,0.0893 +2-64,64,2B,0.0691,0.0753,0.0759,0.0786,0.086,0.0899 +2-64,64,3B,0.0691,0.0753,0.0759,0.0779,0.086,0.0891 +3-48,48,2B,0.0764,0.0845,0.0855,0.0885,0.099,0.1035 +3-48,48,3B,0.0764,0.0845,0.0855,0.0877,0.099,0.1026 +3-56,56,2B,0.0797,0.0865,0.0874,0.0902,0.099,0.1032 +3-56,56,3B,0.0797,0.0865,0.0874,0.0895,0.099,0.1024 +4-40,40,2B,0.0849,0.0939,0.0958,0.0991,0.112,0.1170 +4-40,40,3B,0.0849,0.0939,0.0958,0.0982,0.112,0.116 +4-48,48,2B,0.0894,0.0968,0.0985,0.1016,0.112,0.1167 +4-48,48,3B,0.0894,0.0968,0.0985,0.1008,0.112,0.1158 +5-40,40,2B,0.0979,0.1062,0.1088,0.1121,0.125,0.1301 +5-40,40,3B,0.0979,0.1062,0.1088,0.1113,0.125,0.1292 +5-44,44,2B,0.1004,0.1079,0.1102,0.1134,0.125,0.1299 +5-44,44,3B,0.1004,0.1079,0.1102,0.1126,0.125,0.129 +6-32,32,2B,0.104,0.114,0.1177,0.1214,0.138,0.1438 +6-32,32,3B,0.104,0.114,0.1177,0.1204,0.138,0.1426 +6-40,40,2B,0.111,0.119,0.1218,0.1252,0.138,0.1433 +6-40,40,3B,0.111,0.1186,0.1218,0.1243,0.138,0.1422 +8-32,32,2B,0.13,0.139,0.1437,0.1475,0.164,0.1700 +8-32,32,3B,0.13,0.1389,0.1437,0.1465,0.164,0.1689 +8-36,36,2B,0.134,0.142,0.146,0.1496,0.164,0.1697 +8-36,36,3B,0.134,0.1416,0.146,0.1487,0.164,0.1687 +10-24,24,2B,0.145,0.156,0.1629,0.1672,0.19,0.197 +10-24,24,3B,0.145,0.1555,0.1629,0.1661,0.19,0.1957 +10-32,32,2B,0.156,0.164,0.1697,0.1736,0.19,0.1963 +10-32,32,3B,0.156,0.1641,0.1697,0.1726,0.19,0.1952 +1/4-20,20,2B,0.196,0.207,0.2175,0.2248,0.25,0.261 +1/4-20,20,3B,0.196,0.207,0.2175,0.22,0.25,0.2554 +1/4-28,28,2B,0.211,0.22,0.2268,0.2311,0.25,0.2573 +1/4-28,28,3B,0.211,0.219,0.2268,0.23,0.25,0.2561 +5/16-18,18,2B,0.252,0.265,0.2764,0.2817,0.3125,0.3217 +5/16-18,18,3B,0.252,0.263,0.2764,0.2803,0.3125,0.3201 +5/16-24,24,2B,0.267,0.277,0.2854,0.2902,0.3125,0.3209 +5/16-24,24,3B,0.267,0.2754,0.2854,0.289,0.3125,0.3196 +3/8-16,16,2B,0.307,0.321,0.3344,0.3401,0.375,0.3852 +3/8-16,16,3B,0.307,0.3182,0.3344,0.3387,0.375,0.3836 +3/8-24,24,2B,0.33,0.34,0.3479,0.3528,0.375,0.3841 +3/8-24,24,3B,0.33,0.3372,0.3479,0.3516,0.375,0.3828 +7/16-14,14,2B,0.36,0.376,0.3911,0.3972,0.4375,0.4488 +7/16-14,14,3B,0.36,0.3717,0.3911,0.3957,0.4375,0.4471 +7/16-20,20,2B,0.383,0.395,0.405,0.4104,0.4375,0.4478 +7/16-20,20,3B,0.383,0.3916,0.405,0.4091,0.4375,0.4463 +1/2-13,13,2B,0.417,0.434,0.45,0.4565,0.5,0.5123 +1/2-13,13,3B,0.417,0.4284,0.45,0.4548,0.5,0.5104 +1/2-20,20,2B,0.446,0.457,0.4675,0.4731,0.5,0.5110 +1/2-20,20,3B,0.446,0.4537,0.4675,0.4717,0.5,0.5095 +5/8-11,11,2B,0.527,0.546,0.566,0.5732,0.625,0.6393 +5/8-11,11,3B,0.527,0.5391,0.566,0.5714,0.625,0.6373 +5/8-18,18,2B,0.565,0.578,0.5889,0.5949,0.625,0.6377 +5/8-18,18,3B,0.565,0.573,0.5889,0.5934,0.625,0.6361 +3/4-10,10,2B,0.642,0.663,0.685,0.6927,0.75,0.7660 +3/4-10,10,3B,0.642,0.6545,0.685,0.6907,0.75,0.7638 +3/4-16,16,2B,0.682,0.696,0.7094,0.7159,0.75,0.7644 +3/4-16,16,3B,0.682,0.6908,0.7094,0.7143,0.75,0.7627 +7/8-9,9,2B,0.755,0.778,0.8028,0.811,0.875,0.8928 +7/8-9,9,3B,0.755,0.7681,0.8028,0.8089,0.875,0.8905 +7/8-14,14,2B,0.798,0.814,0.8286,0.8356,0.875,0.8912 +7/8-14,14,3B,0.798,0.8068,0.8286,0.8339,0.875,0.8894 +1-8,8,2B,0.865,0.89,0.9188,0.9276,1,1.0197 +1-8,8,3B,0.865,0.8797,0.9188,0.9254,1,1.0173 +1-12,12,2B,0.91,0.928,0.9459,0.9535,1,1.0181 +1-12,12,3B,0.91,0.9198,0.9459,0.9516,1,1.0161 +11/8-7,7,2B,0.97,0.998,1.0322,1.0416,1.125,1.1466 +11/8-12,12,2B,1.035,1.053,1.0709,1.0787,1.125,1.1445 +11/4-7,7,2B,1.095,1.123,1.1572,1.1668,1.25,1.273 +11/4-12,12,2B,1.16,1.178,1.1959,1.2039,1.25,1.2709 +13/8-6,6,2B,1.195,1.225,1.2667,1.2771,1.375,1.4002 +13/8-12,12,2B,1.285,1.303,1.3209,1.3291,1.375,1.3974 +11/2-6,6,2B,1.32,1.35,1.3917,1.4022,1.5,1.5264 +11/2-12,12,2B,1.41,1.428,1.4459,1.4542,1.5,1.5237 +13/4-5,5,2B,1.534,1.568,1.6201,1.6317,1.75,1.7802 +2-6,6,2B,1.82,1.85,1.8917,1.9028,2,2.0319 diff --git a/src/Mod/Path/Data/Threads/metric-internal.csv b/src/Mod/Path/Data/Threads/metric-internal.csv new file mode 100644 index 0000000000..6a821334d5 --- /dev/null +++ b/src/Mod/Path/Data/Threads/metric-internal.csv @@ -0,0 +1,82 @@ +name,pitch,tol,dMinorMin,dMinorMax,dPitchMin,dPitchMax,dMajorMin,dMajorMax +M1.6 x 0.35,0.35,6H,1.221,1.321,1.373,1.458,1.6,1.736 +M2 x 0.4,0.4,6H,1.567,1.679,1.74,1.83,2,2.148 +M2.5 x 0.45,0.45,6H,2.013,2.138,2.208,2.303,2.5,2.66 +M3 x 0.5,0.5,6H,2.459,2.599,2.675,2.775,3,3.172 +M3.5 x 0.6,0.6,6H,2.85,3.01,3.11,3.222,3.5,3.698 +M4 x 0.7,0.7,6H,3.242,3.422,3.545,3.663,4,4.219 +M5 x 0.8,0.8,6H,4.134,4.334,4.48,4.605,5,5.24 +M6 x 1,1,6H,4.917,5.153,5.35,5.5,6,6.294 +M8 x 1,1,6H,6.917,7.153,7.35,7.5,8,8.294 +M8 x 1.25,1.25,6H,6.647,6.912,7.188,7.348,8,8.34 +M10 x 0.75,0.75,6H,9.188,9.378,9.513,9.645,10,10.24 +M10 x 1,1,6H,8.917,9.153,9.35,9.5,10,10.294 +M10 x 1.25,1.25,6H,8.647,8.912,9.188,9.348,10,10.34 +M10 x 1.5,1.5,6H,8.376,8.676,9.026,9.206,10,10.397 +M12 x 1,1,6H,10.917,11.153,11.35,11.51,12,12.304 +M12 x 1.25,1.25,6H,10.647,10.912,11.188,11.368,12,12.36 +M12 x 1.5,1.5,6H,10.376,10.676,11.026,11.216,12,12.407 +M12 x 1.75,1.75,6H,10.106,10.441,10.863,11.063,12,12.452 +M14 x 1.5,1.5,6H,12.376,12.676,13.026,13.216,14,14.407 +M14 x 2,2,6H,11.835,12.21,12.701,12.913,14,14.501 +M15 x 1,1,6H,13.917,14.153,14.35,14.51,15,15.304 +M16 x 1.5,1.5,6H,14.376,14.676,15.026,15.216,16,16.407 +M16 x 2,2,6H,13.835,14.21,14.701,14.913,16,16.501 +M17 x 1,1,6H,15.917,16.153,16.35,16.51,17,17.304 +M18 x 1.5 ,1.5,6H,16.376,16.676,17.026,17.216,18,18.407 +M20 x 1,1,6H,18.917,19.153,19.35,19.51,20,20.304 +M20 x 1.5,1.5,6H,18.376,18.676,19.026,19.216,20,20.407 +M20 x 2.5,2.5,6H,17.294,17.744,18.376,18.6,20,20.585 +M22 x 1.5,1.5,6H,20.376,20.676,21.026,21.216,22,22.407 +M22 x 2.5,2.5,6H,19.294,19.744,20.376,20.6,22,22.585 +M24 x 2,2,6H,21.835,22.21,22.701,22.925,24,24.513 +M24 x 3,3,6H,20.752,21.252,22.051,22.316,24,24.698 +M25 x 1.5,1.5,6H,23.376,23.676,24.026,24.226,25,25.417 +M27 x 2,2,6H,24.835,25.21,25.701,25.925,27,27.513 +M27 x 3,3,6H,23.752,24.252,25.051,25.316,27,27.698 +M30 x 1.5,1.5,6H,28.376,28.676,29.026,29.226,30,30.417 +M30 x 2,2,6H,27.835,28.21,28.701,28.925,30,30.513 +M30 x 3.5,3.5,6H,26.211,26.771,27.727,28.007,30,30.786 +M33 x 2,2,6H,30.835,31.21,31.701,31.925,33,33.513 +M35 x 1.5,1.5,6H,33.376,33.676,34.026,34.226,35,35.417 +M36 x 2,2,6H,33.835,34.21,34.701,34.925,36,36.513 +M36 x 4,4,6H,31.67,32.27,33.402,33.702,36,36.877 +M39 x 2,2,6H,36.835,37.21,37.701,37.925,39,39.513 +M40 x 1.5,1.5,6H,38.376,38.676,39.026,39.226,40,40.417 +M42 x 2,2,6H,39.835,40.21,40.701,40.925,42,42.513 +M42 x 4.5,4.5,6H,37.129,37.799,39.077,39.392,42,42.964 +M45 x 1.5,1.5,6H,43.376,43.676,44.026,44.226,45,45.417 +M48 x 2,2,6H,45.835,46.21,46.701,46.937,48,48.525 +M48 x 5,5,6H,42.587,43.297,44.752,45.087,48,49.056 +M50 x 1.5,1.5,6H,48.376,48.676,49.026,49.238,50,50.429 +M55 x 1.5,1.5,6H,53.376,53.676,54.026,54.238,55,55.429 +M56 x 2,2,6H,53.835,54.21,54.701,54.937,56,56.525 +M56 x 5.5,5.5,6H,50.046,50.796,52.428,52.783,56,57.149 +M60 x 1.5,1.5,6H,58.376,58.676,59.026,59.238,60,60.429 +M64 x 2,2,6H,61.835,62.21,62.701,62.937,64,64.525 +M64 x 6,6,6H,57.505,58.305,60.103,60.478,64,65.241 +M65 x 1.5,1.5,6H,63.376,63.676,64.026,64.238,65,65.429 +M70 x 1.5,1.5,6H,68.376,68.676,69.026,69.238,70,70.429 +M72 x 2,2,6H,69.835,70.21,70.701,70.937,72,72.525 +M72 x 6,6,6H,65.505,66.305,68.103,68.478,72,73.241 +M75 x 1.5,1.5,6H,73.376,73.676,74.026,74.238,75,75.429 +M80 x 1.5,1.5,6H,78.376,78.676,79.026,79.238,80,80.429 +M80 x 2,2,6H,77.835,78.21,78.701,78.937,80,80.525 +M80 x 6,6,6H,73.505,74.305,76.103,76.478,80,81.241 +M85 x 2,2,6H,82.835,83.21,83.701,83.937,85,85.525 +M90 x 2,2,6H,87.835,88.21,88.701,88.937,90,90.525 +M90 x 6,6,6H,83.505,84.305,86.103,86.478,90,91.241 +M95 x 2,2,6H,92.835,93.21,93.701,93.951,95,95.539 +M100 x 2,2,6H,97.835,98.21,98.701,98.951,100,100.539 +M100 x 6,6,6H,93.505,94.305,96.103,96.503,100,101.266 +M105 x 2,2,6H,102.835,103.21,103.701,103.951,105,105.539 +M110 x 2,2,6H,107.835,108.21,108.701,108.951,110,110.539 +M120 x 2,2,6H,117.835,118.21,118.701,118.951,120,120.539 +M130 x 2,2,6H,127.835,128.21,128.701,128.951,130,130.539 +M140 x 2,2,6H,137.835,138.21,138.701,138.951,140,140.539 +M150 x 2,2,6H,147.835,148.21,148.701,148.951,150,150.539 +M160 x 3,3,6H,156.752,157.252,158.051,158.351,160,160.733 +M170 x 3,3,6H,166.752,167.252,168.051,168.351,170,170.733 +M180 x 3,3,6H,176.752,177.252,178.051,178.351,180,180.733 +M190 x 3,3,6H,186.752,187.252,188.051,188.386,190,190.768 +M200 x 3,3,6H,196.752,197.252,198.051,198.386,200,200.768 diff --git a/src/Mod/Path/Data/Threads/sources.txt b/src/Mod/Path/Data/Threads/sources.txt new file mode 100644 index 0000000000..20fb5e92fd --- /dev/null +++ b/src/Mod/Path/Data/Threads/sources.txt @@ -0,0 +1,4 @@ +https://www.amesweb.info/Screws/Internal-Metric-Thread-Dimensions-Chart.aspx +https://www.engineersedge.com/thread_strength/internal_screw_threads_chart.htm + dMajorMax = dMajorMin * 1.01 * (dMinorMax - dMinorMin) + formula empirically derived from metric tolerances diff --git a/src/Mod/Path/Gui/Command.cpp b/src/Mod/Path/Gui/Command.cpp index 4946305e25..af6bcbc266 100644 --- a/src/Mod/Path/Gui/Command.cpp +++ b/src/Mod/Path/Gui/Command.cpp @@ -57,7 +57,7 @@ CmdPathArea::CmdPathArea() sToolTipText = QT_TR_NOOP("Creates a feature area from selected objects"); sWhatsThis = "Path_Area"; sStatusTip = sToolTipText; - sPixmap = "Path-Area"; + sPixmap = "Path_Area"; } void CmdPathArea::activated(int iMsg) @@ -103,7 +103,7 @@ void CmdPathArea::activated(int iMsg) } if(addView && areaName.size()) { std::string FeatName = getUniqueObjectName("FeatureAreaView"); - openCommand("Create Path Area View"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Path Area View")); doCommand(Doc,"FreeCAD.activeDocument().addObject('Path::FeatureAreaView','%s')",FeatName.c_str()); doCommand(Doc,"FreeCAD.activeDocument().%s.Source = FreeCAD.activeDocument().%s", FeatName.c_str(),areaName.c_str()); @@ -112,7 +112,7 @@ void CmdPathArea::activated(int iMsg) return; } std::string FeatName = getUniqueObjectName("FeatureArea"); - openCommand("Create Path Area"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Path Area")); doCommand(Doc,"import PathCommands"); for(const std::string &cmd : cmds) doCommand(Doc,"%s", cmd.c_str()); @@ -139,7 +139,7 @@ CmdPathAreaWorkplane::CmdPathAreaWorkplane() sToolTipText = QT_TR_NOOP("Select a workplane for a FeatureArea"); sWhatsThis = "Path_Area_Workplane"; sStatusTip = sToolTipText; - sPixmap = "Path-Area-Workplane"; + sPixmap = "Path_Area_Workplane"; } void CmdPathAreaWorkplane::activated(int iMsg) @@ -200,7 +200,7 @@ void CmdPathAreaWorkplane::activated(int iMsg) return; } - openCommand("Select Workplane for Path Area"); + openCommand(QT_TRANSLATE_NOOP("Command", "Select Workplane for Path Area")); doCommand(Doc,"import PathCommands"); doCommand(Doc,"FreeCAD.activeDocument().%s.WorkPlane = PathCommands.findShape(" "FreeCAD.activeDocument().%s)", areaName.c_str(),planeSubname.c_str()); @@ -229,7 +229,7 @@ CmdPathCompound::CmdPathCompound() sToolTipText = QT_TR_NOOP("Creates a compound from selected paths"); sWhatsThis = "Path_Compound"; sStatusTip = sToolTipText; - sPixmap = "Path-Compound"; + sPixmap = "Path_Compound"; } void CmdPathCompound::activated(int iMsg) @@ -251,7 +251,7 @@ void CmdPathCompound::activated(int iMsg) } cmd << "]"; std::string FeatName = getUniqueObjectName("PathCompound"); - openCommand("Create Path Compound"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Path Compound")); doCommand(Doc,"FreeCAD.activeDocument().addObject('Path::FeatureCompound','%s')",FeatName.c_str()); doCommand(Doc,"FreeCAD.activeDocument().%s.Group = %s",FeatName.c_str(),cmd.str().c_str()); commitCommand(); @@ -281,7 +281,7 @@ CmdPathShape::CmdPathShape() sToolTipText = QT_TR_NOOP("Creates a path from a selected shape"); sWhatsThis = "Path_Shape"; sStatusTip = sToolTipText; - sPixmap = "Path-Shape"; + sPixmap = "Path_Shape"; } void CmdPathShape::activated(int iMsg) @@ -321,7 +321,7 @@ void CmdPathShape::activated(int iMsg) } } std::string FeatName = getUniqueObjectName("PathShape"); - openCommand("Create Path Shape"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Path Shape")); doCommand(Doc,"import PathCommands"); for(const std::string &cmd : cmds) doCommand(Doc, "%s", cmd.c_str()); diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc index 46e68adfb7..c1383eb7a5 100644 --- a/src/Mod/Path/Gui/Resources/Path.qrc +++ b/src/Mod/Path/Gui/Resources/Path.qrc @@ -1,73 +1,74 @@ - icons/Path-Adaptive.svg - icons/Path-ToolDuplicate.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-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-ToolBit.svg - icons/Path-ToolChange.svg - icons/Path-ToolController.svg - icons/Path-Toolpath.svg - icons/Path-ToolTable.svg - icons/Path-Vcarve.svg - icons/Path-Waterline.svg + 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_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 @@ -114,6 +115,7 @@ panels/PageOpProfileFullEdit.ui panels/PageOpSlotEdit.ui panels/PageOpSurfaceEdit.ui + panels/PageOpThreadMillingEdit.ui panels/PageOpWaterlineEdit.ui panels/PageOpVcarveEdit.ui panels/PathEdit.ui diff --git a/src/Mod/Path/Gui/Resources/icons/Path-3DPocket.svg b/src/Mod/Path/Gui/Resources/icons/Path_3DPocket.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-3DPocket.svg rename to src/Mod/Path/Gui/Resources/icons/Path_3DPocket.svg index 4c85acba04..e1809d4c9a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-3DPocket.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_3DPocket.svg"> - Path-3DSurface + Path_3DSurface 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -197,7 +197,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-3DSurface.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-3DSurface.svg b/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-3DSurface.svg rename to src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg index 17d2d4a82a..3f1e66bc79 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-3DSurface.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg @@ -1,5 +1,5 @@ - + @@ -47,7 +47,7 @@ image/svg+xml - Path-3DSurface + Path_3DSurface 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -55,7 +55,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-3DSurface.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_3DSurface.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Adaptive.svg b/src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Adaptive.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg index f4ec64afa3..1e8acaa98b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Adaptive.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Adaptive.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path-Adaptive.svg"> + sodipodi:docname="Path_Adaptive.svg"> - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -583,7 +583,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Area.svg b/src/Mod/Path/Gui/Resources/icons/Path_Area.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Area.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Area.svg index a620c23b26..898cefef1b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Area.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Area.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path-Area.svg"> + sodipodi:docname="Path_Area.svg"> - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -595,7 +595,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Area-View.svg b/src/Mod/Path/Gui/Resources/icons/Path_Area_View.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Area-View.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Area_View.svg index 504106dcb5..6658178bbd 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Area-View.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Area_View.svg"> - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -595,7 +595,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Area-Workplane.svg b/src/Mod/Path/Gui/Resources/icons/Path_Area_Workplane.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Area-Workplane.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Area_Workplane.svg index 1498ef33fe..ebd9e0d261 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Area-Workplane.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Area_Workplane.svg"> - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -617,7 +617,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Array.svg b/src/Mod/Path/Gui/Resources/icons/Path_Array.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Array.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Array.svg index a5da4e0bb4..a41550c0b7 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Array.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Array.svg @@ -1,6 +1,6 @@ - + @@ -111,7 +111,7 @@ image/svg+xml - Path-Array + Path_Array 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -119,7 +119,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Array.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Array.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Axis.svg b/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Axis.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Axis.svg index f5f13fa515..eaf057364b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Axis.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg @@ -1,6 +1,6 @@ - + @@ -11,7 +11,7 @@ image/svg+xml - Path-Axis + Path_Axis 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -19,7 +19,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Axis.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Axis.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BFastForward.svg b/src/Mod/Path/Gui/Resources/icons/Path_BFastForward.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-BFastForward.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BFastForward.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BPause.svg b/src/Mod/Path/Gui/Resources/icons/Path_BPause.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-BPause.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BPause.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BPlay.svg b/src/Mod/Path/Gui/Resources/icons/Path_BPlay.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-BPlay.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BPlay.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BStep.svg b/src/Mod/Path/Gui/Resources/icons/Path_BStep.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-BStep.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BStep.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BStop.svg b/src/Mod/Path/Gui/Resources/icons/Path_BStop.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-BStop.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BStop.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-BaseGeometry.svg b/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg similarity index 96% rename from src/Mod/Path/Gui/Resources/icons/Path-BaseGeometry.svg rename to src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg index bb3143c373..73521930b9 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-BaseGeometry.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg @@ -1,5 +1,5 @@ - + @@ -21,7 +21,7 @@ image/svg+xml - Path-BaseGeometry + Path_BaseGeometry 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -29,7 +29,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-BaseGeometry.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_BaseGeometry.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Comment.svg b/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Comment.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Comment.svg index 35a1aefe32..96bf66ac76 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Comment.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg @@ -1,6 +1,6 @@ - + @@ -105,7 +105,7 @@ image/svg+xml - Path-Comment + Path_Comment 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -113,7 +113,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Comment.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Comment.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Compound.svg b/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Compound.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Compound.svg index 7040fc4576..f69451c6c6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Compound.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg @@ -1,6 +1,6 @@ - + @@ -154,7 +154,7 @@ image/svg+xml - Path-Compound + Path_Compound 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -162,7 +162,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Compound.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Compound.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Contour.svg b/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Contour.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Contour.svg index 43a62e4f65..6bbe5de41d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Contour.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg @@ -1,6 +1,6 @@ - + @@ -138,7 +138,7 @@ image/svg+xml - Path-Contour + Path_Contour 2016-08-16 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -146,7 +146,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Contour.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Contour.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Copy.svg b/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Copy.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Copy.svg index 5f07ebddd3..a5e1fd1d89 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Copy.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg @@ -1,6 +1,6 @@ - + @@ -124,7 +124,7 @@ image/svg+xml - Path-Copy + Path_Copy 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -132,7 +132,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Copy.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Copy.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Custom.svg b/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Custom.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Custom.svg index e0f4816d0d..d828536474 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Custom.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg @@ -1,6 +1,6 @@ - + @@ -94,7 +94,7 @@ image/svg+xml - Path-Custom + Path_Custom 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -102,7 +102,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Custom.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Custom.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Datums.svg b/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-Datums.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Datums.svg index 9dcae29ac8..544b264bbd 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Datums.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg @@ -1,6 +1,6 @@ - + @@ -48,7 +48,7 @@ image/svg+xml - Path-Datums + Path_Datums 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -56,7 +56,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Datums.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Datums.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Deburr.svg b/src/Mod/Path/Gui/Resources/icons/Path_Deburr.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Deburr.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Deburr.svg index c7d5d89122..13a355cf33 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Deburr.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Deburr.svg"> - Path-Drilling + Path_Drilling 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -604,7 +604,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Depths.svg b/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-Depths.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Depths.svg index efcaa8be6d..cf8a2c5e8a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Depths.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg @@ -1,5 +1,5 @@ - + @@ -46,7 +46,7 @@ image/svg+xml - Path-Depths + Path_Depths 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -54,7 +54,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Depths.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Depths.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Dressup.svg b/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Dressup.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg index 07e2305cf5..7bf43a3415 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Dressup.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg @@ -1,6 +1,6 @@ - + @@ -130,7 +130,7 @@ image/svg+xml - Path-Dressup + Path_Dressup 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -138,7 +138,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Dressup.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Dressup.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg b/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg index c611584927..5002de9f01 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg @@ -1,6 +1,6 @@ - + @@ -111,7 +111,7 @@ image/svg+xml - Path-Drilling + Path_Drilling 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -119,7 +119,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Engrave.svg b/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Engrave.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg index c0b7bee59d..cc966068ca 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Engrave.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg @@ -1,6 +1,6 @@ - + @@ -112,7 +112,7 @@ image/svg+xml - Path-Engrave + Path_Engrave 2016-02-24 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -120,7 +120,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Engrave.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ExportTemplate.svg b/src/Mod/Path/Gui/Resources/icons/Path_ExportTemplate.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ExportTemplate.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ExportTemplate.svg index 9536887f16..7fee3c59a6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ExportTemplate.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_ExportTemplate.svg"> - Path-Job + Path_Job 2016-06-27 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -1089,7 +1089,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Job.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Face.svg b/src/Mod/Path/Gui/Resources/icons/Path_Face.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Face.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Face.svg index a8837f52a3..0c1cef0ff5 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Face.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Face.svg @@ -1,6 +1,6 @@ - + @@ -166,7 +166,7 @@ image/svg+xml - Path-Face + Path_Face 2016-11-07 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -174,7 +174,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-FacePocket.svg b/src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-FacePocket.svg rename to src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg index ded548f0a1..223ce4e4b2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-FacePocket.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_FacePocket.svg @@ -1,6 +1,6 @@ - + @@ -117,7 +117,7 @@ image/svg+xml - Path-FacePocket + Path_FacePocket 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -125,7 +125,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-FaceProfile.svg b/src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-FaceProfile.svg rename to src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg index 74907b5148..51c807c90a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-FaceProfile.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_FaceProfile.svg @@ -1,6 +1,6 @@ - + @@ -117,7 +117,7 @@ image/svg+xml - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -125,7 +125,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Heights.svg b/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-Heights.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Heights.svg index b4a48887f8..3d243a57c7 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Heights.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg @@ -1,5 +1,5 @@ - + @@ -31,7 +31,7 @@ image/svg+xml - Path-Heights + Path_Heights 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -39,7 +39,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Heights.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Heights.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Helix.svg b/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Helix.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Helix.svg index 83bd5ba614..cb945256ee 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Helix.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Path-Helix.svg" + sodipodi:docname="Path_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 + Path_Helix 2016-05-10 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -1407,7 +1407,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Helix.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Helix.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Holding.svg b/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Holding.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Holding.svg index 436ec72f5b..3c3806fcb9 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Holding.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg @@ -1,6 +1,6 @@ - + @@ -123,7 +123,7 @@ image/svg+xml - Path-Holding + Path_Holding 2016-02-24 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -131,7 +131,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Holding.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Holding.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Hop.svg b/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Hop.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Hop.svg index 59394f01e6..0ef8295083 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Hop.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg @@ -1,6 +1,6 @@ - + @@ -119,7 +119,7 @@ image/svg+xml - Path-Hop + Path_Hop 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -127,7 +127,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Hop.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Hop.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-InactiveOp.svg b/src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-InactiveOp.svg rename to src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg index fe6937e794..87e5d76b7e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-InactiveOp.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_InactiveOp.svg @@ -15,7 +15,7 @@ id="svg2726" sodipodi:version="0.32" inkscape:version="0.91 r13725" - sodipodi:docname="Path-InactiveOp.svg" + sodipodi:docname="Path_InactiveOp.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> ellipsis - Path-OperationA + Path_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Inspect.svg b/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Inspect.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg index ab468fc3ff..13f7ace4df 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Inspect.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg @@ -1,6 +1,6 @@ - + @@ -190,7 +190,7 @@ image/svg+xml - Path-Inspect + Path_Inspect 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -198,7 +198,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Inspect.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Inspect.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Job.svg b/src/Mod/Path/Gui/Resources/icons/Path_Job.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Job.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Job.svg index 50a06091cd..a2532f8bd6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Job.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Job.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.48.5 r10040" - sodipodi:docname="Path-Job.svg"> + sodipodi:docname="Path_Job.svg"> - Path-Job + Path_Job 2016-06-27 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -1129,7 +1129,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Job.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Kurve.svg b/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path-Kurve.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg index 81d192c186..cfe53648d5 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Kurve.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg @@ -1,6 +1,6 @@ - + @@ -11,7 +11,7 @@ image/svg+xml - Path-Kurve + Path_Kurve 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -19,7 +19,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Kurve.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Kurve.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-LengthOffset.svg b/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-LengthOffset.svg rename to src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg index 15c692c25e..bccf1beda0 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-LengthOffset.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg @@ -1,6 +1,6 @@ - + @@ -97,7 +97,7 @@ image/svg+xml - Path-LengthOffset + Path_LengthOffset 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -105,7 +105,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-LengthOffset.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_LengthOffset.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Machine.svg b/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Machine.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Machine.svg index b4a9e10476..33527d4b4f 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Machine.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg @@ -1,6 +1,6 @@ - + @@ -118,7 +118,7 @@ image/svg+xml - Path-Machine + Path_Machine 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -126,7 +126,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Machine.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-MachineLathe.svg b/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-MachineLathe.svg rename to src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg index a26922ad8c..0ed4b4e7b8 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-MachineLathe.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg @@ -1,5 +1,5 @@ - + @@ -61,7 +61,7 @@ image/svg+xml - Path-MachineLathe + Path_MachineLathe 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -69,7 +69,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-MachineLathe.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_MachineLathe.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-MachineMill.svg b/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-MachineMill.svg rename to src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg index 78d375aa13..299438a18e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-MachineMill.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg @@ -1,5 +1,5 @@ - + @@ -38,7 +38,7 @@ image/svg+xml - Path-MachineMill + Path_MachineMill 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -46,7 +46,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-MachineMill.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_MachineMill.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Machine-test1.svg b/src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Machine-test1.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg index 9636963945..8ff80cadd1 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Machine-test1.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Machine_test1.svg @@ -1,6 +1,6 @@ - + @@ -136,7 +136,7 @@ image/svg+xml - Path-Machine-test1 + Path_Machine_test1 2016-05-15 http://www.freecadweb.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/Path/Gui/Resources/icons/Path_Machine_test1.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-OpActive.svg b/src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-OpActive.svg rename to src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg index da66dc9b7b..a179636a98 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-OpActive.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_OpActive.svg @@ -15,7 +15,7 @@ id="svg2726" sodipodi:version="0.32" inkscape:version="0.91 r13725" - sodipodi:docname="Path-OpActive.svg" + sodipodi:docname="Path_OpActive.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1"> ellipsis - Path-OperationA + Path_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path-OpCopy.svg b/src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-OpCopy.svg rename to src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg index 0079645ea4..e038452c97 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-OpCopy.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_OpCopy.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path-OpCopy.svg"> + sodipodi:docname="Path_OpCopy.svg"> - Path-FaceProfile + Path_FaceProfile 2016-01-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -613,7 +613,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-OperationA.svg b/src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-OperationA.svg rename to src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg index 8fff8c71b7..255406ce57 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-OperationA.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_OperationA.svg @@ -139,7 +139,7 @@ ellipsis - Path-OperationA + Path_OperationA https://www.gnu.org/copyleft/lesser.html diff --git a/src/Mod/Path/Gui/Resources/icons/Path-OperationB.svg b/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-OperationB.svg rename to src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg index 8a0dba41a1..c708145f2c 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-OperationB.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg @@ -1,5 +1,5 @@ - + @@ -58,7 +58,7 @@ image/svg+xml - Path-OperationB + Path_OperationB 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -66,7 +66,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-OperationB.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_OperationB.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Plane.svg b/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Plane.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Plane.svg index 2cd1fbc47d..17e2190705 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Plane.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg @@ -1,6 +1,6 @@ - + @@ -11,7 +11,7 @@ image/svg+xml - Path-Plane + Path_Plane 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -19,7 +19,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Plane.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Plane.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Pocket.svg b/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Pocket.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg index 816cf71315..532c7cb24b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Pocket.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg @@ -1,6 +1,6 @@ - + @@ -125,7 +125,7 @@ image/svg+xml - Path-Pocket + Path_Pocket 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -133,7 +133,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Pocket.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Pocket.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Post.svg b/src/Mod/Path/Gui/Resources/icons/Path_Post.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Post.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Post.svg index 7bdfd13a45..773667ab4e 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Post.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Post.svg @@ -1,6 +1,6 @@ - + @@ -209,7 +209,7 @@ image/svg+xml - Path-Job + Path_Job 2016-06-27 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -217,7 +217,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Job.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Job.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Probe.svg b/src/Mod/Path/Gui/Resources/icons/Path_Probe.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Probe.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Probe.svg index 63eae06c30..85bd0735e4 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Probe.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Probe.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="Path-Probe.svg"> + sodipodi:docname="Path_Probe.svg"> - Path-Drilling + Path_Drilling 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -585,7 +585,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Profile.svg b/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Profile.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Profile.svg index ed9f61dcde..e93f7d123c 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Profile.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg @@ -1,6 +1,6 @@ - + @@ -138,7 +138,7 @@ image/svg+xml - Path-Profile + Path_Profile 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -146,7 +146,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Profile.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Profile.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Profile-Edges.svg b/src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Profile-Edges.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg index a1fba1e1f4..993fcf0bcf 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Profile-Edges.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Profile_Edges.svg @@ -1,6 +1,6 @@ - + @@ -143,7 +143,7 @@ image/svg+xml - Path-Profile-Edges + Path_Profile_Edges 2016-10-19 http://www.freecadweb.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/Path/Gui/Resources/icons/Path_Profile_Edges.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Profile-Face.svg b/src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Profile-Face.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg index 5645f396dd..3d21089ba1 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Profile-Face.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Profile_Face.svg @@ -1,6 +1,6 @@ - + @@ -138,7 +138,7 @@ image/svg+xml - Path-Profile-Face + Path_Profile_Face 2016-10-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -146,7 +146,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Profile- + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Profile_ FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Sanity.svg b/src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Sanity.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg index 9156910431..98778522c0 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Sanity.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Sanity.svg @@ -1,14 +1,14 @@ - + image/svg+xml - Path-Sanity - 2016-05-15http://www.freecadweb.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 + Path_Sanity + 2016-05-15http://www.freecadweb.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 diff --git a/src/Mod/Path/Gui/Resources/icons/Path-SelectLoop.svg b/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-SelectLoop.svg rename to src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg index 1e865f233f..fcf49d55b9 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-SelectLoop.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg @@ -1,6 +1,6 @@ - + @@ -109,7 +109,7 @@ image/svg+xml - Path-SelectLoop + Path_SelectLoop 2016-10-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -117,7 +117,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-SelectLoop.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_SelectLoop.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-SetupSheet.svg b/src/Mod/Path/Gui/Resources/icons/Path_SetupSheet.svg similarity index 100% rename from src/Mod/Path/Gui/Resources/icons/Path-SetupSheet.svg rename to src/Mod/Path/Gui/Resources/icons/Path_SetupSheet.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Shape.svg b/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Shape.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Shape.svg index 5f7a311db7..2653c280c1 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Shape.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg @@ -1,6 +1,6 @@ - + @@ -118,7 +118,7 @@ image/svg+xml - Path-Shape + Path_Shape 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -126,7 +126,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Shape.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Shape.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg b/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg rename to src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg index 3b4d5ee92d..7a078e2d5a 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg @@ -1,6 +1,6 @@ - + @@ -114,7 +114,7 @@ image/svg+xml - Path-SimpleCopy + Path_SimpleCopy 2016-01-23 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -122,7 +122,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_SimpleCopy.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Simulator.svg b/src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Simulator.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg index ed0b48db6f..cb64b4d697 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Simulator.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Simulator.svg @@ -15,7 +15,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.1 r15371" - sodipodi:docname="Path-Simulator.svg"> + sodipodi:docname="Path_Simulator.svg"> - Path-Machine + Path_Machine 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -1291,7 +1291,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Machine.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Machine.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Slot.svg b/src/Mod/Path/Gui/Resources/icons/Path_Slot.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Slot.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Slot.svg index f848870805..95d4f4d10d 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Slot.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Slot.svg" inkscape:version="1.0 (4035a4fb49, 2020-05-01)" version="1.1" id="svg2816" @@ -624,7 +624,7 @@ - Path-Drilling + Path_Drilling 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -632,7 +632,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Drilling.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Drilling.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Speed.svg b/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg similarity index 98% rename from src/Mod/Path/Gui/Resources/icons/Path-Speed.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Speed.svg index 5fa8e09d0a..ae4f8c1e55 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Speed.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg @@ -1,5 +1,5 @@ - + @@ -43,7 +43,7 @@ image/svg+xml - Path-Speed + Path_Speed 2016-05-15 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -51,7 +51,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Speed.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Speed.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Stock.svg b/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg similarity index 97% rename from src/Mod/Path/Gui/Resources/icons/Path-Stock.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Stock.svg index 1af75104e0..9d6b0c73e8 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Stock.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg @@ -1,6 +1,6 @@ - + @@ -32,7 +32,7 @@ image/svg+xml - Path-Stock + Path_Stock 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -40,7 +40,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Stock.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Stock.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Stop.svg b/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg similarity index 96% rename from src/Mod/Path/Gui/Resources/icons/Path-Stop.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Stop.svg index db9564a2cb..760e630af8 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Stop.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg @@ -1,6 +1,6 @@ - + @@ -17,7 +17,7 @@ image/svg+xml - Path-Stop + Path_Stop 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -25,7 +25,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Stop.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Stop.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Tags.svg b/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Tags.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Tags.svg index 3569ac9035..83fb5cf2f0 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Tags.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg @@ -1,6 +1,6 @@ - + @@ -123,7 +123,7 @@ image/svg+xml - Path-Tags + Path_Tags 2016-02-24 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -131,7 +131,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Tags.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Tags.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg b/src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg new file mode 100644 index 0000000000..6cc8d4653a --- /dev/null +++ b/src/Mod/Path/Gui/Resources/icons/Path_ThreadMilling.svg @@ -0,0 +1,1616 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + [Lorenz Hüdepohl] + + + Path-Helix + 2016-05-10 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Helix.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ToolBit.svg b/src/Mod/Path/Gui/Resources/icons/Path_ToolBit.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ToolBit.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ToolBit.svg index 025637f1bc..d98ea241e8 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ToolBit.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Tool.svg"> - Path-ToolTable + Path_ToolTable 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -874,7 +874,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-ToolTable.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ToolChange.svg b/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ToolChange.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg index 0a01c1feff..26f66e347b 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ToolChange.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg @@ -1,6 +1,6 @@ - + @@ -151,7 +151,7 @@ image/svg+xml - Path-ToolChange + Path_ToolChange 2016-01-20 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -159,7 +159,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-ToolChange.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ToolController.svg b/src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ToolController.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg index 83a8eba095..1d970d21ab 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ToolController.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_ToolController.svg @@ -1,6 +1,6 @@ - + @@ -113,7 +113,7 @@ image/svg+xml - Path-LoadTool + Path_LoadTool 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -121,7 +121,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-LoadTool.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_LoadTool.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ToolDuplicate.svg b/src/Mod/Path/Gui/Resources/icons/Path_ToolDuplicate.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ToolDuplicate.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ToolDuplicate.svg index 8880eed31b..56b55348e2 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ToolDuplicate.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_ToolDuplicate.svg"> - Path-ToolChange + Path_ToolChange 2016-01-20 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -745,7 +745,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-ToolChange.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolChange.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-ToolTable.svg b/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-ToolTable.svg rename to src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg index 73007f4209..7be7bfaebf 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-ToolTable.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg @@ -1,6 +1,6 @@ - + @@ -174,7 +174,7 @@ image/svg+xml - Path-ToolTable + Path_ToolTable 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -182,7 +182,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-ToolTable.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_ToolTable.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Toolpath.svg b/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Toolpath.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg index 308bb57644..531f5d48c6 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Toolpath.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg @@ -1,6 +1,6 @@ - + @@ -116,7 +116,7 @@ image/svg+xml - Path-Toolpath + Path_Toolpath 2015-07-04 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -124,7 +124,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Toolpath.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Toolpath.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Vcarve.svg b/src/Mod/Path/Gui/Resources/icons/Path_Vcarve.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Vcarve.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Vcarve.svg index 87788da135..a5170145f9 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Vcarve.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_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="Path_Vcarve.svg"> - Path-Engrave + Path_Engrave 2016-02-24 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -604,7 +604,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Engrave.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Engrave.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/icons/Path-Waterline.svg b/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg similarity index 99% rename from src/Mod/Path/Gui/Resources/icons/Path-Waterline.svg rename to src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg index 86c07f4c62..81df7b407f 100644 --- a/src/Mod/Path/Gui/Resources/icons/Path-Waterline.svg +++ b/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg @@ -14,7 +14,7 @@ id="svg2816" version="1.1" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" - sodipodi:docname="Path-Waterline.svg"> + sodipodi:docname="Path_Waterline.svg"> Path_Waterline Path_Waterline - Path-Waterline + Path_Waterline 2019-05-19 http://www.freecadweb.org/wiki/index.php?title=Artwork @@ -184,7 +184,7 @@ FreeCAD - FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-Waterline.svg + FreeCAD/src/Mod/Path/Gui/Resources/icons/Path_Waterline.svg FreeCAD LGPL2+ diff --git a/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui index a259de2e73..3ea92feef0 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PageBaseGeometryEdit.ui @@ -21,7 +21,7 @@ - :/icons/Path-BaseGeometry.svg:/icons/Path-BaseGeometry.svg + :/icons/Path_BaseGeometry.svg:/icons/Path_BaseGeometry.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui index 5ba53f4379..89f005b3d5 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PageDepthsEdit.ui @@ -18,7 +18,7 @@ - :/icons/Path-Depths.svg:/icons/Path-Depths.svg + :/icons/Path_Depths.svg:/icons/Path_Depths.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui index ddccdd7db9..38305e2f20 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PageHeightsEdit.ui @@ -15,7 +15,7 @@ - :/icons/Path-Heights.svg:/icons/Path-Heights.svg + :/icons/Path_Heights.svg:/icons/Path_Heights.svg diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpThreadMillingEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageOpThreadMillingEdit.ui new file mode 100644 index 0000000000..8de86b656a --- /dev/null +++ b/src/Mod/Path/Gui/Resources/panels/PageOpThreadMillingEdit.ui @@ -0,0 +1,245 @@ + + + Form + + + + 0 + 0 + 318 + 756 + + + + Form + + + + + + Thread + + + + + + Orientation + + + + + + + 1 + + + + Left Hand + + + + + Right Hand + + + + + + + + Type + + + + + + + + Custom + + + + + Metric - internal + + + + + SAE - internal + + + + + + + + + + + Fit + + + + + + + 100 + + + 50 + + + Qt::Horizontal + + + + + + + Major Diameter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Minor Diameter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Pitch + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + TPI + + + + + + + + + + Tool Controller + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Operation + + + + + + Passes + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 1 + + + + + + + Direction + + + + + + + + Climb + + + + + Conventional + + + + + + + + Lead In/Out + + + + + + + + + + + Gui::QuantitySpinBox + QDoubleSpinBox +
      Gui/QuantitySpinBox.h
      +
      +
      + + +
      diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui index a484343d33..eb09dd2b9d 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PageOpVcarveEdit.ui @@ -95,17 +95,17 @@ <html><head/><body><p><br/></p></body></html> - Threshold + Filter Colinear lines
      - + - <html><head/><body><p>Threshold is used by the medial axis filter to remove unwanted segments. If the resulting path contains unwanted segments, decrease this value. </p><p>Valid values are 0.0 - 1.0</p><p>Default = 0.8</p><p>1.0 will remove nothing.</p></body></html> + <html><head/><body><p>Sets how aggressively colinear segments are filtered from the voronoi diagram</p><p>Valid values are 0 - 90 degrees (larger numbers filter more)</p><p>Default = 10</p><p><br/></p></body></html> - 180 + 90 10 diff --git a/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui b/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui index ebc6873b10..945a0a2f6d 100644 --- a/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/SurfaceEdit.ui @@ -39,7 +39,7 @@ - :/icons/Path-BaseGeometry.svg:/icons/Path-BaseGeometry.svg + :/icons/Path_BaseGeometry.svg:/icons/Path_BaseGeometry.svg Base Geometry @@ -117,7 +117,7 @@ - :/icons/Path-Depths.svg:/icons/Path-Depths.svg + :/icons/Path_Depths.svg:/icons/Path_Depths.svg Depths @@ -192,7 +192,7 @@ - :/icons/Path-Heights.svg:/icons/Path-Heights.svg + :/icons/Path_Heights.svg:/icons/Path_Heights.svg Heights @@ -242,7 +242,7 @@ - :/icons/Path-OperationB.svg:/icons/Path-OperationB.svg + :/icons/Path_OperationB.svg:/icons/Path_OperationB.svg Operation diff --git a/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui b/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui index fd144229cf..ce3a6c362d 100644 --- a/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui +++ b/src/Mod/Path/Gui/Resources/panels/TaskPathSimulator.ui @@ -39,7 +39,7 @@ - :/icons/Path-BStop.svg:/icons/Path-BStop.svg + :/icons/Path_BStop.svg:/icons/Path_BStop.svg @@ -59,7 +59,7 @@ - :/icons/Path-BPlay.svg:/icons/Path-BPlay.svg + :/icons/Path_BPlay.svg:/icons/Path_BPlay.svg @@ -79,7 +79,7 @@ - :/icons/Path-BPause.svg:/icons/Path-BPause.svg + :/icons/Path_BPause.svg:/icons/Path_BPause.svg @@ -99,7 +99,7 @@ - :/icons/Path-BStep.svg:/icons/Path-BStep.svg + :/icons/Path_BStep.svg:/icons/Path_BStep.svg @@ -119,7 +119,7 @@ - :/icons/Path-BFastForward.svg:/icons/Path-BFastForward.svg + :/icons/Path_BFastForward.svg:/icons/Path_BFastForward.svg diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui b/src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui index 42a5e98364..1342da5649 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui +++ b/src/Mod/Path/Gui/Resources/panels/ToolBitEditor.ui @@ -1,21 +1,27 @@ - Form - + ToolBitAttributes + 0 0 - 587 - 744 + 401 + 715 - Form + Tool Bit Attributes + + + 0 + 0 + + 0 @@ -114,7 +120,7 @@ - 180° + 0 ° ° @@ -131,7 +137,7 @@ - 0.00 + 0 mm mm diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui b/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui index 83301b6b0d..70650bf817 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/ToolBitLibraryEdit.ui @@ -11,297 +11,11 @@ - ToolBit Library + Library Manager - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - - 226 - 16777215 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - Tool Libraries - - - - - - - - 32 - 32 - - - - <html><head/><body><p>Rename Tool Table</p></body></html> - - - - - - - :/icons/edit-edit.svg:/icons/edit-edit.svg - - - - - - - - 32 - 32 - - - - <html><head/><body><p>Add New Tool Table</p></body></html> - - - - - - - :/icons/list-add.svg:/icons/list-add.svg - - - - - - - - 32 - 32 - - - - <html><head/><body><p>Remove Tool Table from Disc</p></body></html> - - - - - - - :/icons/list-remove.svg:/icons/list-remove.svg - - - - - - - - - QFrame::Box - - - - - - - - - - 0 - - - 0 - - - - - true - - - <html><head/><body><p>Table of Tool Bits of the library.</p></body></html> - - - QFrame::Box - - - QFrame::Sunken - - - 1 - - - 0 - - - true - - - QAbstractItemView::InternalMove - - - Qt::MoveAction - - - QAbstractItemView::SelectRows - - - true - - - false - - - - - - - - - Add Tool Controller(s) to Job - - - - :/icons/edit_OK.svg:/icons/edit_OK.svg - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 140 - 20 - - - - - - - - <html><head/><body><p>Close the Tool Bit Library Editor</p></body></html> - - - Cancel - - - - :/icons/button_invalid.svg:/icons/button_invalid.svg - - - - - - - <html><head/><body><p>Save the current Library</p></body></html> - - - Save Table - - - - :/icons/document-save.svg:/icons/document-save.svg - - - - - - - <html><head/><body><p>Save the library to a new file</p></body></html> - - - Save Table As... - - - - :/icons/document-save-as.svg:/icons/document-save-as.svg - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - 420 - 0 - - - - true - - - - - - - <html><head/><body><p>Select the folder with the tool libraries to load.</p></body></html> - - - - - - - :/icons/document-open.svg:/icons/document-open.svg - - - + + + @@ -315,22 +29,45 @@ + + + + Create Toolbit + + + + :/icons/Path_ToolBit.svg:/icons/Path_ToolBit.svg + + + + + + 16777215 + 16777215 + + <html><head/><body><p>Add existing Tool Bit to this library.</p><p><br/></p></body></html> - Add Toolbit + Add Existing - - :/icons/list-add.svg:/icons/list-add.svg + + :/icons/Path_ToolDuplicate.svg:/icons/Path_ToolDuplicate.svg + + + 16777215 + 16777215 + + <html><head/><body><p>Delete selected Tool Bit(s) from the library.</p><p><br/></p></body></html> @@ -343,17 +80,194 @@ + + + + + + + + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>Select a working path for the tool library editor.</p></body></html> + + + + + + + :/icons/document-open.svg:/icons/document-open.svg + + + + + + + + 16777215 + 16777215 + + + + <html><head/><body><p>Add New Tool Table</p></body></html> + + + + + + + :/icons/document-new.svg:/icons/document-new.svg + + + + 24 + 24 + + + + + + + + <html><head/><body><p>Save the selected library with a new name or export to another format</p></body></html> + + + + + + + :/icons/document-save.svg:/icons/document-save.svg + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + QFrame::Box + + + + + + + true + + + <html><head/><body><p>Table of Tool Bits of the library.</p></body></html> + + + QFrame::Box + + + QFrame::Sunken + + + 1 + + + 0 + + + false + + + false + + + QAbstractItemView::DragOnly + + + Qt::IgnoreAction + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + true + + + false + + + true + + + + + + + + - + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 65555555 + 20 + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + - <html><head/><body><p>Assign numbers to each Tool Bit according to its current position in the library. The first Tool Bit is assigned the ID 1.</p></body></html> + <html><head/><body><p>Save the current Library</p></body></html> - Enumerate + Close - :/icons/button_sort.svg:/icons/button_sort.svg + :/icons/edit_OK.svg:/icons/edit_OK.svg @@ -363,6 +277,7 @@ + diff --git a/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui b/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui index 4dde97be5a..8def8f45d3 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui +++ b/src/Mod/Path/Gui/Resources/panels/ToolBitSelector.ui @@ -1,119 +1,135 @@ - Dialog - + ToolSelector + 0 0 - 588 - 396 + 350 + 542 - - Dialog + + + 0 + 0 + - - - - + + Tool Selector + + + + + + + + + + TextLabel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + + + + :/icons/Path_ToolTable.svg:/icons/Path_ToolTable.svg + + + + 16 + 16 + + + + + + + + + - + <html><head/><body><p>Available Tool Bits to choose from.</p></body></html> QAbstractItemView::NoEditTriggers - - - - - - - - - <html><head/><body><p>Load an existing Tool Bit from a file.</p></body></html> - - - Load... - - - - - - - <html><head/><body><p>Create a new Tool Bit based on an existing shape.</p></body></html> - - - New - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + QAbstractItemView::ExtendedSelection + + + false + - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - + + + + + + + false + + + <html><head/><body><p>Create ToolControllers for the selected toolbits and add them to the Job</p></body></html> + + + Add To Job + + + + :/icons/edit_OK.svg:/icons/edit_OK.svg + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + +
      + - - - - buttonBox - accepted() - Dialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - Dialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - + + + + + diff --git a/src/Mod/Path/Gui/Resources/panels/ToolLibraryEditor.ui b/src/Mod/Path/Gui/Resources/panels/ToolLibraryEditor.ui index 52aa6afeda..a818f0bfe7 100644 --- a/src/Mod/Path/Gui/Resources/panels/ToolLibraryEditor.ui +++ b/src/Mod/Path/Gui/Resources/panels/ToolLibraryEditor.ui @@ -235,7 +235,7 @@ - :/icons/Path-ToolController.svg:/icons/Path-ToolController.svg + :/icons/Path_ToolController.svg:/icons/Path_ToolController.svg
      @@ -292,7 +292,7 @@ - :/icons/Path-ToolDuplicate.svg:/icons/Path-ToolDuplicate.svg + :/icons/Path_ToolDuplicate.svg:/icons/Path_ToolDuplicate.svg
      @@ -372,7 +372,7 @@ - :/icons/Path-LengthOffset.svg:/icons/Path-LengthOffset.svg + :/icons/Path_LengthOffset.svg:/icons/Path_LengthOffset.svg
      diff --git a/src/Mod/Path/Gui/Resources/preferences/PathJob.ui b/src/Mod/Path/Gui/Resources/preferences/PathJob.ui index 9e1b6f7fcc..15c9cfcb30 100644 --- a/src/Mod/Path/Gui/Resources/preferences/PathJob.ui +++ b/src/Mod/Path/Gui/Resources/preferences/PathJob.ui @@ -142,8 +142,8 @@ 0 0 - 424 - 537 + 366 + 330 @@ -348,8 +348,8 @@ 0 0 - 407 - 570 + 319 + 528 @@ -655,8 +655,11 @@ + + <html><head/><body><p>Causes the toollibrary manager to remember last directory. This ONLY affects legacy tools. </p><p>This control is deprecated and will be removed in a future version</p></body></html> + - Remember last library + Remember last library (legacy) diff --git a/src/Mod/Path/Gui/Resources/translations/Path.ts b/src/Mod/Path/Gui/Resources/translations/Path.ts index 179fabcd66..5b0b7863f9 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied - - - The base geometry of this toolpath - - The tool controller that will be used to calculate the path @@ -424,13 +419,13 @@ - - The height where feed starts and height during retract tool when path is finished + + Controls how tool retracts Default=G99 - - Controls how tool retracts Default=G99 + + The height where feed starts and height during retract tool when path is finished @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + + Start pocketing at center or boundary @@ -679,8 +679,8 @@ - - The library to use to generate the path + + The base geometry of this toolpath @@ -940,13 +940,13 @@ - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + + Cutting Edge Angle (%.2f) results in negative tool tip length - - Cutting Edge Angle (%.2f) results in negative tool tip length + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° @@ -1435,6 +1435,16 @@ PathFace + + + Face + + + + + Create a Facing Operation from a model or face + + Generating toolpath with libarea offsets. @@ -1446,16 +1456,6 @@ Pick Start Point - - - Face - - - - - Create a Facing Operation from a model or face - - PathGeom @@ -1530,6 +1530,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + + Start cutting from the inside or outside @@ -1545,11 +1550,6 @@ Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - - PathJob @@ -1985,11 +1985,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - - Profile @@ -2000,6 +1995,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + + New property added to @@ -3098,16 +3098,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - - - - - Creates a Path Dess-up object from a selected path - - Please select one path object @@ -3125,6 +3115,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object + + + Dress-up + + + + + Creates a Path Dess-up object from a selected path + + Path_DressupAxisMap @@ -4021,6 +4021,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + + Simple Copy @@ -4036,12 +4042,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object - - - Please select exactly one path object - - - Path_Simulator @@ -4071,6 +4071,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + + Add Tool Controller to the Job @@ -4081,11 +4086,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller - - - Tool Number to Load - - Path_ToolTable @@ -4169,11 +4169,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library + + + Tooltable JSON (*.json) + + + + + HeeksCAD tooltable (*.tooltable) + + + + + LinuxCNC tooltable (*.tbl) + + Open tooltable + + + Save tooltable + + + + + Add New Tool Table + + + + + Delete Selected Tool Table + + + + + Rename Selected Tool Table + + Tooltable editor @@ -4384,11 +4419,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - - Tooltable XML (*.xml) @@ -4404,36 +4434,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property - - - Add New Tool Table - - - - - Delete Selected Tool Table - - - - - Rename Selected Tool Table - - - - - Tooltable JSON (*.json) - - - - - HeeksCAD tooltable (*.tooltable) - - - - - LinuxCNC tooltable (*.tbl) - - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_af.qm b/src/Mod/Path/Gui/Resources/translations/Path_af.qm index 2244ef0618..45530f90c4 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_af.qm and b/src/Mod/Path/Gui/Resources/translations/Path_af.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_af.ts b/src/Mod/Path/Gui/Resources/translations/Path_af.ts index 70c3767610..67b7b1abd4 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_af.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_af.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ar.qm b/src/Mod/Path/Gui/Resources/translations/Path_ar.qm index a6e6a1f6be..b4e42c6ae0 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ar.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ar.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ar.ts b/src/Mod/Path/Gui/Resources/translations/Path_ar.ts index eac1c58200..cabb4248ef 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ar.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ar.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. إزاحة إضافية لتطبيقها على العملية. الاتجاه يعتمد على العملية. + + + The library to use to generate the path + المكتبة ليتم استخدامها لتوليد المسار + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - المكتبة ليتم استخدامها لتوليد المسار + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + الوجه + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point اختيار نقطة البداية - - - Face - الوجه - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object المرجو اختيار عنصر مسار + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object يرجى اختيار عنصر مسار واحد بالضبط - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ca.qm b/src/Mod/Path/Gui/Resources/translations/Path_ca.qm index 8a7bf64550..6c1b823ccd 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ca.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ca.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ca.ts b/src/Mod/Path/Gui/Resources/translations/Path_ca.ts index 7994d0f224..9110e52328 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ca.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ca.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignora les àrees que passen per davall d'una profunditat especificada. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: pla, escaneig de la superfície 3D. Rotacional: escaneig rotacional del 4t eix. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Retalla els residus fins al fons en la vora del model, alliberant-lo. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: pla, escaneig de la superfície 3D. Rotacional: escaneig rotacional del 4t eix. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied El camí que es copia - - - The base geometry of this toolpath - La geometria base d'aquesta trajectòria - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controla la manera en què l'eina es retrau. Per defecte=G98 - - - The height where feed starts and height during retract tool when path is finished - L'alçària a què s'inicia l'avanç i l'alçària durant la retirada de l'eina quan el camí està finalitzat - Controls how tool retracts Default=G99 Controla la manera en què l'eina es retrau. Per defecte=G99 + + + The height where feed starts and height during retract tool when path is finished + L'alçària a què s'inicia l'avanç i l'alçària durant la retirada de l'eina quan el camí està finalitzat + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Desplaçament addicional que s'aplica a l'operació. La direcció és dependent de l'operació. + + + The library to use to generate the path + La biblioteca que s'utilitza per a generar el camí + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Marqueu «cert», si s'utilitza compensació de radi de l'eina de tall - - The library to use to generate the path - La biblioteca que s'utilitza per a generar el camí + + The base geometry of this toolpath + La geometria base d'aquesta trajectòria @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length L'angle de tall (%.2f) dóna com a resultat una longitud negativa de la punta de l'eina + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° + No parent job found for operation. @@ -1440,6 +1440,16 @@ PathFace + + + Face + Cara + + + + Create a Facing Operation from a model or face + Crea una operació de generació de cares a partir d'un model o una cara + Generating toolpath with libarea offsets. @@ -1451,16 +1461,6 @@ Pick Start Point Trieu el punt d'inici - - - Face - Cara - - - - Create a Facing Operation from a model or face - Crea una operació de generació de cares a partir d'un model o una cara - PathGeom @@ -1535,6 +1535,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) La direcció dels talls circulars, en sentit horari (CW) o antihorari (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + La direcció dels talls circulars, en sentit horari o antihorari + Start cutting from the inside or outside @@ -1550,11 +1555,6 @@ Starting Radius Radi inicial - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - La direcció dels talls circulars, en sentit horari o antihorari - PathJob @@ -1991,11 +1991,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una PathProfile - - - Profile based on face or faces - Perfil basat en una o més cares - Profile @@ -2006,6 +2001,11 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Perfil basat en una o més cares + New property added to @@ -3104,16 +3104,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_Dressup - - - Dress-up - Aspecte - - - - Creates a Path Dess-up object from a selected path - Crea un objecte aspecte del camí a partir d'un camí seleccionat - Please select one path object @@ -3131,6 +3121,16 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Please select a Path object Seleccioneu un objecte camí + + + Dress-up + Aspecte + + + + Creates a Path Dess-up object from a selected path + Crea un objecte aspecte del camí a partir d'un camí seleccionat + Path_DressupAxisMap @@ -4027,6 +4027,12 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_SimpleCopy + + + Please select exactly one path object + + Seleccioneu exactament un objecte de tipus camí + Simple Copy @@ -4042,12 +4048,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Please select exactly one path object Si us plau, seleccioneu exactament un objecte de camí - - - Please select exactly one path object - - Seleccioneu exactament un objecte de tipus camí - Path_Simulator @@ -4077,6 +4077,11 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_ToolController + + + Tool Number to Load + Número d'eina per carregar + Add Tool Controller to the Job @@ -4087,11 +4092,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Add Tool Controller Afig un controlador d'eina - - - Tool Number to Load - Número d'eina per carregar - Path_ToolTable @@ -4175,11 +4175,46 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Save toolbit library Desa la llibreria d'eines de bits + + + Tooltable JSON (*.json) + Taula d'eines JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Taula d'eines HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Taula d'eines LinuxCNC (*.tbl) + Open tooltable Obri la taula d'eines + + + Save tooltable + Guarda la taula d'eines + + + + Add New Tool Table + Afegeix una taula d'eines nova + + + + Delete Selected Tool Table + Esborra la taula d'eines seleccionada + + + + Rename Selected Tool Table + Canvia el nom de la taula d'eines seleccionada + Tooltable editor @@ -4390,11 +4425,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Taula d'eines XML (*.xml);;Taula d'eines HeeksCAD (*.tooltable) - - - Save tooltable - Guarda la taula d'eines - Tooltable XML (*.xml) @@ -4410,36 +4440,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Object doesn't have a tooltable property L'objecte no té la propietat de taula d'eines - - - Add New Tool Table - Afegeix una taula d'eines nova - - - - Delete Selected Tool Table - Esborra la taula d'eines seleccionada - - - - Rename Selected Tool Table - Canvia el nom de la taula d'eines seleccionada - - - - Tooltable JSON (*.json) - Taula d'eines JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Taula d'eines HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Taula d'eines LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_cs.qm b/src/Mod/Path/Gui/Resources/translations/Path_cs.qm index 3abeab3c61..efdea27027 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_cs.qm and b/src/Mod/Path/Gui/Resources/translations/Path_cs.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_cs.ts b/src/Mod/Path/Gui/Resources/translations/Path_cs.ts index 5d18c74660..d52f23085e 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_cs.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_cs.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Cesta ke kopírování - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + Knihovna použitá k vytvoření cesty + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Knihovna použitá k vytvoření cesty + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Plocha + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Plocha - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Číslo nástroje pro načtení + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Číslo nástroje pro načtení - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_de.qm b/src/Mod/Path/Gui/Resources/translations/Path_de.qm index 2ca07c8bba..a43de85c20 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_de.qm and b/src/Mod/Path/Gui/Resources/translations/Path_de.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_de.ts b/src/Mod/Path/Gui/Resources/translations/Path_de.ts index fc8bffaf60..5f7c449dbc 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_de.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_de.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignoriere Bereiche, die unterhalb der angegebenen Tiefe fortfahren. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Eben: Flacher, 3D-Oberflächen-Scan. Drehend: rotierender Scan um die 4. Achse. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Schneide durch überschüssiges Material bis zur Werkstückkante, um dieses zu befreien. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Eben: Flacher, 3D-Oberflächen-Scan. Drehend: rotierender Scan um die 4. Achse. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Der zu kopierende Pfad - - - The base geometry of this toolpath - Die Basis-Geometrie dieses Werkzeugweges - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Steuert wie stark ein Werkzeug zurückzieht. Vorgabe: G98 - - - The height where feed starts and height during retract tool when path is finished - Die Höhe, bei der die Positionierbewegung beginnt und der Rückzug am Bahnende durchgeführt wird - Controls how tool retracts Default=G99 Steuert, wie das Werkzeug zurückfährt Standard=G99 + + + The height where feed starts and height during retract tool when path is finished + Die Höhe, bei der die Positionierbewegung beginnt und der Rückzug am Bahnende durchgeführt wird + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -590,6 +585,11 @@ nur unwesentlich. Extra offset to apply to the operation. Direction is operation dependent. Zusätzlicher Versatz der auf die Operation angewendet wird. Richtung ist abhängig von der Operation. + + + The library to use to generate the path + Algorithmus zum berechnen des Werkzeugweges + Start pocketing at center or boundary @@ -681,9 +681,9 @@ nur unwesentlich. Auf Wahr setzen, wenn die Fräser-Radiuskompensation verwendet werden soll - - The library to use to generate the path - Algorithmus zum berechnen des Werkzeugweges + + The base geometry of this toolpath + Die Basis-Geometrie dieses Werkzeugweges @@ -941,16 +941,16 @@ nur unwesentlich. Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Ungültiger Schneidenwinkel %.2f muß >0° und <= 180° sein - Cutting Edge Angle (%.2f) results in negative tool tip length Spanwinkel (%.2f) führt zu negative Länge der Werkzeugspitze + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Ungültiger Schneidenwinkel %.2f muß >0° und <= 180° sein + No parent job found for operation. @@ -1024,7 +1024,7 @@ nur unwesentlich. Diameters - Diameters + Durchmesser @@ -1443,6 +1443,16 @@ nur unwesentlich. PathFace + + + Face + Fläche + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1455,16 +1465,6 @@ nur unwesentlich. Pick Start Point Wählen Sie den Startpunkt - - - Face - Fläche - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1539,6 +1539,11 @@ nur unwesentlich. The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Die Richtung der kreisförmigen Schnitte, im Uhrzeigersinn (CW), oder gegen den Uhrzeigersinn (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Die Richtung der kreisförmigen Schnitte, im Uhrzeigersinn (CW), oder gegen den Uhrzeigersinn (CCW) + Start cutting from the inside or outside @@ -1554,11 +1559,6 @@ nur unwesentlich. Starting Radius Start-Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Die Richtung der kreisförmigen Schnitte, im Uhrzeigersinn (CW), oder gegen den Uhrzeigersinn (CCW) - PathJob @@ -1996,11 +1996,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b PathProfile - - - Profile based on face or faces - Auf eine oder mehrere Flächen basierendes Profil - Profile @@ -2011,6 +2006,11 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Auf eine oder mehrere Flächen basierendes Profil + New property added to @@ -3111,16 +3111,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Path_Dressup - - - Dress-up - Erweiterung - - - - Creates a Path Dess-up object from a selected path - Erzeugt eine Erweiterung für die ausgewählte Bewegungsbahn - Please select one path object @@ -3140,6 +3130,16 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Please select a Path object Bitte wählen Sie ein Pfadobjekt + + + Dress-up + Erweiterung + + + + Creates a Path Dess-up object from a selected path + Erzeugt eine Erweiterung für die ausgewählte Bewegungsbahn + Path_DressupAxisMap @@ -4037,6 +4037,12 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Path_SimpleCopy + + + Please select exactly one path object + + genau eine Bahn wählen + Simple Copy @@ -4052,12 +4058,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Please select exactly one path object Bitte eine einzelne Bewegungsbahn auswählen - - - Please select exactly one path object - - genau eine Bahn wählen - Path_Simulator @@ -4087,6 +4087,11 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Path_ToolController + + + Tool Number to Load + Lade Werkzeugnummer + Add Tool Controller to the Job @@ -4097,11 +4102,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Add Tool Controller Werkzeug Kontroller bearbeiten - - - Tool Number to Load - Lade Werkzeugnummer - Path_ToolTable @@ -4185,11 +4185,46 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Werkzeugtabelle JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD Werkzeugtabelle (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC Werkzeugtabelle (*.tbl) + Open tooltable Werkzeugtabelle öffnen + + + Save tooltable + Werkzeugtabelle speichern + + + + Add New Tool Table + Neue Werkzeugtabelle hinzufügen + + + + Delete Selected Tool Table + Ausgewählte Werkzeugtabelle löschen + + + + Rename Selected Tool Table + Ausgewählte Werkzeugtabelle umbenennen + Tooltable editor @@ -4400,11 +4435,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Werkzeugtabelle XML (XML); HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Werkzeugtabelle speichern - Tooltable XML (*.xml) @@ -4420,36 +4450,6 @@ Wenn es notwendig ist, die endgültige Tiefe manuell einzustellen, wählen Sie b Object doesn't have a tooltable property Objekt besitzt keine Eigenschaft "Werkzeugtabelle" - - - Add New Tool Table - Neue Werkzeugtabelle hinzufügen - - - - Delete Selected Tool Table - Ausgewählte Werkzeugtabelle löschen - - - - Rename Selected Tool Table - Ausgewählte Werkzeugtabelle umbenennen - - - - Tooltable JSON (*.json) - Werkzeugtabelle JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD Werkzeugtabelle (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC Werkzeugtabelle (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_el.qm b/src/Mod/Path/Gui/Resources/translations/Path_el.qm index 33ce70eb11..fbfb6bf28e 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_el.qm and b/src/Mod/Path/Gui/Resources/translations/Path_el.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_el.ts b/src/Mod/Path/Gui/Resources/translations/Path_el.ts index b7cb25f02b..0de028e5de 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_el.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_el.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Η διαδρομή προς αντιγραφή - - - The base geometry of this toolpath - Η γεωμετρία βάσης αυτής της διαδρομής εργαλείων - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - Το ύψος όπου ξεκινά η τροφοδοσία και το ύψος απόσυρσης εργαλείου όταν η διαδρομή έχει ολοκληρωθεί - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Το ύψος όπου ξεκινά η τροφοδοσία και το ύψος απόσυρσης εργαλείου όταν η διαδρομή έχει ολοκληρωθεί + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Επιπλέον μετατόπιση για την υποβολή αίτησης για τη διαδικασία. Η κατεύθυνση εξαρτάται από τη λειτουργία. + + + The library to use to generate the path + Η βιβλιοθήκη προς χρήση για την δημιουργία διαδρομής + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Η βιβλιοθήκη προς χρήση για την δημιουργία διαδρομής + + The base geometry of this toolpath + Η γεωμετρία βάσης αυτής της διαδρομής εργαλείων @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Η Γωνία Περικοπής Ακμής (%.2f) θα έχει ως αποτέλεσμα αρνητικό μήκος άκρου εργαλείου + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Όψη + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Διαλέξτε Σημείο Εκκίνησης - - - Face - Όψη - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Η κατεύθυνση των κυκλικών περικοπών, ωρολογιακή (CW), ή αντιωρολογιακή (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Η κατεύθυνση των κυκλικών περικοπών, ωρολογιακή (CW), ή αντιωρολογιακή (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Αναδιαμόρφωση - - - - Creates a Path Dess-up object from a selected path - Δημιουργεί ένα αντικείμενο Αναδιαμόρφωσης Διαδρομής από μια επιλεγμένη διαδρομή - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Παρακαλώ επιλέξτε ένα αντικείμενο Διαδρομής + + + Dress-up + Αναδιαμόρφωση + + + + Creates a Path Dess-up object from a selected path + Δημιουργεί ένα αντικείμενο Αναδιαμόρφωσης Διαδρομής από μια επιλεγμένη διαδρομή + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Παρακαλώ επιλέξτε ακριβώς ένα αντικείμενο διαδρομής + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Παρακαλώ επιλέξτε ακριβώς ένα αντικείμενο διαδρομής - - - Please select exactly one path object - - Παρακαλώ επιλέξτε ακριβώς ένα αντικείμενο διαδρομής - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Αριθμός Εργαλείου προς Φόρτωση + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Προσθέστε Ελεγκτή Εργαλείων - - - Tool Number to Load - Αριθμός Εργαλείου προς Φόρτωση - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Πίνακας εργαλείων JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Πίνακας εργαλείων HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Πίνακας εργαλείων LinuxCNC (*.tbl) + Open tooltable Άνοιγμα πίνακα εργαλείων + + + Save tooltable + Αποθήκευση πίνακα εργαλείων + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Πίνακας εργαλείων XML (*.xml);; Πίνακας εργαλείων HeeksCAD (*.tooltable) - - - Save tooltable - Αποθήκευση πίνακα εργαλείων - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Το αντικείμενο δεν έχει κάποια ιδιότητα πίνακα εργαλείων - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Πίνακας εργαλείων JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Πίνακας εργαλείων HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Πίνακας εργαλείων LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_es-ES.qm b/src/Mod/Path/Gui/Resources/translations/Path_es-ES.qm index 4131f301ad..96920cf780 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_es-ES.qm and b/src/Mod/Path/Gui/Resources/translations/Path_es-ES.qm differ 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 ca0e049444..9dee5e8bdf 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_es-ES.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore las áreas que proceden por debajo de la profundidad especificada. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Plano, superficie 3D. Rotacional: Escaneo rotacional de 4º ejes. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cortar a través de los residuos a profundidad en el borde del modelo, liberando el modelo. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Plano, superficie 3D. Rotacional: Escaneo rotacional de 4º ejes. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied La trayectoria a ser copiada - - - The base geometry of this toolpath - La geometría base de esta trayectoria de herramienta - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controla cómo la herramienta se retrae Por defecto=G98 - - - The height where feed starts and height during retract tool when path is finished - La altura donde el avance empieza y altura durante herramienta retrae cuando la ruta esta terminada - Controls how tool retracts Default=G99 Controla cómo la herramienta se retrae Por defecto = G99 + + + The height where feed starts and height during retract tool when path is finished + La altura donde el avance empieza y altura durante herramienta retrae cuando la ruta esta terminada + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Desfase extra para aplicar a la operación. La dirección es dependiente de la operación. + + + The library to use to generate the path + La biblioteca a usar para generar la trayectoria + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Hacer verdadero, sí se utiliza la compensación de cortador de radio - - The library to use to generate the path - La biblioteca a usar para generar la trayectoria + + The base geometry of this toolpath + La geometría base de esta trayectoria de herramienta @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Ángulo de corte no válido %.2f, debe ser >0° y <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Ángulo del borde de corte no válido %.2f, Debe ser >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Angulo de esquina de corte (%.2f) resulta en de una longitud de punta de la herramienta negativa + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Ángulo del borde de corte no válido %.2f, Debe ser >0° and <=180° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Diametros @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Aplica automáticamente el ángulo inverso. Applying inverse angle manually. - Applying inverse angle manually. + Aplicando ángulo inverso manualmente. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Cara + + + + Create a Facing Operation from a model or face + Crear una Operación de Enfrentado a partir de un modelo o cara + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Elegir Punto de Inicio - - - Face - Cara - - - - Create a Facing Operation from a model or face - Crear una Operación de Enfrentado a partir de un modelo o cara - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) La dirección de los cortes circulares, Sentido horario (CW), o Sentido antihorario (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + La dirección de los cortes circulares, en sentido horario (CW), o contrario a las agujas del reloj (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Radio inicial - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - La dirección de los cortes circulares, en sentido horario (CW), o contrario a las agujas del reloj (CCW) - PathJob @@ -1994,11 +1994,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Perfil basado en la cara o caras - Profile @@ -2009,6 +2004,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Perfilar el modelo completo, la(s) cara(s) seleccionada(s) o el/los borde(s) seleccionado(s) + + + Profile based on face or faces + Perfil basado en la cara o caras + New property added to @@ -2974,7 +2974,7 @@ If it is necessary to set the FinalDepth manually please select a different oper The deflection value for discretizing arcs - The deflection value for discretizing arcs + El valor de deflexión para la discretización de arcos @@ -3116,16 +3116,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Disfrazar - - - - Creates a Path Dess-up object from a selected path - Crea un objeto Dress-up de ruta con la trayectoria seleccionada - Please select one path object @@ -3145,6 +3135,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Por favor seleccione un objeto de trayectoria + + + Dress-up + Disfrazar + + + + Creates a Path Dess-up object from a selected path + Crea un objeto Dress-up de ruta con la trayectoria seleccionada + Path_DressupAxisMap @@ -3745,27 +3745,27 @@ If it is necessary to set the FinalDepth manually please select a different oper Base Object(s) - Base Object(s) + Objeto(s) base Job Sequence - Job Sequence + Secuencia de Trabajo Job Description - Job Description + Descripción del Trabajo Job Type - Job Type + Tipo de Trabajo CAD File Name - CAD File Name + Nombre del Archivo CAD @@ -3775,12 +3775,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Customer - Customer + Cliente Designer - Designer + Diseñador @@ -3790,7 +3790,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Minimum Z Height - Minimum Z Height + Altura mínima de Z @@ -3825,17 +3825,17 @@ If it is necessary to set the FinalDepth manually please select a different oper Maximum Z Height - Maximum Z Height + Altura máxima de Z Cycle Time - Cycle Time + Tiempo de Ciclo Coolant - Coolant + Refrigerante @@ -3845,7 +3845,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Tool Number - Tool Number + Número de Herramienta @@ -3855,12 +3855,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Manufacturer - Manufacturer + Fabricante Part Number - Part Number + Número de Pieza @@ -3870,12 +3870,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Inspection Notes - Inspection Notes + Notas de Inspección Tool Controller - Tool Controller + Controlador de herramienta @@ -3895,22 +3895,22 @@ If it is necessary to set the FinalDepth manually please select a different oper Tool Diameter - Tool Diameter + Diámetro de Herramienta X Size - X Size + Tamaño X Y Size - Y Size + Tamaño Y Z Size - Z Size + Tamaño Z @@ -3925,7 +3925,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Order By - Order By + Ordenado por @@ -3935,32 +3935,32 @@ If it is necessary to set the FinalDepth manually please select a different oper Gcode File - Gcode File + Archivo Gcode Last Post Process Date - Last Post Process Date + Fecha del último Post Proceso Stops - Stops + Paradas Programmer - Programmer + Programador Machine - Machine + Máquina Postprocessor - Postprocessor + Postprocesador @@ -3970,7 +3970,7 @@ If it is necessary to set the FinalDepth manually please select a different oper File Size (kbs) - File Size (kbs) + Tamaño del Archivo (kbs) @@ -3990,7 +3990,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Date - Date + Fecha @@ -4043,6 +4043,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Por favor seleccione exactamente un objeto de trayectoria + + Simple Copy @@ -4058,13 +4065,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Por favor seleccione exactamente un objeto trayectoria - - - Please select exactly one path object - - Por favor seleccione exactamente un objeto de trayectoria - - Path_Simulator @@ -4094,6 +4094,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Número de herramienta a carga + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Añadir Controlador de Herramienta - - - Tool Number to Load - Número de herramienta a carga - Path_ToolTable @@ -4192,11 +4192,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Guardar librería "toolbit" + + + Tooltable JSON (*.json) + Tabla de herramientas JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Tabla de herramientas HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tabla de herramientas LinuxCNC (*.tbl) + Open tooltable Abierta mesa de herramientas + + + Save tooltable + Guardar mesa de herramienta + + + + Add New Tool Table + Añadir nueva tabla de herramientas + + + + Delete Selected Tool Table + Eliminar Tabla de Herramientas Seleccionada + + + + Rename Selected Tool Table + Renombrar Tabla de Herramientas Seleccionada + Tooltable editor @@ -4407,11 +4442,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Mesa de herramientas XML (*.xml);;mesa de herramientas HeeksCAD (*.tooltable) - - - Save tooltable - Guardar mesa de herramienta - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property El Objeto no tiene una propiedad de mesa de herramienta - - - Add New Tool Table - Añadir nueva tabla de herramientas - - - - Delete Selected Tool Table - Eliminar Tabla de Herramientas Seleccionada - - - - Rename Selected Tool Table - Renombrar Tabla de Herramientas Seleccionada - - - - Tooltable JSON (*.json) - Tabla de herramientas JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Tabla de herramientas HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tabla de herramientas LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_eu.qm b/src/Mod/Path/Gui/Resources/translations/Path_eu.qm index c31fec1d47..b6ad58668f 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_eu.qm and b/src/Mod/Path/Gui/Resources/translations/Path_eu.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_eu.ts b/src/Mod/Path/Gui/Resources/translations/Path_eu.ts index 143bf6121d..76d8725198 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_eu.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_eu.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ezikusi adierazitako sakoneraren azpitik dauden areak. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planarra: Laua, 3D gainazal eskaneatzea. Birakaria: 4. ardatzeko eskaneatze birakaria. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Moztu gehiegizko materiala ereduaren ertzeraino, eredua garbitzeko. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planarra: Laua, 3D gainazal eskaneatzea. Birakaria: 4. ardatzeko eskaneatze birakaria. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -136,7 +136,7 @@ Cut internal feature areas within a larger selected face. - Cut internal feature areas within a larger selected face. + Moztu hautatutako aurpegi handiago batean dauden barneko elementu-area. @@ -221,12 +221,12 @@ Collinear and co-radial artifact gaps that are smaller than this threshold are closed in the path. - Collinear and co-radial artifact gaps that are smaller than this threshold are closed in the path. + Atalase hau baino txikiagoak diren artefaktu-tarte lerrokideak eta erradiokideak itxi egiten dira bidean. Feedback: three smallest gaps identified in the path geometry. - Feedback: three smallest gaps identified in the path geometry. + Atzeraelikadura: hiru tarte txiki identifikatu dira bide-geometrian. @@ -243,11 +243,6 @@ The path to be copied Kopiatuko den bidea - - - The base geometry of this toolpath - Tresna-bide honen oinarri-geometria - The tool controller that will be used to calculate the path @@ -311,12 +306,12 @@ Calculate roll-on to path - Kalkulatu itzulikatzea bidera + Kalkulatu kulunkatzea bidera Calculate roll-off from path - Kalkulatu itzulikatzea bidetik + Kalkulatu kulunkatzea bidetik @@ -346,7 +341,7 @@ Perform plunges with G0 - Perform plunges with G0 + Murgiltzeak gauzatzen ditu G0-rekin @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Tresna nola atzeratzen den kontrolatzen du. Lehenetsia=G98 - - - The height where feed starts and height during retract tool when path is finished - Elikatzea hasten den altuera eta bidea amaituta dagoenean tresna atzeratzen den altuera - Controls how tool retracts Default=G99 Tresna nola atzeratzen den kontrolatzen du. Lehenetsia=G99 + + + The height where feed starts and height during retract tool when path is finished + Elikatzea hasten den altuera eta bidea amaituta dagoenean tresna atzeratzen den altuera + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -511,7 +506,7 @@ Enforce the Z-depth of the selected face as the lowest value for final depth. Higher user values will be observed. - Enforce the Z-depth of the selected face as the lowest value for final depth. Higher user values will be observed. + Behartu aurpegi hautatuaren Z sakonera azken sakoneraren baliorik baxuena izan dadin. Erabiltzaile-balio altuagoak kontuan hartuko dira. @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Eragiketari aplikatuko zaion desplazamendu gehigarria. Norabidea eragiketaren menpekoa da. + + + The library to use to generate the path + Bidea sortzeko erabiliko den liburutegia + Start pocketing at center or boundary @@ -636,7 +636,7 @@ Extend the profile clearing beyond the Extra Offset. - Extend the profile clearing beyond the Extra Offset. + Hedatu profilaren garbidetza desplazamendu estra baino haratago. @@ -679,9 +679,9 @@ Markatu 'Egia', ebakigailuaren erradio-konpentsazioa erabili nahi bada - - The library to use to generate the path - Bidea sortzeko erabiliko den liburutegia + + The base geometry of this toolpath + Tresna-bide honen oinarri-geometria @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Mozte-ertzaren angelu baliogabea (%.2f), >0° and <=180° artekoa izan behar du - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Mozte-ertzaren angelu baliogabea (%.2f), >0° and <=180° artekoa izan behar du - Cutting Edge Angle (%.2f) results in negative tool tip length Mozte-ertzaren angeluak (%.2f) tresna-puntaren luzera negatiboa ematen du + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Mozte-ertzaren angelu baliogabea (%.2f), >0° and <=180° artekoa izan behar du + No parent job found for operation. @@ -962,17 +962,17 @@ No coolant property found. Please recreate operation. - No coolant property found. Please recreate operation. + Ez da hozgarri-propietaterik aurkitu. Mesedez, birsortu eragiketa. No Tool Controller is selected. We need a tool to build a Path. - No Tool Controller is selected. We need a tool to build a Path. + Ez da tresna-kontrolagailurik hautatu. Tresna bat behar da bide bat eraikitzeko. No Tool found or diameter is zero. We need a tool to build a Path. - No Tool found or diameter is zero. We need a tool to build a Path. + Ez da tresnarik aurkitu edo diametroa zero da. Tresna bat behar da bide bat eraikitzeko. @@ -987,22 +987,22 @@ Tool Controller feedrates required to calculate the cycle time. - Tool Controller feedrates required to calculate the cycle time. + Tresna-kontrolagailuaren elikatze-abiadura behar da ziklo-denbora kalkulatzeko. Feedrate Error - Feedrate Error + Elikatze-abiaduraren errorea Add Tool Controller Rapid Speeds on the SetupSheet for more accurate cycle times. - Add Tool Controller Rapid Speeds on the SetupSheet for more accurate cycle times. + Gehitu tresna-kontrolagailuaren abiadura azkarrak konfigurazio-orrian, ziklo-denbora zehatzagoak izateko. Cycletime Error - Cycletime Error + Ziklo-denboraren errorea @@ -1022,7 +1022,7 @@ Diameters - Diameters + Diametroak @@ -1170,7 +1170,7 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Horizontala ez den aurpegiari ez ikusiarena egiten @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Alderantzizko angelua automatikoki aplikatzen. Applying inverse angle manually. - Applying inverse angle manually. + Alderantzizko angelua eskuz aplikatzen. @@ -1373,7 +1373,7 @@ Angle of tag plunge and ascent. - Etiketaren sakontze- eta igotze-angelua. + Etiketaren murgiltze- eta igotze-angelua. @@ -1441,6 +1441,16 @@ PathFace + + + Face + Aurpegia + + + + Create a Facing Operation from a model or face + Aurpegia sortzeko eragiketa bat, eredu batetik edo beste aurpegi batetik abiatuta + Generating toolpath with libarea offsets. @@ -1453,16 +1463,6 @@ Pick Start Point Aukeratu hasiera-puntua - - - Face - Aurpegia - - - - Create a Facing Operation from a model or face - Aurpegia sortzeko eragiketa bat, eredu batetik edo beste aurpegi batetik abiatuta - PathGeom @@ -1512,12 +1512,12 @@ Feedrate Error - Feedrate Error + Elikatze-abiaduraren errorea Cycletime Error - Cycletime Error + Ziklo-denboraren errorea @@ -1537,6 +1537,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Mozte zirkularren norabidea, erlojuaren orratzen noranzkoan (CW) edo aurkakoan (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Mozte zirkularren norabidea, erlojuaren orratzen noranzkoan (CW) edo aurkakoan (CCW) + Start cutting from the inside or outside @@ -1552,11 +1557,6 @@ Starting Radius Hasierako erradioa - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Mozte zirkularren norabidea, erlojuaren orratzen noranzkoan (CW) edo aurkakoan (CCW) - PathJob @@ -1603,7 +1603,7 @@ Last Time the Job was post-processed - Last Time the Job was post-processed + Lana post-prozesatu zen azken aldia @@ -1751,7 +1751,7 @@ Operations Cycle Time Estimation - Operations Cycle Time Estimation + Eragiketen ziklo-denboraren kalkulua @@ -1766,7 +1766,7 @@ Coolant mode for this operation - Eragiketa honetarako hozte-modua + Eragiketa honetarako hozgarri-modua @@ -1816,17 +1816,17 @@ Lower limit of the turning diameter - Lower limit of the turning diameter + Torneaketa-diametroaren beheko muga Upper limit of the turning diameter. - Upper limit of the turning diameter. + Torneaketa-diametroaren goiko muga. Coolant option for this operation - Eragiketa honetarako hozte-aukera + Eragiketa honetarako hozgarri-aukera @@ -1858,7 +1858,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Job Cycle Time Estimation - Job Cycle Time Estimation + Lanaren ziklo-denboraren kalkulua @@ -1866,7 +1866,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Mulitiple operations are labeled as - Mulitiple operations are labeled as + Eragiketa anitz honela etiketatu dira: @@ -1989,16 +1989,11 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Start Depth is lower than face depth. Setting to - Start Depth is lower than face depth. Setting to + Hasierako sakonera aurpegiaren sakonera baino baxuagoa da. Honakoa ezartzen: PathProfile - - - Profile based on face or faces - Aurpegi batean edo batzuetan oinarritutako profila - Profile @@ -2009,6 +2004,11 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Profile entire model, selected face(s) or selected edge(s) Profilatu eredu osoa, aurpegi hautatua(k) edo ertz hautatua(k) + + + Profile based on face or faces + Aurpegi batean edo batzuetan oinarritutako profila + New property added to @@ -2042,7 +2042,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat No ExpandProfile support for ArchPanel models. - No ExpandProfile support for ArchPanel models. + Ez dago profila hedatzeko euskarririk ArchPanel ereduetarako. @@ -2233,12 +2233,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Coolant Modes - Hozte-moduak + Hozgarri-moduak Default coolant mode. - Hozte-modu lehenetsia. + Hozgarri-modu lehenetsia. @@ -2346,12 +2346,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Failed to determine point 1 from - Failed to determine point 1 from + Huts egin du 1. puntua zehazteak hemendik: Failed to determine point 2 from - Failed to determine point 2 from + Huts egin du 2. puntua zehazteak hemendik: @@ -2507,17 +2507,17 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Initializing LinearDeflection to 0.001 mm. - Initializing LinearDeflection to 0.001 mm. + Makurdura lineala 0.001 mm-ra hasieratzen. The GeometryTolerance for this Job is 0.0. Initializing LinearDeflection to 0.0001 mm. - The GeometryTolerance for this Job is 0.0. Initializing LinearDeflection to 0.0001 mm. + Lan honen geometria-tolerantzia 0.0 da. Makurdura lineala 0.0001 mm-ra hasieratzen. Sample interval limits are 0.001 to 25.4 millimeters. - Sample interval limits are 0.001 to 25.4 millimeters. + Lagin-tartearen mugak 0.001 eta 25.4 milimetro dira. @@ -2532,12 +2532,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat AvoidLastX_Faces: Only zero or positive values permitted. - AvoidLastX_Faces: Only zero or positive values permitted. + AvoidLastX_Faces: Zero balioa edo balio positiboak soilik onartzen dira. AvoidLastX_Faces: Avoid last X faces count limited to 100. - AvoidLastX_Faces: Avoid last X faces count limited to 100. + AvoidLastX_Faces: Saihestu azken X aurpegien zenbaketa 100era mugatuta. @@ -2567,22 +2567,22 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat No profile path geometry returned. - No profile path geometry returned. + Ez da itzuli profilaren bide-geometriarik. No clearing shape returned. - No clearing shape returned. + Ez da itzuli garbitze-formarik. No clearing path geometry returned. - No clearing path geometry returned. + Ez da itzuli garbitzeko bide-geometriarik. No scan data to convert to Gcode. - No scan data to convert to Gcode. + Ez dago eskaneatze-daturik Gcode kodera bihurtzeko. @@ -2653,7 +2653,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Face selection is unavailable for Rotational scans. - Face selection is unavailable for Rotational scans. + Aupergien hautapena ez dago erabilgarri biraketa-eskaneatzeetan. @@ -2663,7 +2663,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Failed to pre-process base as a whole. - Failed to pre-process base as a whole. + Huts egin du oinarria osotasun gisa aurreprozesatzeak. @@ -2678,17 +2678,17 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Failed to create collective offset avoid face. - Failed to create collective offset avoid face. + Huts egin du aurpegia saihesteko desplazamendu kolektiboa sortzeak. Failed to create collective offset avoid internal features. - Failed to create collective offset avoid internal features. + Huts egin du barneko elementuak saihesteko desplazamendu kolektiboa sortzeak. Path transitions might not avoid the model. Verify paths. - Path transitions might not avoid the model. Verify paths. + Bide-trantsizioek ezin dute eredua saihestu. Egiaztatu bideak. @@ -2698,22 +2698,22 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat No FACE data tuples received at instantiation of class. - No FACE data tuples received at instantiation of class. + Ez da AURPEGI datu-tuplarik jaso klasea instantziatzerakoan. Failed to identify a horizontal cross-section for Face - Failed to identify a horizontal cross-section for Face + Huts egin du zeharkako sekzio bat aurpegi baterako identifikatzeak getUnifiedRegions() must be called before getInternalFeatures(). - getUnifiedRegions() must be called before getInternalFeatures(). + getUnifiedRegions() funtzioa getInternalFeatures() funtzioaren aurretik deitu behar da. Diameter dimension missing from ToolBit shape. - Diameter dimension missing from ToolBit shape. + Diametro-kota falta da tresna-atalaren forman. @@ -2959,12 +2959,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Vcarve - Vcarve + Vcarve Creates a medial line engraving path - Creates a medial line engraving path + Erdiko lerroko grabatze-bide bat sortzen du @@ -2974,17 +2974,17 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat The deflection value for discretizing arcs - The deflection value for discretizing arcs + Arkuak diskretu bihurtzeko makurdura-balioa cutoff for removing colinear segments (degrees). default=10.0. - cutoff for removing colinear segments (degrees). default=10.0. + Trontzatu segmentu lerrokideak kentzeko (graduak). Lehenetsia=10.0. The Job Base Object has no engraveable element. Engraving operation will produce no output. - The Job Base Object has no engraveable element. Engraving operation will produce no output. + Lanaren oinarri-objektuak ez du grabatuko den elementurik. Grabazio-eragiketak ez du irteerarik emango. @@ -3017,12 +3017,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Initializing LinearDeflection to 0.0001 mm. - Initializing LinearDeflection to 0.0001 mm. + Makurdura lineala 0.0001 mm-ra hasieratzen. Sample interval limits are 0.0001 to 25.4 millimeters. - Sample interval limits are 0.0001 to 25.4 millimeters. + Lagin-tartearen mugak 0.0001 eta 25.4 milimetro dira. @@ -3037,12 +3037,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat AvoidLastX_Faces: Only zero or positive values permitted. - AvoidLastX_Faces: Only zero or positive values permitted. + AvoidLastX_Faces: Zero balioa edo balio positiboak soilik onartzen dira. AvoidLastX_Faces: Avoid last X faces count limited to 100. - AvoidLastX_Faces: Avoid last X faces count limited to 100. + AvoidLastX_Faces: Saihestu azken X aurpegien zenbaketa 100era mugatuta. @@ -3116,16 +3116,6 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Path_Dressup - - - Dress-up - Jantzi - - - - Creates a Path Dess-up object from a selected path - Bideak janzteko objektu bat sortzen du hautatutako bide bat erabiliz - Please select one path object @@ -3145,6 +3135,16 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Please select a Path object Hautatu bide-objektu bat + + + Dress-up + Jantzi + + + + Creates a Path Dess-up object from a selected path + Bideak janzteko objektu bat sortzen du hautatutako bide bat erabiliz + Path_DressupAxisMap @@ -3247,7 +3247,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Edit Dragknife Dress-up - Edit Dragknife Dress-up + Editatu arraste-hortzeko jantzia @@ -3399,7 +3399,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Angle of tag plunge and ascent. - Etiketaren sakontze- eta igotze-angelua. + Etiketaren murgiltze- eta igotze-angelua. @@ -3497,12 +3497,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat The point file from the surface probing. - The point file from the surface probing. + Gainazal-haztatzearen puntu-fitxategia. Deflection distance for arc interpolation - Deflection distance for arc interpolation + Makurdura-distantzia arku-interpolaziorako @@ -3740,47 +3740,47 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Check the path job for common errors - Check the path job for common errors + Aztertu bide-lana errore arruntak bilatzeko Base Object(s) - Base Object(s) + Oinarri-objektua(k) Job Sequence - Job Sequence + Lan-sekuentzia Job Description - Job Description + Lanaren deskribapena Job Type - Job Type + Lan mota CAD File Name - CAD File Name + CAD fitxategiaren izena Last Save Date - Last Save Date + Azken gordetze-data Customer - Customer + Bezeroa Designer - Designer + Diseinatzailea @@ -3790,7 +3790,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Minimum Z Height - Minimum Z Height + Z altuera minimoa @@ -3825,27 +3825,27 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Maximum Z Height - Maximum Z Height + Z altuera maximoa Cycle Time - Cycle Time + Ziklo-denbora Coolant - Coolant + Hozgarria TOTAL JOB - TOTAL JOB + LAN OSOA Tool Number - Tool Number + Tresna-zenbakia @@ -3855,12 +3855,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Manufacturer - Manufacturer + Fabrikatzailea Part Number - Part Number + Pieza-zenbakia @@ -3870,47 +3870,47 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Inspection Notes - Inspection Notes + Ikuskatze-oharrak Tool Controller - Tool Controller + Tresna-kontrolagailua Feed Rate - Feed Rate + Elikatze-tasa Spindle Speed - Spindle Speed + Hax-abiadura Tool Shape - Tool Shape + Tresna-forma Tool Diameter - Tool Diameter + Tresna-diametroa X Size - X Size + X tamaina Y Size - Y Size + Y tamaina Z Size - Z Size + Z tamaina @@ -3920,62 +3920,62 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Work Offsets - Work Offsets + Laneko desplazamenduak Order By - Order By + Ordenatu honen arabera: Part Datum - Part Datum + Piezaren zero puntua Gcode File - Gcode File + Gcode fitxategia Last Post Process Date - Last Post Process Date + Post-prozesatzearen azken data Stops - Stops + Geldiuneak Programmer - Programmer + Programatzailea Machine - Machine + Makina Postprocessor - Postprocessor + Post-prozesatzailea Post Processor Flags - Post Processor Flags + Post-prozesatzailearen banderak File Size (kbs) - File Size (kbs) + Fitxategi tamaina (Kb) Line Count - Line Count + Lerro kopurua @@ -3990,7 +3990,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Date - Date + Data @@ -4043,6 +4043,13 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Path_SimpleCopy + + + Please select exactly one path object + + Hautatu bide-objektu bakar bat + + Simple Copy @@ -4058,13 +4065,6 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Please select exactly one path object Hautatu bide-objektu bakar bat - - - Please select exactly one path object - - Hautatu bide-objektu bakar bat - - Path_Simulator @@ -4094,6 +4094,11 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Path_ToolController + + + Tool Number to Load + Kargatuko den tresnaren zenbakia + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Add Tool Controller Gehitu tresna-kontrolatzailea - - - Tool Number to Load - Kargatuko den tresnaren zenbakia - Path_ToolTable @@ -4128,12 +4128,12 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat VCarve requires an engraving cutter with CuttingEdgeAngle - VCarve requires an engraving cutter with CuttingEdgeAngle + VCarve aplikazioak CuttingEdgeAngle duen grabatze-ebakigailua behar du Engraver Cutting Edge Angle must be < 180 degrees. - Engraver Cutting Edge Angle must be < 180 degrees. + Grabagailuaren mozte-ertzaren angeluak < 180 gradu izan behar du. @@ -4192,11 +4192,46 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Save toolbit library Gorde tresna-atalaren liburutegia + + + Tooltable JSON (*.json) + JSON tresna-mahaia (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tresna-mahaia (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tresna-mahaia (*.tbl) + Open tooltable Ireki tresna-mahaia + + + Save tooltable + Gorde tresna-mahaia + + + + Add New Tool Table + Gehitu tresna-mahai berria + + + + Delete Selected Tool Table + Ezabatu hautatutako tresna-mahaia + + + + Rename Selected Tool Table + Aldatu izena hautatutako taula-mahaiari + Tooltable editor @@ -4407,11 +4442,6 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) XML tresna-mahaia (*.xml);;HeeksCAD tresna-mahaia (*.tooltable) - - - Save tooltable - Gorde tresna-mahaia - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Object doesn't have a tooltable property Objektuak ez du tresna-mahai propietate bat - - - Add New Tool Table - Gehitu tresna-mahai berria - - - - Delete Selected Tool Table - Ezabatu hautatutako tresna-mahaia - - - - Rename Selected Tool Table - Aldatu izena hautatutako taula-mahaiari - - - - Tooltable JSON (*.json) - JSON tresna-mahaia (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tresna-mahaia (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tresna-mahaia (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) @@ -4481,7 +4481,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat No scan data to convert to Gcode. - No scan data to convert to Gcode. + Ez dago eskaneatze-daturik Gcode kodera bihurtzeko. @@ -4719,7 +4719,7 @@ Azken sakonera eskuz ezartzea beharrezkoa bada, hautatu beste eragiketa mota bat Angle of tag plunge and ascent. - Etiketaren sakontze- eta igotze-angelua. + Etiketaren murgiltze- eta igotze-angelua. diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fi.qm b/src/Mod/Path/Gui/Resources/translations/Path_fi.qm index a4a4100ed5..8935a877ec 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_fi.qm and b/src/Mod/Path/Gui/Resources/translations/Path_fi.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fi.ts b/src/Mod/Path/Gui/Resources/translations/Path_fi.ts index 444ea7f3c8..1c347b0c26 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_fi.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_fi.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Tahko + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Tahko - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Ladattavan työkalun numero + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Ladattavan työkalun numero - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fil.qm b/src/Mod/Path/Gui/Resources/translations/Path_fil.qm index 8062965c61..fc28f4e2f0 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_fil.qm and b/src/Mod/Path/Gui/Resources/translations/Path_fil.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fil.ts b/src/Mod/Path/Gui/Resources/translations/Path_fil.ts index 0d2c18b357..c005a1e5e6 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_fil.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_fil.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Ang landas upang kopyahin - - - The base geometry of this toolpath - Ang base Heometría ng toolpath na ito - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - Ang tugatog kung saan nagsisimula at taas ang feed habang nagtatanggal ng tool kapag natapos na ang landas - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Ang tugatog kung saan nagsisimula at taas ang feed habang nagtatanggal ng tool kapag natapos na ang landas + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Karagdagang offset na i-aplay sa operasyon. Ang direksyon ay nakadepende sa operasyon. + + + The library to use to generate the path + Ang library na gagamitin para makabuo ng path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Ang library na gagamitin para makabuo ng path + + The base geometry of this toolpath + Ang base Heometría ng toolpath na ito @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) nagresulta sa negatibong haba ng tool tip + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pumili ng Simulang Point - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Ang direksyon ng circular cuts, pakanan (CW) o pakaliwa (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Ang direksyon ng circular cuts, pakanan (CW) o pakaliwa (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Bihisan - - - - Creates a Path Dess-up object from a selected path - Lumilikha ng Path Dess-up object mula sa napiling path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Mangyaring pumili ng isang Path Object + + + Dress-up + Bihisan + + + + Creates a Path Dess-up object from a selected path + Lumilikha ng Path Dess-up object mula sa napiling path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Mangyaring pumili ng eksaktong isang path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Mangyaring pumili ng eksaktong isang path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Numero ng tool na i-load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Magdagdag ng Controller ng Tool - - - Tool Number to Load - Numero ng tool na i-load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Buksan ang tooltable + + + Save tooltable + I-save ang tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - I-save ang tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Ang object ay walang tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fr.qm b/src/Mod/Path/Gui/Resources/translations/Path_fr.qm index e4e2033d92..9bbb85aeef 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_fr.qm and b/src/Mod/Path/Gui/Resources/translations/Path_fr.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_fr.ts b/src/Mod/Path/Gui/Resources/translations/Path_fr.ts index ca8cc96783..32f3a86214 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_fr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_fr.ts @@ -26,7 +26,7 @@ Dropcutter lines are created parallel to this axis. - Dropcutter lines are created parallel to this axis. + Des lignes de découpe sont créées parallèlement à cet axe. @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignorer les zones qui se trouvent sous la profondeur indiquée. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planaire : Analyse de surface 3D à plat. Rotatif : Analyse rotative du 4e axe. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Couper au travers de la chute jusqu’à la profondeur en bordure du modèle, libérant le modèle. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planaire : Analyse de surface 3D à plat. Rotatif : Analyse rotative du 4e axe. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -111,17 +111,17 @@ Do not cut internal features on avoided faces. - Do not cut internal features on avoided faces. + Ne pas couper les fonctions internes sur les faces évitées. Positive values push the cutter toward, or beyond, the boundary. Negative values retract the cutter away from the boundary. - Positive values push the cutter toward, or beyond, the boundary. Negative values retract the cutter away from the boundary. + Les valeurs positives amènent le cutter vers la bordure ou au-delà de celle-ci. Les valeurs négatives éloignent le cutter de la bordure. If true, the cutter will remain inside the boundaries of the model or selected face(s). - If true, the cutter will remain inside the boundaries of the model or selected face(s). + Si vrai est coché, le cutter restera à l'intérieur des limites du modèle ou de la (des) face(s) sélectionnée(s). @@ -131,17 +131,17 @@ Positive values push the cutter toward, or into, the feature. Negative values retract the cutter away from the feature. - Positive values push the cutter toward, or into, the feature. Negative values retract the cutter away from the feature. + Les valeurs positives poussent le cutter vers ou à l'intérieur de la caractéristique. Les valeurs négatives retirent le cutter de la caractéristique. Cut internal feature areas within a larger selected face. - Cut internal feature areas within a larger selected face. + Couper des zones de caractéristiques internes à l'intérieur d'un face sélectionnée plus large. Ignore internal feature areas within a larger selected face. - Ignore internal feature areas within a larger selected face. + Ignorer les zones de fonction internes à l'intérieur d'une face sélectionnée plus grande. @@ -156,22 +156,22 @@ Set the geometric clearing pattern to use for the operation. - Set the geometric clearing pattern to use for the operation. + Définir le modèle géométrique de dégagement à utiliser pour l'opération. The yaw angle used for certain clearing patterns - The yaw angle used for certain clearing patterns + L'angle de rotation utilisé pour certains motifs de dégagement Reverse the cut order of the stepover paths. For circular cut patterns, begin at the outside and work toward the center. - Reverse the cut order of the stepover paths. For circular cut patterns, begin at the outside and work toward the center. + Inverser l'ordre de coupe des trajectoires de passage. Pour les motifs de coupe circulaires, commencez par l'extérieur puis travaillez en allant vers le centre. Set the Z-axis depth offset from the target surface. - Set the Z-axis depth offset from the target surface. + Définir le décalage de profondeur de l'axe Z par rapport à la surface cible. @@ -191,47 +191,47 @@ Profile the edges of the selection. - Profile the edges of the selection. + Profiler les bords de la sélection. Set the sampling resolution. Smaller values quickly increase processing time. - 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. Set the stepover percentage, based on the tool's diameter. - Set the stepover percentage, based on the tool's diameter. + Définir le pourcentage de recouvrement, en fonction du diamètre de l'outil. 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. + Activer l'optimisation des trajectoires linéaires (points colinéaires). Supprime les points colinéaires inutiles de la sortie G-Code. Enable separate optimization of transitions between, and breaks within, each step over path. - Enable separate optimization of transitions between, and breaks within, each step over path. + Activer l'optimisation séparée des transitions entre les étapes et les sauts à l'intérieur, à chaque étape de la trajectoire. Convert co-planar arcs to G2/G3 gcode commands for `Circular` and `CircularZigZag` cut patterns. - Convert co-planar arcs to G2/G3 gcode commands for `Circular` and `CircularZigZag` cut patterns. + Convertir les arcs coplanaires en commandes gcode G2/G3 pour les modèles de coupe "Circular" et "CircularZigZag". Collinear and co-radial artifact gaps that are smaller than this threshold are closed in the path. - Collinear and co-radial artifact gaps that are smaller than this threshold are closed in the path. + Les espaces d'artefacts colinéaires et co-radiaux qui sont plus petits que ce seuil sont fermés dans la trajectoire. Feedback: three smallest gaps identified in the path geometry. - Feedback: three smallest gaps identified in the path geometry. + Commentaire : trois plus petits espaces identifiés dans la géométrie de la trajectoire. The custom start point for the path of this operation - The custom start point for the path of this operation + Le point de départ personnalisé de la trajectoire de cette opération @@ -243,11 +243,6 @@ The path to be copied Le chemin d'accès à copier - - - The base geometry of this toolpath - La géométrie de base du parcours de l'outil - The tool controller that will be used to calculate the path @@ -306,7 +301,7 @@ The output location for the probe data to be written - The output location for the probe data to be written + L'emplacement de sortie pour les données de sonde à écrire @@ -336,12 +331,12 @@ Extends LeadIn distance - Extends LeadIn distance + Prolonge la rampe de descente Extends LeadOut distance - Extends LeadOut distance + Prolonge la rampe de remontée @@ -351,7 +346,7 @@ Apply LeadInOut to layers within an operation - Apply LeadInOut to layers within an operation + Applique un parcours d'entrée et de sortie aux couches à l'intérieur de l'opération @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Contrôle la façon dont l’outil se rétracte. Par défaut = G98 - - - The height where feed starts and height during retract tool when path is finished - La hauteur de départ et la hauteur de retrait de l'outil quand son parcours est terminé - Controls how tool retracts Default=G99 Contrôle la façon dont l’outil se rétracte. Par défaut = G99 + + + The height where feed starts and height during retract tool when path is finished + La hauteur de départ et la hauteur de retrait de l'outil quand son parcours est terminé + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -476,7 +471,7 @@ Clear edges of surface (Only applicable to BoundBox) - Clear edges of surface (Only applicable to BoundBox) + Nettoyer les bords de la surface (applicable uniquement à BoundBox) @@ -511,7 +506,7 @@ Enforce the Z-depth of the selected face as the lowest value for final depth. Higher user values will be observed. - Enforce the Z-depth of the selected face as the lowest value for final depth. Higher user values will be observed. + Forcer la profondeur de Z de la face sélectionnée comme la valeur la plus basse de la profondeur finale. Des valeurs plus élevées de l'utilisateur seront observées. @@ -521,17 +516,17 @@ Enter custom start point for slot path. - Enter custom start point for slot path. + Entrer le point de départ personnalisé pour la trajectoire de la rainure. Enter custom end point for slot path. - Enter custom end point for slot path. + Entrer le point final personnalisé pour la trajectoire de la rainure. Positive extends the beginning of the path, negative shortens. - Positive extends the beginning of the path, negative shortens. + Positif prolonge le début de la trajectoire, négatif la diminue. @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Décalage supplémentaire à appliquer à l’opération. Direction est opération dépendante. + + + The library to use to generate the path + La bibliothèque à utiliser pour générer la trajectoire + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Marquer « true » si vous utilisez une compensation de rayon de coupe - - The library to use to generate the path - La bibliothèque à utiliser pour générer la trajectoire + + The base geometry of this toolpath + La géométrie de base du parcours de l'outil @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Angle d'arête de coupe invalide %.2f, doit être >0° et <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Angle de coupe non valable Angle %.2f, doit être >0 ° et <=180 ° - Cutting Edge Angle (%.2f) results in negative tool tip length Angle d'arrête tranchante (%.2f) cause une longueur négative de la pointe de l'outil + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Angle de coupe non valable Angle %.2f, doit être >0 ° et <=180 ° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Diamètres @@ -1170,7 +1170,7 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Ignorer les faces non horizontales @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Appliquer l'angle inverse automatiquement. Applying inverse angle manually. - Applying inverse angle manually. + Appliquer manuellement l'angle inverse. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Créer une opération de dressage à partir d’un modèle ou d'une face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Sélectionner le point de départ - - - Face - Face - - - - Create a Facing Operation from a model or face - Créer une opération de dressage à partir d’un modèle ou d'une face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Direction des coupes circulaires, Sens des aiguilles d’une montre (CW), ou Sens inverse des aiguille d’une montre (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + La direction des découpes circulaires, dans le sens horaire (CW), ou anti horaire (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Rayon de départ - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - La direction des découpes circulaires, dans le sens horaire (CW), ou anti horaire (CCW) - PathJob @@ -1604,7 +1604,7 @@ Last Time the Job was post-processed - Last Time the Job was post-processed + La dernière fois que la tâche a été post-traitée @@ -1995,11 +1995,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un PathProfile - - - Profile based on face or faces - Profil basé sur une ou des faces - Profile @@ -2010,6 +2005,11 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profil basé sur une ou des faces + New property added to @@ -2980,7 +2980,7 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un cutoff for removing colinear segments (degrees). default=10.0. - cutoff for removing colinear segments (degrees). default=10.0. + limite pour supprimer les segments colinéaires (degrés). Par défaut=10.0. @@ -3117,16 +3117,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Path_Dressup - - - Dress-up - Trajectoire additionnelle - - - - Creates a Path Dess-up object from a selected path - Crée un objet trajectoire additionnel à partir d'un parcours sélectionné - Please select one path object @@ -3146,6 +3136,16 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Please select a Path object Veuillez sélectionner un object parcours + + + Dress-up + Trajectoire additionnelle + + + + Creates a Path Dess-up object from a selected path + Crée un objet trajectoire additionnel à partir d'un parcours sélectionné + Path_DressupAxisMap @@ -3746,42 +3746,42 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Base Object(s) - Base Object(s) + Objet(s) de base Job Sequence - Job Sequence + Séquence de travail Job Description - Job Description + Description de la tâche Job Type - Job Type + Type de tâche CAD File Name - CAD File Name + Nom du fichier CAO Last Save Date - Last Save Date + Date du dernier enregistrement Customer - Customer + Client Designer - Designer + Concepteur @@ -3791,7 +3791,7 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Minimum Z Height - Minimum Z Height + Hauteur minimale de Z @@ -3826,7 +3826,7 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Maximum Z Height - Maximum Z Height + Hauteur maximale de Z @@ -3846,7 +3846,7 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Tool Number - Tool Number + Numéro de l'outil @@ -4044,6 +4044,13 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Path_SimpleCopy + + + Please select exactly one path object + + Veuillez sélectionner seulement un parcours + + Simple Copy @@ -4059,13 +4066,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Please select exactly one path object Veuillez sélectionner exactement un objet trajectoire - - - Please select exactly one path object - - Veuillez sélectionner seulement un parcours - - Path_Simulator @@ -4095,6 +4095,11 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Path_ToolController + + + Tool Number to Load + Numéro d'outil à charger + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Add Tool Controller Ajouter un contrôleur d'outil - - - Tool Number to Load - Numéro d'outil à charger - Path_ToolTable @@ -4193,11 +4193,46 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Table d'outils JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Table d'outils HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Table d'outils LinuxCNC (*.tbl) + Open tooltable Ouvre la table des outils + + + Save tooltable + Enregistrer la table d'outils + + + + Add New Tool Table + Ajouter une nouvelle table d'outils + + + + Delete Selected Tool Table + Supprimer la table des outils sélectionnée + + + + Rename Selected Tool Table + Renommer la table des outils sélectionnée + Tooltable editor @@ -4408,11 +4443,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Table d'outils XML (*.xml);;Table d'outils HeeksCAD (*.tooltable) - - - Save tooltable - Enregistrer la table d'outils - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ S'il est nécessaire de fixer FinalDepth manuellement, veuillez sélectionner un Object doesn't have a tooltable property L'objet ne possède pas de propriété d'outil pour être mis dans la table - - - Add New Tool Table - Ajouter une nouvelle table d'outils - - - - Delete Selected Tool Table - Supprimer la table des outils sélectionnée - - - - Rename Selected Tool Table - Renommer la table des outils sélectionnée - - - - Tooltable JSON (*.json) - Table d'outils JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Table d'outils HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Table d'outils LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_gl.qm b/src/Mod/Path/Gui/Resources/translations/Path_gl.qm index f7f67f5cba..55f292989b 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_gl.qm and b/src/Mod/Path/Gui/Resources/translations/Path_gl.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_gl.ts b/src/Mod/Path/Gui/Resources/translations/Path_gl.ts index 0d05947753..1d24ed797b 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_gl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_gl.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignorar áreas que se desenrolan abaixo a profundidade especificada. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Dixitalización de superficies planas 3D. Rotación: explotación rotativa 4 eixe. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Tallar os restos na profundidade no bordo do modelo, liberando o modelo. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Dixitalización de superficies planas 3D. Rotación: explotación rotativa 4 eixe. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied A traxectoria a ser copiada - - - The base geometry of this toolpath - A xeometría base desta traxectoria de ferramenta - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controis como retraer ferramenta por Defecto=G98 - - - The height where feed starts and height during retract tool when path is finished - A altura onde arrinca o avance e mais a altura onde a ferramenta se retrae cando a traxectoria está rematada - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + A altura onde arrinca o avance e mais a altura onde a ferramenta se retrae cando a traxectoria está rematada + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Desfase extra para aplicar a operación. A dirección é dependente da operación. + + + The library to use to generate the path + A libraría a usar para xerar a traxectoria + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Facer verdadeiro, se se usa a compensación de radio de ferramenta - - The library to use to generate the path - A libraría a usar para xerar a traxectoria + + The base geometry of this toolpath + A xeometría base desta traxectoria de ferramenta @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Ángulo do Bordo de Tallada non válido %.2f, debe ser >0° e <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Ángulo do borde de corte (%.2f) resultado en lonxitude negativa da punta da ferramenta + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Ángulo do Bordo de Tallada non válido %.2f, debe ser >0° e <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Escolmar punto de arrinque - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) A dirección de corte circular, sentido horario (CW) ou ante horario (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + A dirección dos cortes circulares, en sentido horario (CW), ou ante-horario (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - A dirección dos cortes circulares, en sentido horario (CW), ou ante-horario (CCW) - PathJob @@ -1995,11 +1995,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc PathProfile - - - Profile based on face or faces - Perfil baseado en face ou faces - Profile @@ -2010,6 +2005,11 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Perfil baseado en face ou faces + New property added to @@ -3117,16 +3117,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Path_Dressup - - - Dress-up - Aspecto - - - - Creates a Path Dess-up object from a selected path - Crea un obxecto aspecto de traxectoria a partir dunha traxectoria escolmada - Please select one path object @@ -3146,6 +3136,16 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Please select a Path object Por favor, escolme un obxecto traxectoria + + + Dress-up + Aspecto + + + + Creates a Path Dess-up object from a selected path + Crea un obxecto aspecto de traxectoria a partir dunha traxectoria escolmada + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Path_SimpleCopy + + + Please select exactly one path object + + Por favor escolme unicamente un obxecto traxectoria + + Simple Copy @@ -4059,13 +4066,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Please select exactly one path object Fai o favor de escolmar exactamente unha traxectoria obxecto - - - Please select exactly one path object - - Por favor escolme unicamente un obxecto traxectoria - - Path_Simulator @@ -4095,6 +4095,11 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Path_ToolController + + + Tool Number to Load + Número de ferramenta a cargar + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Add Tool Controller Engadir Controlador de Ferramenta - - - Tool Number to Load - Número de ferramenta a cargar - Path_ToolTable @@ -4193,11 +4193,46 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Táboa de ferramentas JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Táboa de ferramentas HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Táboa de ferramentas LinuxCNC (*.tbl) + Open tooltable Abrir táboa de ferramentas + + + Save tooltable + Gardar táboa de ferramentas + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Táboa de ferramentas XML (*.xml);;táboa de ferramentas HeeksCAD (*.tooltable) - - - Save tooltable - Gardar táboa de ferramentas - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ Se é necesario axustar o xogo FinalDepth manualmente por favor escolma unha opc Object doesn't have a tooltable property O obxecto non ten unha propiedade de táboa de ferramentas - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Táboa de ferramentas JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Táboa de ferramentas HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Táboa de ferramentas LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hr.qm b/src/Mod/Path/Gui/Resources/translations/Path_hr.qm index 8c0ab6b630..7948086a36 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_hr.qm and b/src/Mod/Path/Gui/Resources/translations/Path_hr.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hr.ts b/src/Mod/Path/Gui/Resources/translations/Path_hr.ts index f1da22a1b1..b46d2579b6 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_hr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_hr.ts @@ -89,6 +89,11 @@ Ignore areas that proceed below specified depth. Zanemarite područja koja se odvijaju ispod određene dubine. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Ravan: U ravnini, 3D skeniranje površine. Rotacijsko: rotacijsko skeniranje 1/4 osi. + Depth used to identify waste areas to ignore. @@ -99,11 +104,6 @@ Cut through waste to depth at model edge, releasing the model. Prerežite otpadak do dubine na rubu modela, oslobađajući model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Ravan: U ravnini, 3D skeniranje površine. Rotacijsko: rotacijsko skeniranje 1/4 osi. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -129,7 +129,9 @@ Choose how to process multiple Base Geometry features. - Choose how to process multiple Base Geometry features. + Odaberite način obrade značajki više osnovnih geometrija. + + @@ -140,17 +142,20 @@ Cut internal feature areas within a larger selected face. - Cut internal feature areas within a larger selected face. + Izrežite unutarnja područja značajke unutar većeg odabranog lica. Ignore internal feature areas within a larger selected face. - Ignore internal feature areas within a larger selected face. + Zanemarite unutarnja područja značajke unutar većeg odabranog lica. + Select the overall boundary for the operation. - Select the overall boundary for the operation. + Odaberite cjelokupnu granicu za operaciju. + + @@ -167,17 +172,21 @@ The yaw angle used for certain clearing patterns - The yaw angle used for certain clearing patterns + Kut skretanja koji se koristi za određene uzorke čišćenja + + Reverse the cut order of the stepover paths. For circular cut patterns, begin at the outside and work toward the center. - Reverse the cut order of the stepover paths. For circular cut patterns, begin at the outside and work toward the center. + Obrnite redoslijed prelaska reza staza. Za kružne krojeve, započnite s vanjske strane i radite prema sredini. + + Set the Z-axis depth offset from the target surface. - Set the Z-axis depth offset from the target surface. + Postavite pomak dubine Z osi od ciljne površine. @@ -206,7 +215,8 @@ Set the sampling resolution. Smaller values quickly increase processing time. - Set the sampling resolution. Smaller values quickly increase processing time. + Postavite rezoluciju uzorkovanja. Manje vrijednosti brzo povećavaju vrijeme obrade. + @@ -255,11 +265,6 @@ The path to be copied Put koji treba kopirati - - - The base geometry of this toolpath - Osnovna geometrija ove obrade staze - The tool controller that will be used to calculate the path @@ -418,7 +423,9 @@ The time to dwell between peck cycles - The time to dwell between peck cycles + Vrijeme zadržavanja između koraka ciklusa + + @@ -435,25 +442,27 @@ Controls how tool retracts Default=G98 Kontrolira kako jako se alat povlači=G98 - - - The height where feed starts and height during retract tool when path is finished - Visina gdje započinje pomak i visina tijekom povlačenja alata kada je staza gotova - Controls how tool retracts Default=G99 Kontrolira kako se alat povlači nazad = G99 + + + The height where feed starts and height during retract tool when path is finished + Visina gdje započinje pomak i visina tijekom povlačenja alata kada je staza gotova + The height where feed starts and height during retract tool when path is finished while in a peck operation - The height where feed starts and height during retract tool when path is finished while in a peck operation + Visina s koje započinje pomak i visina tijekom uvlačenja alata kada je staza gotova za vrijeme koračne operacije How far the drill depth is extended - How far the drill depth is extended + Koliko je produžena dubina bušenja + + @@ -523,7 +532,7 @@ Ignore outer waterlines above this height. - Ignore outer waterlines above this height. + Ignorirajte vanjske vodne linije iznad ove visine. @@ -574,7 +583,7 @@ Choose what point to use on the second selected feature. - Choose what point to use on the second selected feature. + Odaberite točku koja će se koristiti za drugu odabranu značajku. @@ -611,6 +620,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Dodatni pomak koji se primjenjuje na operaciju. Smjer ovisi o operaciji. + + + The library to use to generate the path + Biblioteka koja se koristiti za generiranje staze + Start pocketing at center or boundary @@ -634,12 +648,16 @@ Use 3D Sorting of Path - Use 3D Sorting of Path + Koristite 3D sortiranje puta + + Attempts to avoid unnecessary retractions. - Attempts to avoid unnecessary retractions. + Pokušaji izbjegavanja nepotrebnih povlačenja alata. + + @@ -702,9 +720,9 @@ Postavi na istinito, ako koristite kompenzaciju radijusa glodala - - The library to use to generate the path - Biblioteka koja se koristiti za generiranje staze + + The base geometry of this toolpath + Osnovna geometrija ove obrade staze @@ -962,16 +980,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Pogrešan kut rezanja ruba %.2f, mora biti > = 0 ° i <= 180 ° - Cutting Edge Angle (%.2f) results in negative tool tip length Kut rezanja ruba (%.2f) rezultira negativnom duljinom vrha alata + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Pogrešan kut rezanja ruba %.2f, mora biti > = 0 ° i <= 180 ° + No parent job found for operation. @@ -1005,7 +1023,7 @@ Tool Error - Tool Error + Greška Alata @@ -1015,7 +1033,7 @@ Feedrate Error - Feedrate Error + Greška Brzine pomicanja @@ -1025,7 +1043,7 @@ Cycletime Error - Cycletime Error + Greška izračunavanja vremena obrade @@ -1045,7 +1063,7 @@ Diameters - Diameters + Promjeri @@ -1153,7 +1171,9 @@ Rotated to inverse angle. - Rotated to inverse angle. + Rotirano u obrnutom kutu. + + @@ -1183,7 +1203,9 @@ Rotated to 'InverseAngle' to attempt access. - Rotated to 'InverseAngle' to attempt access. + Rotirano u "obrnuti kut" za pokušaj pristupa. + + @@ -1193,7 +1215,9 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Zanemaruje ne-vodoravno Lice + + @@ -1203,12 +1227,16 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Automatsko nanošenje obrnutog kuta. + + Applying inverse angle manually. - Applying inverse angle manually. + Ručno nanošenje obrnutog kuta. + + @@ -1253,12 +1281,14 @@ Path Dressup - Path Dressup + Put Dodani reljef (dressup) Supplemental Commands - Supplemental Commands + Dopunske naredbe + + @@ -1361,7 +1391,9 @@ Select the segment, there the operations starts - Select the segment, there the operations starts + Odaberite segment, tamo gdje započinju operacije + + @@ -1467,6 +1499,16 @@ PathFace + + + Face + Površina + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1479,16 +1521,6 @@ Pick Start Point Odaberite početnu točku - - - Face - Površina - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1533,17 +1565,17 @@ Tool Error - Tool Error + Greška Alata Feedrate Error - Feedrate Error + Greška Brzine pomicanja Cycletime Error - Cycletime Error + Greška izračunavanja vremena obrade @@ -1563,6 +1595,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Smjer kružnih rezova, (U smjeru kazaljke) ClockWise (CW) ili CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Smjer kružnih rezova, clockwise (CW) [U smjeru kazaljke] ili counter clockwise (CCW) [Suprotno smjeru kazaljke] + Start cutting from the inside or outside @@ -1578,11 +1615,6 @@ Starting Radius Početni polumjer - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Smjer kružnih rezova, clockwise (CW) [U smjeru kazaljke] ili counter clockwise (CCW) [Suprotno smjeru kazaljke] - PathJob @@ -1629,7 +1661,9 @@ Last Time the Job was post-processed - Last Time the Job was post-processed + Posljednji put posao je naknadno obrađen + + @@ -1796,7 +1830,9 @@ Coolant mode for this operation - Coolant mode for this operation + Način hlađenja za ovu operaciju + + @@ -1846,17 +1882,21 @@ Lower limit of the turning diameter - Lower limit of the turning diameter + Donja granica okretnog promjera + Upper limit of the turning diameter. - Upper limit of the turning diameter. + Gornja granica okretnog promjera . + Coolant option for this operation - Coolant option for this operation + Opcija hlađenja za ovu operaciju + + @@ -1896,7 +1936,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Mulitiple operations are labeled as - Mulitiple operations are labeled as + Višestruke operacije označene su kao @@ -1919,7 +1959,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Face might not be within rotation accessibility limits. - Face might not be within rotation accessibility limits. + Lice možda nije unutar ograničenja pristupačnosti rotacije. @@ -1944,7 +1984,9 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Choose how to process multiple Base Geometry features. - Choose how to process multiple Base Geometry features. + Odaberite način obrade značajki više osnovnih geometrija. + + @@ -2019,16 +2061,13 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Start Depth is lower than face depth. Setting to - Start Depth is lower than face depth. Setting to + Početna Dubina manja je od dubine lica. Postavljanje na + + PathProfile - - - Profile based on face or faces - Put baziran na licu ili licima - Profile @@ -2039,15 +2078,22 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Put baziran na licu ili licima + New property added to - New property added to + Novo svojstvo dodano u Check its default value. - Check its default value. + Provjerite njegovu zadanu vrijednost. + + @@ -2087,7 +2133,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Failed to expand profile. - Failed to expand profile. + Proširivanje profila nije uspjelo. @@ -2097,7 +2143,9 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr For open edges, verify Final Depth for this operation. - For open edges, verify Final Depth for this operation. + Za otvorene rubove provjerite Konačnu Dubinu za ovu operaciju. + + @@ -2263,12 +2311,14 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Coolant Modes - Coolant Modes + Načini rada rashladne tekućine Default coolant mode. - Default coolant mode. + Zadani način rada rashladne tekućine. + + @@ -2311,17 +2361,19 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr New property added to - New property added to + Novo svojstvo dodano u Check default value(s). - Check default value(s). + Provjerite zadane vrijednosti. No Base Geometry object in the operation. - No Base Geometry object in the operation. + U operaciji nema objekta Osnovna Geometrija. + + @@ -2336,17 +2388,20 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr No path extensions available for full circles. - No path extensions available for full circles. + Nisu dostupna proširenja puta za pune krugove. operation collides with model. - operation collides with model. + operacija se sudara s modelom. + + The selected face is not oriented horizontally or vertically. - The selected face is not oriented horizontally or vertically. + Odabrano lice nije orijentirano vodoravno ili okomito. + @@ -2356,12 +2411,16 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr A single selected face must have four edges minimum. - A single selected face must have four edges minimum. + Jedno odabrano lice mora imati najmanje četiri ruba. + + No parallel edges identified. - No parallel edges identified. + Nisu identificirani paralelni rubovi. + + @@ -2376,22 +2435,26 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Failed to determine point 1 from - Failed to determine point 1 from + Nije uspjelo utvrditi točku 1 iz Failed to determine point 2 from - Failed to determine point 2 from + Nije uspjelo utvrditi točku 2 iz Selected geometry not parallel. - Selected geometry not parallel. + Odabrana geometrija nije paralelna. + + The selected face is not oriented vertically: - The selected face is not oriented vertically: + Odabrano lice nije okomito orijentirano: + + @@ -2409,32 +2472,32 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Extra allowance from part bound box in negative X direction - Extra allowance from part bound box in negative X direction + Povećanje graničnog okvira u negativnom X smjeru Extra allowance from part bound box in positive X direction - Extra allowance from part bound box in positive X direction + Povećanje graničnog okvira u pozitivnom X smjeru Extra allowance from part bound box in negative Y direction - Extra allowance from part bound box in negative Y direction + Povećanje graničnog okvira u negativnom Y smjeru Extra allowance from part bound box in positive Y direction - Extra allowance from part bound box in positive Y direction + Povećanje graničnog okvira u pozitivnom Y smjeru Extra allowance from part bound box in negative Z direction - Extra allowance from part bound box in negative Z direction + Povećanje graničnog okvira u negativnom Z smjeru Extra allowance from part bound box in positive Z direction - Extra allowance from part bound box in positive Z direction + Povećanje graničnog okvira u pozitivnom Z smjeru @@ -2517,17 +2580,19 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr New property added to - New property added to + Novo svojstvo dodano u Check its default value. - Check its default value. + Provjerite njegovu zadanu vrijednost. + + Check default value(s). - Check default value(s). + Provjerite zadane vrijednosti. @@ -2582,7 +2647,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr operation time is - operation time is + vrijeme rada je @@ -2761,12 +2826,12 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr The file of the tool - The file of the tool + Datoteka alata The name of the shape file - The name of the shape file + Ime datoteke oblika @@ -2776,12 +2841,12 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Length offset in Z direction - Length offset in Z direction + Dužina pomaka u Z smjeru The number of flutes - The number of flutes + broj žljebova @@ -2806,7 +2871,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Create Tool - Create Tool + Napravi Alat @@ -2816,12 +2881,12 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Save Tool as... - Save Tool as... + Spremi Alat kao... Save Tool - Save Tool + Spremi Alat @@ -2831,7 +2896,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Load Tool - Load Tool + Učitaj Alat @@ -3027,17 +3092,19 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr New property added to - New property added to + Novo svojstvo dodano u Check its default value. - Check its default value. + Provjerite njegovu zadanu vrijednost. + + Check default value(s). - Check default value(s). + Provjerite zadane vrijednosti. @@ -3087,7 +3154,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr operation time is - operation time is + vrijeme rada je @@ -3146,16 +3213,6 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Path_Dressup - - - Dress-up - Dress-up (Odjenuti) - - - - Creates a Path Dess-up object from a selected path - Stvara staza objekt Dress-up od odabrane staze - Please select one path object @@ -3175,6 +3232,16 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Please select a Path object Odaberite objekt staze + + + Dress-up + Dress-up (Odjenuti) + + + + Creates a Path Dess-up object from a selected path + Stvara staza objekt Dress-up od odabrane staze + Path_DressupAxisMap @@ -3689,7 +3756,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Model Selection - Model Selection + Odabir modela @@ -3820,7 +3887,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Minimum Z Height - Minimum Z Height + Minimalna Z visina @@ -3855,17 +3922,17 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Maximum Z Height - Maximum Z Height + Maksimalna Z visina Cycle Time - Cycle Time + Vrijeme ciklusa Coolant - Coolant + Hlađenje @@ -3875,7 +3942,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Tool Number - Tool Number + Broj Alata @@ -3885,12 +3952,12 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Manufacturer - Manufacturer + Proizvođač Part Number - Part Number + Broj Djela @@ -3900,47 +3967,47 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Inspection Notes - Inspection Notes + Inspekcijske zabilješke Tool Controller - Tool Controller + Kontroler Alata Feed Rate - Feed Rate + Brzina Pomaka Spindle Speed - Spindle Speed + Brzina Glodala Tool Shape - Tool Shape + Oblik Alata Tool Diameter - Tool Diameter + Promjer Alata X Size - X Size + Veličina X Y Size - Y Size + Veličina Y Z Size - Z Size + Veličina Z @@ -3950,22 +4017,22 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Work Offsets - Work Offsets + Radni Pomak Order By - Order By + Posloži po Part Datum - Part Datum + Mjera osnovnog djela Gcode File - Gcode File + GCode Datoteka @@ -3975,17 +4042,17 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Stops - Stops + Stajališta Programmer - Programmer + Programer Machine - Machine + Stroj @@ -4000,7 +4067,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr File Size (kbs) - File Size (kbs) + Veličina Datoteke (kbs) @@ -4020,7 +4087,7 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Date - Date + Datum @@ -4075,6 +4142,13 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Path_SimpleCopy + + + Please select exactly one path object + + Odaberite samo jedan objekt staze + + Simple Copy @@ -4090,13 +4164,6 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Please select exactly one path object Odaberite samo jedan objekt staze - - - Please select exactly one path object - - Odaberite samo jedan objekt staze - - Path_Simulator @@ -4126,6 +4193,11 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Path_ToolController + + + Tool Number to Load + Broj alata koji se koristi + Add Tool Controller to the Job @@ -4136,11 +4208,6 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Add Tool Controller Dodajte kontroler alata - - - Tool Number to Load - Broj alata koji se koristi - Path_ToolTable @@ -4224,11 +4291,46 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tabela alata JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD Tabela alata (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC Tabela alata (*.tbl) + Open tooltable Otvori tabelu alata + + + Save tooltable + Spremi tabelu alata + + + + Add New Tool Table + Dodajte novu tablicu alata + + + + Delete Selected Tool Table + Izbriši odabranu tablicu alata + + + + Rename Selected Tool Table + Preimenuj odabranu tablicu alata + Tooltable editor @@ -4439,11 +4541,6 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabela alata XML (*.xml);;HeeksCAD tabela alata(*.tooltable) - - - Save tooltable - Spremi tabelu alata - Tooltable XML (*.xml) @@ -4459,36 +4556,6 @@ Ako je potrebno ručno postaviti Krajnju Dubinu (FinalDepth), molim odaberite dr Object doesn't have a tooltable property Objekt nema svojstvo alata stola - - - Add New Tool Table - Dodajte novu tablicu alata - - - - Delete Selected Tool Table - Izbriši odabranu tablicu alata - - - - Rename Selected Tool Table - Preimenuj odabranu tablicu alata - - - - Tooltable JSON (*.json) - Tabela alata JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD Tabela alata (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC Tabela alata (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hu.qm b/src/Mod/Path/Gui/Resources/translations/Path_hu.qm index ba95d28ffe..cf25a09bdd 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_hu.qm and b/src/Mod/Path/Gui/Resources/translations/Path_hu.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_hu.ts b/src/Mod/Path/Gui/Resources/translations/Path_hu.ts index 5b2975fea2..48daf44668 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_hu.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_hu.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Hagyja figyelmen kívül azokat a területeket, amelyek a megadott mélység alatt haladnak. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Síkbeli: Lapos, 3D felület letapogatás. Forgatás: 4-tengelyes forgató letapogatás. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Átvág a hulladékon a mélységgel a modell élénél, a modell kiadásához. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Síkbeli: Lapos, 3D felület letapogatás. Forgatás: 4-tengelyes forgató letapogatás. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied A másolni kívánt szerszámpálya útvonal - - - The base geometry of this toolpath - Ennek a szerszámmozgásnak az alapgeometriája - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Szabályozza, hogyan húzza vissza az eszközt Alapértelmezett=G98 - - - The height where feed starts and height during retract tool when path is finished - Megközelítési pont, R pont - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Megközelítési pont, R pont + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra eltolása a művelethez. Iránya a függ a művelettől. + + + The library to use to generate the path + Az elérési út létrehozásához használt könyvtár + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Állítsa igazra, ha sugár vágó kompenzációt alkalmaz - - The library to use to generate the path - Az elérési út létrehozásához használt könyvtár + + The base geometry of this toolpath + Ennek a szerszámmozgásnak az alapgeometriája @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Érvénytelen forgácsoló él szög %.2f, >0° és <=180° közt kell lennie - Cutting Edge Angle (%.2f) results in negative tool tip length Forgácsoló él szög (%.2f) eredménye negatív szerszám csúcs hossz + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Érvénytelen forgácsoló él szög %.2f, >0° és <=180° közt kell lennie + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Felület + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Válasszon indulási pontot - - - Face - Felület - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Körkivágás iránya, óramutató járásával megegyező irányban (CW), vagy az óramutató járásával ellentétes irányban (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Körkivágás iránya, óramutató járásával megegyező irányban (CW), vagy az óramutató járásával ellentétes irányban (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Körkivágás iránya, óramutató járásával megegyező irányban (CW), vagy az óramutató járásával ellentétes irányban (CCW) - PathJob @@ -1995,11 +1995,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy PathProfile - - - Profile based on face or faces - Felületen vagy felületeken alapuló profil - Profile @@ -2010,6 +2005,11 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Felületen vagy felületeken alapuló profil + New property added to @@ -3117,16 +3117,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Path_Dressup - - - Dress-up - Megváltoztatás - - - - Creates a Path Dess-up object from a selected path - Szerszámpálya módosító objektumot hoz létre a kiválasztott útvonalból - Please select one path object @@ -3146,6 +3136,16 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Please select a Path object Kérem válasszon egy pályaútvonal objektumot + + + Dress-up + Megváltoztatás + + + + Creates a Path Dess-up object from a selected path + Szerszámpálya módosító objektumot hoz létre a kiválasztott útvonalból + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Path_SimpleCopy + + + Please select exactly one path object + + Kérem, pontosan egy szerszámpálya útvonalat jelöljön ki + + Simple Copy @@ -4059,13 +4066,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Please select exactly one path object Kérem, pontosan egy szerszámpálya objektumot jelöljön ki - - - Please select exactly one path object - - Kérem, pontosan egy szerszámpálya útvonalat jelöljön ki - - Path_Simulator @@ -4095,6 +4095,11 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Path_ToolController + + + Tool Number to Load + Betöltendő szerszám száma + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Add Tool Controller Eszköz vezérlő hozzáadása - - - Tool Number to Load - Betöltendő szerszám száma - Path_ToolTable @@ -4193,11 +4193,46 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Szerszámlista JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD szerszámlista (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC szerszámlista (*.tbl) + Open tooltable Szerszámlista megnyitása + + + Save tooltable + Szerszámlista mentése + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Szerszámlista XML (*.xml);; HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Szerszámlista mentése - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ Ha szükséges a Végleges-mélység kézi beállítása, kérem válasszon egy Object doesn't have a tooltable property Objektum nem rendelkezik szerszámlista tulajdonsággal - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Szerszámlista JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD szerszámlista (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC szerszámlista (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_id.qm b/src/Mod/Path/Gui/Resources/translations/Path_id.qm index 5380333fb0..deab3f7709 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_id.qm and b/src/Mod/Path/Gui/Resources/translations/Path_id.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_id.ts b/src/Mod/Path/Gui/Resources/translations/Path_id.ts index 89d96de670..cee196ede4 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_id.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_id.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path yang akan disalin - - - The base geometry of this toolpath - Geometri dasar dari toolpath ini - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - Tinggi tempat pakan mulai dan tinggi saat alat ditarik saat jalan selesai - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Tinggi tempat pakan mulai dan tinggi saat alat ditarik saat jalan selesai + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset untuk diterapkan pada operasi. Arah adalah tergantung operasi. + + + The library to use to generate the path + The perpustakaan untuk menggunakan untuk menghasilkan jalan + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The perpustakaan untuk menggunakan untuk menghasilkan jalan + + The base geometry of this toolpath + Geometri dasar dari toolpath ini @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) menghasilkan ujung alat negatif + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1439,6 +1439,16 @@ PathFace + + + Face + Menghadapi + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1451,16 +1461,6 @@ Pick Start Point Pilih Start Point - - - Face - Menghadapi - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1535,6 +1535,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Arah potongan melingkar, searah jarum jam (CW), atau berlawanan arah jarum jam (CCW) + Start cutting from the inside or outside @@ -1550,11 +1555,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Arah potongan melingkar, searah jarum jam (CW), atau berlawanan arah jarum jam (CCW) - PathJob @@ -1992,11 +1992,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2007,6 +2002,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3113,16 +3113,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Membuat Jalur Dess-up objek dari suatu dipilih jalan - Please select one path object @@ -3140,6 +3130,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Silahkan pilih objek Path + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Membuat Jalur Dess-up objek dari suatu dipilih jalan + Path_DressupAxisMap @@ -4037,6 +4037,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Silahkan pilih salah satu objek path + + Simple Copy @@ -4052,13 +4059,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Silahkan pilih salah satu objek path - - Path_Simulator @@ -4088,6 +4088,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4098,11 +4103,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Tambahkan Alat Pengontrol - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4186,11 +4186,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tooltable LinuxCNC (*.tbl) + Open tooltable Buka tooltable + + + Save tooltable + Simpan tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4401,11 +4436,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (* .xml) ;, HeeksCAD tooltable (* .tooltable) - - - Save tooltable - Simpan tooltable - Tooltable XML (*.xml) @@ -4421,36 +4451,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Objek tidak memiliki properti tooltable - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tooltable LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_it.qm b/src/Mod/Path/Gui/Resources/translations/Path_it.qm index bc24f30e75..94548ef400 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_it.qm and b/src/Mod/Path/Gui/Resources/translations/Path_it.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_it.ts b/src/Mod/Path/Gui/Resources/translations/Path_it.ts index cd67dae85b..3ccbcd8750 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_it.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_it.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignora le aree che sono al di sotto della profondità specificata. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Pianare: Flat, scansione 3D della superficie. Rotazionale: scansione 4° asse di rotazione. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Taglia lo scarto alla profondità a bordo modello, liberando il modello. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Pianare: Flat, scansione 3D della superficie. Rotazionale: scansione 4° asse di rotazione. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Il percorso da copiare - - - The base geometry of this toolpath - La geometria di base del percorso di questo utensile - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controlla la ritrazione dell'utensile Codice standard = G98 - - - The height where feed starts and height during retract tool when path is finished - L'altezza a cui inizia l'avanzamento e l'altezza durante l'allontanamento dell'utensile a fine percorso - Controls how tool retracts Default=G99 Controlla il modo in cui lo strumento si ritrae. Default = G99 + + + The height where feed starts and height during retract tool when path is finished + L'altezza a cui inizia l'avanzamento e l'altezza durante l'allontanamento dell'utensile a fine percorso + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Scostamento extra da applicare all'operazione. La direzione è dipendente dall'operazione. + + + The library to use to generate the path + La libreria da utilizzare per generare il percorso + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Rendere vero (True), se si utilizza la compensazione raggio utensile - - The library to use to generate the path - La libreria da utilizzare per generare il percorso + + The base geometry of this toolpath + La geometria di base del percorso di questo utensile @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Angolo di taglio non valido %.2f, deve essere compreso tra >0° e <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Angolo di taglio di %.2f non valido, deve essere compreso tra >0° e <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length L'angolo di taglio (%.2f) risulta negativo nella lunghezza della punta dello strumento + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Angolo di taglio di %.2f non valido, deve essere compreso tra >0° e <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Faccia + + + + Create a Facing Operation from a model or face + Crea un'operazione di sfacciatura da un modello o una faccia + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Scegli il punto iniziale - - - Face - Faccia - - - - Create a Facing Operation from a model or face - Crea un'operazione di sfacciatura da un modello o una faccia - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) La direzione dei tagli circolari, in senso orario (CW), o in senso antiorario (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + La direzione dei tagli circolari, in senso orario (CW), o antiorario (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Raggio iniziale - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - La direzione dei tagli circolari, in senso orario (CW), o antiorario (CCW) - PathJob @@ -1994,11 +1994,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profilo basato su una o più facce - Profile @@ -2009,6 +2004,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profila l'intero modello, le facce selezionate o i bordi selezionati + + + Profile based on face or faces + Profilo basato su una o più facce + New property added to @@ -3116,16 +3116,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Replica - - - - Creates a Path Dess-up object from a selected path - Crea un oggetto Replica modificabile del percorso selezionato - Please select one path object @@ -3145,6 +3135,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Si prega di selezionare un oggetto Percorso + + + Dress-up + Replica + + + + Creates a Path Dess-up object from a selected path + Crea un oggetto Replica modificabile del percorso selezionato + Path_DressupAxisMap @@ -4043,6 +4043,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Si prega di selezionare correttamente un oggetto percorso + + Simple Copy @@ -4058,13 +4065,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Si prega di selezionare correttamente un oggetto percorso (path) - - - Please select exactly one path object - - Si prega di selezionare correttamente un oggetto percorso - - Path_Simulator @@ -4094,6 +4094,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Carica utensile + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Aggiungi un Controllo utensile - - - Tool Number to Load - Carica utensile - Path_ToolTable @@ -4192,11 +4192,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Salva la libreria utensili + + + Tooltable JSON (*.json) + Tabella degli utensili JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Tabella degli utensili HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tabella degli utensili LinuxCNC (*.tbl) + Open tooltable Apri la tabella utensili + + + Save tooltable + Salva la tabella utensili + + + + Add New Tool Table + Aggiungi nuova tabella utensili + + + + Delete Selected Tool Table + Elimina la tabella degli utensili selezionata + + + + Rename Selected Tool Table + Rinomina la tabella degli utensili selezionati + Tooltable editor @@ -4407,11 +4442,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabella utensili XML (XML); Tabella utensili HeeksCAD (*.tooltable) - - - Save tooltable - Salva la tabella utensili - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property L'oggetto non ha le proprietà necessarie per la tabella utensili - - - Add New Tool Table - Aggiungi nuova tabella utensili - - - - Delete Selected Tool Table - Elimina la tabella degli utensili selezionata - - - - Rename Selected Tool Table - Rinomina la tabella degli utensili selezionati - - - - Tooltable JSON (*.json) - Tabella degli utensili JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Tabella degli utensili HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tabella degli utensili LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ja.qm b/src/Mod/Path/Gui/Resources/translations/Path_ja.qm index 05ac4619d9..a465501f40 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ja.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ja.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ja.ts b/src/Mod/Path/Gui/Resources/translations/Path_ja.ts index ade5ed7402..dc5fc05eff 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ja.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ja.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. 指定された深さより下のエリアを無視。 + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + 平面的な平面、3Dサーフェスの走査。回転: 第4軸で回転走査 + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. モデル端で最低部まで不要部を切り抜き、モデルを解放 - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - 平面的な平面、3Dサーフェスの走査。回転: 第4軸で回転走査 - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied コピーするパス - - - The base geometry of this toolpath - このツールパスのベースジオメトリー - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 ツールを後退(後サイクルの送り復帰) させる制御コード。 デフォルト=G98 - - - The height where feed starts and height during retract tool when path is finished - フィード開始位置の高さとパス終了時のツール後退中の高さ - Controls how tool retracts Default=G99 ツールがリトラクトする方法を制御します。 デフォルト=G99 + + + The height where feed starts and height during retract tool when path is finished + フィード開始位置の高さとパス終了時のツール後退中の高さ + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. 工程に適用する追加オフセット。方向は工程に依存して変わります。 + + + The library to use to generate the path + パスの生成に使用するライブラリ + Start pocketing at center or boundary @@ -679,9 +679,9 @@ 工具径補正を使用する場合は True - - The library to use to generate the path - パスの生成に使用するライブラリ + + The base geometry of this toolpath + このツールパスのベースジオメトリー @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - %.2f は、無効な切削角度です。 0°より大きく、かつ180°以下でなければいけません。 - Cutting Edge Angle (%.2f) results in negative tool tip length 切れ刃角 (%.2f) は、負の歯先距離をもたらします + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + %.2f は、無効な切削角度です。 0°より大きく、かつ180°以下でなければいけません。 + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point 開始点を選択 - - - Face - - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) 円形切削の方向、時計方向(CW)、又は、反時計方向(CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + 円形切削の方向。時計回り(CW)または反時計回り(CCW)。 + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - 円形切削の方向。時計回り(CW)または反時計回り(CCW)。 - PathJob @@ -1995,11 +1995,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 PathProfile - - - Profile based on face or faces - 面に基づくプロファイル - Profile @@ -2010,6 +2005,11 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + 面に基づくプロファイル + New property added to @@ -3117,16 +3117,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Path_Dressup - - - Dress-up - ドレスアップ - - - - Creates a Path Dess-up object from a selected path - 選択したパスからパス・ドレスアップ・オブジェクトを作成 - Please select one path object @@ -3146,6 +3136,16 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Please select a Path object パスオブジェクトを選択して下さい + + + Dress-up + ドレスアップ + + + + Creates a Path Dess-up object from a selected path + 選択したパスからパス・ドレスアップ・オブジェクトを作成 + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Path_SimpleCopy + + + Please select exactly one path object + + パス・オブジェクトをひとつだけ選択してください。 + + Simple Copy @@ -4059,13 +4066,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Please select exactly one path object パス・オブジェクトをひとつだけ選択してください。 - - - Please select exactly one path object - - パス・オブジェクトをひとつだけ選択してください。 - - Path_Simulator @@ -4095,6 +4095,11 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Path_ToolController + + + Tool Number to Load + 読み込む工具番号 + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Add Tool Controller ツールコントローラーを追加 - - - Tool Number to Load - 読み込む工具番号 - Path_ToolTable @@ -4193,11 +4193,46 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Save toolbit library ツールビットのライブラリを保存 + + + Tooltable JSON (*.json) + ツールテーブル JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCADツールテーブル (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNCツールテーブル (*.tbl) + Open tooltable ツールテーブルを開く + + + Save tooltable + ツールテーブルを保存 + + + + Add New Tool Table + 新しいツールテーブルを追加 + + + + Delete Selected Tool Table + 選択したツールテーブルを削除 + + + + Rename Selected Tool Table + 選択したツールテーブルの名前を変更 + Tooltable editor @@ -4408,11 +4443,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) ツールテーブルXML (*.xml);HeeksCADツールテーブル (*.tooltable) - - - Save tooltable - ツールテーブルを保存 - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ FinalDepthを手動で設定する必要がある場合は別の操作を選択 Object doesn't have a tooltable property オブジェクトがツールテーブルプロパティを持っていません。 - - - Add New Tool Table - 新しいツールテーブルを追加 - - - - Delete Selected Tool Table - 選択したツールテーブルを削除 - - - - Rename Selected Tool Table - 選択したツールテーブルの名前を変更 - - - - Tooltable JSON (*.json) - ツールテーブル JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCADツールテーブル (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNCツールテーブル (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_kab.qm b/src/Mod/Path/Gui/Resources/translations/Path_kab.qm index e05151a916..b752b1d0ab 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_kab.qm and b/src/Mod/Path/Gui/Resources/translations/Path_kab.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_kab.ts b/src/Mod/Path/Gui/Resources/translations/Path_kab.ts index 9b36a53479..fd505c51d1 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_kab.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_kab.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Le chemin d'accès à copier - - - The base geometry of this toolpath - La géométrie de base du parcours de l'outil - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - La hauteur de départ et la hauteur de retrait de l'outil quand son parcours est terminé - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + La hauteur de départ et la hauteur de retrait de l'outil quand son parcours est terminé + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + La géométrie de base du parcours de l'outil @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Habillage - - - - Creates a Path Dess-up object from a selected path - Crée un habillage d'une trajectoire sélectionnée - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Veuillez sélectionner une trajectoire + + + Dress-up + Habillage + + + + Creates a Path Dess-up object from a selected path + Crée un habillage d'une trajectoire sélectionnée + Path_DressupAxisMap @@ -4044,6 +4044,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Veuillez sélectionner seulement un chemin + Simple Copy @@ -4059,12 +4065,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Veuillez sélectionner seulement un chemin - Path_Simulator @@ -4094,6 +4094,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Numéro d'outil à charger + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Numéro d'outil à charger - Path_ToolTable @@ -4192,11 +4192,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Ouvre la table des outils + + + Save tooltable + Enregistrer la table d'outils + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4407,11 +4442,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Table d'outils XML (*.xml);;Table d'outils HeeksCAD (*.tooltable) - - - Save tooltable - Enregistrer la table d'outils - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property L'objet ne possède pas de propriété d'outil pour être mis dans la table - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ko.qm b/src/Mod/Path/Gui/Resources/translations/Path_ko.qm index a7775edae4..021d520777 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ko.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ko.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ko.ts b/src/Mod/Path/Gui/Resources/translations/Path_ko.ts index 2b939e029f..feeea8beee 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ko.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ko.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + 면 선택 + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - 면 선택 - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable 도구목록 열기 + + + Save tooltable + 도구목록을 저장 + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) 도구목록 XML (*.xml); HeeksCAD 도구목록 (*.tooltable) - - - Save tooltable - 도구목록을 저장 - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property 개체가 도구목록 속성을 하지 않습니다. - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_lt.qm b/src/Mod/Path/Gui/Resources/translations/Path_lt.qm index 9b5a954c01..fa243a3b01 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_lt.qm and b/src/Mod/Path/Gui/Resources/translations/Path_lt.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_lt.ts b/src/Mod/Path/Gui/Resources/translations/Path_lt.ts index 15a35eb95c..6ff6e3ed44 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_lt.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_lt.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Siena + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Siena - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Pradinis spindulys - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_nl.qm b/src/Mod/Path/Gui/Resources/translations/Path_nl.qm index ca5dc43f39..e50e9534de 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_nl.qm and b/src/Mod/Path/Gui/Resources/translations/Path_nl.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_nl.ts b/src/Mod/Path/Gui/Resources/translations/Path_nl.ts index 0c75f66eb7..d889b382b3 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_nl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_nl.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Negeer gebieden die onder de opgegeven diepte gaan. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Vlak, 3D-oppervlakscan. Rotatie: 4e-as rotationele scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Ga door afval naar diepte aan de modelrand, waardoor het model vrijkomt. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Vlak, 3D-oppervlakscan. Rotatie: 4e-as rotationele scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Het te kopiëren pad - - - The base geometry of this toolpath - De basisgeometrie voor dit gereedschapspad - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controleert hoe het gereedschap terugtrekt Standaard=G98 - - - The height where feed starts and height during retract tool when path is finished - De hoogte waar de invoer begint en de hoogte tijdens het intrekken van de functie wanneer het pad voltooid is - Controls how tool retracts Default=G99 Controleert hoe het gereedschap terugtrekt Standaard=G99 + + + The height where feed starts and height during retract tool when path is finished + De hoogte waar de invoer begint en de hoogte tijdens het intrekken van de functie wanneer het pad voltooid is + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra verschuiving om toe te passen op de bewerking. Richting is afhankelijk van bewerking. + + + The library to use to generate the path + De te bibliotheek gebruiken voor het genereren van het pad + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Zet Waar indien u gebruik maakt van de straalcompensatie van de snijder - - The library to use to generate the path - De te bibliotheek gebruiken voor het genereren van het pad + + The base geometry of this toolpath + De basisgeometrie voor dit gereedschapspad @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Ongeldige hoek van de snijrand %.2f, moet >=0° en <=180° zijn - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Ongeldige hoek van de snijrand %.2f, moet >=0° en <=180° zijn - Cutting Edge Angle (%.2f) results in negative tool tip length Snijhoek rand (%.2f) resulteert in negatieve tool tip lengte + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Ongeldige hoek van de snijrand %.2f, moet >=0° en <=180° zijn + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Vlak + + + + Create a Facing Operation from a model or face + Maak een vlakbewerking van een model of vlak + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Kies het startpunt - - - Face - Vlak - - - - Create a Facing Operation from a model or face - Maak een vlakbewerking van een model of vlak - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) De richting van de cirkelvormige sneden, rechtsom (CW), of linksom (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + De richting van de cirkelvormige sneden, rechtsom (CW), of linksom (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Startstraal - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - De richting van de cirkelvormige sneden, rechtsom (CW), of linksom (CCW) - PathJob @@ -1995,11 +1995,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew PathProfile - - - Profile based on face or faces - Profiel gebaseerd op één of meerdere vlakken - Profile @@ -2010,6 +2005,11 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profiel gebaseerd op één of meerdere vlakken + New property added to @@ -3117,16 +3117,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Path_Dressup - - - Dress-up - Verkleding - - - - Creates a Path Dess-up object from a selected path - Maakt een padverkledingsobject uit een geselecteerd pad - Please select one path object @@ -3146,6 +3136,16 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Please select a Path object Gelieve een padobject te selecteren + + + Dress-up + Verkleding + + + + Creates a Path Dess-up object from a selected path + Maakt een padverkledingsobject uit een geselecteerd pad + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Path_SimpleCopy + + + Please select exactly one path object + + Gelieve precies één padobject te selecteren + + Simple Copy @@ -4059,13 +4066,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Please select exactly one path object Gelieve precies één padobject te selecteren - - - Please select exactly one path object - - Gelieve precies één padobject te selecteren - - Path_Simulator @@ -4095,6 +4095,11 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Path_ToolController + + + Tool Number to Load + Te laden gereedschapsnummer + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Add Tool Controller Gereedschapsregelaar toevoegen - - - Tool Number to Load - Te laden gereedschapsnummer - Path_ToolTable @@ -4193,11 +4193,46 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Save toolbit library Toolbit-bibliotheek opslaan + + + Tooltable JSON (*.json) + Gereedschapstafel JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD-gereedschapstafel (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC-gereedschapstafel (*.tbl) + Open tooltable Open gereedschapstafel + + + Save tooltable + Gereedschapstafel opslaan + + + + Add New Tool Table + Voeg nieuwe gereedschapstabel toe + + + + Delete Selected Tool Table + Verwijder de geselecteerde gereedschapstabel + + + + Rename Selected Tool Table + Hernoem de geselecteerde gereedschapstabel + Tooltable editor @@ -4408,11 +4443,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Gereedschapstafel XML (*.xml);;HeeksCAD-gereedschapstafel (*.tooltable) - - - Save tooltable - Gereedschapstafel opslaan - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ Als het nodig is de FinalDepth handmatig aan te geven, doe dat in een andere bew Object doesn't have a tooltable property Object heeft geen gereedschapstafeleigenschap - - - Add New Tool Table - Voeg nieuwe gereedschapstabel toe - - - - Delete Selected Tool Table - Verwijder de geselecteerde gereedschapstabel - - - - Rename Selected Tool Table - Hernoem de geselecteerde gereedschapstabel - - - - Tooltable JSON (*.json) - Gereedschapstafel JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD-gereedschapstafel (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC-gereedschapstafel (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_no.qm b/src/Mod/Path/Gui/Resources/translations/Path_no.qm index d138543b03..71875c508d 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_no.qm and b/src/Mod/Path/Gui/Resources/translations/Path_no.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_no.ts b/src/Mod/Path/Gui/Resources/translations/Path_no.ts index 7525e730e2..cddf0561ba 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_no.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_no.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Flate + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Flate - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pl.qm b/src/Mod/Path/Gui/Resources/translations/Path_pl.qm index 2c53254710..ca300cce5f 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_pl.qm and b/src/Mod/Path/Gui/Resources/translations/Path_pl.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pl.ts b/src/Mod/Path/Gui/Resources/translations/Path_pl.ts index 03096577e4..7849737df5 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pl.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Ścieżka do skopiowania - - - The base geometry of this toolpath - Podstawowa geometria tej ścieżki narzędzia - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Kontroluje sposób wycofania narzędzia Domyślnie=G98 - - - The height where feed starts and height during retract tool when path is finished - Wysokość, na której rozpoczyna się posuw i wysokość podczas wycofywania narzędzia po ukończeniu ścieżki - Controls how tool retracts Default=G99 Kontroluje sposób wycofania narzędzia Domyślnie=G99 + + + The height where feed starts and height during retract tool when path is finished + Wysokość, na której rozpoczyna się posuw i wysokość podczas wycofywania narzędzia po ukończeniu ścieżki + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Dodatkowy offset do operacji. Kierunek jest zależny od operacji. + + + The library to use to generate the path + Biblioteka używana do generowania ścieżki + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Ustaw True, jeśli używasz kompensacji promienia frezu - - The library to use to generate the path - Biblioteka używana do generowania ścieżki + + The base geometry of this toolpath + Podstawowa geometria tej ścieżki narzędzia @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Nieprawidłowy kąt krawędzi cięcia %.2f, musi być >0° i <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Przecinacz krawędzi (%.2f) skutkuje nieprawidłowym narzędziem długości koncówki + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Średnice @@ -1170,7 +1170,7 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Ignorowanie niepoziomej ściany @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Automatyczne ustawienie kąta odwrotnego. Applying inverse angle manually. - Applying inverse angle manually. + Samodzielne ustawienie kąta odwrotnego. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Powierzchnia + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Wybierz punkt początkowy - - - Face - Powierzchnia - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Kierunek cyklicznych cięć, zgodnie z ruchem wskazówek zegara (CW) lub przeciwnie do ruchu wskazówek zegara (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Promień początkowy - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Kierunek cyklicznych cięć, zgodnie z ruchem wskazówek zegara (CW) lub przeciwnie do ruchu wskazówek zegara (CCW) - PathJob @@ -1817,12 +1817,12 @@ Lower limit of the turning diameter - Lower limit of the turning diameter + Minimalna średnica toczenia Upper limit of the turning diameter. - Upper limit of the turning diameter. + Maksymalna średnica toczenia. @@ -1994,11 +1994,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profil oparty na powierzchni lub powierzchniach - Profile @@ -2009,6 +2004,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profil oparty na powierzchni lub powierzchniach + New property added to @@ -3116,16 +3116,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Ulepszenia - - - - Creates a Path Dess-up object from a selected path - Tworzy obiekt ścieżki Dess-up z zaznaczonej ścieżki - Please select one path object @@ -3145,6 +3135,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Proszę wybrać obiekt-ścieżkę + + + Dress-up + Ulepszenia + + + + Creates a Path Dess-up object from a selected path + Tworzy obiekt ścieżki Dess-up z zaznaczonej ścieżki + Path_DressupAxisMap @@ -3750,37 +3750,37 @@ If it is necessary to set the FinalDepth manually please select a different oper Job Sequence - Job Sequence + Sekwencja zadań Job Description - Job Description + Opis zadania Job Type - Job Type + Typ zadania CAD File Name - CAD File Name + Nazwa pliku CAD Last Save Date - Last Save Date + Data ostatniego zapisu Customer - Customer + Klient Designer - Designer + Projektant @@ -3790,7 +3790,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Minimum Z Height - Minimum Z Height + Minimalna wysokość Z @@ -3825,17 +3825,17 @@ If it is necessary to set the FinalDepth manually please select a different oper Maximum Z Height - Maximum Z Height + Maksymalna wysokość Z Cycle Time - Cycle Time + Czas cyklu Coolant - Coolant + Chłodziwo @@ -3845,7 +3845,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Tool Number - Tool Number + Numer narzędzia @@ -3855,12 +3855,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Manufacturer - Manufacturer + Producent Part Number - Part Number + Numer części @@ -3870,47 +3870,47 @@ If it is necessary to set the FinalDepth manually please select a different oper Inspection Notes - Inspection Notes + Uwagi do inspekcji Tool Controller - Tool Controller + Kontroler narzędzi Feed Rate - Feed Rate + Posuw Spindle Speed - Spindle Speed + Prędkość wrzeciona Tool Shape - Tool Shape + Kształt narzędzia Tool Diameter - Tool Diameter + Średnica narzędzia X Size - X Size + Rozmiar X Y Size - Y Size + Rozmiar Y Z Size - Z Size + Rozmiar Z @@ -3925,7 +3925,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Order By - Order By + Sortuj według @@ -3935,7 +3935,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Gcode File - Gcode File + Plik Gcode @@ -3945,22 +3945,22 @@ If it is necessary to set the FinalDepth manually please select a different oper Stops - Stops + Zatrzymaj Programmer - Programmer + Programista Machine - Machine + Maszyna Postprocessor - Postprocessor + Postprocesor @@ -3970,12 +3970,12 @@ If it is necessary to set the FinalDepth manually please select a different oper File Size (kbs) - File Size (kbs) + Rozmiar pliku (kb) Line Count - Line Count + Liczba linii @@ -3990,7 +3990,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Date - Date + Data @@ -4030,7 +4030,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Closed loop detection failed. - Closed loop detection failed. + Wykrywanie zamkniętej pętli nie powiodło się. @@ -4043,6 +4043,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Proszę wybrać dokładnie jeden obiekt ścieżki + Simple Copy @@ -4058,12 +4064,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Proszę wybrać dokładnie jeden obiekt ścieżki - - - Please select exactly one path object - - Proszę wybrać dokładnie jeden obiekt ścieżki - Path_Simulator @@ -4093,6 +4093,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Numer narzędzi do wczytania + Add Tool Controller to the Job @@ -4103,11 +4108,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Dodaj kontroler narzędzi - - - Tool Number to Load - Numer narzędzi do wczytania - Path_ToolTable @@ -4132,7 +4132,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Engraver Cutting Edge Angle must be < 180 degrees. - Engraver Cutting Edge Angle must be < 180 degrees. + Kąt krawędzi tnącej grawera musi być <180 stopni. @@ -4191,11 +4191,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Otwórz tabelę narzędziową + + + Save tooltable + Zapisz tabelę narzędziową + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4406,11 +4441,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabela narzędziowa XML (*.xml); tabela HeeksCAD (*.tooltable) - - - Save tooltable - Zapisz tabelę narzędziową - Tooltable XML (*.xml) @@ -4426,36 +4456,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Obiekt nie ma właściwości tooltable - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.qm b/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.qm index 6a75514ab7..ae3487ae29 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.qm and b/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.qm differ 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 145b9931c2..bd97bb0789 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pt-BR.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignorar áreas que se desenrolam abaixo da profundidade especificada. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Verificação de superfície Flat, 3D. Girional: 4th-eixo de varredura rotativa. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Corte os resíduos para profundidade na borda do modelo, libertando o modelo. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Verificação de superfície Flat, 3D. Girional: 4th-eixo de varredura rotativa. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied O caminho a ser copiado - - - The base geometry of this toolpath - A geometria base deste caminho de ferramenta - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controla como a ferramenta recua Padrão=G98 - - - The height where feed starts and height during retract tool when path is finished - A altura inicial da projeção e altura durante a retração final da extensão - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + A altura inicial da projeção e altura durante a retração final da extensão + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Deslocamento extra a ser aplicado à operação. A direção depende da operação. + + + The library to use to generate the path + Biblioteca a usar para gerar a trajetória + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Torne verdadeiro, se está usando a compensação do raio do cortador - - The library to use to generate the path - Biblioteca a usar para gerar a trajetória + + The base geometry of this toolpath + A geometria base deste caminho de ferramenta @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Ângulo de corte de aresta inválido: %.2f, deve ser >0º e <=180º - Cutting Edge Angle (%.2f) results in negative tool tip length Ângulo de corte de esquina (%.2f) resulta num Comprimento de Ponta da ferramenta negativa + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Ângulo de corte de aresta inválido: %.2f, deve ser >0º e <=180º + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Escolher Ponto Inicial - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) A direção dos cortes circulares, no sentido horário (CW), ou anti-horário (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + A direção dos cortes circulares, no sentido horário (CW), ou anti-horário (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - A direção dos cortes circulares, no sentido horário (CW), ou anti-horário (CCW) - PathJob @@ -1995,11 +1995,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci PathProfile - - - Profile based on face or faces - Perfil baseado em face ou faces - Profile @@ -2010,6 +2005,11 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Perfil baseado em face ou faces + New property added to @@ -3117,16 +3117,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Path_Dressup - - - Dress-up - Trajetória adicional - - - - Creates a Path Dess-up object from a selected path - Cria uma trajetória de vestimento a partir de uma trajetória selecionada - Please select one path object @@ -3146,6 +3136,16 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Please select a Path object Por favor selecione uma trajetória + + + Dress-up + Trajetória adicional + + + + Creates a Path Dess-up object from a selected path + Cria uma trajetória de vestimento a partir de uma trajetória selecionada + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Path_SimpleCopy + + + Please select exactly one path object + + Apenas uma trajetória deve ser selecionada + + Simple Copy @@ -4059,13 +4066,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Please select exactly one path object Apenas uma trajetória deve ser selecionada - - - Please select exactly one path object - - Apenas uma trajetória deve ser selecionada - - Path_Simulator @@ -4095,6 +4095,11 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Path_ToolController + + + Tool Number to Load + Número da ferramenta a carregar + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Add Tool Controller Adicionar controlador de ferramenta - - - Tool Number to Load - Número da ferramenta a carregar - Path_ToolTable @@ -4193,11 +4193,46 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tabela de ferramentas JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Tabela de ferramentas HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tabela de ferramentas LinuxCNC (*.tbl) + Open tooltable Abrir tabela de ferramentas + + + Save tooltable + Salvar tabela de ferramentas + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabela de ferramentas XML (*.xml);;tabela de ferramentas HeeksCAD (*.tooltable) - - - Save tooltable - Salvar tabela de ferramentas - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ Se for necessário definir a profundidade final (FinalDepth) manualmente, seleci Object doesn't have a tooltable property Objeto não tem uma propriedade da tabela de ferramentas - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tabela de ferramentas JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Tabela de ferramentas HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tabela de ferramentas LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.qm b/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.qm index 12922e9f4a..0157d44da1 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.qm and b/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.qm differ 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 184f351eaf..019f2c0199 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_pt-PT.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied O caminho a ser copiado - - - The base geometry of this toolpath - A geometria base deste caminho de ferramenta - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - A altura onde começa o avanço e altura quando a ferramenta é retraída no final da trajetória - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + A altura onde começa o avanço e altura quando a ferramenta é retraída no final da trajetória + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Deslocamento extra para aplicar à operação. Direção é dependente de operação. + + + The library to use to generate the path + Biblioteca a usar para gerar a trajetória + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Biblioteca a usar para gerar a trajetória + + The base geometry of this toolpath + A geometria base deste caminho de ferramenta @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Ângulo de corte de esquina (%.2f) resulta num Comprimento de Ponta da ferramenta negativa + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Face + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Escolher Ponto Inicial - - - Face - Face - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + A direção dos cortes circulares, no sentido horário (CW), ou no sentido contra horário (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - A direção dos cortes circulares, no sentido horário (CW), ou no sentido contra horário (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Cobrir - - - - Creates a Path Dess-up object from a selected path - Cria uma trajetória de cobertura (dress-up) a partir de uma trajetória selecionada - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Por favor selecione uma trajetória + + + Dress-up + Cobrir + + + + Creates a Path Dess-up object from a selected path + Cria uma trajetória de cobertura (dress-up) a partir de uma trajetória selecionada + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Apenas uma trajetória deve ser selecionada + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Apenas uma trajetória deve ser selecionada - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Número da ferramenta a carregar + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Adicionar controlador de ferramenta - - - Tool Number to Load - Número da ferramenta a carregar - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tabela de ferramentas JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Tabela de ferramentas HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tabela de ferramentas LinuxCNC (*.tbl) + Open tooltable Abrir tabela de ferramentas + + + Save tooltable + Salvar tabela de ferramentas + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabela de ferramentas XML (*.xml);;tabela de ferramentas HeeksCAD (*.tooltable) - - - Save tooltable - Salvar tabela de ferramentas - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Objeto não tem uma propriedade da tabela de ferramentas - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tabela de ferramentas JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Tabela de ferramentas HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tabela de ferramentas LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ro.qm b/src/Mod/Path/Gui/Resources/translations/Path_ro.qm index 92ced23283..cbe6c217d6 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ro.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ro.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ro.ts b/src/Mod/Path/Gui/Resources/translations/Path_ro.ts index 06525fa8a7..6251644fa4 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ro.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ro.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Calea de acces de copiat - - - The base geometry of this toolpath - Geometria bază a traiectoriei sculei - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - Înălţime de plecare a sculei și de retragere a sculei atunci când traiectoria activă s-a terminat - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Înălţime de plecare a sculei și de retragere a sculei atunci când traiectoria activă s-a terminat + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Se aplică un decalaj suplimentar la operaţiunea. Direcţia este dependentă de operație. + + + The library to use to generate the path + Bibliotecă de utilizat pentru a genera traiectoria + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Bibliotecă de utilizat pentru a genera traiectoria + + The base geometry of this toolpath + Geometria bază a traiectoriei sculei @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Unghiul muchiei tăietoare (%.2f) are ca rezultat o lungime negativă a vărfului sculei + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Faţă + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Selecționați punctul de plecare - - - Face - Faţă - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Direcția decupărilor circulare, în sens orar (CW), sau antiorar (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Direcția decupărilor circulare, în sens orar (CW), sau antiorar (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Traiectorie adițională - - - - Creates a Path Dess-up object from a selected path - Creează un obiect traiectorie adițională plecând de la un parcurs selecționat - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Vă rugăm să selectaţi un obiect traiecorie + + + Dress-up + Traiectorie adițională + + + + Creates a Path Dess-up object from a selected path + Creează un obiect traiectorie adițională plecând de la un parcurs selecționat + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Vă rugăm să selectaţi o singură traiectorie + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Rugăm selectați doar un obiect tip traiectorie - - - Please select exactly one path object - - Vă rugăm să selectaţi o singură traiectorie - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Numărul uneltei de încărcat + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Adăugare dispozitiv de control a sculei - - - Tool Number to Load - Numărul uneltei de încărcat - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tabelă de scule JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Tabela de scule HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Tabelă de scule LinuxCNC (*.tbl) + Open tooltable Deschide tabela de scule + + + Save tooltable + Salvarea tabelei de scule + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tabela de scule XML (*.xml);Masă de scule HeeksCAD (*.tooltable) - - - Save tooltable - Salvarea tabelei de scule - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Obiectul nu are o proprietate în tabelul de scule - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tabelă de scule JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Tabela de scule HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Tabelă de scule LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ru.qm b/src/Mod/Path/Gui/Resources/translations/Path_ru.qm index c5d7dad03c..220d6b90c5 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_ru.qm and b/src/Mod/Path/Gui/Resources/translations/Path_ru.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_ru.ts b/src/Mod/Path/Gui/Resources/translations/Path_ru.ts index ed3ebfc21d..38e8a8a80d 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_ru.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_ru.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Игнорировать области, которые идут ниже указанной глубины. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Планарное: плоское, трехмерной сканирование поверхности. Вращательное: 4-осное вращательное сканирование. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Резать через отходы до глубины края модели, освобождая модель. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Планарное: плоское, трехмерной сканирование поверхности. Вращательное: 4-осное вращательное сканирование. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Траектория для копирования - - - The base geometry of this toolpath - Базовая фигура для пути инструмента - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Контролирует, как отводится инструмент по умолчанию = G98 - - - The height where feed starts and height during retract tool when path is finished - Высота на которой начинается подача и высота на которую возвращается инструмент по окончании прохождения пути - Controls how tool retracts Default=G99 Контролирует, как отводится инструмент по умолчанию = G99 + + + The height where feed starts and height during retract tool when path is finished + Высота на которой начинается подача и высота на которую возвращается инструмент по окончании прохождения пути + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Дополнительное смещение применяется к операции. Направление зависит от операции. + + + The library to use to generate the path + Библиотека, используемая для создания траектории + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Установить в Истину, если используется компенсация радиуса инструмента - - The library to use to generate the path - Библиотека, используемая для создания траектории + + The base geometry of this toolpath + Базовая фигура для пути инструмента @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Недопустимый угол резки %.2f, должен быть >0° и <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Неверный угол режущей кромки %.2f, должен быть >0° и <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Угол режущей кромки (%.2f) приводит к отрицательной длине наконечника инструмента + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Неверный угол режущей кромки %.2f, должен быть >0° и <=180° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Диаметры @@ -1442,6 +1442,16 @@ PathFace + + + Face + Грань + + + + Create a Facing Operation from a model or face + Создать операцию торцевого фрезерования по модели или поверхности + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Указать начальную точку - - - Face - Грань - - - - Create a Facing Operation from a model or face - Создать операцию торцевого фрезерования по модели или поверхности - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Направление круговых вырезов по часовой стрелке (clockwise - CW) или против часовой стрелки (counter clockwise - CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Направление круговых разрезов по часовой стрелке (clockwise - CW) или против часовой стрелки (counter clockwise - CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Радиус начала - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Направление круговых разрезов по часовой стрелке (clockwise - CW) или против часовой стрелки (counter clockwise - CCW) - PathJob @@ -1994,11 +1994,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Профиль основанный на грани или гранях - Profile @@ -2009,6 +2004,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Обработать всю модель, выбранные грани или выбранные края + + + Profile based on face or faces + Профиль основанный на грани или гранях + New property added to @@ -2959,7 +2959,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Vcarve - Vcarve + V образный вырез @@ -3116,16 +3116,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Модифицировать - - - - Creates a Path Dess-up object from a selected path - Создаёт дополнения для выбранной траектории - Please select one path object @@ -3145,6 +3135,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Пожалуйста выберите Путь объект + + + Dress-up + Модифицировать + + + + Creates a Path Dess-up object from a selected path + Создаёт дополнения для выбранной траектории + Path_DressupAxisMap @@ -3745,27 +3745,27 @@ If it is necessary to set the FinalDepth manually please select a different oper Base Object(s) - Base Object(s) + Базовый объект(ы) Job Sequence - Job Sequence + Последовательность заданий Job Description - Job Description + Описание задания Job Type - Job Type + Тип задания CAD File Name - CAD File Name + Имя файла CAD @@ -3860,7 +3860,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Part Number - Part Number + Артикул @@ -3885,7 +3885,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Spindle Speed - Spindle Speed + Скорость шпинделя @@ -3895,22 +3895,22 @@ If it is necessary to set the FinalDepth manually please select a different oper Tool Diameter - Tool Diameter + Диаметр инструмента X Size - X Size + Размер по оси X Y Size - Y Size + Размер по оси Y Z Size - Z Size + Размер по оси Z @@ -4043,6 +4043,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Пожалуйста, выберите только один объект + + Simple Copy @@ -4058,13 +4065,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Пожалуйста выберете лишь один объект типа путь - - - Please select exactly one path object - - Пожалуйста, выберите только один объект - - Path_Simulator @@ -4094,6 +4094,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Номер инструмента для загрузки + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Добавить Контроллер Инструмента - - - Tool Number to Load - Номер инструмента для загрузки - Path_ToolTable @@ -4192,11 +4192,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Сохранить библиотеку инструментов + + + Tooltable JSON (*.json) + Таблица инструментов JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Таблица инструментов HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Таблица инструментов LinuxCNC (*.tbl) + Open tooltable Открыть таблицу инструментов + + + Save tooltable + Сохранить таблицу инструментов + + + + Add New Tool Table + Добавить новую таблицу инструментов + + + + Delete Selected Tool Table + Удалить выбранную таблицу инструментов + + + + Rename Selected Tool Table + Переименовать выбранную таблицу инструментов + Tooltable editor @@ -4407,11 +4442,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Таблица инструментов XML (*.xml); Таблица инструментов HeeksCAD (*.tooltable) - - - Save tooltable - Сохранить таблицу инструментов - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Объект не содержит таблицу инструментов - - - Add New Tool Table - Добавить новую таблицу инструментов - - - - Delete Selected Tool Table - Удалить выбранную таблицу инструментов - - - - Rename Selected Tool Table - Переименовать выбранную таблицу инструментов - - - - Tooltable JSON (*.json) - Таблица инструментов JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Таблица инструментов HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Таблица инструментов LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sk.qm b/src/Mod/Path/Gui/Resources/translations/Path_sk.qm index 20fd4a62f5..73aa6f7129 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_sk.qm and b/src/Mod/Path/Gui/Resources/translations/Path_sk.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sk.ts b/src/Mod/Path/Gui/Resources/translations/Path_sk.ts index 41f8f47f34..9f94f63c99 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sk.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sk.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignorujte oblasti, ktoré pokračujú pod určenou hĺbkou. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Rovinné: 3D skenovanie povrchu. Rotačný: rotačný sken 4. osi. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Rovinné: 3D skenovanie povrchu. Rotačný: rotačný sken 4. osi. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + Knižnica použitá pri generovaní dráhy + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Knižnica použitá pri generovaní dráhy + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Plocha + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Plocha - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sl.qm b/src/Mod/Path/Gui/Resources/translations/Path_sl.qm index 170424d7ce..f1d0222937 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_sl.qm and b/src/Mod/Path/Gui/Resources/translations/Path_sl.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sl.ts b/src/Mod/Path/Gui/Resources/translations/Path_sl.ts index 45f090ef0b..078c41e2d2 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sl.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sl.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Prezri področja pod določeno globino. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Ravninsko: Plosko, 3D odčitavanje površja. Sukajoče: optično prebiranje z vrtenjem okrog 4. osi. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Reži skozi odpad do globine na robu modela s sprostitvijo modela. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Ravninsko: Plosko, 3D odčitavanje površja. Sukajoče: optično prebiranje z vrtenjem okrog 4. osi. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -136,7 +136,7 @@ Cut internal feature areas within a larger selected face. - Cut internal feature areas within a larger selected face. + Reži območja notranjih značilnosti znotraj večje izbrane ploskve. @@ -243,11 +243,6 @@ The path to be copied Pot za kopiranje - - - The base geometry of this toolpath - Osnovna geometrija te poti orodja - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Upravlja kako se orodje vrne Privzeto=G98 - - - The height where feed starts and height during retract tool when path is finished - Višina začetka podajanja in višina vračanja orodja, ko je pot končana - Controls how tool retracts Default=G99 Upravlja kako se orodje vrne Privzeto=G99 + + + The height where feed starts and height during retract tool when path is finished + Višina začetka podajanja in višina vračanja orodja, ko je pot končana + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -506,7 +501,7 @@ Ignore outer waterlines above this height. - Ignore outer waterlines above this height. + Prezri zunanje gladinske črte nad to višino. @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Pri opravilih naj se uporabi dodaten odmik. Smer je odvisna od opravila. + + + The library to use to generate the path + Knjižnica, ki se jo uporabi pri ustvarjanju poti + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Nastavi Prav, če se uporablja Popravek polmira rezkarja - - The library to use to generate the path - Knjižnica, ki se jo uporabi pri ustvarjanju poti + + The base geometry of this toolpath + Osnovna geometrija te poti orodja @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Neveljaven kót rezilnega roba %.2f, biti mora >0° in <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Neveljaven kót rezilnega roba %.2f, biti mora >0° in <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Kót rezilnega roba (%.2f) ima za posledico negativno dolžino konice orodja + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Neveljaven kót rezilnega roba %.2f, biti mora >0° in <=180° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Premeri @@ -1170,7 +1170,7 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Prezrta nevodoravna ploskev @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Samodejno uveljavljanje obrnjenega kota. Applying inverse angle manually. - Applying inverse angle manually. + Ročno uveljavljanje obrnjenega kota. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Ploskev + + + + Create a Facing Operation from a model or face + Iz modela ali ploskve ustvari opravilo ploščenja + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Izberite začetno točko - - - Face - Ploskev - - - - Create a Facing Operation from a model or face - Iz modela ali ploskve ustvari opravilo ploščenja - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Smer krožnih rezov, vSmeriUrinegaKazalca (SUK), ali vNasprotniSmeriUrinegaKazalca (NSUK) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Smer krožnih rezov, v smeri urinega kazalca (SUK), ali v nasprotni smeri urinega kazalca (NSUK) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Začetni polmer - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Smer krožnih rezov, v smeri urinega kazalca (SUK), ali v nasprotni smeri urinega kazalca (NSUK) - PathJob @@ -1604,7 +1604,7 @@ Last Time the Job was post-processed - Last Time the Job was post-processed + Čas zadnje poobdelave opravila @@ -1817,12 +1817,12 @@ Lower limit of the turning diameter - Lower limit of the turning diameter + Znižaj mejo obračalnega premera Upper limit of the turning diameter. - Upper limit of the turning diameter. + Zgornja meja obračalnega premera. @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Oris na podlagi ploskve ali ploskev - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Oriši celoten model, izbrane ploskve ali izbrane robove + + + Profile based on face or faces + Oris na podlagi ploskve ali ploskev + New property added to @@ -2043,7 +2043,7 @@ If it is necessary to set the FinalDepth manually please select a different oper No ExpandProfile support for ArchPanel models. - No ExpandProfile support for ArchPanel models. + Razširitev orisa ni podprta za oblikovance ArhPlošče. @@ -2654,7 +2654,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Face selection is unavailable for Rotational scans. - Face selection is unavailable for Rotational scans. + Izbor ploskev ni na voljo pri sukajočih optičnih branjih. @@ -2722,7 +2722,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Shape for bit shape - Shape for bit shape + Oblika orodnega nastavka @@ -2896,7 +2896,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable JSON (*.fctl) - Tooltable JSON (*.fctl) + Preglednica orodij JSON (*.fctl) @@ -2960,12 +2960,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Vcarve - Vcarve + Vcarve Creates a medial line engraving path - Creates a medial line engraving path + Ustvari vrezovalno pot po srednjici @@ -2975,17 +2975,18 @@ If it is necessary to set the FinalDepth manually please select a different oper The deflection value for discretizing arcs - The deflection value for discretizing arcs + Vrednost odmika pri poenostavitvi lokov cutoff for removing colinear segments (degrees). default=10.0. - cutoff for removing colinear segments (degrees). default=10.0. + zgornja meja pri odstranjevanju sopremih (kolinearnih) odsekov (v stopinjah). +privzeto=10,0. The Job Base Object has no engraveable element. Engraving operation will produce no output. - The Job Base Object has no engraveable element. Engraving operation will produce no output. + Osnovni predmet opravila nima vrezljive prvine. Vrezovanje ne bo naredilo ničesar. @@ -3053,7 +3054,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Canceling Waterline operation. Error creating OCL cutter. - Canceling Waterline operation. Error creating OCL cutter. + Preklicevanje dejanja vodne črte. Napaka pri ustvarjanju OCL rezalnika. @@ -3117,16 +3118,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dodelava - - - - Creates a Path Dess-up object from a selected path - Ustvari iz izbrane poti predmet dodelave poti - Please select one path object @@ -3146,6 +3137,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Izberite pot + + + Dress-up + Dodelava + + + + Creates a Path Dess-up object from a selected path + Ustvari iz izbrane poti predmet dodelave poti + Path_DressupAxisMap @@ -3190,22 +3191,22 @@ If it is necessary to set the FinalDepth manually please select a different oper The side of path to insert bones - The side of path to insert bones + Stran poti za vstavljanje kosti The style of bones - The style of bones + Slog kosti Bones that aren't dressed up - Bones that aren't dressed up + Kosti, ki niso oblečene The algorithm to determine the bone length - The algorithm to determine the bone length + Algoritem za določitev dolžine kosti @@ -3215,17 +3216,17 @@ If it is necessary to set the FinalDepth manually please select a different oper Edit Dogbone Dress-up - Edit Dogbone Dress-up + Uredi dodelavo Pasje kosti Dogbone Dress-up - Dogbone Dress-up + Dodelava Pasje kosti Creates a Dogbone Dress-up object from a selected path - Creates a Dogbone Dress-up object from a selected path + Ustvari Dodelavo Pasja kost iz izbrane poti @@ -3240,7 +3241,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Create Dogbone Dress-up - Create Dogbone Dress-up + Ustvari Dodelavo Pasja kost @@ -3248,7 +3249,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Edit Dragknife Dress-up - Edit Dragknife Dress-up + Uredi dodelavo poteznega nožka @@ -3344,7 +3345,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Solid object to be used to limit the generated Path. - Solid object to be used to limit the generated Path. + Telo, ki bo služilo za omejevanje ustvarjene poti. @@ -3518,7 +3519,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Use Probe Map to correct Z depth - Use Probe Map to correct Z depth + Na podlagi meritvene odslikave prilagodi globino Z @@ -3741,47 +3742,47 @@ If it is necessary to set the FinalDepth manually please select a different oper Check the path job for common errors - Check the path job for common errors + Preveri običajne napake projekta poti Base Object(s) - Base Object(s) + Osnovni predmet(i) Job Sequence - Job Sequence + Zaporedje opravila Job Description - Job Description + Opis opravila Job Type - Job Type + Vrsta opravila CAD File Name - CAD File Name + Ime CAD datoteke Last Save Date - Last Save Date + Datum zadnjega shranjevanja Customer - Customer + Naročnik Designer - Designer + Načrtovalec @@ -3791,7 +3792,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Minimum Z Height - Minimum Z Height + Najmanjša višina Z @@ -3826,27 +3827,27 @@ If it is necessary to set the FinalDepth manually please select a different oper Maximum Z Height - Maximum Z Height + Največja višina Z Cycle Time - Cycle Time + Čas cikla Coolant - Coolant + Hladilo TOTAL JOB - TOTAL JOB + CELOTNO OPRAVILO Tool Number - Tool Number + Številka orodja @@ -3856,12 +3857,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Manufacturer - Manufacturer + Proizvajalec Part Number - Part Number + Številka dela @@ -3871,47 +3872,47 @@ If it is necessary to set the FinalDepth manually please select a different oper Inspection Notes - Inspection Notes + Opombe pregleda Tool Controller - Tool Controller + Orodni krmilnik Feed Rate - Feed Rate + Podajalna hitrost Spindle Speed - Spindle Speed + Hitrost vretena Tool Shape - Tool Shape + Oblika orodja Tool Diameter - Tool Diameter + Premer orodja X Size - X Size + Velikost X Y Size - Y Size + Velikost Y Z Size - Z Size + Velikost Z @@ -3921,62 +3922,62 @@ If it is necessary to set the FinalDepth manually please select a different oper Work Offsets - Work Offsets + Delavni odmiki Order By - Order By + Razvrsti po Part Datum - Part Datum + Osnovna mera dela Gcode File - Gcode File + Datoteka G-kode Last Post Process Date - Last Post Process Date + Datum zadnje poobdelave Stops - Stops + Ustavitev Programmer - Programmer + Programer Machine - Machine + Naprava Postprocessor - Postprocessor + Poopravilnik Post Processor Flags - Post Processor Flags + Zastavice poopravilnika File Size (kbs) - File Size (kbs) + Velikost datoteke (kbs) Line Count - Line Count + Število vrstic @@ -3991,7 +3992,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Date - Date + Datum @@ -4044,6 +4045,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Izberite natanko eno pot + + Simple Copy @@ -4059,13 +4067,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Izberite natanko eno pot - - - Please select exactly one path object - - Izberite natanko eno pot - - Path_Simulator @@ -4095,6 +4096,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Številka orodja za nalaganje + Add Tool Controller to the Job @@ -4105,11 +4111,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Dodaj orodni krmilnik - - - Tool Number to Load - Številka orodja za nalaganje - Path_ToolTable @@ -4129,12 +4130,12 @@ If it is necessary to set the FinalDepth manually please select a different oper VCarve requires an engraving cutter with CuttingEdgeAngle - VCarve requires an engraving cutter with CuttingEdgeAngle + VCarve potrebuje vrezovalnik s kotom rezilnega roba Engraver Cutting Edge Angle must be < 180 degrees. - Engraver Cutting Edge Angle must be < 180 degrees. + Rezilni kót vrezovalnika mora biti < 180 stopnij. @@ -4193,11 +4194,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Shrani knjižnico orodnih nastavkov + + + Tooltable JSON (*.json) + Preglednica orodij JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD-ova preglednica orodij (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC-jeva preglednica orodij (*.tbl) + Open tooltable Odpri preglednico orodij + + + Save tooltable + Shrani preglednico orodij + + + + Add New Tool Table + Dodaj novo preglednico orodij + + + + Delete Selected Tool Table + Izbriši izbrano preglednico orodij + + + + Rename Selected Tool Table + Preimenuj izbrano preglednico orodij + Tooltable editor @@ -4408,11 +4444,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Preglednica orodij XML (*.xml);;preglednica orodij HeeksCAD (*.tooltable) - - - Save tooltable - Shrani preglednico orodij - Tooltable XML (*.xml) @@ -4428,36 +4459,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Predmet nima lastnosti preglednice orodij - - - Add New Tool Table - Dodaj novo preglednico orodij - - - - Delete Selected Tool Table - Izbriši izbrano preglednico orodij - - - - Rename Selected Tool Table - Preimenuj izbrano preglednico orodij - - - - Tooltable JSON (*.json) - Preglednica orodij JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD-ova preglednica orodij (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC-jeva preglednica orodij (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) @@ -4570,22 +4571,22 @@ If it is necessary to set the FinalDepth manually please select a different oper The side of path to insert bones - The side of path to insert bones + Stran poti za vstavljanje kosti The style of boness - The style of boness + Slog kosti Bones that aren't dressed up - Bones that aren't dressed up + Kosti, ki niso oblečene The algorithm to determine the bone length - The algorithm to determine the bone length + Algoritem za določitev dolžine kosti @@ -4595,17 +4596,17 @@ If it is necessary to set the FinalDepth manually please select a different oper Edit Dogbone Dress-up - Edit Dogbone Dress-up + Uredi dodelavo Pasje kosti Dogbone Dress-up - Dogbone Dress-up + Dodelava Pasje kosti Creates a Dogbone Dress-up object from a selected path - Creates a Dogbone Dress-up object from a selected path + Ustvari Dodelavo Pasja kost iz izbrane poti @@ -4624,12 +4625,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Create Dogbone Dress-up - Create Dogbone Dress-up + Ustvari Dodelavo Pasja kost Please select a Profile/Contour or Dogbone Dressup object - Please select a Profile/Contour or Dogbone Dressup object + Izberite Oris/Obris ali dodelavo Pasja kost diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sr.qm b/src/Mod/Path/Gui/Resources/translations/Path_sr.qm index a09e29a89a..2ef21d7558 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_sr.qm and b/src/Mod/Path/Gui/Resources/translations/Path_sr.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sr.ts b/src/Mod/Path/Gui/Resources/translations/Path_sr.ts index 0b76d4fe73..cdff3950ed 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sr.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Путања за умножавање - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + The library to use to generate the path + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - The library to use to generate the path + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Површ + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Површ - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.qm b/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.qm index 5e1241236c..8290a045f6 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.qm and b/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.qm differ 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 70f9211370..63977e3e41 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_sv-SE.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied The path to be copied - - - The base geometry of this toolpath - Basgeometri för den här verktygsbanan - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + Biblioteket som används för att generera banan + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Biblioteket som används för att generera banan + + The base geometry of this toolpath + Basgeometri för den här verktygsbanan @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Diametrar @@ -1442,6 +1442,16 @@ PathFace + + + Face + Yta + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Välj startpunkt - - - Face - Yta - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -3836,7 +3836,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Coolant - Coolant + Kylmedel @@ -3846,7 +3846,7 @@ If it is necessary to set the FinalDepth manually please select a different oper Tool Number - Tool Number + Verktygsnummer @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_tr.qm b/src/Mod/Path/Gui/Resources/translations/Path_tr.qm index 49e385f100..1bc4af2e44 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_tr.qm and b/src/Mod/Path/Gui/Resources/translations/Path_tr.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_tr.ts b/src/Mod/Path/Gui/Resources/translations/Path_tr.ts index 77b52e670f..25334e9031 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_tr.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_tr.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Belirtilen derinliğin altında ilerleyen alanları yok say. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Düzlemsel: Düz, 3D yüzey taraması. Dönel: 4. eksen dönel tarama. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Atığı model sınırındaki derinliğe kadar kes, modeli yayınla. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Düzlemsel: Düz, 3D yüzey taraması. Dönel: 4. eksen dönel tarama. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Kopyalanacak yol - - - The base geometry of this toolpath - Bu takım yolunun temel geometrisi - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Takımın nasıl geri çekildiğini kontrol eder Varsayılan = G98 - - - The height where feed starts and height during retract tool when path is finished - Yem başlama yüksekliği ve yol bittiğinde geri çekme aracı sırasında yükseklik - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Yem başlama yüksekliği ve yol bittiğinde geri çekme aracı sırasında yükseklik + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. İşlem için uygulanacak ekstra ofset. Yön operasyona bağlıdır. + + + The library to use to generate the path + Yolu oluşturmak için kullanılacak kitaplık + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Kesici Yarıçap dengelemesi kullanıyorsanız, Gerçekleştirin - - The library to use to generate the path - Yolu oluşturmak için kullanılacak kitaplık + + The base geometry of this toolpath + Bu takım yolunun temel geometrisi @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Geçersiz kenar kesme açısı %.2f, >0 ve <=180 derece arasında olmalı. - Cutting Edge Angle (%.2f) results in negative tool tip length Kenar kesme açısı (%.2f) negatif araç ipucu uzunluğu sonuç + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Geçersiz kenar kesme açısı %.2f, >0 ve <=180 derece arasında olmalı. + No parent job found for operation. @@ -1022,7 +1022,7 @@ Diameters - Diameters + Çaplar @@ -1170,7 +1170,7 @@ Ignoring non-horizontal Face - Ignoring non-horizontal Face + Yatay olmayan Yüzeyi yok say @@ -1180,12 +1180,12 @@ Applying inverse angle automatically. - Applying inverse angle automatically. + Ters açı otomatik olarak uygulanıyor. Applying inverse angle manually. - Applying inverse angle manually. + Ters açı manuel olarak uygulanıyor. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Yüz + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Hedef noktası seç - - - Face - Yüz - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1498,12 +1498,12 @@ Cannot find property %s of %s - % S özellik% s bulunamadı + %s / %s özelliği bulunamıyor %s has no property %s (%s)) - % s hiçbir mülkiyetine sahip değil% s (% s)) + %s özelliği yok %s (%s)) @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) Dairesel kesiklerin yönü, saat yönünde (CW) veya saat yönünün tersine (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Dairesel kesiklerin saat yönünde (CW) veya saat yönünün tersine (CCW) yönü, + Start cutting from the inside or outside @@ -1553,23 +1558,18 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Dairesel kesiklerin saat yönünde (CW) veya saat yönünün tersine (CCW) yönü, - PathJob Unsupported stock object %s - Desteklenmeyen dosya biçimi + Desteklenmeyen stok nesnesi %s Unsupported stock type %s (%d) - Desteklenmeyen dosya biçimi) + Desteklenmeyen stok türü %s (%d) @@ -1604,7 +1604,7 @@ Last Time the Job was post-processed - Last Time the Job was post-processed + İşin en son işlendiği zaman @@ -1659,7 +1659,7 @@ Unsupported PathJob template version %s - Desteklenmeyen PathJob şablon sürümü% s + Desteklenmeyen PathJob şablon sürümü %s @@ -1679,7 +1679,7 @@ Base -/+ %.2f/%.2f %.2f/%.2f %.2f/%.2f - Taban - / +%.2f /% 2f%.2f /% 2f%.2f /% 2f + Temel -/+ %.2f/%.2f %.2f/%.2f %.2f/%.2f @@ -1817,12 +1817,12 @@ Lower limit of the turning diameter - Lower limit of the turning diameter + Torna çapının alt sınırı Upper limit of the turning diameter. - Upper limit of the turning diameter. + Torna çapının üst sınırı. @@ -1885,7 +1885,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Pocket does not support shape %s.%s - Cep%s şekli desteklemiyor.%S + Boşluk, %s şeklini desteklemiyor. %s @@ -1957,7 +1957,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Pocket - Oyuk + Boşluk @@ -1995,11 +1995,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se PathProfile - - - Profile based on face or faces - Yüzey veya yüzeylere dayalı profil - Profile @@ -2010,6 +2005,11 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Yüzey veya yüzeylere dayalı profil + New property added to @@ -2838,7 +2838,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Error updating TC: %s - TC güncellenirken hata oluştu:% s + TC güncellenirken hata oluştu: %s @@ -2878,7 +2878,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Unsupported PathToolController template version %s - Desteklenmeyen PathToolController şablon sürümü% s + Desteklenmeyen PathToolController şablon sürümü %s @@ -2931,7 +2931,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Unsupported Path tooltable template version %s - Desteklenmeyen Yol tooltable şablonu sürümü% s + Desteklenmeyen Path tooltable şablonu sürümü %s @@ -2960,12 +2960,12 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Vcarve - Vcarve + Voyma Creates a medial line engraving path - Creates a medial line engraving path + Bir orta çizgi gravür yolu oluşturur @@ -2975,7 +2975,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se The deflection value for discretizing arcs - The deflection value for discretizing arcs + Yayları ayırmak için sapma değeri @@ -3117,16 +3117,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Path_Dressup - - - Dress-up - Giydirme - - - - Creates a Path Dess-up object from a selected path - Seçilen bir yoldan bir Yol Giydirme nesnesi oluşturur - Please select one path object @@ -3146,6 +3136,16 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Please select a Path object Lütfen bir Yol nesnesi seçin + + + Dress-up + Giydirme + + + + Creates a Path Dess-up object from a selected path + Seçilen bir yoldan bir Yol Giydirme nesnesi oluşturur + Path_DressupAxisMap @@ -3741,47 +3741,47 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Check the path job for common errors - Check the path job for common errors + Genel hatalar için Yol işini kontrol edin Base Object(s) - Base Object(s) + Temel Nesne(ler) Job Sequence - Job Sequence + İş Sırası Job Description - Job Description + İş tanımı Job Type - Job Type + İş Türü CAD File Name - CAD File Name + CAD Dosya Adı Last Save Date - Last Save Date + Son Kayıt Tarihi Customer - Customer + Müşteri Designer - Designer + Tasarımcı @@ -3791,7 +3791,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Minimum Z Height - Minimum Z Height + En az Z Yüksekliği @@ -3826,27 +3826,27 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Maximum Z Height - Maximum Z Height + En fazla Z Yüksekliği Cycle Time - Cycle Time + Devir süresi Coolant - Coolant + Soğutma sıvısı TOTAL JOB - TOTAL JOB + TOPLAM İŞ Tool Number - Tool Number + Alet Numarası @@ -3856,12 +3856,12 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Manufacturer - Manufacturer + Üretici firma Part Number - Part Number + Parça Numarası @@ -3871,47 +3871,47 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Inspection Notes - Inspection Notes + Muayene Notları Tool Controller - Tool Controller + Araç Denetleyicisi Feed Rate - Feed Rate + İlerleme hızı Spindle Speed - Spindle Speed + Mil Hızı Tool Shape - Tool Shape + Takım Şekli Tool Diameter - Tool Diameter + Takım Çapı X Size - X Size + X Boyutu Y Size - Y Size + Y Boyutu Z Size - Z Size + Z Boyutu @@ -3931,52 +3931,52 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Part Datum - Part Datum + Parça Referansı Gcode File - Gcode File + Gcode Dosyası Last Post Process Date - Last Post Process Date + Son Kayıt İşlem Tarihi Stops - Stops + Durur Programmer - Programmer + Programcı Machine - Machine + Makine Postprocessor - Postprocessor + Post işlemcisi Post Processor Flags - Post Processor Flags + İşlem Sonrası İşaretleri File Size (kbs) - File Size (kbs) + Dosya Boyutu (kbs) Line Count - Line Count + Satır Sayısı @@ -3991,7 +3991,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Date - Date + Tarih @@ -4044,6 +4044,13 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Path_SimpleCopy + + + Please select exactly one path object + + Lütfen tam olarak bir yol nesnesi seçin + + Simple Copy @@ -4059,13 +4066,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Please select exactly one path object Lütfen tam olarak bir yol nesnesi seçin - - - Please select exactly one path object - - Lütfen tam olarak bir yol nesnesi seçin - - Path_Simulator @@ -4095,6 +4095,11 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Path_ToolController + + + Tool Number to Load + Yüklenecek Takım Numarası + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Add Tool Controller Araç Kumandasını Ekle - - - Tool Number to Load - Yüklenecek Takım Numarası - Path_ToolTable @@ -4193,11 +4193,46 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Araç Tablosu JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD araç tablosu (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC araç tablosu (*.tbl) + Open tooltable Araç masasını açın + + + Save tooltable + Araç masasını kaydet + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Araç Tabanlı XML (*.xml);; HeeksCAD araç tablosu (*.tooltable) - - - Save tooltable - Araç masasını kaydet - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Object doesn't have a tooltable property Nesnenin araç özellikli bir özelliği yok - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Araç Tablosu JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD araç tablosu (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC araç tablosu (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) @@ -5553,7 +5553,7 @@ FinalDepth'i manuel olarak ayarlamak gerekiyorsa, lütfen farklı bir işlem se Pocket - Oyuk + Boşluk diff --git a/src/Mod/Path/Gui/Resources/translations/Path_uk.qm b/src/Mod/Path/Gui/Resources/translations/Path_uk.qm index 5271371125..1f65d8a46b 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_uk.qm and b/src/Mod/Path/Gui/Resources/translations/Path_uk.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_uk.ts b/src/Mod/Path/Gui/Resources/translations/Path_uk.ts index eebaba6a2d..d5de3554a1 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_uk.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_uk.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Траєкторія для копіювання - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + Бібліотека, що використовується для створення траєкторії + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Бібліотека, що використовується для створення траєкторії + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Поверхня + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - Поверхня - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Please select exactly one path object + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - Please select exactly one path object - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_val-ES.qm b/src/Mod/Path/Gui/Resources/translations/Path_val-ES.qm index 796dc84673..0770768fa7 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_val-ES.qm and b/src/Mod/Path/Gui/Resources/translations/Path_val-ES.qm differ 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 aab6c49cd7..d2c3feebbb 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_val-ES.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignora les àrees que passen per davall d'una profunditat especificada. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: pla, escaneig de la superfície 3D. Rotacional: escaneig rotacional del 4t eix. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Retalla els residus fins al fons en la vora del model, alliberant-lo. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: pla, escaneig de la superfície 3D. Rotacional: escaneig rotacional del 4t eix. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied El camí que es copia - - - The base geometry of this toolpath - La geometria base d'aquesta trajectòria - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controla la manera en què l'eina es retrau. Per defecte=G98 - - - The height where feed starts and height during retract tool when path is finished - L'alçària a què s'inicia l'avanç i l'alçària durant la retirada de l'eina quan el camí està finalitzat - Controls how tool retracts Default=G99 Controla la manera en què l'eina es retrau. Per defecte=G99 + + + The height where feed starts and height during retract tool when path is finished + L'alçària a què s'inicia l'avanç i l'alçària durant la retirada de l'eina quan el camí està finalitzat + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Desplaçament addicional que s'aplica a l'operació. La direcció és dependent de l'operació. + + + The library to use to generate the path + La biblioteca que s'utilitza per a generar el camí + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Marqueu «cert», si s'utilitza compensació de radi de l'eina de tall - - The library to use to generate the path - La biblioteca que s'utilitza per a generar el camí + + The base geometry of this toolpath + La geometria base d'aquesta trajectòria @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length L'angle de tall (%.2f) dóna com a resultat una longitud negativa de la punta de l'eina + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + L'angle de tall %.2f no és vàlid, ha de ser >0° i <=180° + No parent job found for operation. @@ -1440,6 +1440,16 @@ PathFace + + + Face + Cara + + + + Create a Facing Operation from a model or face + Crea una operació de generació de cares a partir d'un model o una cara + Generating toolpath with libarea offsets. @@ -1451,16 +1461,6 @@ Pick Start Point Trieu el punt d'inici - - - Face - Cara - - - - Create a Facing Operation from a model or face - Crea una operació de generació de cares a partir d'un model o una cara - PathGeom @@ -1535,6 +1535,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) La direcció dels talls circulars, en sentit horari (CW) o antihorari (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + La direcció dels talls circulars, en sentit horari o antihorari + Start cutting from the inside or outside @@ -1550,11 +1555,6 @@ Starting Radius Radi inicial - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - La direcció dels talls circulars, en sentit horari o antihorari - PathJob @@ -1991,11 +1991,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una PathProfile - - - Profile based on face or faces - Perfil basat en una o més cares - Profile @@ -2006,6 +2001,11 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Perfil basat en una o més cares + New property added to @@ -3104,16 +3104,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_Dressup - - - Dress-up - Aspecte - - - - Creates a Path Dess-up object from a selected path - Crea un objecte aspecte del camí a partir d'un camí seleccionat - Please select one path object @@ -3131,6 +3121,16 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Please select a Path object Seleccioneu un objecte camí + + + Dress-up + Aspecte + + + + Creates a Path Dess-up object from a selected path + Crea un objecte aspecte del camí a partir d'un camí seleccionat + Path_DressupAxisMap @@ -4027,6 +4027,12 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_SimpleCopy + + + Please select exactly one path object + + Seleccioneu exactament un objecte de tipus camí + Simple Copy @@ -4042,12 +4048,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Please select exactly one path object Seleccioneu exactament un objecte de tipus camí - - - Please select exactly one path object - - Seleccioneu exactament un objecte de tipus camí - Path_Simulator @@ -4077,6 +4077,11 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Path_ToolController + + + Tool Number to Load + Número d'eina per carregar + Add Tool Controller to the Job @@ -4087,11 +4092,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Add Tool Controller Afig un controlador d'eina - - - Tool Number to Load - Número d'eina per carregar - Path_ToolTable @@ -4175,11 +4175,46 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Save toolbit library Desa la llibreria d'eines de bits + + + Tooltable JSON (*.json) + Taula d'eines JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Taula d'eines HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Taula d'eines LinuxCNC (*.tbl) + Open tooltable Obri la taula d'eines + + + Save tooltable + Guarda la taula d'eines + + + + Add New Tool Table + Afig una taula d'eines nova + + + + Delete Selected Tool Table + Elimina la taula d'eines seleccionada + + + + Rename Selected Tool Table + Canvia el nom de la taula d'eines seleccionada + Tooltable editor @@ -4390,11 +4425,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Taula d'eines XML (*.xml);;Taula d'eines HeeksCAD (*.tooltable) - - - Save tooltable - Guarda la taula d'eines - Tooltable XML (*.xml) @@ -4410,36 +4440,6 @@ Si és necessari establir la profunditat final de forma manual, seleccioneu una Object doesn't have a tooltable property L'objecte no té la propietat de taula d'eines - - - Add New Tool Table - Afig una taula d'eines nova - - - - Delete Selected Tool Table - Elimina la taula d'eines seleccionada - - - - Rename Selected Tool Table - Canvia el nom de la taula d'eines seleccionada - - - - Tooltable JSON (*.json) - Taula d'eines JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Taula d'eines HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Taula d'eines LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_vi.qm b/src/Mod/Path/Gui/Resources/translations/Path_vi.qm index a72f80baf9..a1852c13ab 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_vi.qm and b/src/Mod/Path/Gui/Resources/translations/Path_vi.qm differ diff --git a/src/Mod/Path/Gui/Resources/translations/Path_vi.ts b/src/Mod/Path/Gui/Resources/translations/Path_vi.ts index 0d25dfd2e8..ff3b197156 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_vi.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_vi.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied Đường dẫn cần được sao chép - - - The base geometry of this toolpath - Hình dạng cơ sở của đường chạy dao này - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - Chiều cao nơi nguồn cấp dữ liệu bắt đầu và chiều cao trong công cụ rút lại khi đường dẫn hoàn tất - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + Chiều cao nơi nguồn cấp dữ liệu bắt đầu và chiều cao trong công cụ rút lại khi đường dẫn hoàn tất + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Offset thêm để áp dụng cho các thao tác. Hướng thao tác là phụ thuộc. + + + The library to use to generate the path + Thư viện sử dụng để tạo đường dẫn + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - Thư viện sử dụng để tạo đường dẫn + + The base geometry of this toolpath + Hình dạng cơ sở của đường chạy dao này @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Góc cắt cạnh (%.2f) dẫn đến độ dài đầu công cụ âm + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + Mặt + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Chọn điểm đầu - - - Face - Mặt - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Hướng cắt tròn, theo chiều kim đồng hồ (CW) hoặc ngược chiều kim đồng hồ (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - Hướng cắt tròn, theo chiều kim đồng hồ (CW) hoặc ngược chiều kim đồng hồ (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Chức năng xây dựng kết cấu bên ngoài - - - - Creates a Path Dess-up object from a selected path - Tạo một đối tượng xây dựng áo đường từ một đường dẫn đã chọn - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Vui lòng chọn đối tượng Đường dẫn + + + Dress-up + Chức năng xây dựng kết cấu bên ngoài + + + + Creates a Path Dess-up object from a selected path + Tạo một đối tượng xây dựng áo đường từ một đường dẫn đã chọn + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + Hãy chọn chính xác một đối tượng đường dẫn + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Vui lòng chọn chính xác một đối tượng đường dẫn - - - Please select exactly one path object - - Hãy chọn chính xác một đối tượng đường dẫn - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Số công cụ cần tải + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Thêm bộ điều khiển công cụ - - - Tool Number to Load - Số công cụ cần tải - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Công cụ JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + Bảng công cụ HeeksCAD (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + Bảng công cụ LinuxCNC (*.tbl) + Open tooltable Mở hộp công cụ + + + Save tooltable + Lưu hộp công cụ + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Hộp công cụ XML (*.xml);;Hộp công cụ HeeksCAD (*.tooltable) - - - Save tooltable - Lưu hộp công cụ - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Đối tượng không có thuộc tính của hộp công cụ - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Công cụ JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - Bảng công cụ HeeksCAD (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - Bảng công cụ LinuxCNC (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.qm b/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.qm index 7631cc2ebd..ba7b4c0d2b 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.qm and b/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.qm differ 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 b1f014a738..23a8d8aacf 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_zh-CN.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. 忽略指定深度以下的区域。 + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied 要复制的路径 - - - The base geometry of this toolpath - 此工具路径的基础几何形状 - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 控制工具如何缩回, 默认G98 - - - The height where feed starts and height during retract tool when path is finished - 进给开始的高度和当路径完成时撤回工具的高度 - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + 进给开始的高度和当路径完成时撤回工具的高度 + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. 要应用于操作的额外偏移量。方向与操作相关。 + + + The library to use to generate the path + 用于生成路径的库 + Start pocketing at center or boundary @@ -679,9 +679,9 @@ 如果使用刀具半径补偿, 则为 True - - The library to use to generate the path - 用于生成路径的库 + + The base geometry of this toolpath + 此工具路径的基础几何形状 @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - 无效的切口边缘角度 %.2f, 必须 > 0°且 <= 180° - Cutting Edge Angle (%.2f) results in negative tool tip length 切削角导致工具的提示长度为负值 + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + 无效的切口边缘角度 %.2f, 必须 > 0°且 <= 180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point 选取起点 - - - Face - - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) 圆形切削的方向, 顺时针 (CW), 或逆时针 (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + 圆切口的方向, 顺时针 (CW), 或逆时针 (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - 圆切口的方向, 顺时针 (CW), 或逆时针 (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - 修整 - - - - Creates a Path Dess-up object from a selected path - 从所选路径创建路径修整对象 - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object 请选择路径对象 + + + Dress-up + 修整 + + + + Creates a Path Dess-up object from a selected path + 从所选路径创建路径修整对象 + Path_DressupAxisMap @@ -4044,6 +4044,13 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + 请只选择一个路径对象 + + Simple Copy @@ -4059,13 +4066,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object 请仅选择一个路径对象 - - - Please select exactly one path object - - 请只选择一个路径对象 - - Path_Simulator @@ -4095,6 +4095,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + 要加载的工具编号 + Add Tool Controller to the Job @@ -4105,11 +4110,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller 添加工具控制器 - - - Tool Number to Load - 要加载的工具编号 - Path_ToolTable @@ -4193,11 +4193,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable json (*. json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (* tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (* tbl) + Open tooltable 打开 tooltable + + + Save tooltable + 保存 tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4408,11 +4443,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable xml (*. xml);;HeeksCAD tooltable (* tooltable) - - - Save tooltable - 保存 tooltable - Tooltable XML (*.xml) @@ -4428,36 +4458,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property 对象没有 tooltable 属性 - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable json (*. json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (* tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (* tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.qm b/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.qm index 96d06cceb8..bf158d6f4d 100644 Binary files a/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.qm and b/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.qm differ 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 c06b9e4820..af1747734a 100644 --- a/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts +++ b/src/Mod/Path/Gui/Resources/translations/Path_zh-TW.ts @@ -88,6 +88,11 @@ Ignore areas that proceed below specified depth. Ignore areas that proceed below specified depth. + + + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. + Depth used to identify waste areas to ignore. @@ -98,11 +103,6 @@ Cut through waste to depth at model edge, releasing the model. Cut through waste to depth at model edge, releasing the model. - - - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Planar: Flat, 3D surface scan. Rotational: 4th-axis rotational scan. - Avoid cutting the last 'N' faces in the Base Geometry list of selected faces. @@ -243,11 +243,6 @@ The path to be copied 要複製之路徑 - - - The base geometry of this toolpath - The base geometry of this toolpath - The tool controller that will be used to calculate the path @@ -423,16 +418,16 @@ Controls how tool retracts Default=G98 Controls how tool retracts Default=G98 - - - The height where feed starts and height during retract tool when path is finished - The height where feed starts and height during retract tool when path is finished - Controls how tool retracts Default=G99 Controls how tool retracts Default=G99 + + + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished + The height where feed starts and height during retract tool when path is finished while in a peck operation @@ -588,6 +583,11 @@ Extra offset to apply to the operation. Direction is operation dependent. Extra offset to apply to the operation. Direction is operation dependent. + + + The library to use to generate the path + 用於生成函軌跡的函式庫 + Start pocketing at center or boundary @@ -679,9 +679,9 @@ Make True, if using Cutter Radius Compensation - - The library to use to generate the path - 用於生成函軌跡的函式庫 + + The base geometry of this toolpath + The base geometry of this toolpath @@ -939,16 +939,16 @@ Invalid Cutting Edge Angle %.2f, must be >0° and <=180° Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - - - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Invalid Cutting Edge Angle %.2f, must be >0° and <=180° - Cutting Edge Angle (%.2f) results in negative tool tip length Cutting Edge Angle (%.2f) results in negative tool tip length + + + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + Invalid Cutting Edge Angle %.2f, must be >0° and <=180° + No parent job found for operation. @@ -1442,6 +1442,16 @@ PathFace + + + Face + + + + + Create a Facing Operation from a model or face + Create a Facing Operation from a model or face + Generating toolpath with libarea offsets. @@ -1454,16 +1464,6 @@ Pick Start Point Pick Start Point - - - Face - - - - - Create a Facing Operation from a model or face - Create a Facing Operation from a model or face - PathGeom @@ -1538,6 +1538,11 @@ The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) The direction of the circular cuts, ClockWise (CW), or CounterClockWise (CCW) + + + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) + Start cutting from the inside or outside @@ -1553,11 +1558,6 @@ Starting Radius Starting Radius - - - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - The direction of the circular cuts, clockwise (CW), or counter clockwise (CCW) - PathJob @@ -1995,11 +1995,6 @@ If it is necessary to set the FinalDepth manually please select a different oper PathProfile - - - Profile based on face or faces - Profile based on face or faces - Profile @@ -2010,6 +2005,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Profile entire model, selected face(s) or selected edge(s) Profile entire model, selected face(s) or selected edge(s) + + + Profile based on face or faces + Profile based on face or faces + New property added to @@ -3117,16 +3117,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_Dressup - - - Dress-up - Dress-up - - - - Creates a Path Dess-up object from a selected path - Creates a Path Dess-up object from a selected path - Please select one path object @@ -3146,6 +3136,16 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select a Path object Please select a Path object + + + Dress-up + Dress-up + + + + Creates a Path Dess-up object from a selected path + Creates a Path Dess-up object from a selected path + Path_DressupAxisMap @@ -4044,6 +4044,12 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_SimpleCopy + + + Please select exactly one path object + + 請僅確實選擇單一個路徑物件 + Simple Copy @@ -4059,12 +4065,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Please select exactly one path object Please select exactly one path object - - - Please select exactly one path object - - 請僅確實選擇單一個路徑物件 - Path_Simulator @@ -4094,6 +4094,11 @@ If it is necessary to set the FinalDepth manually please select a different oper Path_ToolController + + + Tool Number to Load + Tool Number to Load + Add Tool Controller to the Job @@ -4104,11 +4109,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Add Tool Controller Add Tool Controller - - - Tool Number to Load - Tool Number to Load - Path_ToolTable @@ -4192,11 +4192,46 @@ If it is necessary to set the FinalDepth manually please select a different oper Save toolbit library Save toolbit library + + + Tooltable JSON (*.json) + Tooltable JSON (*.json) + + + + HeeksCAD tooltable (*.tooltable) + HeeksCAD tooltable (*.tooltable) + + + + LinuxCNC tooltable (*.tbl) + LinuxCNC tooltable (*.tbl) + Open tooltable Open tooltable + + + Save tooltable + Save tooltable + + + + Add New Tool Table + Add New Tool Table + + + + Delete Selected Tool Table + Delete Selected Tool Table + + + + Rename Selected Tool Table + Rename Selected Tool Table + Tooltable editor @@ -4407,11 +4442,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) Tooltable XML (*.xml);;HeeksCAD tooltable (*.tooltable) - - - Save tooltable - Save tooltable - Tooltable XML (*.xml) @@ -4427,36 +4457,6 @@ If it is necessary to set the FinalDepth manually please select a different oper Object doesn't have a tooltable property Object doesn't have a tooltable property - - - Add New Tool Table - Add New Tool Table - - - - Delete Selected Tool Table - Delete Selected Tool Table - - - - Rename Selected Tool Table - Rename Selected Tool Table - - - - Tooltable JSON (*.json) - Tooltable JSON (*.json) - - - - HeeksCAD tooltable (*.tooltable) - HeeksCAD tooltable (*.tooltable) - - - - LinuxCNC tooltable (*.tbl) - LinuxCNC tooltable (*.tbl) - Tooltable XML (*.xml);;LinuxCNC tooltable (*.tbl) diff --git a/src/Mod/Path/Gui/TaskDlgPathCompound.cpp b/src/Mod/Path/Gui/TaskDlgPathCompound.cpp index 66d9d35bb3..b8e48cc13c 100644 --- a/src/Mod/Path/Gui/TaskDlgPathCompound.cpp +++ b/src/Mod/Path/Gui/TaskDlgPathCompound.cpp @@ -53,7 +53,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("Path_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/ViewProviderArea.cpp b/src/Mod/Path/Gui/ViewProviderArea.cpp index 9044b745f2..33af8945fd 100644 --- a/src/Mod/Path/Gui/ViewProviderArea.cpp +++ b/src/Mod/Path/Gui/ViewProviderArea.cpp @@ -35,7 +35,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderArea, PartGui::ViewProviderPlaneParametric) ViewProviderArea::ViewProviderArea() { - sPixmap = "Path-Area.svg"; + sPixmap = "Path_Area.svg"; } ViewProviderArea::~ViewProviderArea() @@ -119,7 +119,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderAreaView, PartGui::ViewProviderPlaneParamet ViewProviderAreaView::ViewProviderAreaView() { - sPixmap = "Path-Area-View.svg"; + sPixmap = "Path_Area_View.svg"; } ViewProviderAreaView::~ViewProviderAreaView() diff --git a/src/Mod/Path/Gui/ViewProviderPath.cpp b/src/Mod/Path/Gui/ViewProviderPath.cpp index d3c12a8a45..75793330e8 100644 --- a/src/Mod/Path/Gui/ViewProviderPath.cpp +++ b/src/Mod/Path/Gui/ViewProviderPath.cpp @@ -717,7 +717,7 @@ void ViewProviderPath::recomputeBoundingBox() QIcon ViewProviderPath::getIcon() const { - return Gui::BitmapFactory().pixmap("Path-Toolpath"); + return Gui::BitmapFactory().pixmap("Path_Toolpath"); } // Python object ----------------------------------------------------------------------- diff --git a/src/Mod/Path/Gui/ViewProviderPathCompound.cpp b/src/Mod/Path/Gui/ViewProviderPathCompound.cpp index 9782e6fe5a..ee908a97cd 100644 --- a/src/Mod/Path/Gui/ViewProviderPathCompound.cpp +++ b/src/Mod/Path/Gui/ViewProviderPathCompound.cpp @@ -82,7 +82,7 @@ void ViewProviderPathCompound::dropObject(App::DocumentObject* obj) QIcon ViewProviderPathCompound::getIcon() const { - return Gui::BitmapFactory().pixmap("Path-Compound"); + return Gui::BitmapFactory().pixmap("Path_Compound"); } // Python object ----------------------------------------------------------------------- diff --git a/src/Mod/Path/Gui/ViewProviderPathShape.cpp b/src/Mod/Path/Gui/ViewProviderPathShape.cpp index 3b3b83d954..c0cbecf4b1 100644 --- a/src/Mod/Path/Gui/ViewProviderPathShape.cpp +++ b/src/Mod/Path/Gui/ViewProviderPathShape.cpp @@ -39,7 +39,7 @@ PROPERTY_SOURCE(PathGui::ViewProviderPathShape, PathGui::ViewProviderPath) QIcon ViewProviderPathShape::getIcon() const { - return Gui::BitmapFactory().pixmap("Path-Shape"); + return Gui::BitmapFactory().pixmap("Path_Shape"); } std::vector ViewProviderPathShape::claimChildren(void) const diff --git a/src/Mod/Path/Images/Tools/drill.svg b/src/Mod/Path/Images/Tools/drill.svg index 2d149e62aa..5e4a0f177b 100644 --- a/src/Mod/Path/Images/Tools/drill.svg +++ b/src/Mod/Path/Images/Tools/drill.svg @@ -5,11 +5,35 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg8" version="1.1" viewBox="0 0 210 297" height="297mm" - width="210mm"> + width="210mm" + sodipodi:docname="drill.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + image/svg+xml - + - - + d="M 140,37.843316 V 277.00001" + style="fill:none;stroke:#000000;stroke-width:1.09352;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker8617);marker-end:url(#marker8709)" /> H D α + diff --git a/src/Mod/Path/Images/Tools/endmill.svg b/src/Mod/Path/Images/Tools/endmill.svg index a3a43ee4ba..3982fe1c12 100644 --- a/src/Mod/Path/Images/Tools/endmill.svg +++ b/src/Mod/Path/Images/Tools/endmill.svg @@ -5,11 +5,35 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg8" version="1.1" viewBox="0 0 210 297.00001" height="297mm" - width="210mm"> + width="210mm" + sodipodi:docname="endmill.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + image/svg+xml - + - - - - + d="m 118.43165,191.92376 v -39.1469" + style="fill:none;stroke:#000000;stroke-width:0.823854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="M 57.313954,-48.540717 H 116.35772" + style="fill:none;stroke:#000000;stroke-width:0.736568;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker1181);marker-end:url(#marker1185)" /> + d="M 54.177906,179.67926 H 117.83609" + style="fill:none;stroke:#000000;stroke-width:0.540802;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker1173);marker-end:url(#marker1177)" /> S D H + y="146.03827" + x="141.7326" /> + d="m 53.656636,194.48411 v -39.1469" + style="fill:none;stroke:#000000;stroke-width:0.823854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="M 131.26491,22.267499 V 170.59241" + style="fill:none;stroke:#000000;stroke-width:1.13395;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Lstart);marker-end:url(#Arrow2Lend)" /> + d="m 114.72832,19.499193 h 24.62222" + style="fill:none;stroke:#000000;stroke-width:0.823854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - + d="m 116.57691,171.93303 h 24.62222" + style="fill:none;stroke:#000000;stroke-width:0.823854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + diff --git a/src/Mod/Path/Images/Tools/reamer.svg b/src/Mod/Path/Images/Tools/reamer.svg new file mode 100644 index 0000000000..737600c528 --- /dev/null +++ b/src/Mod/Path/Images/Tools/reamer.svg @@ -0,0 +1,433 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + D + H + + + + + + + + diff --git a/src/Mod/Path/InitGui.py b/src/Mod/Path/InitGui.py index f40ff06ee6..d1feaff6a5 100644 --- a/src/Mod/Path/InitGui.py +++ b/src/Mod/Path/InitGui.py @@ -76,20 +76,13 @@ class PathWorkbench (Workbench): from PathScripts import PathToolBitCmd from PathScripts import PathToolBitLibraryCmd - if PathPreferences.experimentalFeaturesEnabled(): - toolbitcmdlist = PathToolBitCmd.CommandList + ["Separator"] + PathToolBitLibraryCmd.CommandList + ["Path_ToolController", "Separator"] - self.toolbitctxmenu = ["Path_ToolBitLibraryLoad", "Path_ToolController"] - else: - toolbitcmdlist = [] - self.toolbitctxmenu = [] import PathCommands PathGuiInit.Startup() # build commands list projcmdlist = ["Path_Job", "Path_Post"] - toolcmdlist = ["Path_Inspect", "Path_Simulator", - "Path_ToolLibraryEdit", "Path_SelectLoop", + toolcmdlist = ["Path_Inspect", "Path_Simulator", "Path_SelectLoop", "Path_OpActiveToggle"] prepcmdlist = ["Path_Fixture", "Path_Comment", "Path_Stop", "Path_Custom", "Path_Probe"] @@ -106,6 +99,17 @@ class PathWorkbench (Workbench): extracmdlist = [] # modcmdmore = ["Path_Hop",] # remotecmdlist = ["Path_Remote"] + specialcmdlist = [] + + + if PathPreferences.toolsReallyUseLegacyTools(): + toolcmdlist.append("Path_ToolLibraryEdit") + toolbitcmdlist = [] + else: + toolcmdlist.extend(PathToolBitLibraryCmd.BarList) + toolbitcmdlist = PathToolBitLibraryCmd.MenuList + + engravecmdgroup = ['Path_EngraveTools'] FreeCADGui.addCommand('Path_EngraveTools', PathCommandGroup(engravecmdlist, QtCore.QT_TRANSLATE_NOOP("Path", 'Engraving Operations'))) @@ -115,6 +119,7 @@ class PathWorkbench (Workbench): projcmdlist.append("Path_Sanity") prepcmdlist.append("Path_Shape") extracmdlist.extend(["Path_Area", "Path_Area_Workplane"]) + specialcmdlist.append('Path_Thread_Milling') try: import ocl # pylint: disable=unused-variable @@ -134,7 +139,7 @@ class PathWorkbench (Workbench): self.appendToolbar(QtCore.QT_TRANSLATE_NOOP("Path", "Helpful Tools"), extracmdlist) self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path")], projcmdlist + ["Path_ExportTemplate", "Separator"] + - toolbitcmdlist + toolcmdlist + ["Separator"] + twodopcmdlist + engravecmdlist + ["Separator"] + + toolcmdlist + toolbitcmdlist + ["Separator"] + twodopcmdlist + engravecmdlist + ["Separator"] + threedopcmdlist + ["Separator"]) self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path"), QtCore.QT_TRANSLATE_NOOP( "Path", "Path Dressup")], dressupcmdlist) @@ -142,6 +147,9 @@ class PathWorkbench (Workbench): "Path", "Supplemental Commands")], prepcmdlist) self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path"), QtCore.QT_TRANSLATE_NOOP( "Path", "Path Modification")], modcmdlist) + if specialcmdlist: + self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path"), QtCore.QT_TRANSLATE_NOOP( + "Path", "Specialty Operations")], specialcmdlist) if extracmdlist: self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path")], extracmdlist) diff --git a/src/Mod/Path/PathCommands.py b/src/Mod/Path/PathCommands.py index a8248984cd..e5a7d83d4c 100644 --- a/src/Mod/Path/PathCommands.py +++ b/src/Mod/Path/PathCommands.py @@ -52,7 +52,7 @@ class _CommandSelectLoop: self.active = False def GetResources(self): - return {'Pixmap': 'Path-SelectLoop', + return {'Pixmap': 'Path_SelectLoop', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_SelectLoop", "Finish Selecting Loop"), 'Accel': "P, L", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_SelectLoop", "Complete loop selection from two edges"), @@ -130,7 +130,7 @@ if FreeCAD.GuiUp: class _ToggleOperation: "command definition to toggle Operation Active state" def GetResources(self): - return {'Pixmap': 'Path-OpActive', + return {'Pixmap': 'Path_OpActive', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_OpActiveToggle", "Toggle the Active State of the Operation"), 'Accel': "P, X", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_OpActiveToggle", "Toggle the Active State of the Operation"), @@ -163,7 +163,7 @@ if FreeCAD.GuiUp: class _CopyOperation: "the Path Copy Operation command definition" def GetResources(self): - return {'Pixmap': 'Path-OpCopy', + return {'Pixmap': 'Path_OpCopy', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_OperationCopy", "Copy the operation in the job"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_OperationCopy", "Copy the operation in the job"), 'CmdType': "ForEdit"} diff --git a/src/Mod/Path/PathScripts/PathAdaptiveGui.py b/src/Mod/Path/PathScripts/PathAdaptiveGui.py index 837da2e902..25bc29f406 100644 --- a/src/Mod/Path/PathScripts/PathAdaptiveGui.py +++ b/src/Mod/Path/PathScripts/PathAdaptiveGui.py @@ -214,6 +214,10 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): obj.setEditorMode('Stopped', 2) # hide this property -Command = PathOpGui.SetupOperation('Adaptive', PathAdaptive.Create, TaskPanelOpPage, - 'Path-Adaptive', QtCore.QT_TRANSLATE_NOOP("PathAdaptive", "Adaptive"), - QtCore.QT_TRANSLATE_NOOP("PathPocket", "Adaptive clearing and profiling")) +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") + ) diff --git a/src/Mod/Path/PathScripts/PathAreaOp.py b/src/Mod/Path/PathScripts/PathAreaOp.py index c8a4686809..d68e4676dd 100644 --- a/src/Mod/Path/PathScripts/PathAreaOp.py +++ b/src/Mod/Path/PathScripts/PathAreaOp.py @@ -290,7 +290,6 @@ class ObjectOp(PathOp.ObjectOp): paths = [] heights = [i for i in self.depthparams] PathLog.debug('depths: {}'.format(heights)) - lstIdx = len(heights) - 1 for i in range(0, len(heights)): for baseShape in edgeList: hWire = Part.Wire(Part.__sortEdges__(baseShape.Edges)) @@ -323,14 +322,8 @@ class ObjectOp(PathOp.ObjectOp): paths.extend(pp.Commands) PathLog.debug('pp: {}, end vector: {}'.format(pp, end_vector)) - self.endVector = end_vector # pylint: disable=attribute-defined-outside-init - + self.endVector = end_vector simobj = None - if getsim and False: - areaParams['ToolRadius'] = self.radius - self.radius * .005 - area.setParams(**areaParams) - sec = area.makeSections(mode=0, project=False, heights=heights)[-1].getShape() - simobj = sec.extrude(FreeCAD.Vector(0, 0, baseobject.BoundBox.ZMax)) return paths, simobj @@ -356,6 +349,8 @@ class ObjectOp(PathOp.ObjectOp): self.useTempJobClones('Delete') # Clear temporary group and recreate for temp job clones self.rotStartDepth = None # pylint: disable=attribute-defined-outside-init + start_depth = obj.StartDepth.Value + final_depth = obj.FinalDepth.Value if obj.EnableRotation != 'Off': # Calculate operation heights based upon rotation radii opHeights = self.opDetermineRotationRadii(obj) @@ -364,28 +359,28 @@ class ObjectOp(PathOp.ObjectOp): # Set clearance and safe heights based upon rotation radii if obj.EnableRotation == 'A(x)': - strDep = self.xRotRad + start_depth = self.xRotRad elif obj.EnableRotation == 'B(y)': - strDep = self.yRotRad + start_depth = self.yRotRad else: - strDep = max(self.xRotRad, self.yRotRad) - finDep = -1 * strDep + start_depth = max(self.xRotRad, self.yRotRad) + final_depth = -1 * start_depth - self.rotStartDepth = strDep - obj.ClearanceHeight.Value = strDep + self.clrOfset - obj.SafeHeight.Value = strDep + self.safOfst + self.rotStartDepth = start_depth + # The next two lines are improper code. + # The ClearanceHeight and SafeHeight need to be set in opSetDefaultValues() method. + # They should not be redefined here, so this entire `if...:` statement needs relocated. + obj.ClearanceHeight.Value = start_depth + self.clrOfset + obj.SafeHeight.Value = start_depth + self.safOfst # Create visual axes when debugging. if PathLog.getLevel(PathLog.thisModule()) == 4: self.visualAxis() - else: - strDep = obj.StartDepth.Value - finDep = obj.FinalDepth.Value - # Set axial feed rates based upon horizontal feed rates - safeCircum = 2 * math.pi * obj.SafeHeight.Value - self.axialFeed = 360 / safeCircum * self.horizFeed # pylint: disable=attribute-defined-outside-init - self.axialRapid = 360 / safeCircum * self.horizRapid # pylint: disable=attribute-defined-outside-init + # Set axial feed rates based upon horizontal feed rates + safeCircum = 2 * math.pi * obj.SafeHeight.Value + self.axialFeed = 360 / safeCircum * self.horizFeed # pylint: disable=attribute-defined-outside-init + self.axialRapid = 360 / safeCircum * self.horizRapid # pylint: disable=attribute-defined-outside-init # Initiate depthparams and calculate operation heights for rotational operation self.depthparams = self._customDepthParams(obj, obj.StartDepth.Value, obj.FinalDepth.Value) @@ -403,8 +398,8 @@ class ObjectOp(PathOp.ObjectOp): for shp in aOS: if len(shp) == 2: (fc, iH) = shp - # fc, iH, sub, angle, axis, strtDep, finDep - tup = fc, iH, 'otherOp', 0.0, 'S', obj.StartDepth.Value, obj.FinalDepth.Value + # fc, iH, sub, angle, axis, strtDep, finDep + tup = fc, iH, 'otherOp', 0.0, 'S', start_depth, final_depth shapes.append(tup) else: shapes.append(shp) @@ -985,19 +980,43 @@ class ObjectOp(PathOp.ObjectOp): return False def isFaceUp(self, base, face): + '''isFaceUp(base, face) ... + When passed a base object and face shape, returns True if face is up. + This method is used to identify correct rotation of a model. + ''' + # verify face is normal to Z+- + (norm, surf) = self.getFaceNormAndSurf(face) + if round(abs(norm.z), 8) != 1.0 or round(abs(surf.z), 8) != 1.0: + PathLog.debug('isFaceUp - face not oriented normal to Z+-') + return False + up = face.extrude(FreeCAD.Vector(0.0, 0.0, 5.0)) dwn = face.extrude(FreeCAD.Vector(0.0, 0.0, -5.0)) upCmn = base.Shape.common(up) dwnCmn = base.Shape.common(dwn) + # Identify orientation based on volumes of common() results - if len(upCmn.Edges) > 0 and round(upCmn.Volume, 6) == 0.0: + if len(upCmn.Edges) > 0: + PathLog.debug('isFaceUp - HAS up edges\n') + if len(dwnCmn.Edges) > 0: + PathLog.debug('isFaceUp - up and dwn edges\n') + dVol = round(dwnCmn.Volume, 6) + uVol = round(upCmn.Volume, 6) + if uVol > dVol: + return False + return True + else: + if round(upCmn.Volume, 6) == 0.0: + return True + return False + elif len(dwnCmn.Edges) > 0: + PathLog.debug('isFaceUp - HAS dwn edges only\n') + dVol = round(dwnCmn.Volume, 6) + if dVol == 0.0: + return False return True - elif len(dwnCmn.Edges) > 0 and round(dwnCmn.Volume, 6) == 0.0: - return False - if (len(upCmn.Edges) > 0 and len(dwnCmn.Edges) > 0 and - round(dwnCmn.Volume, 6) > round(upCmn.Volume, 6)): - return True - return False + PathLog.debug('isFaceUp - exit True\n') + return True def _customDepthParams(self, obj, strDep, finDep): finish_step = obj.FinishDepth.Value if hasattr(obj, "FinishDepth") else 0.0 diff --git a/src/Mod/Path/PathScripts/PathArray.py b/src/Mod/Path/PathScripts/PathArray.py index c617e27d2b..e33ca1a33d 100644 --- a/src/Mod/Path/PathScripts/PathArray.py +++ b/src/Mod/Path/PathScripts/PathArray.py @@ -235,7 +235,7 @@ class ViewProviderArray: class CommandPathArray: def GetResources(self): - return {'Pixmap': 'Path-Array', + return {'Pixmap': 'Path_Array', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Array", "Array"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Array", "Creates an array from a selected path")} diff --git a/src/Mod/Path/PathScripts/PathCircularHoleBase.py b/src/Mod/Path/PathScripts/PathCircularHoleBase.py index 052c7eb1a5..c12d6c1075 100644 --- a/src/Mod/Path/PathScripts/PathCircularHoleBase.py +++ b/src/Mod/Path/PathScripts/PathCircularHoleBase.py @@ -19,12 +19,6 @@ # * USA * # * * # *************************************************************************** -# * * -# * Additional modifications and contributions beginning 2019 * -# * Focus: 4th-axis integration * -# * by Russell Johnson * -# * * -# *************************************************************************** import FreeCAD import PathScripts.PathLog as PathLog @@ -50,9 +44,6 @@ __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecadweb.org" __doc__ = "Base class an implementation for operations on circular holes." __contributors__ = "russ4262 (Russell Johnson)" -__created__ = "2017" -__scriptVersion__ = "2b" -__lastModified__ = "2020-02-13 17:11 CST" # Qt translation handling @@ -253,97 +244,69 @@ class ObjectOp(PathOp.ObjectOp): baseSubsTuples.append((base, subList, 0.0, 'A', stock)) else: for p in range(0, len(obj.Base)): - (base, subsList) = obj.Base[p] - for sub in subsList: - if self.isHoleEnabled(obj, base, sub): - shape = getattr(base.Shape, sub) - rtn = False - (norm, surf) = self.getFaceNormAndSurf(shape) - (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable - if rtn is True: - (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, subCount) - # Verify faces are correctly oriented - InverseAngle might be necessary - PathLog.debug("Verifying {} orientation: running faceRotationAnalysis() again.".format(sub)) - faceIA = getattr(clnBase.Shape, sub) - (norm, surf) = self.getFaceNormAndSurf(faceIA) - (rtn, praAngle, praAxis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable - if rtn is True: - msg = obj.Name + ":: " - msg += translate("Path", "{} might be misaligned after initial rotation.".format(sub)) + " " - if obj.AttemptInverseAngle is True and obj.InverseAngle is False: - (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) - msg += translate("Path", "Rotated to 'InverseAngle' to attempt access.") - else: - if len(subsList) == 1: - msg += translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") - else: - msg += translate("Path", "Consider transferring '{}' to independent operation.".format(sub)) - PathLog.warning(msg) - # title = translate("Path", 'Rotation Warning') - # self.guiMessage(title, msg, False) - else: - PathLog.debug("Face appears to be oriented correctly.") - - cmnt = "{}: {} @ {}; ".format(sub, axis, str(round(angle, 5))) - if cmnt not in obj.Comment: - obj.Comment += cmnt - - tup = clnBase, sub, tag, angle, axis, clnStock - allTuples.append(tup) - else: - if self.warnDisabledAxis(obj, axis, sub) is True: - pass # Skip drill feature due to access issue - else: - PathLog.debug(str(sub) + ": No rotation used") - axis = 'X' - angle = 0.0 - tag = base.Name + '_' + axis + str(angle).replace('.', '_') - stock = PathUtils.findParentJob(obj).Stock - tup = base, sub, tag, angle, axis, stock - allTuples.append(tup) - # Eif - # Eif - subCount += 1 - # Efor - # Efor - (Tags, Grps) = self.sortTuplesByIndex(allTuples, 2) # return (TagList, GroupList) - subList = [] - for o in range(0, len(Tags)): - PathLog.debug('hTag: {}'.format(Tags[o])) - subList = [] - for (base, sub, tag, angle, axis, stock) in Grps[o]: - subList.append(sub) - pair = base, subList, angle, axis, stock - baseSubsTuples.append(pair) - # Efor + (bst, at) = self.process_base_geometry_with_rotation(obj, p, subCount) + allTuples.extend(at) + baseSubsTuples.extend(bst) for base, subs, angle, axis, stock in baseSubsTuples: + # rotate shorter angle in opposite direction + if angle > 180: + angle -= 360 + elif angle < -180: + angle += 360 + + # Re-analyze rotated model for drillable holes + if obj.EnableRotation != 'Off': + rotated_features = self.findHoles(obj, base) + for sub in subs: + PathLog.debug('sub, angle, axis: {}, {}, {}'.format(sub, angle, axis)) if self.isHoleEnabled(obj, base, sub): pos = self.holePosition(obj, base, sub) if pos: - # Default is treat selection as 'Face' shape - holeBtm = base.Shape.getElement(sub).BoundBox.ZMin + # Identify face to which edge belongs + sub_shape = base.Shape.getElement(sub) + + # Default is to treat selection as 'Face' shape + holeBtm = sub_shape.BoundBox.ZMin + + if obj.EnableRotation != 'Off': + # Update Start and Final depths due to rotation, if auto defaults are active + parent_face = self._find_parent_face_of_edge(rotated_features, sub_shape) + if parent_face: + PathLog.debug('parent_face found') + holeBtm = parent_face.BoundBox.ZMin + if obj.OpStartDepth == obj.StartDepth: + obj.StartDepth.Value = parent_face.BoundBox.ZMax + PathLog.debug('new StartDepth: {}'.format(obj.StartDepth.Value)) + if obj.OpFinalDepth == obj.FinalDepth: + obj.FinalDepth.Value = holeBtm + PathLog.debug('new FinalDepth: {}'.format(holeBtm)) + else: + PathLog.debug('NO parent_face identified') + if base.Shape.getElement(sub).ShapeType == 'Edge': msg = translate("Path", "Verify Final Depth of holes based on edges. {} depth is: {} mm".format(sub, round(holeBtm, 4))) + " " msg += translate("Path", "Always select the bottom edge of the hole when using an edge.") PathLog.warning(msg) # Warn user if Final Depth set lower than bottom of hole - if finDep < holeBtm: + if obj.FinalDepth.Value < holeBtm: msg = translate("Path", "Final Depth setting is below the hole bottom for {}.".format(sub)) + ' ' msg += translate("Path", "{} depth is calculated at {} mm".format(sub, round(holeBtm, 4))) PathLog.warning(msg) holes.append({'x': pos.x, 'y': pos.y, 'r': self.holeDiameter(obj, base, sub), - 'angle': angle, 'axis': axis, 'trgtDep': finDep, + 'angle': angle, 'axis': axis, 'trgtDep': obj.FinalDepth.Value, 'stkTop': stock.Shape.BoundBox.ZMax}) + # haveLocations are populated from user-provided (x, y) coordinates + # provided by the user in the Base Locations tab of the Task Editor window if haveLocations(self, obj): for location in obj.Locations: # holes.append({'x': location.x, 'y': location.y, 'r': 0, 'angle': 0.0, 'axis': 'X', 'holeBtm': obj.FinalDepth.Value}) holes.append({'x': location.x, 'y': location.y, 'r': 0, - 'angle': 0.0, 'axis': 'X', 'trgtDep': finDep, + 'angle': 0.0, 'axis': 'X', 'trgtDep': obj.FinalDepth.Value, 'stkTop': PathUtils.findParentJob(obj).Stock.Shape.BoundBox.ZMax}) if len(holes) > 0: @@ -435,13 +398,8 @@ class ObjectOp(PathOp.ObjectOp): Determine rotational radii for 4th-axis rotations, for clearance/safe heights ''' parentJob = PathUtils.findParentJob(obj) - # bb = parentJob.Stock.Shape.BoundBox xlim = 0.0 ylim = 0.0 - zlim = 0.0 - xRotRad = 0.01 - yRotRad = 0.01 - zRotRad = 0.01 # Determine boundbox radius based upon xzy limits data if math.fabs(self.stockBB.ZMin) > math.fabs(self.stockBB.ZMax): @@ -463,10 +421,8 @@ class ObjectOp(PathOp.ObjectOp): else: xlim = self.stockBB.XMax - if ylim != 0.0: - xRotRad = math.sqrt(ylim**2 + zlim**2) - if xlim != 0.0: - yRotRad = math.sqrt(xlim**2 + zlim**2) + xRotRad = math.sqrt(ylim**2 + zlim**2) + yRotRad = math.sqrt(xlim**2 + zlim**2) zRotRad = math.sqrt(xlim**2 + ylim**2) clrOfst = parentJob.SetupSheet.ClearanceHeightOffset.Value @@ -552,9 +508,9 @@ class ObjectOp(PathOp.ObjectOp): if saX < 0.0: angle = angle + 180.0 elif saZ == 0.0: - if saY != 0.0: - angle = math.degrees(math.atan(saX / saY)) - orientation = "Y" + # if saY != 0.0: + angle = math.degrees(math.atan(saX / saY)) + orientation = "Y" if saX + nX == 0.0: angle = -1 * angle @@ -600,9 +556,8 @@ class ObjectOp(PathOp.ObjectOp): axis = 'Y' rtn = True - if rtn is True: + if rtn: self.rotateFlag = True # pylint: disable=attribute-defined-outside-init - # rtn = True if obj.ReverseDirection is True: if angle < 180.0: angle = angle + 180.0 @@ -616,8 +571,6 @@ class ObjectOp(PathOp.ObjectOp): else: praInfo += "\n - ... NO rotation triggered" - PathLog.debug("\n" + str(praInfo)) - return (rtn, angle, axis, praInfo) def guiMessage(self, title, msg, show=False): @@ -646,17 +599,19 @@ class ObjectOp(PathOp.ObjectOp): '''visualAxis() Create visual X & Y axis for use in orientation of rotational operations Triggered only for PathLog.debug''' + fcad = FreeCAD.ActiveDocument - if not FreeCAD.ActiveDocument.getObject('xAxCyl'): + if not fcad.getObject('xAxCyl'): xAx = 'xAxCyl' yAx = 'yAxCyl' - FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup", "visualAxis") + # zAx = 'zAxCyl' + visual_axis_obj = fcad.addObject("App::DocumentObjectGroup", "visualAxis") if FreeCAD.GuiUp: FreeCADGui.ActiveDocument.getObject('visualAxis').Visibility = False - vaGrp = FreeCAD.ActiveDocument.getObject("visualAxis") + vaGrp = fcad.getObject("visualAxis") - FreeCAD.ActiveDocument.addObject("Part::Cylinder", xAx) - cyl = FreeCAD.ActiveDocument.getObject(xAx) + fcad.addObject("Part::Cylinder", xAx) + cyl = fcad.getObject(xAx) cyl.Label = xAx cyl.Radius = self.xRotRad cyl.Height = 0.01 @@ -669,8 +624,8 @@ class ObjectOp(PathOp.ObjectOp): cylGui.Visibility = False vaGrp.addObject(cyl) - FreeCAD.ActiveDocument.addObject("Part::Cylinder", yAx) - cyl = FreeCAD.ActiveDocument.getObject(yAx) + fcad.addObject("Part::Cylinder", yAx) + cyl = fcad.getObject(yAx) cyl.Label = yAx cyl.Radius = self.yRotRad cyl.Height = 0.01 @@ -682,28 +637,33 @@ class ObjectOp(PathOp.ObjectOp): cylGui.Transparency = 85 cylGui.Visibility = False vaGrp.addObject(cyl) + visual_axis_obj.purgeTouched() def useTempJobClones(self, cloneName): '''useTempJobClones(cloneName) Manage use of temporary model clones for rotational operation calculations. Clones are stored in 'rotJobClones' group.''' - if FreeCAD.ActiveDocument.getObject('rotJobClones'): + fcad = FreeCAD.ActiveDocument + + if fcad.getObject('rotJobClones'): if cloneName == 'Start': if PathLog.getLevel(PathLog.thisModule()) < 4: - for cln in FreeCAD.ActiveDocument.getObject('rotJobClones').Group: - FreeCAD.ActiveDocument.removeObject(cln.Name) + for cln in fcad.getObject('rotJobClones').Group: + fcad.removeObject(cln.Name) elif cloneName == 'Delete': if PathLog.getLevel(PathLog.thisModule()) < 4: - for cln in FreeCAD.ActiveDocument.getObject('rotJobClones').Group: - FreeCAD.ActiveDocument.removeObject(cln.Name) - FreeCAD.ActiveDocument.removeObject('rotJobClones') + for cln in fcad.getObject('rotJobClones').Group: + fcad.removeObject(cln.Name) + fcad.removeObject('rotJobClones') + else: + fcad.getObject('rotJobClones').purgeTouched() else: - FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup", "rotJobClones") + fcad.addObject("App::DocumentObjectGroup", "rotJobClones") if FreeCAD.GuiUp: FreeCADGui.ActiveDocument.getObject('rotJobClones').Visibility = False if cloneName != 'Start' and cloneName != 'Delete': - FreeCAD.ActiveDocument.getObject('rotJobClones').addObject(FreeCAD.ActiveDocument.getObject(cloneName)) + fcad.getObject('rotJobClones').addObject(fcad.getObject(cloneName)) if FreeCAD.GuiUp: FreeCADGui.ActiveDocument.getObject(cloneName).Visibility = False @@ -712,6 +672,7 @@ class ObjectOp(PathOp.ObjectOp): Method called to create a temporary clone of the base and parent Job stock. Clones are destroyed after usage for calculations related to rotational operations.''' # Create a temporary clone and stock of model for rotational use. + fcad = FreeCAD.ActiveDocument rndAng = round(angle, 8) if rndAng < 0.0: # neg sign is converted to underscore in clone name creation. tag = axis + '_' + axis + '_' + str(math.fabs(rndAng)).replace('.', '_') @@ -722,21 +683,21 @@ class ObjectOp(PathOp.ObjectOp): if clnNm not in self.cloneNames: self.cloneNames.append(clnNm) self.cloneNames.append(stckClnNm) - if FreeCAD.ActiveDocument.getObject(clnNm): - FreeCAD.ActiveDocument.getObject(clnNm).Shape = base.Shape + if fcad.getObject(clnNm): + fcad.getObject(clnNm).Shape = base.Shape else: - FreeCAD.ActiveDocument.addObject('Part::Feature', clnNm).Shape = base.Shape + fcad.addObject('Part::Feature', clnNm).Shape = base.Shape self.useTempJobClones(clnNm) - if FreeCAD.ActiveDocument.getObject(stckClnNm): - FreeCAD.ActiveDocument.getObject(stckClnNm).Shape = PathUtils.findParentJob(obj).Stock.Shape + if fcad.getObject(stckClnNm): + fcad.getObject(stckClnNm).Shape = PathUtils.findParentJob(obj).Stock.Shape else: - FreeCAD.ActiveDocument.addObject('Part::Feature', stckClnNm).Shape = PathUtils.findParentJob(obj).Stock.Shape + fcad.addObject('Part::Feature', stckClnNm).Shape = PathUtils.findParentJob(obj).Stock.Shape self.useTempJobClones(stckClnNm) if FreeCAD.GuiUp: FreeCADGui.ActiveDocument.getObject(stckClnNm).Transparency = 90 FreeCADGui.ActiveDocument.getObject(clnNm).ShapeColor = (1.000, 0.667, 0.000) - clnBase = FreeCAD.ActiveDocument.getObject(clnNm) - clnStock = FreeCAD.ActiveDocument.getObject(stckClnNm) + clnBase = fcad.getObject(clnNm) + clnStock = fcad.getObject(stckClnNm) tag = base.Name + '_' + tag return (clnBase, clnStock, tag) @@ -747,10 +708,6 @@ class ObjectOp(PathOp.ObjectOp): norm = FreeCAD.Vector(0.0, 0.0, 0.0) surf = FreeCAD.Vector(0.0, 0.0, 0.0) - if face.ShapeType == 'Edge': - edgToFace = Part.Face(Part.Wire(Part.__sortEdges__([face]))) - face = edgToFace - if hasattr(face, 'normalAt'): n = face.normalAt(0, 0) elif hasattr(face, 'normal'): @@ -759,7 +716,6 @@ class ObjectOp(PathOp.ObjectOp): s = face.Surface.Axis else: s = n - norm.x = n.x norm.y = n.y norm.z = n.z @@ -778,11 +734,6 @@ class ObjectOp(PathOp.ObjectOp): elif axis == 'Y': vect = FreeCAD.Vector(0, 1, 0) - if obj.InverseAngle is True: - angle = -1 * angle - if math.fabs(angle) == 0.0: - angle = 0.0 - # Create a temporary clone of model for rotational use. (clnBase, clnStock, tag) = self.cloneBaseAndStock(obj, base, angle, axis, subCount) @@ -808,10 +759,29 @@ class ObjectOp(PathOp.ObjectOp): clnStock.purgeTouched() # Update property and angle values obj.InverseAngle = True - obj.AttemptInverseAngle = False + # obj.AttemptInverseAngle = False angle = -1 * angle + + PathLog.debug(translate("Path", "Rotated to inverse angle.")) return (clnBase, clnStock, angle) + def calculateStartFinalDepths(self, obj, shape, stock): + '''calculateStartFinalDepths(obj, shape, stock) + Calculate correct start and final depths for the shape(face) object provided.''' + finDep = max(obj.FinalDepth.Value, shape.BoundBox.ZMin) + stockTop = stock.Shape.BoundBox.ZMax + if obj.EnableRotation == 'Off': + strDep = obj.StartDepth.Value + if strDep <= finDep: + strDep = stockTop + else: + strDep = min(obj.StartDepth.Value, stockTop) + if strDep <= finDep: + strDep = stockTop + msg = translate('Path', "Start depth <= face depth.\nIncreased to stock top.") + PathLog.error(msg) + return (strDep, finDep) + def sortTuplesByIndex(self, TupleList, tagIdx): '''sortTuplesByIndex(TupleList, tagIdx) sort list of tuples based on tag index provided @@ -852,3 +822,183 @@ class ObjectOp(PathOp.ObjectOp): return True else: return False + + def isFaceUp(self, base, face): + '''isFaceUp(base, face) ... + When passed a base object and face shape, returns True if face is up. + This method is used to identify correct rotation of a model. + ''' + # verify face is normal to Z+- + (norm, surf) = self.getFaceNormAndSurf(face) + if round(abs(norm.z), 8) != 1.0 or round(abs(surf.z), 8) != 1.0: + PathLog.debug('isFaceUp - face not oriented normal to Z+-') + return False + + curve = face.OuterWire.Edges[0].Curve + if curve.TypeId == "Part::GeomCircle": + center = curve.Center + radius = curve.Radius * 1. + face = Part.Face(Part.Wire(Part.makeCircle(radius, center))) + + up = face.extrude(FreeCAD.Vector(0.0, 0.0, 5.0)) + dwn = face.extrude(FreeCAD.Vector(0.0, 0.0, -5.0)) + upCmn = base.Shape.common(up) + dwnCmn = base.Shape.common(dwn) + + # Identify orientation based on volumes of common() results + if len(upCmn.Edges) > 0: + PathLog.debug('isFaceUp - HAS up edges\n') + if len(dwnCmn.Edges) > 0: + PathLog.debug('isFaceUp - up and dwn edges\n') + dVol = round(dwnCmn.Volume, 6) + uVol = round(upCmn.Volume, 6) + if uVol > dVol: + return False + return True + else: + if round(upCmn.Volume, 6) == 0.0: + return True + return False + elif len(dwnCmn.Edges) > 0: + PathLog.debug('isFaceUp - HAS dwn edges only\n') + dVol = round(dwnCmn.Volume, 6) + if dVol == 0.0: + return False + return True + + PathLog.debug('isFaceUp - exit True') + return True + + def process_base_geometry_with_rotation(self, obj, p, subCount): + '''process_base_geometry_with_rotation(obj, p, subCount)... + This method is the control method for analyzing the selected features, + determining their rotational needs, and creating clones as needed + for rotational access for the pocketing operation. + + Requires the object, obj.Base index (p), and subCount reference arguments. + Returns two lists of tuples for continued processing into paths. + ''' + baseSubsTuples = [] + allTuples = [] + + (base, subsList) = obj.Base[p] + + PathLog.debug(translate('Path', "Processing subs individually ...")) + for sub in subsList: + subCount += 1 + tup = self.process_nonloop_sublist(obj, base, sub) + if tup: + allTuples.append(tup) + baseSubsTuples.append(tup) + + return (baseSubsTuples, allTuples) + + def process_nonloop_sublist(self, obj, base, sub): + '''process_nonloop_sublist(obj, sub)... + Process sublist with non-looped set of features when rotation is enabled. + ''' + + rtn = False + face = base.Shape.getElement(sub) + + if sub[:4] != 'Face': + if face.ShapeType == 'Edge': + edgToFace = Part.Face(Part.Wire(Part.__sortEdges__([face]))) + face = edgToFace + else: + ignoreSub = base.Name + '.' + sub + PathLog.error(translate('Path', "Selected feature is not a Face. Ignoring: {}".format(ignoreSub))) + return False + + (norm, surf) = self.getFaceNormAndSurf(face) + (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable + PathLog.debug("initial rotational analysis: {}".format(praInfo)) + + clnBase = base + faceIA = clnBase.Shape.getElement(sub) + if faceIA.ShapeType == 'Edge': + edgToFace = Part.Face(Part.Wire(Part.__sortEdges__([faceIA]))) + faceIA = edgToFace + + if rtn is True: + faceNum = sub.replace('Face', '') + PathLog.debug("initial applyRotationalAnalysis") + (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, faceNum) + # Verify faces are correctly oriented - InverseAngle might be necessary + faceIA = clnBase.Shape.getElement(sub) + if faceIA.ShapeType == 'Edge': + edgToFace = Part.Face(Part.Wire(Part.__sortEdges__([faceIA]))) + faceIA = edgToFace + + (norm, surf) = self.getFaceNormAndSurf(faceIA) + (rtn, praAngle, praAxis, praInfo2) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable + PathLog.debug("follow-up rotational analysis: {}".format(praInfo2)) + + isFaceUp = self.isFaceUp(clnBase, faceIA) + PathLog.debug('... initial isFaceUp: {}'.format(isFaceUp)) + + if isFaceUp: + rtn = False + PathLog.debug('returning analysis: {}, {}'.format(praAngle, praAxis)) + return (clnBase, [sub], angle, axis, clnStock) + + if round(abs(praAngle), 8) == 180.0: + rtn = False + if not isFaceUp: + PathLog.debug('initial isFaceUp is False') + angle = 0.0 + # Eif + + if rtn: + # initial rotation failed, attempt inverse rotation if user requests it + PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 2') + if obj.AttemptInverseAngle: + PathLog.debug(translate("Path", "Applying inverse angle automatically.")) + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + if obj.InverseAngle: + PathLog.debug(translate("Path", "Applying inverse angle manually.")) + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + msg = translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") + PathLog.warning(msg) + + faceIA = clnBase.Shape.getElement(sub) + if faceIA.ShapeType == 'Edge': + edgToFace = Part.Face(Part.Wire(Part.__sortEdges__([faceIA]))) + faceIA = edgToFace + if not self.isFaceUp(clnBase, faceIA): + angle += 180.0 + + # Normalize rotation angle + if angle < 0.0: + angle += 360.0 + elif angle > 360.0: + angle -= 360.0 + + return (clnBase, [sub], angle, axis, clnStock) + + if not self.warnDisabledAxis(obj, axis): + PathLog.debug(str(sub) + ": No rotation used") + axis = 'X' + angle = 0.0 + stock = PathUtils.findParentJob(obj).Stock + return (base, [sub], angle, axis, stock) + + def _find_parent_face_of_edge(self, rotated_features, test_shape): + '''_find_parent_face_of_edge(rotated_features, test_shape)... + Compare test_shape with each within rotated_features to identify + and return the parent face of the test_shape, if it exists.''' + for (base, sub) in rotated_features: + sub_shape = base.Shape.getElement(sub) + if test_shape.isSame(sub_shape): + return sub_shape + elif test_shape.isEqual(sub_shape): + return sub_shape + else: + for e in sub_shape.Edges: + if test_shape.isSame(e): + return sub_shape + elif test_shape.isEqual(e): + return sub_shape + return False diff --git a/src/Mod/Path/PathScripts/PathCollision.py b/src/Mod/Path/PathScripts/PathCollision.py index d5f6b25d16..260dbd2b48 100644 --- a/src/Mod/Path/PathScripts/PathCollision.py +++ b/src/Mod/Path/PathScripts/PathCollision.py @@ -66,7 +66,7 @@ class _ViewProviderCollisionSim: return True def getIcon(self): - return ":/icons/Path-Contour.svg" + return ":/icons/Path_Contour.svg" def __getstate__(self): return None diff --git a/src/Mod/Path/PathScripts/PathComment.py b/src/Mod/Path/PathScripts/PathComment.py index 2340050a4b..d949abf97d 100644 --- a/src/Mod/Path/PathScripts/PathComment.py +++ b/src/Mod/Path/PathScripts/PathComment.py @@ -78,7 +78,7 @@ class _ViewProviderComment: return None def getIcon(self): # optional - return ":/icons/Path-Comment.svg" + return ":/icons/Path_Comment.svg" def onChanged(self, vobj, prop): # optional # pylint: disable=unused-argument @@ -97,7 +97,7 @@ class _ViewProviderComment: class CommandPathComment: def GetResources(self): - return {'Pixmap': 'Path-Comment', + return {'Pixmap': 'Path_Comment', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Comment", "Comment"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Comment", "Add a Comment to your CNC program")} diff --git a/src/Mod/Path/PathScripts/PathCopy.py b/src/Mod/Path/PathScripts/PathCopy.py index 7ec152a1ad..fb20a73ebf 100644 --- a/src/Mod/Path/PathScripts/PathCopy.py +++ b/src/Mod/Path/PathScripts/PathCopy.py @@ -63,7 +63,7 @@ class ViewProviderPathCopy: return def getIcon(self): - return ":/icons/Path-Copy.svg" + return ":/icons/Path_Copy.svg" def __getstate__(self): return None @@ -75,7 +75,7 @@ class ViewProviderPathCopy: class CommandPathCopy: def GetResources(self): - return {'Pixmap': 'Path-Copy', + return {'Pixmap': 'Path_Copy', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Copy", "Copy"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Copy", "Creates a linked copy of another path")} diff --git a/src/Mod/Path/PathScripts/PathCustomGui.py b/src/Mod/Path/PathScripts/PathCustomGui.py index a859a8e067..987bcfb50e 100644 --- a/src/Mod/Path/PathScripts/PathCustomGui.py +++ b/src/Mod/Path/PathScripts/PathCustomGui.py @@ -76,9 +76,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Custom', PathCustom.Create, TaskPanelOpPage, - 'Path-Custom', - QtCore.QT_TRANSLATE_NOOP("Custom", "Custom"), - QtCore.QT_TRANSLATE_NOOP("Custom", "Create custom gcode snippet"), + 'Path_Custom', + QtCore.QT_TRANSLATE_NOOP("Path_Custom", "Custom"), + QtCore.QT_TRANSLATE_NOOP("Path_Custom", "Create custom gcode snippet"), PathCustom.SetupProperties) FreeCAD.Console.PrintLog("Loading PathCustomGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathDeburrGui.py b/src/Mod/Path/PathScripts/PathDeburrGui.py index dceac18676..1b0a0da690 100644 --- a/src/Mod/Path/PathScripts/PathDeburrGui.py +++ b/src/Mod/Path/PathScripts/PathDeburrGui.py @@ -135,7 +135,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Deburr', PathDeburr.Create, TaskPanelOpPage, - 'Path-Deburr', + 'Path_Deburr', QtCore.QT_TRANSLATE_NOOP("PathDeburr", "Deburr"), QtCore.QT_TRANSLATE_NOOP("PathDeburr", "Creates a Deburr Path along Edges or around Faces"), PathDeburr.SetupProperties) diff --git a/src/Mod/Path/PathScripts/PathDressupAxisMap.py b/src/Mod/Path/PathScripts/PathDressupAxisMap.py index 8d1aa89781..085d2b3b81 100644 --- a/src/Mod/Path/PathScripts/PathDressupAxisMap.py +++ b/src/Mod/Path/PathScripts/PathDressupAxisMap.py @@ -241,7 +241,7 @@ class CommandPathDressup: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupAxisMap", "Axis Map Dress-up"), 'Accel': "", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupAxisMap", "Remap one axis to another.")} diff --git a/src/Mod/Path/PathScripts/PathDressupDogbone.py b/src/Mod/Path/PathScripts/PathDressupDogbone.py index 629bde66fe..25d0fdabc7 100644 --- a/src/Mod/Path/PathScripts/PathDressupDogbone.py +++ b/src/Mod/Path/PathScripts/PathDressupDogbone.py @@ -1078,7 +1078,7 @@ class CommandDressupDogbone: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupDogbone", "Dogbone Dress-up"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupDogbone", "Creates a Dogbone Dress-up object from a selected path")} diff --git a/src/Mod/Path/PathScripts/PathDressupDragknife.py b/src/Mod/Path/PathScripts/PathDressupDragknife.py index 248b597527..8b0fea27c7 100644 --- a/src/Mod/Path/PathScripts/PathDressupDragknife.py +++ b/src/Mod/Path/PathScripts/PathDressupDragknife.py @@ -537,7 +537,7 @@ class CommandDressupDragknife: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupDragKnife", "DragKnife Dress-up"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupDragKnife", "Modifies a path to add dragknife corner actions")} diff --git a/src/Mod/Path/PathScripts/PathDressupLeadInOut.py b/src/Mod/Path/PathScripts/PathDressupLeadInOut.py index bd91cb2f8f..6f7c161db1 100644 --- a/src/Mod/Path/PathScripts/PathDressupLeadInOut.py +++ b/src/Mod/Path/PathScripts/PathDressupLeadInOut.py @@ -508,7 +508,7 @@ class CommandPathDressupLeadInOut: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "LeadInOut Dressup"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupLeadInOut", "Creates a Cutter Radius Compensation G41/G42 Entry Dressup object from a selected path")} diff --git a/src/Mod/Path/PathScripts/PathDressupPathBoundaryGui.py b/src/Mod/Path/PathScripts/PathDressupPathBoundaryGui.py index 806bb21dc7..34cffb1d68 100644 --- a/src/Mod/Path/PathScripts/PathDressupPathBoundaryGui.py +++ b/src/Mod/Path/PathScripts/PathDressupPathBoundaryGui.py @@ -238,7 +238,7 @@ class CommandPathDressupPathBoundary: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP('Path_DressupPathBoundary', 'Boundary Dress-up'), 'ToolTip': QtCore.QT_TRANSLATE_NOOP('Path_DressupPathBoundary', 'Creates a Path Boundary Dress-up object from a selected path')} diff --git a/src/Mod/Path/PathScripts/PathDressupRampEntry.py b/src/Mod/Path/PathScripts/PathDressupRampEntry.py index 76fae738f8..9fa7d0c040 100644 --- a/src/Mod/Path/PathScripts/PathDressupRampEntry.py +++ b/src/Mod/Path/PathScripts/PathDressupRampEntry.py @@ -679,7 +679,7 @@ class CommandPathDressupRampEntry: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupRampEntry", "RampEntry Dress-up"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupRampEntry", "Creates a Ramp Entry Dress-up object from a selected path")} diff --git a/src/Mod/Path/PathScripts/PathDressupTagGui.py b/src/Mod/Path/PathScripts/PathDressupTagGui.py index daca299e41..0a6c01dc6b 100644 --- a/src/Mod/Path/PathScripts/PathDressupTagGui.py +++ b/src/Mod/Path/PathScripts/PathDressupTagGui.py @@ -535,7 +535,7 @@ class CommandPathDressupTag: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP('Path_DressupTag', 'Tag Dress-up'), 'ToolTip': QtCore.QT_TRANSLATE_NOOP('Path_DressupTag', 'Creates a Tag Dress-up object from a selected path')} diff --git a/src/Mod/Path/PathScripts/PathDressupZCorrect.py b/src/Mod/Path/PathScripts/PathDressupZCorrect.py index 9f585a58fe..347ad0a229 100644 --- a/src/Mod/Path/PathScripts/PathDressupZCorrect.py +++ b/src/Mod/Path/PathScripts/PathDressupZCorrect.py @@ -300,7 +300,7 @@ class ViewProviderDressup: class CommandPathDressup: def GetResources(self): - return {'Pixmap': 'Path-Dressup', + return {'Pixmap': 'Path_Dressup', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_DressupZCorrect", "Z Depth Correction Dress-up"), 'Accel': "", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_DressupZCorrect", "Use Probe Map to correct Z depth")} diff --git a/src/Mod/Path/PathScripts/PathDrilling.py b/src/Mod/Path/PathScripts/PathDrilling.py index dcd95705f7..3be3a859cb 100644 --- a/src/Mod/Path/PathScripts/PathDrilling.py +++ b/src/Mod/Path/PathScripts/PathDrilling.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # *************************************************************************** # * Copyright (c) 2014 Yorik van Havre * -# * Copyright (c) 2020 russ4262 (Russell Johnson) * # * Copyright (c) 2020 Schildkroet * # * * # * This program is free software; you can redistribute it and/or modify * @@ -21,12 +20,6 @@ # * USA * # * * # *************************************************************************** -# * * -# * Additional modifications and contributions beginning 2019 * -# * Focus: 4th-axis integration * -# * by Russell Johnson * -# * * -# *************************************************************************** from __future__ import print_function @@ -43,6 +36,8 @@ __title__ = "Path Drilling Operation" __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecadweb.org" __doc__ = "Path Drilling operation." +__contributors__ = "russ4262 (Russell Johnson)" + PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) # PathLog.trackModule(PathLog.thisModule()) @@ -124,7 +119,6 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): params = {} params['X'] = p['x'] params['Y'] = p['y'] - params.update(cmdParams) if obj.EnableRotation != 'Off': angle = p['angle'] axis = p['axis'] @@ -153,7 +147,14 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): # Prepare for drilling cycle self.commandlist.append(Path.Command('G0', {axisOfRot: angle, 'F': self.axialRapid})) self.commandlist.append(Path.Command('G0', {'X': p['x'], 'Y': p['y'], 'F': self.horizRapid})) - self.commandlist.append(Path.Command('G1', {'Z': p['stkTop'], 'F': self.vertFeed})) + self.commandlist.append(Path.Command('G1', {'Z': obj.StartDepth.Value, 'F': self.vertFeed})) + + # Update retract height due to rotation + self.opSetDefaultRetractHeight(obj) + cmdParams['R'] = obj.RetractHeight.Value + + # Update changes to parameters + params.update(cmdParams) # Perform canned drilling cycle self.commandlist.append(Path.Command(cmd, params)) @@ -171,23 +172,34 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): self.commandlist.append(Path.Command('G0', {'Z': obj.SafeHeight.Value, 'F': self.vertRapid})) self.commandlist.append(Path.Command('G0', {lastAxis: 0.0, 'F': self.axialRapid})) - def opSetDefaultValues(self, obj, job): - '''opSetDefaultValues(obj, job) ... set default value for RetractHeight''' + def opSetDefaultRetractHeight(self, obj, job=None): + '''opSetDefaultRetractHeight(obj, job) ... set default Retract Height value''' - parentJob = PathUtils.findParentJob(obj) + has_job = True + if not job: + job = PathUtils.findParentJob(obj) + has_job = False - if hasattr(parentJob.SetupSheet, 'RetractHeight'): - obj.RetractHeight = parentJob.SetupSheet.RetractHeight + if hasattr(job.SetupSheet, 'RetractHeight'): + obj.RetractHeight = job.SetupSheet.RetractHeight elif self.applyExpression(obj, 'RetractHeight', 'OpStartDepth+1mm'): - obj.RetractHeight = 10 + if has_job: + obj.RetractHeight = 10 + else: + obj.RetractHeight.Value = obj.StartDepth.Value + 1.0 - if hasattr(parentJob.SetupSheet, 'PeckDepth'): - obj.PeckDepth = parentJob.SetupSheet.PeckDepth + def opSetDefaultValues(self, obj, job): + '''opSetDefaultValues(obj, job) ... Set default property values''' + + self.opSetDefaultRetractHeight(obj, job) + + if hasattr(job.SetupSheet, 'PeckDepth'): + obj.PeckDepth = job.SetupSheet.PeckDepth elif self.applyExpression(obj, 'PeckDepth', 'OpToolDiameter*0.75'): obj.PeckDepth = 1 - if hasattr(parentJob.SetupSheet, 'DwellTime'): - obj.DwellTime = parentJob.SetupSheet.DwellTime + if hasattr(job.SetupSheet, 'DwellTime'): + obj.DwellTime = job.SetupSheet.DwellTime else: obj.DwellTime = 1 @@ -198,8 +210,8 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): # Initial setting for EnableRotation is taken from Job SetupSheet # User may override on per-operation basis as needed. - if hasattr(parentJob.SetupSheet, 'SetupEnableRotation'): - obj.EnableRotation = parentJob.SetupSheet.SetupEnableRotation + if hasattr(job.SetupSheet, 'SetupEnableRotation'): + obj.EnableRotation = job.SetupSheet.SetupEnableRotation else: obj.EnableRotation = 'Off' diff --git a/src/Mod/Path/PathScripts/PathDrillingGui.py b/src/Mod/Path/PathScripts/PathDrillingGui.py index 3a5663a023..534d44e1a8 100644 --- a/src/Mod/Path/PathScripts/PathDrillingGui.py +++ b/src/Mod/Path/PathScripts/PathDrillingGui.py @@ -148,9 +148,9 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Drilling', PathDrilling.Create, TaskPanelOpPage, - 'Path-Drilling', - QtCore.QT_TRANSLATE_NOOP("PathDrilling", "Drilling"), - QtCore.QT_TRANSLATE_NOOP("PathDrilling", "Creates a Path Drilling object from a features of a base object"), + 'Path_Drilling', + QtCore.QT_TRANSLATE_NOOP("Path_Drilling", "Drilling"), + QtCore.QT_TRANSLATE_NOOP("Path_Drilling", "Creates a Path Drilling object from a features of a base object"), PathDrilling.SetupProperties) FreeCAD.Console.PrintLog("Loading PathDrillingGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathEngraveBase.py b/src/Mod/Path/PathScripts/PathEngraveBase.py index 4fdbc18a6b..abaf413dc8 100644 --- a/src/Mod/Path/PathScripts/PathEngraveBase.py +++ b/src/Mod/Path/PathScripts/PathEngraveBase.py @@ -30,6 +30,7 @@ import copy # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader DraftGeomUtils = LazyLoader('DraftGeomUtils', globals(), 'DraftGeomUtils') +Part = LazyLoader('Part', globals(), 'Part') from PySide import QtCore @@ -69,9 +70,11 @@ class ObjectOp(PathOp.ObjectOp): # reorder the wire if hasattr(obj, 'StartVertex'): - offset = DraftGeomUtils.rebaseWire(offset, obj.StartVertex) + start_idx = obj.StartVertex edges = copy.copy(PathOpTools.orientWire(offset, forward).Edges) + edges = Part.sortEdges(edges)[0]; + last = None for z in zValues: diff --git a/src/Mod/Path/PathScripts/PathEngraveGui.py b/src/Mod/Path/PathScripts/PathEngraveGui.py index 0527ac9297..95d5ce9dc5 100644 --- a/src/Mod/Path/PathScripts/PathEngraveGui.py +++ b/src/Mod/Path/PathScripts/PathEngraveGui.py @@ -144,7 +144,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Engrave', PathEngrave.Create, TaskPanelOpPage, - 'Path-Engrave', + 'Path_Engrave', QtCore.QT_TRANSLATE_NOOP("PathEngrave", "Engrave"), QtCore.QT_TRANSLATE_NOOP("PathEngrave", "Creates an Engraving Path around a Draft ShapeString"), PathEngrave.SetupProperties) diff --git a/src/Mod/Path/PathScripts/PathFixture.py b/src/Mod/Path/PathScripts/PathFixture.py index f85c5d5d32..b841e94445 100644 --- a/src/Mod/Path/PathScripts/PathFixture.py +++ b/src/Mod/Path/PathScripts/PathFixture.py @@ -80,7 +80,7 @@ class _ViewProviderFixture: return None def getIcon(self): # optional - return ":/icons/Path-Datums.svg" + return ":/icons/Path_Datums.svg" def onChanged(self, vobj, prop): # optional # pylint: disable=unused-argument @@ -111,7 +111,7 @@ class _ViewProviderFixture: class CommandPathFixture: def GetResources(self): - return {'Pixmap': 'Path-Datums', + return {'Pixmap': 'Path_Datums', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Fixture", "Fixture"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Fixture", "Creates a Fixture Offset object")} diff --git a/src/Mod/Path/PathScripts/PathGuiInit.py b/src/Mod/Path/PathScripts/PathGuiInit.py index 6123ddce36..cd48d41309 100644 --- a/src/Mod/Path/PathScripts/PathGuiInit.py +++ b/src/Mod/Path/PathScripts/PathGuiInit.py @@ -73,6 +73,7 @@ def Startup(): from PathScripts import PathSlotGui from PathScripts import PathStop # from PathScripts import PathSurfaceGui # Added in initGui.py due to OCL dependency + from PathScripts import PathThreadMillingGui from PathScripts import PathToolController from PathScripts import PathToolControllerGui from PathScripts import PathToolLibraryManager diff --git a/src/Mod/Path/PathScripts/PathHelixGui.py b/src/Mod/Path/PathScripts/PathHelixGui.py index 659bf8a211..141cce33d9 100644 --- a/src/Mod/Path/PathScripts/PathHelixGui.py +++ b/src/Mod/Path/PathScripts/PathHelixGui.py @@ -86,9 +86,9 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Helix', PathHelix.Create, TaskPanelOpPage, - 'Path-Helix', - QtCore.QT_TRANSLATE_NOOP("PathHelix", "Helix"), - QtCore.QT_TRANSLATE_NOOP("PathHelix", "Creates a Path Helix object from a features of a base object"), + 'Path_Helix', + QtCore.QT_TRANSLATE_NOOP("Path_Helix", "Helix"), + QtCore.QT_TRANSLATE_NOOP("Path_Helix", "Creates a Path Helix object from a features of a base object"), PathHelix.SetupProperties) FreeCAD.Console.PrintLog("Loading PathHelixGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathHop.py b/src/Mod/Path/PathScripts/PathHop.py index bd95b84b93..d2d2a7750a 100644 --- a/src/Mod/Path/PathScripts/PathHop.py +++ b/src/Mod/Path/PathScripts/PathHop.py @@ -78,7 +78,7 @@ class ViewProviderPathHop: self.Object = vobj.Object def getIcon(self): - return ":/icons/Path-Hop.svg" + return ":/icons/Path_Hop.svg" def __getstate__(self): return None @@ -90,7 +90,7 @@ class ViewProviderPathHop: class CommandPathHop: def GetResources(self): - return {'Pixmap': 'Path-Hop', + return {'Pixmap': 'Path_Hop', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Hop", "Hop"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Hop", "Creates a Path Hop object")} diff --git a/src/Mod/Path/PathScripts/PathIconViewProvider.py b/src/Mod/Path/PathScripts/PathIconViewProvider.py index c4a017bcdd..8a61b6a407 100644 --- a/src/Mod/Path/PathScripts/PathIconViewProvider.py +++ b/src/Mod/Path/PathScripts/PathIconViewProvider.py @@ -62,7 +62,7 @@ class ViewProvider(object): self.editCallback = state['editCallback'] def getIcon(self): - return ":/icons/Path-{}.svg".format(self.icon) + return ":/icons/Path_{}.svg".format(self.icon) def onEdit(self, callback): self.editModule = callback.__module__ diff --git a/src/Mod/Path/PathScripts/PathInspect.py b/src/Mod/Path/PathScripts/PathInspect.py index 7b46e9587f..615b01b50b 100644 --- a/src/Mod/Path/PathScripts/PathInspect.py +++ b/src/Mod/Path/PathScripts/PathInspect.py @@ -225,7 +225,7 @@ def show(obj): class CommandPathInspect: def GetResources(self): - return {'Pixmap': 'Path-Inspect', + return {'Pixmap': 'Path_Inspect', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Inspect", "Inspect G-code"), 'Accel': "P, I", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Inspect", "Inspects the G-code contents of a path")} diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index d17cf3e717..d68b24cdcb 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -94,6 +94,13 @@ def createModelResourceClone(obj, orig): return createResourceClone(obj, orig, 'Model', 'BaseGeometry') +class NotificationClass(QtCore.QObject): + updateTC = QtCore.Signal(object, object) + + +Notification = NotificationClass() + + class ObjectJob: def __init__(self, obj, models, templateFile=None): @@ -261,6 +268,7 @@ class ObjectJob: self.setupBaseModel(obj) self.fixupOperations(obj) self.setupSetupSheet(obj) + obj.setEditorMode('Operations', 2) # hide obj.setEditorMode('Placement', 2) @@ -413,6 +421,7 @@ class ObjectJob: tc.setExpression('HorizRapid', "%s.%s" % (self.setupSheet.expressionReference(), PathSetupSheet.Template.HorizRapid)) group.append(tc) self.obj.ToolController = group + Notification.updateTC.emit(self.obj, tc) def allOperations(self): ops = [] diff --git a/src/Mod/Path/PathScripts/PathJobCmd.py b/src/Mod/Path/PathScripts/PathJobCmd.py index 4c5a2e54bf..0a9efcb765 100644 --- a/src/Mod/Path/PathScripts/PathJobCmd.py +++ b/src/Mod/Path/PathScripts/PathJobCmd.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # *************************************************************************** # * Copyright (c) 2017 sliptonic * # * * @@ -50,7 +51,7 @@ class CommandJobCreate: pass def GetResources(self): - return {'Pixmap': 'Path-Job', + return {'Pixmap': 'Path_Job', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Job", "Job"), 'Accel': "P, J", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Job", "Creates a Path Job object")} @@ -91,7 +92,7 @@ class CommandJobTemplateExport: pass def GetResources(self): - return {'Pixmap': 'Path-ExportTemplate', + return {'Pixmap': 'Path_ExportTemplate', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Job", "Export Template"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Job", "Exports Path Job as a template to be used for other jobs")} diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index 5c3d1daf9d..a85c437fdf 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -25,7 +25,6 @@ from collections import Counter from contextlib import contextmanager import math import traceback - from pivy import coin from PySide import QtCore, QtGui @@ -45,6 +44,7 @@ import PathScripts.PathToolControllerGui as PathToolControllerGui import PathScripts.PathToolLibraryEditor as PathToolLibraryEditor import PathScripts.PathUtil as PathUtil import PathScripts.PathUtils as PathUtils +import PathScripts.PathToolBitGui as PathToolBitGui # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader @@ -207,7 +207,7 @@ class ViewProvider: self.unsetEdit(None, None) def getIcon(self): - return ":/icons/Path-Job.svg" + return ":/icons/Path_Job.svg" def claimChildren(self): children = self.obj.ToolController @@ -866,7 +866,15 @@ class TaskPanel: self.toolControllerSelect() def toolControllerAdd(self): - PathToolLibraryEditor.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) + if PathPreferences.toolsUseLegacyTools(): + PathToolLibraryEditor.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) + else: + tools = PathToolBitGui.LoadTools() + for tool in tools: + tc = PathToolControllerGui.Create(name=tool.Label, tool=tool) + self.obj.Proxy.addToolController(tc) + FreeCAD.ActiveDocument.recompute() + self.updateToolController() def toolControllerDelete(self): self.objectDelete(self.form.toolControllerList) diff --git a/src/Mod/Path/PathScripts/PathMillFace.py b/src/Mod/Path/PathScripts/PathMillFace.py index 172891a466..e87a24e80b 100644 --- a/src/Mod/Path/PathScripts/PathMillFace.py +++ b/src/Mod/Path/PathScripts/PathMillFace.py @@ -106,6 +106,7 @@ class ObjectFace(PathPocketBase.ObjectPocket): if obj.Base: PathLog.debug("obj.Base: {}".format(obj.Base)) + self.removalshapes = [] faces = [] holes = [] holeEnvs = [] @@ -203,9 +204,11 @@ class ObjectFace(PathPocketBase.ObjectPocket): plane=planeshape) ofstShape.translate(FreeCAD.Vector(0.0, 0.0, psZMin - ofstShape.BoundBox.ZMin)) - custDepthparams = self._customDepthParams(obj, obj.StartDepth.Value + 0.1, obj.FinalDepth.Value - 0.1) # only an envelope + # Calculate custom depth params for removal shape envelope, with start and final depth buffers + custDepthparams = self._customDepthParams(obj, obj.StartDepth.Value + 0.2, obj.FinalDepth.Value - 0.1) # only an envelope ofstShapeEnv = PathUtils.getEnvelope(partshape=ofstShape, depthparams=custDepthparams) env = ofstShapeEnv.cut(baseShape) + env.translate(FreeCAD.Vector(0.0, 0.0, -0.000001)) # lower removal shape into buffer zone if holeShape: PathLog.debug("Processing holes and face ...") @@ -215,7 +218,11 @@ class ObjectFace(PathPocketBase.ObjectPocket): else: PathLog.debug("Processing solid face ...") tup = env, False, 'pathMillFace', 0.0, 'X', obj.StartDepth.Value, obj.FinalDepth.Value - return [tup] + + self.removalshapes.append(tup) + obj.removalshape = self.removalshapes[0][0] # save removal shape + + return self.removalshapes def areaOpSetDefaultValues(self, obj, job): '''areaOpSetDefaultValues(obj, job) ... initialize mill facing properties''' @@ -232,7 +239,7 @@ class ObjectFace(PathPocketBase.ObjectPocket): # If the operation has a geometry identified the Finaldepth # is the top of the boundbox which includes all features. if len(obj.Base) >= 1: - shapes = list() + shapes = [] for base, subs in obj.Base: for s in subs: shapes.append(getattr(base.Shape, s)) diff --git a/src/Mod/Path/PathScripts/PathMillFaceGui.py b/src/Mod/Path/PathScripts/PathMillFaceGui.py index e926172a8c..104b7f9e09 100644 --- a/src/Mod/Path/PathScripts/PathMillFaceGui.py +++ b/src/Mod/Path/PathScripts/PathMillFaceGui.py @@ -42,9 +42,9 @@ class TaskPanelOpPage(PathPocketBaseGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('MillFace', PathMillFace.Create, TaskPanelOpPage, - 'Path-Face', - QtCore.QT_TRANSLATE_NOOP("PathFace", "Face"), - QtCore.QT_TRANSLATE_NOOP("PathFace", "Create a Facing Operation from a model or face"), + 'Path_Face', + QtCore.QT_TRANSLATE_NOOP("Path_Face", "Face"), + QtCore.QT_TRANSLATE_NOOP("Path_Face", "Create a Facing Operation from a model or face"), PathMillFace.SetupProperties) FreeCAD.Console.PrintLog("Loading PathMillFaceGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathOp.py b/src/Mod/Path/PathScripts/PathOp.py index 24497f1a58..0a16a1361c 100644 --- a/src/Mod/Path/PathScripts/PathOp.py +++ b/src/Mod/Path/PathScripts/PathOp.py @@ -324,7 +324,7 @@ class ObjectOp(object): if 1 < len(job.Operations.Group): obj.ToolController = PathUtil.toolControllerForOp(job.Operations.Group[-2]) else: - obj.ToolController = PathUtils.findToolController(obj) + obj.ToolController = PathUtils.findToolController(obj, self) if not obj.ToolController: return None obj.OpToolDiameter = obj.ToolController.Tool.Diameter @@ -585,3 +585,11 @@ class ObjectOp(object): obj.Base = baselist else: PathLog.notice((translate("Path", "Base object %s.%s rejected by operation") + "\n") % (base.Label, sub)) + + def isToolSupported(self, obj, tool): + '''toolSupported(obj, tool) ... Returns true if the op supports the given tool. + This function can safely be overwritten by subclasses.''' + + return True + + diff --git a/src/Mod/Path/PathScripts/PathOpGui.py b/src/Mod/Path/PathScripts/PathOpGui.py index b84be08568..d0d5c22d83 100644 --- a/src/Mod/Path/PathScripts/PathOpGui.py +++ b/src/Mod/Path/PathScripts/PathOpGui.py @@ -25,6 +25,7 @@ import FreeCADGui import PathScripts.PathGeom as PathGeom import PathScripts.PathGetPoint as PathGetPoint import PathScripts.PathGui as PathGui +import PathScripts.PathJob as PathJob import PathScripts.PathLog as PathLog import PathScripts.PathOp as PathOp import PathScripts.PathPreferences as PathPreferences @@ -158,7 +159,7 @@ class ViewProvider(object): if self.Object.Active: return self.OpIcon else: - return ":/icons/Path-OpActive.svg" + return ":/icons/Path_OpActive.svg" def getTaskPanelOpPage(self, obj): '''getTaskPanelOpPage(obj) ... use the stored information to instantiate the receiver op's page controller.''' @@ -211,6 +212,9 @@ class TaskPanelPage(object): self.parent = None self.panelTitle = 'Operation' + if hasattr(self.form, 'toolController'): + PathJob.Notification.updateTC.connect(self.resetToolController) + def setParent(self, parent): '''setParent() ... used to transfer parent object link to child class. Do not overwrite.''' @@ -361,6 +365,12 @@ class TaskPanelPage(object): combo.setCurrentIndex(index) combo.blockSignals(False) + def resetToolController(self, job, tc): + if self.obj is not None: + self.obj.ToolController = tc + combo = self.form.toolController + self.setupToolController(self.obj, combo) + def setupToolController(self, obj, combo): '''setupToolController(obj, combo) ... helper function to setup obj's ToolController @@ -373,7 +383,7 @@ class TaskPanelPage(object): combo.blockSignals(False) if obj.ToolController is None: - obj.ToolController = PathUtils.findToolController(obj) + obj.ToolController = PathUtils.findToolController(obj, obj.Proxy) if obj.ToolController is not None: self.selectInComboBox(obj.ToolController.Label, combo) @@ -381,7 +391,7 @@ class TaskPanelPage(object): '''updateToolController(obj, combo) ... helper function to update obj's ToolController property if a different one has been selected in the combo box.''' - tc = PathUtils.findToolController(obj, combo.currentText()) + tc = PathUtils.findToolController(obj, obj.Proxy, combo.currentText()) if obj.ToolController != tc: obj.ToolController = tc @@ -430,7 +440,7 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): super(TaskPanelBaseGeometryPage, self).__init__(obj, features) self.panelTitle = 'Base Geometry' - self.OpIcon = ":/icons/Path-BaseGeometry.svg" + self.OpIcon = ":/icons/Path_BaseGeometry.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -535,7 +545,7 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): PathLog.error(translate("PathProject", "Faces are not supported")) return False else: - if not self.supportsPanels() or not 'Panel' in sel.Object.Name: + if not self.supportsPanels() or 'Panel' not in sel.Object.Name: if not ignoreErrors: PathLog.error(translate("PathProject", "Please select %s of a solid" % self.featureName())) return False @@ -626,6 +636,7 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): row = (qList.count() + qList.frameWidth()) * 15 qList.setFixedSize(col, row) + class TaskPanelBaseLocationPage(TaskPanelPage): '''Page controller for base locations. Uses PathGetPoint.''' @@ -753,7 +764,7 @@ class TaskPanelHeightsPage(TaskPanelPage): self.clearanceHeight = None self.safeHeight = None self.panelTitle = 'Heights' - self.OpIcon = ":/icons/Path-Heights.svg" + self.OpIcon = ":/icons/Path_Heights.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -797,7 +808,7 @@ class TaskPanelDepthsPage(TaskPanelPage): self.finishDepth = None self.stepDown = None self.panelTitle = 'Depths' - self.OpIcon = ":/icons/Path-Depths.svg" + self.OpIcon = ":/icons/Path_Depths.svg" self.setIcon(self.OpIcon) def getForm(self): @@ -926,6 +937,7 @@ class TaskPanelDepthsPage(TaskPanelPage): self.form.startDepthSet.setEnabled(False) self.form.finalDepthSet.setEnabled(False) + class TaskPanelDiametersPage(TaskPanelPage): '''Page controller for diameters.''' @@ -950,7 +962,7 @@ class TaskPanelDiametersPage(TaskPanelPage): self.minDiameter.updateProperty() self.maxDiameter.updateProperty() - def setFields(self, obj): + def setFields(self, obj): self.minDiameter.updateSpinBox() self.maxDiameter.updateSpinBox() @@ -964,6 +976,7 @@ class TaskPanelDiametersPage(TaskPanelPage): if prop in ['MinDiameter', 'MaxDiameter']: self.setFields(obj) + class TaskPanel(object): ''' Generic TaskPanel implementation handling the standard Path operation layout. @@ -1221,7 +1234,7 @@ class CommandSetStartPoint: # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-StartPoint', + return {'Pixmap': 'Path_StartPoint', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path", "Pick Start Point"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path", "Pick Start Point")} diff --git a/src/Mod/Path/PathScripts/PathPlane.py b/src/Mod/Path/PathScripts/PathPlane.py index 42c5822da2..1f2bddd210 100644 --- a/src/Mod/Path/PathScripts/PathPlane.py +++ b/src/Mod/Path/PathScripts/PathPlane.py @@ -75,7 +75,7 @@ class _ViewProviderPlane: return None def getIcon(self): # optional - return ":/icons/Path-Plane.svg" + return ":/icons/Path_Plane.svg" def onChanged(self, vobj, prop): # optional # pylint: disable=unused-argument @@ -106,7 +106,7 @@ class _ViewProviderPlane: class CommandPathPlane: def GetResources(self): - return {'Pixmap': 'Path-Plane', + return {'Pixmap': 'Path_Plane', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Plane", "Selection Plane"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Plane", "Create a Selection Plane object")} diff --git a/src/Mod/Path/PathScripts/PathPocketGui.py b/src/Mod/Path/PathScripts/PathPocketGui.py index 78f183b20d..a452e5a838 100644 --- a/src/Mod/Path/PathScripts/PathPocketGui.py +++ b/src/Mod/Path/PathScripts/PathPocketGui.py @@ -42,9 +42,9 @@ class TaskPanelOpPage(PathPocketBaseGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Pocket 3D', PathPocket.Create, TaskPanelOpPage, - 'Path-3DPocket', - QtCore.QT_TRANSLATE_NOOP("PathPocket", "3D Pocket"), - QtCore.QT_TRANSLATE_NOOP("PathPocket", "Creates a Path 3D Pocket object from a face or faces"), + 'Path_3DPocket', + QtCore.QT_TRANSLATE_NOOP("Path_Pocket", "3D Pocket"), + QtCore.QT_TRANSLATE_NOOP("Path_Pocket", "Creates a Path 3D Pocket object from a face or faces"), PathPocket.SetupProperties) FreeCAD.Console.PrintLog("Loading PathPocketGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathPocketShape.py b/src/Mod/Path/PathScripts/PathPocketShape.py index 139b06d684..afdac350da 100644 --- a/src/Mod/Path/PathScripts/PathPocketShape.py +++ b/src/Mod/Path/PathScripts/PathPocketShape.py @@ -321,265 +321,27 @@ class ObjectPocket(PathPocketBase.ObjectPocket): PathLog.track() PathLog.debug("----- areaOpShapes() in PathPocketShape.py") + self.isDebug = True if PathLog.getLevel(PathLog.thisModule()) == 4 else False baseSubsTuples = [] - subCount = 0 allTuples = [] - - def planarFaceFromExtrusionEdges(face, trans): - useFace = 'useFaceName' - minArea = 0.0 - fCnt = 0 - clsd = [] - planar = False - # Identify closed edges - for edg in face.Edges: - if edg.isClosed(): - PathLog.debug(' -e.isClosed()') - clsd.append(edg) - planar = True - - # Attempt to create planar faces and select that with smallest area for use as pocket base - if planar is True: - planar = False - for edg in clsd: - fCnt += 1 - fName = sub + '_face_' + str(fCnt) - # Create planar face from edge - mFF = Part.Face(Part.Wire(Part.__sortEdges__([edg]))) - if mFF.isNull(): - PathLog.debug('Face(Part.Wire()) failed') - else: - if trans is True: - mFF.translate(FreeCAD.Vector(0, 0, face.BoundBox.ZMin - mFF.BoundBox.ZMin)) - - if FreeCAD.ActiveDocument.getObject(fName): - FreeCAD.ActiveDocument.removeObject(fName) - - tmpFace = FreeCAD.ActiveDocument.addObject('Part::Feature', fName).Shape = mFF - tmpFace = FreeCAD.ActiveDocument.getObject(fName) - tmpFace.purgeTouched() - - if minArea == 0.0: - minArea = tmpFace.Shape.Face1.Area - useFace = fName - planar = True - elif tmpFace.Shape.Face1.Area < minArea: - minArea = tmpFace.Shape.Face1.Area - FreeCAD.ActiveDocument.removeObject(useFace) - useFace = fName - else: - FreeCAD.ActiveDocument.removeObject(fName) - - if useFace != 'useFaceName': - self.useTempJobClones(useFace) - - return (planar, useFace) - - def clasifySub(self, bs, sub): - face = bs.Shape.getElement(sub) - - if type(face.Surface) == Part.Plane: - PathLog.debug('type() == Part.Plane') - if PathGeom.isVertical(face.Surface.Axis): - PathLog.debug(' -isVertical()') - # it's a flat horizontal face - self.horiz.append(face) - return True - - elif PathGeom.isHorizontal(face.Surface.Axis): - PathLog.debug(' -isHorizontal()') - self.vert.append(face) - return True - - else: - return False - - elif type(face.Surface) == Part.Cylinder and PathGeom.isVertical(face.Surface.Axis): - PathLog.debug('type() == Part.Cylinder') - # vertical cylinder wall - if any(e.isClosed() for e in face.Edges): - PathLog.debug(' -e.isClosed()') - # complete cylinder - circle = Part.makeCircle(face.Surface.Radius, face.Surface.Center) - disk = Part.Face(Part.Wire(circle)) - disk.translate(FreeCAD.Vector(0, 0, face.BoundBox.ZMin - disk.BoundBox.ZMin)) - self.horiz.append(disk) - return True - - else: - PathLog.debug(' -none isClosed()') - # partial cylinder wall - self.vert.append(face) - return True - - elif type(face.Surface) == Part.SurfaceOfExtrusion: - # extrusion wall - PathLog.debug('type() == Part.SurfaceOfExtrusion') - # Attempt to extract planar face from surface of extrusion - (planar, useFace) = planarFaceFromExtrusionEdges(face, trans=True) - # Save face object to self.horiz for processing or display error - if planar is True: - uFace = FreeCAD.ActiveDocument.getObject(useFace) - self.horiz.append(uFace.Shape.Faces[0]) - msg = translate('Path', "Verify depth of pocket for '{}'.".format(sub)) - msg += translate('Path', "\n
      Pocket is based on extruded surface.") - msg += translate('Path', "\n
      Bottom of pocket might be non-planar and/or not normal to spindle axis.") - msg += translate('Path', "\n
      \n
      3D pocket bottom is NOT available in this operation.") - PathLog.warning(msg) - # title = translate('Path', 'Depth Warning') - # self.guiMessage(title, msg, False) - else: - PathLog.error(translate("Path", "Failed to create a planar face from edges in {}.".format(sub))) - - else: - PathLog.debug(' -type(face.Surface): {}'.format(type(face.Surface))) - return False + subCount = 0 if obj.Base: - PathLog.debug('Processing... obj.Base') + PathLog.debug('Processing obj.Base') self.removalshapes = [] # pylint: disable=attribute-defined-outside-init if obj.EnableRotation == 'Off': stock = PathUtils.findParentJob(obj).Stock for (base, subList) in obj.Base: - baseSubsTuples.append((base, subList, 0.0, 'X', stock)) + tup = (base, subList, 0.0, 'X', stock) + baseSubsTuples.append(tup) else: - PathLog.debug('Rotation is active...') + PathLog.debug('... Rotation is active') + # method call here for p in range(0, len(obj.Base)): - (base, subsList) = obj.Base[p] - isLoop = False - - # First, check all subs collectively for loop of faces - if len(subsList) > 2: - (isLoop, norm, surf) = self.checkForFacesLoop(base, subsList) - - if isLoop is True: - PathLog.debug("Common Surface.Axis or normalAt() value found for loop faces.") - rtn = False - subCount += 1 - (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable - PathLog.debug("angle: {}; axis: {}".format(angle, axis)) - - if rtn is True: - faceNums = "" - for f in subsList: - faceNums += '_' + f.replace('Face', '') - (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, faceNums) # pylint: disable=unused-variable - - # Verify faces are correctly oriented - InverseAngle might be necessary - PathLog.debug("Checking if faces are oriented correctly after rotation...") - for sub in subsList: - face = clnBase.Shape.getElement(sub) - if type(face.Surface) == Part.Plane: - if not PathGeom.isHorizontal(face.Surface.Axis): - rtn = False - PathLog.warning(translate("PathPocketShape", "Face appears to NOT be horizontal AFTER rotation applied.")) - break - - if rtn is False: - PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 1') - if obj.InverseAngle: - (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) - else: - if obj.AttemptInverseAngle is True: - (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) - else: - msg = translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") - PathLog.warning(msg) - - if angle < 0.0: - angle += 360.0 - - tup = clnBase, subsList, angle, axis, clnStock - else: - if self.warnDisabledAxis(obj, axis) is False: - PathLog.debug("No rotation used") - axis = 'X' - angle = 0.0 - stock = PathUtils.findParentJob(obj).Stock - tup = base, subsList, angle, axis, stock - # Eif - - allTuples.append(tup) - baseSubsTuples.append(tup) - # Eif - - if isLoop is False: - PathLog.debug(translate('Path', "Processing subs individually ...")) - for sub in subsList: - subCount += 1 - if 'Face' in sub: - rtn = False - face = base.Shape.getElement(sub) - if type(face.Surface) == Part.SurfaceOfExtrusion: - # extrusion wall - PathLog.debug('analyzing type() == Part.SurfaceOfExtrusion') - # Attempt to extract planar face from surface of extrusion - (planar, useFace) = planarFaceFromExtrusionEdges(face, trans=False) - # Save face object to self.horiz for processing or display error - if planar is True: - base = FreeCAD.ActiveDocument.getObject(useFace) - sub = 'Face1' - PathLog.debug(' -successful face created: {}'.format(useFace)) - else: - PathLog.error(translate("Path", "Failed to create a planar face from edges in {}.".format(sub))) - - (norm, surf) = self.getFaceNormAndSurf(face) - (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable - PathLog.debug("initial {}".format(praInfo)) - - if rtn is True: - faceNum = sub.replace('Face', '') - (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, faceNum) - # Verify faces are correctly oriented - InverseAngle might be necessary - faceIA = clnBase.Shape.getElement(sub) - (norm, surf) = self.getFaceNormAndSurf(faceIA) - (rtn, praAngle, praAxis, praInfo2) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable - PathLog.debug("follow-up {}".format(praInfo2)) - - if abs(praAngle) == 180.0: - rtn = False - if self.isFaceUp(clnBase, faceIA) is False: - PathLog.debug('isFaceUp is False') - angle -= 180.0 - - if rtn is True: - PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 2') - if obj.InverseAngle: - (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) - if self.isFaceUp(clnBase, faceIA) is False: - PathLog.debug('isFaceUp is False') - angle += 180.0 - else: - if obj.AttemptInverseAngle is True: - (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) - else: - msg = translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") - PathLog.warning(msg) - - if self.isFaceUp(clnBase, faceIA) is False: - PathLog.debug('isFaceUp is False') - angle += 180.0 - else: - PathLog.debug("Face appears to be oriented correctly.") - - if angle < 0.0: - angle += 360.0 - - tup = clnBase, [sub], angle, axis, clnStock - else: - if self.warnDisabledAxis(obj, axis) is False: - PathLog.debug(str(sub) + ": No rotation used") - axis = 'X' - angle = 0.0 - stock = PathUtils.findParentJob(obj).Stock - tup = base, [sub], angle, axis, stock - # Eif - allTuples.append(tup) - baseSubsTuples.append(tup) - else: - ignoreSub = base.Name + '.' + sub - PathLog.error(translate('Path', "Selected feature is not a Face. Ignoring: {}".format(ignoreSub))) + (bst, at) = self.process_base_geometry_with_rotation(obj, p, subCount) + allTuples.extend(at) + baseSubsTuples.extend(bst) for o in baseSubsTuples: self.horiz = [] # pylint: disable=attribute-defined-outside-init @@ -588,11 +350,11 @@ class ObjectPocket(PathPocketBase.ObjectPocket): subsList = o[1] angle = o[2] axis = o[3] - stock = o[4] + # stock = o[4] for sub in subsList: if 'Face' in sub: - if clasifySub(self, subBase, sub) is False: + if not self.clasifySub(subBase, sub): PathLog.error(translate('PathPocket', 'Pocket does not support shape %s.%s') % (subBase.Label, sub)) if obj.EnableRotation != 'Off': PathLog.warning(translate('PathPocket', 'Face might not be within rotation accessibility limits.')) @@ -614,15 +376,11 @@ class ObjectPocket(PathPocketBase.ObjectPocket): if PathGeom.isRoughly(face.Area, 0): msg = translate('PathPocket', 'Vertical faces do not form a loop - ignoring') PathLog.error(msg) - # title = translate("Path", "Face Selection Warning") - # self.guiMessage(title, msg, True) else: face.translate(FreeCAD.Vector(0, 0, vFinDep - face.BoundBox.ZMin)) self.horiz.append(face) msg = translate('Path', 'Verify final depth of pocket shaped by vertical faces.') PathLog.warning(msg) - # title = translate('Path', 'Depth Warning') - # self.guiMessage(title, msg, False) # add faces for extensions self.exts = [] # pylint: disable=attribute-defined-outside-init @@ -633,10 +391,6 @@ class ObjectPocket(PathPocketBase.ObjectPocket): self.horiz.append(face) self.exts.append(face) - # move all horizontal faces to FinalDepth - # for f in self.horiz: - # f.translate(FreeCAD.Vector(0, 0, obj.FinalDepth.Value - f.BoundBox.ZMin)) - # check all faces and see if they are touching/overlapping and combine those into a compound self.horizontal = [] # pylint: disable=attribute-defined-outside-init for shape in PathGeom.combineConnectedShapes(self.horiz): @@ -654,48 +408,56 @@ class ObjectPocket(PathPocketBase.ObjectPocket): else: self.horizontal.append(shape) + # move all horizontal faces to FinalDepth # extrude all faces up to StartDepth and those are the removal shapes start_dep = obj.StartDepth.Value clrnc = 0.5 + # self._addDebugObject('subBase', subBase.Shape) for face in self.horizontal: - adj_final_dep = obj.FinalDepth.Value + isFaceUp = True + invZ = 0.0 useAngle = angle - shpZMin = face.BoundBox.ZMin - shpZMinVal = shpZMin - PathLog.debug('self.horizontal pre-shpZMin: {}'.format(shpZMin)) - isFaceUp = self.isFaceUp(subBase, face) - if not isFaceUp: - useAngle += 180.0 - invZ = (-2 * shpZMin) - clrnc - face.translate(FreeCAD.Vector(0.0, 0.0, invZ)) - shpZMin = -1 * shpZMin - else: - face.translate(FreeCAD.Vector(0.0, 0.0, -1 * clrnc)) - PathLog.debug('self.horizontal post-shpZMin: {}'.format(shpZMin)) + faceZMin = face.BoundBox.ZMin + adj_final_dep = obj.FinalDepth.Value + trans = obj.FinalDepth.Value - face.BoundBox.ZMin + PathLog.debug('face.BoundBox.ZMin: {}'.format(face.BoundBox.ZMin)) - if obj.LimitDepthToFace is True and obj.EnableRotation != 'Off': - if shpZMinVal > obj.FinalDepth.Value: - PathLog.debug('shpZMin > obj.FinalDepth.Value') - adj_final_dep = shpZMinVal # shpZMin - if start_dep <= adj_final_dep: - start_dep = adj_final_dep + 1.0 - msg = translate('PathPocketShape', 'Start Depth is lower than face depth. Setting to ') - PathLog.warning(msg + ' {} mm.'.format(start_dep)) - PathLog.debug('LimitDepthToFace adj_final_dep: {}'.format(adj_final_dep)) - else: - translation = obj.FinalDepth.Value - shpZMin + if obj.EnableRotation != 'Off': + PathLog.debug('... running isFaceUp()') + isFaceUp = self.isFaceUp(subBase, face) + # Determine if face is really oriented toward Z+ (rotational purposes) + # ignore for cylindrical faces if not isFaceUp: - # Check if the `isFaceUp` returned correctly - zDestination = face.BoundBox.ZMin + translation - if (round(start_dep - obj.FinalDepth.Value, 6) != - round(start_dep - zDestination, 6)): - shpZMin = -1 * shpZMin - face.translate(FreeCAD.Vector(0, 0, translation)) + PathLog.debug('... NOT isFaceUp') + useAngle += 180.0 + invZ = (-2 * face.BoundBox.ZMin) + face.translate(FreeCAD.Vector(0.0, 0.0, invZ)) + faceZMin = face.BoundBox.ZMin # reset faceZMin + PathLog.debug('... face.BoundBox.ZMin: {}'.format(face.BoundBox.ZMin)) + else: + PathLog.debug('... isFaceUp') + if useAngle > 180.0: + useAngle -= 360.0 - extent = FreeCAD.Vector(0, 0, abs(start_dep - shpZMin) + clrnc) # adj_final_dep + clrnc) - extShp = face.removeSplitter().extrude(extent) + # Apply LimitDepthToFace property for rotational operations + if obj.LimitDepthToFace: + if obj.FinalDepth.Value < face.BoundBox.ZMin: + PathLog.debug('obj.FinalDepth.Value < face.BoundBox.ZMin') + # Raise FinalDepth to face depth + adj_final_dep = faceZMin # face.BoundBox.ZMin # faceZMin + # Ensure StartDepth is above FinalDepth + if start_dep <= adj_final_dep: + start_dep = adj_final_dep + 1.0 + msg = translate('PathPocketShape', 'Start Depth is lower than face depth. Setting to ') + PathLog.warning(msg + ' {} mm.'.format(start_dep)) + PathLog.debug('LimitDepthToFace adj_final_dep: {}'.format(adj_final_dep)) + # Eif + + face.translate(FreeCAD.Vector(0.0, 0.0, adj_final_dep - faceZMin - clrnc)) + zExtVal = start_dep - adj_final_dep + (2 * clrnc) + extShp = face.removeSplitter().extrude(FreeCAD.Vector(0, 0, zExtVal)) self.removalshapes.append((extShp, False, 'pathPocketShape', useAngle, axis, start_dep, adj_final_dep)) - PathLog.debug("Extent values are strDep: {}, finDep: {}, extrd: {}".format(start_dep, adj_final_dep, extent)) + PathLog.debug("Extent values are strDep: {}, finDep: {}, extrd: {}".format(start_dep, adj_final_dep, zExtVal)) # Efor face # Efor @@ -777,10 +539,10 @@ class ObjectPocket(PathPocketBase.ObjectPocket): return (False, 0, 0) else: tmpWire = FreeCAD.ActiveDocument.addObject('Part::Feature', wireName).Shape = wr - tmpWire = FreeCAD.ActiveDocument.getObject(wireName) - tmpExt = FreeCAD.ActiveDocument.addObject('Part::Extrusion', extName) + tmpWireObj = FreeCAD.ActiveDocument.getObject(wireName) + tmpExtObj = FreeCAD.ActiveDocument.addObject('Part::Extrusion', extName) tmpExt = FreeCAD.ActiveDocument.getObject(extName) - tmpExt.Base = tmpWire + tmpExt.Base = tmpWireObj tmpExt.DirMode = "Normal" tmpExt.DirLink = None tmpExt.LengthFwd = 10.0 @@ -793,8 +555,8 @@ class ObjectPocket(PathPocketBase.ObjectPocket): tmpExt.recompute() tmpExt.purgeTouched() - tmpWire.purgeTouched() - return (True, tmpWire, tmpExt) + tmpWireObj.purgeTouched() + return (True, tmpWireObj, tmpExt) def roundValue(precision, val): # Convert VALxe-15 numbers to zero @@ -910,6 +672,310 @@ class ObjectPocket(PathPocketBase.ObjectPocket): return (go, norm, surf) + def planarFaceFromExtrusionEdges(self, face, trans): + '''planarFaceFromExtrusionEdges(face, trans)... + Use closed edges to create a temporary face for use in the pocketing operation. + ''' + useFace = 'useFaceName' + minArea = 0.0 + fCnt = 0 + clsd = [] + planar = False + # Identify closed edges + for edg in face.Edges: + if edg.isClosed(): + PathLog.debug(' -e.isClosed()') + clsd.append(edg) + planar = True + + # Attempt to create planar faces and select that with smallest area for use as pocket base + if planar is True: + planar = False + for edg in clsd: + fCnt += 1 + fName = sub + '_face_' + str(fCnt) + # Create planar face from edge + mFF = Part.Face(Part.Wire(Part.__sortEdges__([edg]))) + if mFF.isNull(): + PathLog.debug('Face(Part.Wire()) failed') + else: + if trans is True: + mFF.translate(FreeCAD.Vector(0, 0, face.BoundBox.ZMin - mFF.BoundBox.ZMin)) + + if FreeCAD.ActiveDocument.getObject(fName): + FreeCAD.ActiveDocument.removeObject(fName) + + tmpFaceObj = FreeCAD.ActiveDocument.addObject('Part::Feature', fName).Shape = mFF + tmpFace = FreeCAD.ActiveDocument.getObject(fName) + tmpFace.purgeTouched() + + if minArea == 0.0: + minArea = tmpFace.Shape.Face1.Area + useFace = fName + planar = True + elif tmpFace.Shape.Face1.Area < minArea: + minArea = tmpFace.Shape.Face1.Area + FreeCAD.ActiveDocument.removeObject(useFace) + useFace = fName + else: + FreeCAD.ActiveDocument.removeObject(fName) + + if useFace != 'useFaceName': + self.useTempJobClones(useFace) + + return (planar, useFace) + + def clasifySub(self, bs, sub): + '''clasifySub(bs, sub)... + Given a base and a sub-feature name, returns True + if the sub-feature is a horizontally oriented flat face. + ''' + face = bs.Shape.getElement(sub) + + if type(face.Surface) == Part.Plane: + PathLog.debug('type() == Part.Plane') + if PathGeom.isVertical(face.Surface.Axis): + PathLog.debug(' -isVertical()') + # it's a flat horizontal face + self.horiz.append(face) + return True + + elif PathGeom.isHorizontal(face.Surface.Axis): + PathLog.debug(' -isHorizontal()') + self.vert.append(face) + return True + + else: + return False + + elif type(face.Surface) == Part.Cylinder and PathGeom.isVertical(face.Surface.Axis): + PathLog.debug('type() == Part.Cylinder') + # vertical cylinder wall + if any(e.isClosed() for e in face.Edges): + PathLog.debug(' -e.isClosed()') + # complete cylinder + circle = Part.makeCircle(face.Surface.Radius, face.Surface.Center) + disk = Part.Face(Part.Wire(circle)) + disk.translate(FreeCAD.Vector(0, 0, face.BoundBox.ZMin - disk.BoundBox.ZMin)) + self.horiz.append(disk) + return True + + else: + PathLog.debug(' -none isClosed()') + # partial cylinder wall + self.vert.append(face) + return True + + elif type(face.Surface) == Part.SurfaceOfExtrusion: + # extrusion wall + PathLog.debug('type() == Part.SurfaceOfExtrusion') + # Attempt to extract planar face from surface of extrusion + (planar, useFace) = self.planarFaceFromExtrusionEdges(face, trans=True) + # Save face object to self.horiz for processing or display error + if planar is True: + uFace = FreeCAD.ActiveDocument.getObject(useFace) + self.horiz.append(uFace.Shape.Faces[0]) + msg = translate('Path', "Verify depth of pocket for '{}'.".format(sub)) + msg += translate('Path', "\n
      Pocket is based on extruded surface.") + msg += translate('Path', "\n
      Bottom of pocket might be non-planar and/or not normal to spindle axis.") + msg += translate('Path', "\n
      \n
      3D pocket bottom is NOT available in this operation.") + PathLog.warning(msg) + else: + PathLog.error(translate("Path", "Failed to create a planar face from edges in {}.".format(sub))) + + else: + PathLog.debug(' -type(face.Surface): {}'.format(type(face.Surface))) + return False + + # Process obj.Base with rotation enabled + def process_base_geometry_with_rotation(self, obj, p, subCount): + '''process_base_geometry_with_rotation(obj, p, subCount)... + This method is the control method for analyzing the selected features, + determining their rotational needs, and creating clones as needed + for rotational access for the pocketing operation. + + Requires the object, obj.Base index (p), and subCount reference arguments. + Returns two lists of tuples for continued processing into pocket paths. + ''' + baseSubsTuples = [] + allTuples = [] + isLoop = False + + (base, subsList) = obj.Base[p] + + # First, check all subs collectively for loop of faces + if len(subsList) > 2: + (isLoop, norm, surf) = self.checkForFacesLoop(base, subsList) + + if isLoop: + PathLog.debug("Common Surface.Axis or normalAt() value found for loop faces.") + subCount += 1 + tup = self.process_looped_sublist(obj, norm, surf) + if tup: + allTuples.append(tup) + baseSubsTuples.append(tup) + # Eif + + if not isLoop: + PathLog.debug(translate('Path', "Processing subs individually ...")) + for sub in subsList: + subCount += 1 + tup = self.process_nonloop_sublist(obj, base, sub) + if tup: + allTuples.append(tup) + baseSubsTuples.append(tup) + # Eif + + return (baseSubsTuples, allTuples) + + def process_looped_sublist(self, obj, norm, surf): + '''process_looped_sublist(obj, norm, surf)... + Process set of looped faces when rotation is enabled. + ''' + PathLog.debug(translate("Path", "Selected faces form loop. Processing looped faces.")) + rtn = False + (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable + + if rtn is True: + faceNums = "" + for f in subsList: + faceNums += '_' + f.replace('Face', '') + (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, faceNums) # pylint: disable=unused-variable + + # Verify faces are correctly oriented - InverseAngle might be necessary + PathLog.debug("Checking if faces are oriented correctly after rotation.") + for sub in subsList: + face = clnBase.Shape.getElement(sub) + if type(face.Surface) == Part.Plane: + if not PathGeom.isHorizontal(face.Surface.Axis): + rtn = False + PathLog.warning(translate("PathPocketShape", "Face appears to NOT be horizontal AFTER rotation applied.")) + break + + if rtn is False: + PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 1') + if obj.InverseAngle: + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + if obj.AttemptInverseAngle is True: + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + msg = translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") + PathLog.warning(msg) + + if angle < 0.0: + angle += 360.0 + + tup = clnBase, subsList, angle, axis, clnStock + else: + if self.warnDisabledAxis(obj, axis) is False: + PathLog.debug("No rotation used") + axis = 'X' + angle = 0.0 + stock = PathUtils.findParentJob(obj).Stock + tup = base, subsList, angle, axis, stock + # Eif + return tup + + def process_nonloop_sublist(self, obj, base, sub): + '''process_nonloop_sublist(obj, sub)... + Process sublist with non-looped set of features when rotation is enabled. + ''' + + if sub[:4] != 'Face': + ignoreSub = base.Name + '.' + sub + PathLog.error(translate('Path', "Selected feature is not a Face. Ignoring: {}".format(ignoreSub))) + return False + + rtn = False + face = base.Shape.getElement(sub) + if type(face.Surface) == Part.SurfaceOfExtrusion: + # extrusion wall + PathLog.debug('analyzing type() == Part.SurfaceOfExtrusion') + # Attempt to extract planar face from surface of extrusion + (planar, useFace) = self.planarFaceFromExtrusionEdges(face, trans=False) + # Save face object to self.horiz for processing or display error + if planar is True: + base = FreeCAD.ActiveDocument.getObject(useFace) + sub = 'Face1' + PathLog.debug(' -successful face created: {}'.format(useFace)) + else: + PathLog.error(translate("Path", "Failed to create a planar face from edges in {}.".format(sub))) + + (norm, surf) = self.getFaceNormAndSurf(face) + (rtn, angle, axis, praInfo) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable + PathLog.debug("initial {}".format(praInfo)) + + clnBase = base + faceIA = clnBase.Shape.getElement(sub) + + if rtn is True: + faceNum = sub.replace('Face', '') + PathLog.debug("initial applyRotationalAnalysis") + (clnBase, angle, clnStock, tag) = self.applyRotationalAnalysis(obj, base, angle, axis, faceNum) + # Verify faces are correctly oriented - InverseAngle might be necessary + faceIA = clnBase.Shape.getElement(sub) + (norm, surf) = self.getFaceNormAndSurf(faceIA) + (rtn, praAngle, praAxis, praInfo2) = self.faceRotationAnalysis(obj, norm, surf) # pylint: disable=unused-variable + PathLog.debug("follow-up {}".format(praInfo2)) + + isFaceUp = self.isFaceUp(clnBase, faceIA) + if isFaceUp: + rtn = False + + if round(abs(praAngle), 8) == 180.0: + rtn = False + if not isFaceUp: + PathLog.debug('initial isFaceUp is False') + angle = 0.0 + # Eif + + if rtn: + # initial rotation failed, attempt inverse rotation if user requests it + PathLog.debug(translate("Path", "Face appears misaligned after initial rotation.") + ' 2') + if obj.AttemptInverseAngle: + PathLog.debug(translate("Path", "Applying inverse angle automatically.")) + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + if obj.InverseAngle: + PathLog.debug(translate("Path", "Applying inverse angle manually.")) + (clnBase, clnStock, angle) = self.applyInverseAngle(obj, clnBase, clnStock, axis, angle) + else: + msg = translate("Path", "Consider toggling the 'InverseAngle' property and recomputing.") + PathLog.warning(msg) + + faceIA = clnBase.Shape.getElement(sub) + if not self.isFaceUp(clnBase, faceIA): + angle += 180.0 + + # Normalize rotation angle + if angle < 0.0: + angle += 360.0 + elif angle > 360.0: + angle -= 360.0 + + return (clnBase, [sub], angle, axis, clnStock) + + if not self.warnDisabledAxis(obj, axis): + PathLog.debug(str(sub) + ": No rotation used") + axis = 'X' + angle = 0.0 + stock = PathUtils.findParentJob(obj).Stock + return (base, [sub], angle, axis, stock) + + # Method to add temporary debug object + def _addDebugObject(self, objName, objShape): + '''_addDebugObject(objName, objShape)... + Is passed a desired debug object's desired name and shape. + This method creates a FreeCAD object for debugging purposes. + The created object must be deleted manually from the object tree + by the user. + ''' + if self.isDebug: + O = FreeCAD.ActiveDocument.addObject('Part::Feature', 'debug_' + objName) + O.Shape = objShape + O.purgeTouched() + def SetupProperties(): setup = PathPocketBase.SetupProperties() diff --git a/src/Mod/Path/PathScripts/PathPocketShapeGui.py b/src/Mod/Path/PathScripts/PathPocketShapeGui.py index 282267736a..53bc26c336 100644 --- a/src/Mod/Path/PathScripts/PathPocketShapeGui.py +++ b/src/Mod/Path/PathScripts/PathPocketShapeGui.py @@ -479,9 +479,9 @@ class TaskPanelOpPage(PathPocketBaseGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Pocket Shape', PathPocketShape.Create, TaskPanelOpPage, - 'Path-Pocket', - QtCore.QT_TRANSLATE_NOOP("PathPocket", "Pocket Shape"), - QtCore.QT_TRANSLATE_NOOP("PathPocket", "Creates a Path Pocket object from a face or faces"), + 'Path_Pocket', + QtCore.QT_TRANSLATE_NOOP("Path_Pocket", "Pocket Shape"), + QtCore.QT_TRANSLATE_NOOP("Path_Pocket", "Creates a Path Pocket object from a face or faces"), PathPocketShape.SetupProperties) FreeCAD.Console.PrintLog("Loading PathPocketShapeGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathPost.py b/src/Mod/Path/PathScripts/PathPost.py index c984fafa1d..ab5ba76845 100644 --- a/src/Mod/Path/PathScripts/PathPost.py +++ b/src/Mod/Path/PathScripts/PathPost.py @@ -176,7 +176,7 @@ class CommandPathPost: return dlg.exec_() def GetResources(self): - return {'Pixmap': 'Path-Post', + return {'Pixmap': 'Path_Post', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Post", "Post Process"), 'Accel': "P, P", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Post", "Post Process the selected Job")} diff --git a/src/Mod/Path/PathScripts/PathPreferences.py b/src/Mod/Path/PathScripts/PathPreferences.py index ad6d2d5585..6954c4b977 100644 --- a/src/Mod/Path/PathScripts/PathPreferences.py +++ b/src/Mod/Path/PathScripts/PathPreferences.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # *************************************************************************** +# * * # * Copyright (c) 2014 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * @@ -25,8 +26,8 @@ import glob import os import PathScripts.PathLog as PathLog -PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) -#PathLog.trackModule() +# PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) +# PathLog.trackModule() DefaultFilePath = "DefaultFilePath" DefaultJobTemplate = "DefaultJobTemplate" @@ -42,15 +43,19 @@ PostProcessorOutputPolicy = "PostProcessorOutputPolicy" LastPathToolBit = "LastPathToolBit" LastPathToolLibrary = "LastPathToolLibrary" LastPathToolShape = "LastPathToolShape" -LastPathToolTable ="LastPathToolTable" +LastPathToolTable = "LastPathToolTable" + +LastFileToolBit = "LastFileToolBit" +LastFileToolLibrary = "LastFileToolLibrary" +LastFileToolShape = "LastFileToolShape" UseLegacyTools = "UseLegacyTools" UseAbsoluteToolPaths = "UseAbsoluteToolPaths" OpenLastLibrary = "OpenLastLibrary" # Linear tolerance to use when generating Paths, eg when tessellating geometry -GeometryTolerance = "GeometryTolerance" -LibAreaCurveAccuracy = "LibAreaCurveAccuarcy" +GeometryTolerance = "GeometryTolerance" +LibAreaCurveAccuracy = "LibAreaCurveAccuarcy" EnableExperimentalFeatures = "EnableExperimentalFeatures" @@ -58,58 +63,70 @@ EnableExperimentalFeatures = "EnableExperimentalFeatures" def preferences(): return FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Path") + def pathScriptsSourcePath(): return os.path.join(FreeCAD.getHomePath(), "Mod/Path/PathScripts/") + 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/") + def allAvailablePostProcessors(): allposts = [] for path in searchPathsPost(): - posts = [ str(os.path.split(os.path.splitext(p)[0])[1][:-5]) for p in glob.glob(path + '/*_post.py')] + posts = [str(os.path.split(os.path.splitext(p)[0])[1][:-5]) for p in glob.glob(path + '/*_post.py')] allposts.extend(posts) allposts.sort() return allposts -def allEnabledPostProcessors(include = None): + +def allEnabledPostProcessors(include=None): blacklist = postProcessorBlacklist() - enabled = [processor for processor in allAvailablePostProcessors() if not processor in blacklist] + enabled = [processor for processor in allAvailablePostProcessors() if processor not in blacklist] if include: - l = list(set(include + enabled)) - l.sort() - return l + postlist = list(set(include + enabled)) + postlist.sort() + return postlist return enabled + def defaultPostProcessor(): pref = preferences() return pref.GetString(PostProcessorDefault, "") + def defaultPostProcessorArgs(): pref = preferences() return pref.GetString(PostProcessorDefaultArgs, "") + def defaultGeometryTolerance(): return preferences().GetFloat(GeometryTolerance, 0.01) + def defaultLibAreaCurveAccuracy(): return preferences().GetFloat(LibAreaCurveAccuracy, 0.01) + def defaultFilePath(): return preferences().GetString(DefaultFilePath) + def filePath(): path = defaultFilePath() if not path: path = macroFilePath() return path + def macroFilePath(): grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro") return grp.GetString("MacroPath", FreeCAD.getUserMacroDir()) + def searchPaths(): paths = [] p = defaultFilePath() @@ -118,6 +135,7 @@ def searchPaths(): paths.append(macroFilePath()) return paths + def searchPathsPost(): paths = [] p = defaultFilePath() @@ -128,11 +146,14 @@ def searchPathsPost(): paths.append(pathScriptsSourcePath()) return paths + def searchPathsTool(sub='Bit'): paths = [] if 'Bit' == sub: + paths.append("{}/Bit".format(os.path.dirname(lastPathToolLibrary()))) paths.append(lastPathToolBit()) + if 'Library' == sub: paths.append(lastPathToolLibrary()) if 'Shape' == sub: @@ -148,30 +169,37 @@ def searchPathsTool(sub='Bit'): appendPath(os.path.join(FreeCAD.getHomePath(), "Mod/Path/"), sub) return paths + def toolsUseLegacyTools(): - return preferences().GetBool(UseLegacyTools, True) + return preferences().GetBool(UseLegacyTools, False) + def toolsReallyUseLegacyTools(): - return toolsUseLegacyTools() or not experimentalFeaturesEnabled() + return toolsUseLegacyTools() + def toolsStoreAbsolutePaths(): return preferences().GetBool(UseAbsoluteToolPaths, False) + def toolsOpenLastLibrary(): return preferences().GetBool(OpenLastLibrary, False) + def setToolsSettings(legacy, relative, lastlibrary): pref = preferences() pref.SetBool(UseLegacyTools, legacy) pref.SetBool(UseAbsoluteToolPaths, relative) pref.SetBool(OpenLastLibrary, lastlibrary) + def defaultJobTemplate(): template = preferences().GetString(DefaultJobTemplate) if 'xml' not in template: return template return '' + def setJobDefaults(fileName, jobTemplate, geometryTolerance, curveAccuracy): PathLog.track("(%s='%s', %s, %s, %s)" % (DefaultFilePath, fileName, jobTemplate, geometryTolerance, curveAccuracy)) pref = preferences() @@ -180,12 +208,14 @@ def setJobDefaults(fileName, jobTemplate, geometryTolerance, curveAccuracy): pref.SetFloat(GeometryTolerance, geometryTolerance) pref.SetFloat(LibAreaCurveAccuracy, curveAccuracy) + def postProcessorBlacklist(): pref = preferences() blacklist = pref.GetString(PostProcessorBlacklist, "") if not blacklist: return [] - return eval(blacklist) # pylint: disable=eval-used + return eval(blacklist) # pylint: disable=eval-used + def setPostProcessorDefaults(processor, args, blacklist): pref = preferences() @@ -193,54 +223,99 @@ def setPostProcessorDefaults(processor, args, blacklist): pref.SetString(PostProcessorDefaultArgs, args) pref.SetString(PostProcessorBlacklist, "%s" % (blacklist)) + def setOutputFileDefaults(fileName, policy): pref = preferences() pref.SetString(PostProcessorOutputFile, fileName) pref.SetString(PostProcessorOutputPolicy, policy) + def defaultOutputFile(): pref = preferences() return pref.GetString(PostProcessorOutputFile, "") + def defaultOutputPolicy(): pref = preferences() return pref.GetString(PostProcessorOutputPolicy, "") + def defaultStockTemplate(): return preferences().GetString(DefaultStockTemplate, "") + def setDefaultStockTemplate(template): preferences().SetString(DefaultStockTemplate, template) + def defaultTaskPanelLayout(): return preferences().GetInt(DefaultTaskPanelLayout, 0) + def setDefaultTaskPanelLayout(style): preferences().SetInt(DefaultTaskPanelLayout, style) + def experimentalFeaturesEnabled(): return preferences().GetBool(EnableExperimentalFeatures, False) + +def lastFileToolLibrary(): + filename = preferences().GetString(LastFileToolLibrary) + if filename.endswith('.fctl') and os.path.isfile(filename): + return filename + + libpath = preferences().GetString(LastPathToolLibrary, pathDefaultToolsPath('Library')) + libFiles = [f for f in glob.glob(libpath + '/*.fctl')] + libFiles.sort() + if len(libFiles) >= 1: + filename = libFiles[0] + setLastFileToolLibrary(filename) + PathLog.track(filename) + return filename + else: + return None + + +def setLastFileToolLibrary(path): + PathLog.track(path) + if os.path.isfile(path): # keep the path and file in sync + preferences().SetString(LastPathToolLibrary, os.path.split(path)[0]) + return preferences().SetString(LastFileToolLibrary, path) + + def lastPathToolBit(): return preferences().GetString(LastPathToolBit, pathDefaultToolsPath('Bit')) + def setLastPathToolBit(path): return preferences().SetString(LastPathToolBit, path) + def lastPathToolLibrary(): + PathLog.track() return preferences().GetString(LastPathToolLibrary, pathDefaultToolsPath('Library')) + def setLastPathToolLibrary(path): + PathLog.track(path) + curLib = lastFileToolLibrary() + if os.path.split(curLib)[0] != path: + setLastFileToolLibrary('') # a path is known but not specific file return preferences().SetString(LastPathToolLibrary, path) + def lastPathToolShape(): return preferences().GetString(LastPathToolShape, pathDefaultToolsPath('Shape')) + def setLastPathToolShape(path): return preferences().SetString(LastPathToolShape, path) + def lastPathToolTable(): return preferences().GetString(LastPathToolTable, "") + def setLastPathToolTable(table): return preferences().SetString(LastPathToolTable, table) diff --git a/src/Mod/Path/PathScripts/PathProbeGui.py b/src/Mod/Path/PathScripts/PathProbeGui.py index 55809a92b7..a00ec913e8 100644 --- a/src/Mod/Path/PathScripts/PathProbeGui.py +++ b/src/Mod/Path/PathScripts/PathProbeGui.py @@ -84,7 +84,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Probe', PathProbe.Create, TaskPanelOpPage, - 'Path-Probe', + 'Path_Probe', QtCore.QT_TRANSLATE_NOOP("Probe", "Probe"), QtCore.QT_TRANSLATE_NOOP("Probe", "Create a Probing Grid from a job stock"), PathProbe.SetupProperties) diff --git a/src/Mod/Path/PathScripts/PathProfileContourGui.py b/src/Mod/Path/PathScripts/PathProfileContourGui.py index 02640d721c..465ac16cab 100644 --- a/src/Mod/Path/PathScripts/PathProfileContourGui.py +++ b/src/Mod/Path/PathScripts/PathProfileContourGui.py @@ -44,9 +44,9 @@ class TaskPanelOpPage(PathProfileGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Profile', PathProfile.Create, TaskPanelOpPage, - 'Path-Contour', - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile"), - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile entire model, selected face(s) or selected edge(s)"), + 'Path_Contour', + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile"), + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile entire model, selected face(s) or selected edge(s)"), PathProfile.SetupProperties) FreeCAD.Console.PrintLog("Loading PathProfileContourGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathProfileEdgesGui.py b/src/Mod/Path/PathScripts/PathProfileEdgesGui.py index 26bc7b0c48..e893e65ef0 100644 --- a/src/Mod/Path/PathScripts/PathProfileEdgesGui.py +++ b/src/Mod/Path/PathScripts/PathProfileEdgesGui.py @@ -44,9 +44,9 @@ class TaskPanelOpPage(PathProfileGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Profile', PathProfile.Create, TaskPanelOpPage, - 'Path-Contour', - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile"), - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile entire model, selected face(s) or selected edge(s)"), + 'Path_Contour', + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile"), + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile entire model, selected face(s) or selected edge(s)"), PathProfile.SetupProperties) FreeCAD.Console.PrintLog("Loading PathProfileEdgesGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathProfileFacesGui.py b/src/Mod/Path/PathScripts/PathProfileFacesGui.py index 40f66eb5ad..69bfdbf459 100644 --- a/src/Mod/Path/PathScripts/PathProfileFacesGui.py +++ b/src/Mod/Path/PathScripts/PathProfileFacesGui.py @@ -44,9 +44,9 @@ class TaskPanelOpPage(PathProfileGui.TaskPanelOpPage): Command = PathOpGui.SetupOperation('Profile', PathProfile.Create, TaskPanelOpPage, - 'Path-Contour', - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile"), - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile entire model, selected face(s) or selected edge(s)"), + 'Path_Contour', + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile"), + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile entire model, selected face(s) or selected edge(s)"), PathProfile.SetupProperties) FreeCAD.Console.PrintLog("Loading PathProfileFacesGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathProfileGui.py b/src/Mod/Path/PathScripts/PathProfileGui.py index 3d398fec6f..a7f77d7062 100644 --- a/src/Mod/Path/PathScripts/PathProfileGui.py +++ b/src/Mod/Path/PathScripts/PathProfileGui.py @@ -38,6 +38,7 @@ __doc__ = "Profile operation page controller and command implementation." FeatureSide = 0x01 FeatureProcessing = 0x02 + def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) @@ -127,8 +128,6 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): def updateVisibility(self): hasFace = False - hasGeom = False - fullModel = False objBase = list() if hasattr(self.obj, 'Base'): @@ -140,8 +139,6 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): if sub[:4] == 'Face': hasFace = True break - else: - fullModel = True if hasFace: self.form.processCircles.show() @@ -160,9 +157,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Profile', PathProfile.Create, TaskPanelOpPage, - 'Path-Contour', - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile"), - QtCore.QT_TRANSLATE_NOOP("PathProfile", "Profile entire model, selected face(s) or selected edge(s)"), + 'Path_Contour', + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile"), + QtCore.QT_TRANSLATE_NOOP("Path_Profile", "Profile entire model, selected face(s) or selected edge(s)"), PathProfile.SetupProperties) FreeCAD.Console.PrintLog("Loading PathProfileFacesGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathSanity.py b/src/Mod/Path/PathScripts/PathSanity.py index f602579a49..09664be146 100644 --- a/src/Mod/Path/PathScripts/PathSanity.py +++ b/src/Mod/Path/PathScripts/PathSanity.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # *************************************************************************** # * Copyright (c) 2016 sliptonic * # * * @@ -47,24 +48,57 @@ def translate(context, text, disambig=None): LOG_MODULE = 'PathSanity' -PathLog.setLevel(PathLog.Level.INFO, LOG_MODULE) +# PathLog.setLevel(PathLog.Level.INFO, LOG_MODULE) # PathLog.trackModule('PathSanity') class CommandPathSanity: - baseobj = None - outputpath = PathPreferences.defaultOutputFile() - if outputpath == "": - outputpath = PathPreferences.macroFilePath() - if outputpath[-1] != os.sep: - outputpath += os.sep - if not os.path.exists(outputpath): - os.makedirs(outputpath) - squawkData = {"items": []} + def resolveOutputPath(self, job): + if job.PostProcessorOutputFile != "": + filepath = job.PostProcessorOutputFile + elif PathPreferences.defaultOutputFile() != "": + filepath = PathPreferences.defaultOutputFile() + else: + filepath = PathPreferences.macroFilePath() + + if '%D' in filepath: + D = FreeCAD.ActiveDocument.FileName + if D: + D = os.path.dirname(D) + # in case the document is in the current working directory + if not D: + D = '.' + else: + FreeCAD.Console.PrintError("Please save document in order to resolve output path!\n") + return None + filepath = filepath.replace('%D', D) + + if '%d' in filepath: + d = FreeCAD.ActiveDocument.Label + filepath = filepath.replace('%d', d) + + if '%j' in filepath: + j = job.Label + filepath = filepath.replace('%j', j) + + if '%M' in filepath: + pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro") + M = pref.GetString("MacroPath", FreeCAD.getUserAppDataDir()) + filepath = filepath.replace('%M', M) + + PathLog.debug('filepath: {}'.format(filepath)) + + # starting at the derived filename, iterate up until we have a valid + # directory to write to + while not os.path.isdir(filepath): + filepath = os.path.dirname(filepath) + + PathLog.debug('filepath: {}'.format(filepath)) + return filepath + os.sep def GetResources(self): - return {'Pixmap': 'Path-Sanity', + return {'Pixmap': 'Path_Sanity', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Sanity", "Check the path job for common errors"), 'Accel': "P, S", @@ -77,9 +111,10 @@ class CommandPathSanity: def Activated(self): # if everything is ok, execute - self.squawkData["items"] = [] + self.squawkData = {"items": []} obj = FreeCADGui.Selection.getSelectionEx()[0].Object + self.outputpath = self.resolveOutputPath(obj) data = self.__summarize(obj) html = self.__report(data) if html is not None: @@ -369,8 +404,8 @@ class CommandPathSanity: # Save the report - reportraw = self.outputpath + '/setupreport.asciidoc' - reporthtml = self.outputpath + '/setupreport.html' + reportraw = self.outputpath + 'setupreport.asciidoc' + reporthtml = self.outputpath + 'setupreport.html' with open(reportraw, 'w') as fd: fd.write(report) fd.close() @@ -505,7 +540,7 @@ class CommandPathSanity: tooldata['partNumber'] = "" imagedata = TC.Tool.Proxy.getBitThumbnail(TC.Tool) - imagepath = '{}/T{}.png'.format(self.outputpath, TC.ToolNumber) + imagepath = '{}T{}.png'.format(self.outputpath, TC.ToolNumber) tooldata['feedrate'] = str(TC.HorizFeed) if TC.HorizFeed.Value == 0.0: self.squawk("PathSanity", @@ -646,7 +681,7 @@ class CommandPathSanity: view.showNormal() view.resize(320, 320) - imagepath = '{}/origin'.format(self.outputpath) + imagepath = '{}origin'.format(self.outputpath) FreeCADGui.Selection.clearSelection() FreeCADGui.SendMsgToActiveView("PerspectiveCamera") diff --git a/src/Mod/Path/PathScripts/PathSelection.py b/src/Mod/Path/PathScripts/PathSelection.py index d9e0d6b482..11a75b31a1 100644 --- a/src/Mod/Path/PathScripts/PathSelection.py +++ b/src/Mod/Path/PathScripts/PathSelection.py @@ -98,19 +98,16 @@ class ENGRAVEGate(PathBaseGate): class CHAMFERGate(PathBaseGate): - def allow(self, doc, obj, sub): # pylint: disable=unused-argument + def allow(self, doc, obj, sub): # pylint: disable=unused-argument try: shape = obj.Shape - except Exception: # pylint: disable=broad-except + except Exception: # pylint: disable=broad-except return False if math.fabs(shape.Volume) < 1e-9 and len(shape.Wires) > 0: return True - if shape.ShapeType == 'Edge': - return True - - if (shape.ShapeType == 'Face' and shape.normalAt(0, 0) == FreeCAD.Vector(0, 0, 1)): + if 'Edge' == shape.ShapeType or 'Face' == shape.ShapeType: return True if sub: @@ -385,9 +382,11 @@ def select(op): opsel['Vcarve'] = vcarveselect opsel['Probe'] = probeselect opsel['Custom'] = customselect + opsel['Thread Milling'] = drillselect opsel['TurnFace'] = turnselect opsel['TurnProfile'] = turnselect - opsel['TurnPart'] = turnselect + opsel['TurnPartoff'] = turnselect + opsel['TurnRough'] = turnselect return opsel[op] diff --git a/src/Mod/Path/PathScripts/PathSetupSheetGui.py b/src/Mod/Path/PathScripts/PathSetupSheetGui.py index 2d2257e808..7b06816ed7 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheetGui.py +++ b/src/Mod/Path/PathScripts/PathSetupSheetGui.py @@ -67,7 +67,7 @@ class ViewProvider: self.obj = vobj.Object def getIcon(self): - return ":/icons/Path-SetupSheet.svg" + return ":/icons/Path_SetupSheet.svg" def __getstate__(self): return None diff --git a/src/Mod/Path/PathScripts/PathSimpleCopy.py b/src/Mod/Path/PathScripts/PathSimpleCopy.py index 276648d0de..2901166801 100644 --- a/src/Mod/Path/PathScripts/PathSimpleCopy.py +++ b/src/Mod/Path/PathScripts/PathSimpleCopy.py @@ -36,7 +36,7 @@ def translate(context, text, disambig=None): class CommandPathSimpleCopy: def GetResources(self): - return {'Pixmap': 'Path-SimpleCopy', + return {'Pixmap': 'Path_SimpleCopy', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_SimpleCopy", "Simple Copy"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_SimpleCopy", "Creates a non-parametric copy of another path")} diff --git a/src/Mod/Path/PathScripts/PathSimulatorGui.py b/src/Mod/Path/PathScripts/PathSimulatorGui.py index b1dd8aeedc..086db6b145 100644 --- a/src/Mod/Path/PathScripts/PathSimulatorGui.py +++ b/src/Mod/Path/PathScripts/PathSimulatorGui.py @@ -539,7 +539,7 @@ class PathSimulation: class CommandPathSimulate: def GetResources(self): - return {'Pixmap': 'Path-Simulator', + return {'Pixmap': 'Path_Simulator', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Simulator", "CAM Simulator"), 'Accel': "P, M", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Simulator", "Simulate Path G-Code on stock")} diff --git a/src/Mod/Path/PathScripts/PathSlot.py b/src/Mod/Path/PathScripts/PathSlot.py index 2fdfcd5079..4795b9b1d1 100644 --- a/src/Mod/Path/PathScripts/PathSlot.py +++ b/src/Mod/Path/PathScripts/PathSlot.py @@ -40,23 +40,21 @@ import math # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader('Part', globals(), 'Part') +Arcs = LazyLoader('draftgeoutils.arcs', globals(), 'draftgeoutils.arcs') if FreeCAD.GuiUp: import FreeCADGui -DEBUG = False -if DEBUG: - PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) - PathLog.trackModule(PathLog.thisModule()) -else: - PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) - # Qt translation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) +PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + + class ObjectSlot(PathOp.ObjectOp): '''Proxy object for Slot operation.''' @@ -184,7 +182,8 @@ class ObjectSlot(PathOp.ObjectOp): ENUMS = self.opPropertyEnumerations() if hasattr(obj, 'Base'): if obj.Base: - (base, subsList) = obj.Base[0] + # (base, subsList) = obj.Base[0] + subsList = obj.Base[0][1] subCnt = len(subsList) if subCnt == 1: # Adjust available enumerations @@ -230,7 +229,8 @@ class ObjectSlot(PathOp.ObjectOp): C = 0 if hasattr(obj, 'Base'): if obj.Base: - (base, subsList) = obj.Base[0] + # (base, subsList) = obj.Base[0] + subsList = obj.Base[0][1] subCnt = len(subsList) if subCnt == 1: A = 0 @@ -284,7 +284,7 @@ class ObjectSlot(PathOp.ObjectOp): if isinstance(val, int) or isinstance(val, float): setVal = True if setVal: - propVal = getattr(prop, 'Value') + # propVal = getattr(prop, 'Value') setattr(prop, 'Value', val) else: setattr(obj, n, val) @@ -355,10 +355,9 @@ class ObjectSlot(PathOp.ObjectOp): self.arcRadius = 0.0 self.newRadius = 0.0 self.isDebug = False if PathLog.getLevel(PathLog.thisModule()) != 4 else True - self.showDebugObjects = obj.ShowTempObjects + self.showDebugObjects = False self.stockZMin = self.job.Stock.Shape.BoundBox.ZMin CMDS = list() - FCAD = FreeCAD.ActiveDocument try: dotIdx = __name__.index('.') + 1 @@ -366,18 +365,17 @@ class ObjectSlot(PathOp.ObjectOp): dotIdx = 0 self.module = __name__[dotIdx:] - if not self.isDebug: - self.showDebugObjects = False + # Setup debugging group for temp objects, when in DEBUG mode + if self.isDebug: + self.showDebugObjects = obj.ShowTempObjects if self.showDebugObjects: + FCAD = FreeCAD.ActiveDocument for grpNm in ['tmpDebugGrp', 'tmpDebugGrp001']: - if hasattr(FreeCAD.ActiveDocument, grpNm): - for go in FreeCAD.ActiveDocument.getObject(grpNm).Group: - FreeCAD.ActiveDocument.removeObject(go.Name) - FreeCAD.ActiveDocument.removeObject(grpNm) - self.tmpGrp = FreeCAD.ActiveDocument.addObject('App::DocumentObjectGroup', 'tmpDebugGrp') - tmpGrpNm = self.tmpGrp.Name - - # self.updateEnumerations(obj) + if hasattr(FCAD, grpNm): + for go in FCAD.getObject(grpNm).Group: + FCAD.removeObject(go.Name) + FCAD.removeObject(grpNm) + self.tmpGrp = FCAD.addObject('App::DocumentObjectGroup', 'tmpDebugGrp') # Begin GCode for operation with basic information # ... and move cutter to clearance height and startpoint @@ -415,8 +413,7 @@ class ObjectSlot(PathOp.ObjectOp): # Hide the temporary objects if self.showDebugObjects: if FreeCAD.GuiUp: - import FreeCADGui - FreeCADGui.ActiveDocument.getObject(tmpGrpNm).Visibility = False + FreeCADGui.ActiveDocument.getObject(self.tmpGrp.Name).Visibility = False self.tmpGrp.purgeTouched() return True @@ -427,9 +424,6 @@ class ObjectSlot(PathOp.ObjectOp): pnts = False featureCnt = 0 - def eLen(E): - return E.Length - if not hasattr(obj, 'Base'): msg = translate('PathSlot', 'No Base Geometry object in the operation.') @@ -448,30 +442,27 @@ class ObjectSlot(PathOp.ObjectOp): FreeCAD.Console.PrintError(msg + '\n') return False - if pnts: - (p1, p2) = pnts + baseGeom = obj.Base[0] + base, subsList = baseGeom + self.base = base + lenSL = len(subsList) + featureCnt = lenSL + if lenSL == 1: + PathLog.debug('Reference 1: {}'.format(obj.Reference1)) + sub1 = subsList[0] + shape_1 = getattr(base.Shape, sub1) + self.shape1 = shape_1 + pnts = self._processSingle(obj, shape_1, sub1) else: - baseGeom = obj.Base[0] - base, subsList = baseGeom - self.base = base - lenSL = len(subsList) - featureCnt = lenSL - if lenSL == 1: - PathLog.debug('Reference 1: {}'.format(obj.Reference1)) - sub1 = subsList[0] - shape_1 = getattr(base.Shape, sub1) - self.shape1 = shape_1 - pnts = self._processSingle(obj, shape_1, sub1) - else: - PathLog.debug('Reference 1: {}'.format(obj.Reference1)) - PathLog.debug('Reference 2: {}'.format(obj.Reference2)) - sub1 = subsList[0] - sub2 = subsList[1] - shape_1 = getattr(base.Shape, sub1) - shape_2 = getattr(base.Shape, sub2) - self.shape1 = shape_1 - self.shape2 = shape_2 - pnts = self._processDouble(obj, shape_1, sub1, shape_2, sub2) + PathLog.debug('Reference 1: {}'.format(obj.Reference1)) + PathLog.debug('Reference 2: {}'.format(obj.Reference2)) + sub1 = subsList[0] + sub2 = subsList[1] + shape_1 = getattr(base.Shape, sub1) + shape_2 = getattr(base.Shape, sub2) + self.shape1 = shape_1 + self.shape2 = shape_2 + pnts = self._processDouble(obj, shape_1, sub1, shape_2, sub2) if not pnts: return False @@ -555,7 +546,8 @@ class ObjectSlot(PathOp.ObjectOp): It accepts the operation object and two end points for the path. It returns the slot gcode for the operation.""" CMDS = list() - PATHS = [(p1, p2, 'G2'), (p2, p1, 'G3')] + PATHS = [(p2, p1, 'G2'), (p1, p2, 'G3')] + path_index = 0 def arcPass(PNTS, depth): cmds = list() @@ -572,29 +564,36 @@ class ObjectSlot(PathOp.ObjectOp): return cmds if obj.LayerMode == 'Single-pass': - PNTS = PATHS[0] if obj.ReverseDirection: - PNTS = PATHS[1] - CMDS.extend(arcPass(PNTS, obj.FinalDepth.Value)) + path_index = 1 + CMDS.extend(arcPass(PATHS[path_index], obj.FinalDepth.Value)) else: if obj.CutPattern == 'Line': - PNTS = PATHS[0] if obj.ReverseDirection: - PNTS = PATHS[1] + path_index = 1 for dep in self.depthParams: - CMDS.extend(arcPass(PNTS, dep)) + CMDS.extend(arcPass(PATHS[path_index], dep)) CMDS.append(Path.Command('G0', {'Z': obj.SafeHeight.Value, 'F': self.vertRapid})) elif obj.CutPattern == 'ZigZag': i = 0 for dep in self.depthParams: - if i % 2.0 == 0: # even - CMDS.extend(arcPass(PATHS[0], dep)) - else: # odd - CMDS.extend(arcPass(PATHS[1], dep)) + if obj.ReverseDirection: + if i % 2.0 == 0: # even + CMDS.extend(arcPass(PATHS[0], dep)) + else: # odd + CMDS.extend(arcPass(PATHS[1], dep)) + else: + if i % 2.0 == 0: # even + CMDS.extend(arcPass(PATHS[1], dep)) + else: # odd + CMDS.extend(arcPass(PATHS[0], dep)) i += 1 # Raise to SafeHeight when finished CMDS.append(Path.Command('G0', {'Z': obj.SafeHeight.Value, 'F': self.vertRapid})) + if self.isDebug: + PathLog.debug('G-code arc command is: {}'.format(PATHS[path_index][2])) + return CMDS def _finishLine(self, obj, pnts, featureCnt): @@ -694,7 +693,6 @@ class ObjectSlot(PathOp.ObjectOp): def _processSingle(self, obj, shape_1, sub1): """This is the control method for slots based on a single Base Geometry feature.""" - cmds = False make = False cat1 = sub1[:4] @@ -892,7 +890,7 @@ class ObjectSlot(PathOp.ObjectOp): return True def circleCentFrom3Points(P1, P2, P3): - # Source code for this function copied from: + # Source code for this function copied from (with modifications): # https://wiki.freecadweb.org/Macro_Draft_Circle_3_Points_3D P1P2 = (P2 - P1).Length P2P3 = (P3 - P2).Length @@ -900,21 +898,20 @@ class ObjectSlot(PathOp.ObjectOp): # Circle radius. l = ((P1 - P2).cross(P2 - P3)).Length - try: - r = P1P2 * P2P3 * P3P1 / 2 / l - except: + # r = P1P2 * P2P3 * P3P1 / 2 / l + if round(l, 8) == 0.0: PathLog.error("The three points are aligned.") return False - else: - # Sphere center. - a = P2P3**2 * (P1 - P2).dot(P1 - P3) / 2 / l**2 - b = P3P1**2 * (P2 - P1).dot(P2 - P3) / 2 / l**2 - c = P1P2**2 * (P3 - P1).dot(P3 - P2) / 2 / l**2 - P1.multiply(a) - P2.multiply(b) - P3.multiply(c) - PC = P1 + P2 + P3 - return PC + + # Sphere center. + a = P2P3**2 * (P1 - P2).dot(P1 - P3) / 2 / l**2 + b = P3P1**2 * (P2 - P1).dot(P2 - P3) / 2 / l**2 + c = P1P2**2 * (P3 - P1).dot(P3 - P2) / 2 / l**2 + P1.multiply(a) + P2.multiply(b) + P3.multiply(c) + PC = P1 + P2 + P3 + return PC # Process edge based on curve type if edge.Curve.TypeId in lineTypes: @@ -978,9 +975,7 @@ class ObjectSlot(PathOp.ObjectOp): PathLog.debug('_processDouble()') """This is the control method for slots based on a two Base Geometry features.""" - cmds = False - make = False - cat2 = sub2[:4] + p1 = None p2 = None dYdX1 = None @@ -1072,7 +1067,7 @@ class ObjectSlot(PathOp.ObjectOp): for V in shape_1.Vertexes: if V.Z < zmin: zmin = V.Z - vMin = V + # vMin = V elif V.Z == zmin: same.append(V) if len(same) > 1: @@ -1092,7 +1087,7 @@ class ObjectSlot(PathOp.ObjectOp): for V in shape_1.Vertexes: if V.Z > zmax: zmax = V.Z - vMax = V + # vMax = V elif V.Z == zmax: same.append(V) if len(same) > 1: @@ -1177,7 +1172,6 @@ class ObjectSlot(PathOp.ObjectOp): y = self.newRadius * math.sin(rads) a = FreeCAD.Vector(self.newRadius, 0.0, 0.0) b = FreeCAD.Vector(x, y, 0.0) - c = FreeCAD.Vector(0.0, 0.0, 0.0) return Part.makeLine(a, b) if begExt or endExt: @@ -1286,7 +1280,6 @@ class ObjectSlot(PathOp.ObjectOp): return (n1, n2) else: toEnd = p2.sub(p1) - factor = halfDist / toEnd.Length perp = FreeCAD.Vector(-1 * toEnd.y, toEnd.x, 0.0) perp.normalize() perp.multiply(halfDist) @@ -1462,8 +1455,6 @@ class ObjectSlot(PathOp.ObjectOp): for i in slcs: wires.append(i) if len(wires) > 0: - isFace = False - csWire = wires[0] if wires[0].isClosed(): face = Part.Face(wires[0]) if face.Area > 0: @@ -1571,7 +1562,10 @@ class ObjectSlot(PathOp.ObjectOp): Make arch face between circles. Fuse and extrude it vertically. Check for collision with model.""" # Make path travel of tool as 3D solid. - rad = self.tool.Diameter / 2.0 + if hasattr(self.tool.Diameter, 'Value'): + rad = self.tool.Diameter.Value / 2.0 + else: + rad = self.tool.Diameter / 2.0 extFwd = obj.StartDepth.Value - obj.FinalDepth.Value extVect = FreeCAD.Vector(0.0, 0.0, extFwd) @@ -1614,8 +1608,7 @@ class ObjectSlot(PathOp.ObjectOp): # Make wire with inside and outside arcs, and lines on ends. # Convert wire to face, then extrude - import draftgeoutils.arcs as Arcs - # Arc 1 - inside + # verify offset does not force radius < 0 newRadius = arcRadius - rad # PathLog.debug('arcRadius, newRadius: {}, {}'.format(arcRadius, newRadius)) @@ -1682,7 +1675,7 @@ class ObjectSlot(PathOp.ObjectOp): do = FreeCAD.ActiveDocument.addObject('Part::Feature', 'tmp_' + objName) do.Shape = objShape do.purgeTouched() - self.tempGroup.addObject(do) + self.tmpGrp.addObject(do) # Eclass diff --git a/src/Mod/Path/PathScripts/PathSlotGui.py b/src/Mod/Path/PathScripts/PathSlotGui.py index 9db6c704b7..397ec14fdf 100644 --- a/src/Mod/Path/PathScripts/PathSlotGui.py +++ b/src/Mod/Path/PathScripts/PathSlotGui.py @@ -238,9 +238,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Slot', PathSlot.Create, TaskPanelOpPage, - 'Path-Slot', - QtCore.QT_TRANSLATE_NOOP("Slot", "Slot"), - QtCore.QT_TRANSLATE_NOOP("Slot", "Create a Slot operation from selected geometry or custom points."), + 'Path_Slot', + QtCore.QT_TRANSLATE_NOOP("Path_Slot", "Slot"), + QtCore.QT_TRANSLATE_NOOP("Path_Slot", "Create a Slot operation from selected geometry or custom points."), PathSlot.SetupProperties) FreeCAD.Console.PrintLog("Loading PathSlotGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathStop.py b/src/Mod/Path/PathScripts/PathStop.py index e669bd7577..fdfe80572e 100644 --- a/src/Mod/Path/PathScripts/PathStop.py +++ b/src/Mod/Path/PathScripts/PathStop.py @@ -82,7 +82,7 @@ class _ViewProviderStop: return None def getIcon(self): # optional - return ":/icons/Path-Stop.svg" + return ":/icons/Path_Stop.svg" def onChanged(self, vobj, prop): # optional # pylint: disable=unused-argument @@ -101,7 +101,7 @@ class _ViewProviderStop: class CommandPathStop: def GetResources(self): - return {'Pixmap': 'Path-Stop', + return {'Pixmap': 'Path_Stop', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_Stop", "Stop"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_Stop", "Add Optional or Mandatory Stop to the program")} diff --git a/src/Mod/Path/PathScripts/PathSurface.py b/src/Mod/Path/PathScripts/PathSurface.py index fdc76a717a..015fdbb579 100644 --- a/src/Mod/Path/PathScripts/PathSurface.py +++ b/src/Mod/Path/PathScripts/PathSurface.py @@ -496,8 +496,8 @@ class ObjectSurface(PathOp.ObjectOp): # set cut mode; reverse as needed if obj.CutMode == 'Climb': self.CutClimb = True - if obj.CutPatternReversed is True: - if self.CutClimb is True: + if obj.CutPatternReversed: + if self.CutClimb: self.CutClimb = False else: self.CutClimb = True @@ -919,9 +919,11 @@ class ObjectSurface(PathOp.ObjectOp): elif obj.CutPattern in ['Line', 'Spiral', 'ZigZag']: stpOvr = list() if obj.CutPattern == 'Line': - PNTSET = PathSurfaceSupport.pathGeomToLinesPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + # PNTSET = PathSurfaceSupport.pathGeomToLinesPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + PNTSET = PathSurfaceSupport.pathGeomToLinesPointSet(self, obj, pathGeom) elif obj.CutPattern == 'ZigZag': - PNTSET = PathSurfaceSupport.pathGeomToZigzagPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + # PNTSET = PathSurfaceSupport.pathGeomToZigzagPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + PNTSET = PathSurfaceSupport.pathGeomToZigzagPointSet(self, obj, pathGeom) elif obj.CutPattern == 'Spiral': PNTSET = PathSurfaceSupport.pathGeomToSpiralPointSet(obj, pathGeom) @@ -938,7 +940,8 @@ class ObjectSurface(PathOp.ObjectOp): elif obj.CutPattern in ['Circular', 'CircularZigZag']: # PNTSET is list, by stepover. # Each stepover is a list containing arc/loop descriptions, (sp, ep, cp) - PNTSET = PathSurfaceSupport.pathGeomToCircularPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps, self.tmpCOM) + # PNTSET = PathSurfaceSupport.pathGeomToCircularPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps, self.tmpCOM) + PNTSET = PathSurfaceSupport.pathGeomToCircularPointSet(self, obj, pathGeom) for so in range(0, len(PNTSET)): stpOvr = list() @@ -1803,6 +1806,9 @@ class ObjectSurface(PathOp.ObjectOp): lo = ocl.Line(p2, p1) else: lo = ocl.Line(p1, p2) + else: + # default to line-object + lo = ocl.Line(p1, p2) else: lo = ocl.Line(p1, p2) # line-object diff --git a/src/Mod/Path/PathScripts/PathSurfaceGui.py b/src/Mod/Path/PathScripts/PathSurfaceGui.py index 07f83703cc..038a670c52 100644 --- a/src/Mod/Path/PathScripts/PathSurfaceGui.py +++ b/src/Mod/Path/PathScripts/PathSurfaceGui.py @@ -226,9 +226,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Surface', PathSurface.Create, TaskPanelOpPage, - 'Path-3DSurface', - QtCore.QT_TRANSLATE_NOOP("Surface", "3D Surface"), - QtCore.QT_TRANSLATE_NOOP("Surface", "Create a 3D Surface Operation from a model"), + 'Path_3DSurface', + QtCore.QT_TRANSLATE_NOOP("Path_Surface", "3D Surface"), + QtCore.QT_TRANSLATE_NOOP("Path_Surface", "Create a 3D Surface Operation from a model"), PathSurface.SetupProperties) FreeCAD.Console.PrintLog("Loading PathSurfaceGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathSurfaceSupport.py b/src/Mod/Path/PathScripts/PathSurfaceSupport.py index 7f73747280..6eae4328eb 100644 --- a/src/Mod/Path/PathScripts/PathSurfaceSupport.py +++ b/src/Mod/Path/PathScripts/PathSurfaceSupport.py @@ -33,6 +33,7 @@ from PySide import QtCore import Path import PathScripts.PathLog as PathLog import PathScripts.PathUtils as PathUtils +import PathScripts.PathOpTools as PathOpTools import math # lazily loaded modules @@ -225,7 +226,6 @@ class PathGeometryGenerator: def _Line(self): GeoSet = list() centRot = FreeCAD.Vector(0.0, 0.0, 0.0) # Bottom left corner of face/selection/model - cAng = math.atan(self.deltaX / self.deltaY) # BoundaryBox angle # Create end points for set of lines to intersect with cross-section face pntTuples = list() @@ -383,15 +383,64 @@ class PathGeometryGenerator: wires = list() shape = self.shape offset = 0.0 # Start right at the edge of cut area + direction = 0 + loop_cnt = 0 + + def _get_direction(w): + if PathOpTools._isWireClockwise(w): + return 1 + return -1 + + def _reverse_wire(w): + rev_list = list() + for e in w.Edges: + rev_list.append(PathUtils.reverseEdge(e)) + rev_list.reverse() + # return Part.Wire(Part.__sortEdges__(rev_list)) + return Part.Wire(rev_list) + while True: offsetArea = PathUtils.getOffsetArea(shape, offset, plane=self.wpc) if not offsetArea: # Area fully consumed break + + # set initial cut direction + if direction == 0: + first_face_wire = offsetArea.Faces[0].Wires[0] + direction = _get_direction(first_face_wire) + if self.obj.CutMode == 'Climb': + if direction == 1: + direction = -1 + else: + if direction == -1: + direction = 1 + + # Correct cut direction for `Conventional` cuts + if self.obj.CutMode == 'Conventional': + if loop_cnt == 1: + direction = direction * -1 + + # process each wire within face for f in offsetArea.Faces: + wire_cnt = 0 for w in f.Wires: - wires.append(w) + use_direction = direction + if wire_cnt > 0: + # swap direction for internal features + use_direction = direction * -1 + wire_direction = _get_direction(w) + # Process wire + if wire_direction == use_direction: + # direction is correct + wires.append(w) + else: + # incorrect direction, so reverse wire + rw = _reverse_wire(w) + wires.append(rw) + offset -= self.cutOut + loop_cnt += 1 return wires # Eclass @@ -424,7 +473,6 @@ class ProcessSelectedFaces: # Setup STL, model type, and bound box containers for each model in Job for m in range(0, len(JOB.Model.Group)): - M = JOB.Model.Group[m] self.modelSTLs.append(False) self.profileShapes.append(False) @@ -747,8 +795,6 @@ class ProcessSelectedFaces: PathLog.debug('Processing avoid faces.') cont = True isHole = False - outFCS = list() - intFEAT = list() outFCS, intFEAT = self.findUnifiedRegions(VDS) if self.obj.InternalFeaturesCut: @@ -1207,8 +1253,8 @@ def _makeSTL(model, obj, ocl, model_type=None): # Functions to convert path geometry into line/arc segments for OCL input or directly to g-code -def pathGeomToLinesPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps): - '''pathGeomToLinesPointSet(obj, compGeoShp)... +def pathGeomToLinesPointSet(self, obj, compGeoShp): + '''pathGeomToLinesPointSet(self, obj, compGeoShp)... Convert a compound set of sequential line segments to directionally-oriented collinear groupings.''' PathLog.debug('pathGeomToLinesPointSet()') # Extract intersection line segments for return value as list() @@ -1222,7 +1268,7 @@ def pathGeomToLinesPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps edg0 = compGeoShp.Edges[0] p1 = (edg0.Vertexes[0].X, edg0.Vertexes[0].Y) p2 = (edg0.Vertexes[1].X, edg0.Vertexes[1].Y) - if cutClimb is True: + if self.CutClimb is True: tup = (p2, p1) lst = FreeCAD.Vector(p1[0], p1[1], 0.0) else: @@ -1245,44 +1291,43 @@ def pathGeomToLinesPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps inLine.append('BRK') chkGap = True else: - if cutClimb is True: + if self.CutClimb is True: inLine.reverse() LINES.append(inLine) # Save inLine segments lnCnt += 1 inLine = list() # reset collinear container - if cutClimb is True: + if self.CutClimb is True: sp = cp # FreeCAD.Vector(v1[0], v1[1], 0.0) else: sp = ep - if cutClimb is True: + if self.CutClimb is True: tup = (v2, v1) - if chkGap is True: - gap = abs(toolDiam - lst.sub(ep).Length) + if chkGap: + gap = abs(self.toolDiam - lst.sub(ep).Length) lst = cp else: tup = (v1, v2) - if chkGap is True: - gap = abs(toolDiam - lst.sub(cp).Length) + if chkGap: + gap = abs(self.toolDiam - lst.sub(cp).Length) lst = ep - if chkGap is True: + if chkGap: if gap < obj.GapThreshold.Value: - b = inLine.pop() # pop off 'BRK' marker + inLine.pop() # pop off 'BRK' marker (vA, vB) = inLine.pop() # pop off previous line segment for combining with current tup = (vA, tup[1]) - closedGap = True - True if closedGap else False # used closedGap for LGTM + self.closedGap = True else: gap = round(gap, 6) - if gap < gaps[0]: - gaps.insert(0, gap) - gaps.pop() + if gap < self.gaps[0]: + self.gaps.insert(0, gap) + self.gaps.pop() inLine.append(tup) # Efor lnCnt += 1 - if cutClimb is True: + if self.CutClimb is True: inLine.reverse() LINES.append(inLine) # Save inLine segments @@ -1308,8 +1353,8 @@ def pathGeomToLinesPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps return LINES -def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps): - '''_pathGeomToZigzagPointSet(obj, compGeoShp)... +def pathGeomToZigzagPointSet(self, obj, compGeoShp): + '''_pathGeomToZigzagPointSet(self, obj, compGeoShp)... Convert a compound set of sequential line segments to directionally-oriented collinear groupings with a ZigZag directional indicator included for each collinear group.''' PathLog.debug('_pathGeomToZigzagPointSet()') @@ -1321,7 +1366,7 @@ def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gap ec = len(compGeoShp.Edges) dirFlg = 1 - if cutClimb: + if self.CutClimb: dirFlg = -1 edg0 = compGeoShp.Edges[0] @@ -1348,7 +1393,7 @@ def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gap if iC: inLine.append('BRK') chkGap = True - gap = abs(toolDiam - lst.sub(cp).Length) + gap = abs(self.toolDiam - lst.sub(cp).Length) else: chkGap = False if dirFlg == -1: @@ -1367,18 +1412,18 @@ def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gap if chkGap: if gap < obj.GapThreshold.Value: - b = inLine.pop() # pop off 'BRK' marker + inLine.pop() # pop off 'BRK' marker (vA, vB) = inLine.pop() # pop off previous line segment for combining with current if dirFlg == 1: tup = (vA, tup[1]) else: tup = (tup[0], vB) - closedGap = True + self.closedGap = True else: gap = round(gap, 6) - if gap < gaps[0]: - gaps.insert(0, gap) - gaps.pop() + if gap < self.gaps[0]: + self.gaps.insert(0, gap) + self.gaps.pop() inLine.append(tup) # Efor lnCnt += 1 @@ -1391,7 +1436,7 @@ def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gap PathLog.debug('Line count is ODD: {}.'.format(lnCnt)) dirFlg = -1 * dirFlg if not obj.CutPatternReversed: - if cutClimb: + if self.CutClimb: dirFlg = -1 * dirFlg if obj.CutPatternReversed: @@ -1425,8 +1470,8 @@ def pathGeomToZigzagPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gap return LINES -def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, gaps, COM): - '''pathGeomToCircularPointSet(obj, compGeoShp)... +def pathGeomToCircularPointSet(self, obj, compGeoShp): + '''pathGeomToCircularPointSet(self, obj, compGeoShp)... Convert a compound set of arcs/circles to a set of directionally-oriented arc end points and the corresponding center point.''' # Extract intersection line segments for return value as list() @@ -1443,6 +1488,22 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g Y = (ep[1] - sp[1])**2 return math.sqrt(X + Y) # the 'z' value is zero in both points + def dist_to_cent(item): + # Sort incoming arcs by distance to center + # item: edge type, direction flag, parts tuple + # parts: start tuple, end tuple, center tuple + s = item[2][0][0] + p1 = FreeCAD.Vector(s[0], s[1], 0.0) + e = item[2][0][2] + p2 = FreeCAD.Vector(e[0], e[1], 0.0) + return p1.sub(p2).Length + + if obj.CutPatternReversed: + if self.CutClimb: + self.CutClimb = False + else: + self.CutClimb = True + # Separate arc data into Loops and Arcs for ei in range(0, ec): edg = compGeoShp.Edges[ei] @@ -1453,11 +1514,11 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g segEI.append(ei) isSame = True pnt = FreeCAD.Vector(edg.Vertexes[0].X, edg.Vertexes[0].Y, 0.0) - sameRad = pnt.sub(COM).Length + sameRad = pnt.sub(self.tmpCOM).Length else: # Check if arc is co-radial to current SEGS pnt = FreeCAD.Vector(edg.Vertexes[0].X, edg.Vertexes[0].Y, 0.0) - if abs(sameRad - pnt.sub(COM).Length) > 0.00001: + if abs(sameRad - pnt.sub(self.tmpCOM).Length) > 0.00001: isSame = False if isSame is True: @@ -1469,7 +1530,7 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g segEI = [ei] isSame = True pnt = FreeCAD.Vector(edg.Vertexes[0].X, edg.Vertexes[0].Y, 0.0) - sameRad = pnt.sub(COM).Length + sameRad = pnt.sub(self.tmpCOM).Length # Process trailing `segEI` data, if available if isSame is True: stpOvrEI.append(['A', segEI, False]) @@ -1486,9 +1547,9 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g for i in range(0, len(EI)): ei = EI[i] # edge index E = compGeoShp.Edges[ei] # edge object - if abs(COM.y - E.Vertexes[0].Y) < 0.00001: + if abs(self.tmpCOM.y - E.Vertexes[0].Y) < 0.00001: startOnAxis.append((i, ei, E.Vertexes[0])) - elif abs(COM.y - E.Vertexes[1].Y) < 0.00001: + elif abs(self.tmpCOM.y - E.Vertexes[1].Y) < 0.00001: endOnAxis.append((i, ei, E.Vertexes[1])) # Look for connections between startOnAxis and endOnAxis arcs. Consolidate data when connected @@ -1511,9 +1572,12 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g # Construct arc data tuples for OCL dirFlg = 1 - if not cutClimb: # True yields Climb when set to Conventional + if not self.CutClimb: # True yields Climb when set to Conventional dirFlg = -1 + # Declare center point of circle pattern + cp = (self.tmpCOM.x, self.tmpCOM.y, 0.0) + # Cycle through stepOver data for so in range(0, len(stpOvrEI)): SO = stpOvrEI[so] @@ -1524,28 +1588,27 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g # space = obj.SampleInterval.Value / 10.0 # space = 0.000001 - space = toolDiam * 0.005 # If too small, OCL will fail to scan the loop + space = self.toolDiam * 0.005 # If too small, OCL will fail to scan the loop # p1 = FreeCAD.Vector(v1.X, v1.Y, v1.Z) p1 = FreeCAD.Vector(v1.X, v1.Y, 0.0) # z=0.0 for waterline; z=v1.Z for 3D Surface - rad = p1.sub(COM).Length + rad = p1.sub(self.tmpCOM).Length spcRadRatio = space/rad if spcRadRatio < 1.0: tolrncAng = math.asin(spcRadRatio) else: tolrncAng = 0.99999998 * math.pi - EX = COM.x + (rad * math.cos(tolrncAng)) + EX = self.tmpCOM.x + (rad * math.cos(tolrncAng)) EY = v1.Y - space # rad * math.sin(tolrncAng) sp = (v1.X, v1.Y, 0.0) ep = (EX, EY, 0.0) - cp = (COM.x, COM.y, 0.0) if dirFlg == 1: arc = (sp, ep, cp) else: arc = (ep, sp, cp) # OCL.Arc(firstPnt, lastPnt, centerPnt, dir=True(CCW direction)) ARCS.append(('L', dirFlg, [arc])) - else: # SO[0] == 'A' A = Arc + elif SO[0] == 'A': # A = Arc # PathLog.debug("SO[0] == 'Arc'") PRTS = list() EI = SO[1] # list of corresponding Edges indexes @@ -1553,13 +1616,12 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g chkGap = False lst = None - if CONN: + if CONN: # Connected edges(arcs) (iE, iS) = CONN v1 = compGeoShp.Edges[iE].Vertexes[0] v2 = compGeoShp.Edges[iS].Vertexes[1] sp = (v1.X, v1.Y, 0.0) ep = (v2.X, v2.Y, 0.0) - cp = (COM.x, COM.y, 0.0) if dirFlg == 1: arc = (sp, ep, cp) lst = ep @@ -1588,28 +1650,27 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g v2 = compGeoShp.Edges[ei].Vertexes[1] sp = (v1.X, v1.Y, 0.0) ep = (v2.X, v2.Y, 0.0) - cp = (COM.x, COM.y, 0.0) if dirFlg == 1: arc = (sp, ep, cp) - if chkGap is True: - gap = abs(toolDiam - gapDist(lst, sp)) # abs(toolDiam - lst.sub(sp).Length) + if chkGap: + gap = abs(self.toolDiam - gapDist(lst, sp)) # abs(self.toolDiam - lst.sub(sp).Length) lst = ep else: arc = (ep, sp, cp) # OCL.Arc(firstPnt, lastPnt, centerPnt, dir=True(CCW direction)) - if chkGap is True: - gap = abs(toolDiam - gapDist(lst, ep)) # abs(toolDiam - lst.sub(ep).Length) + if chkGap: + gap = abs(self.toolDiam - gapDist(lst, ep)) # abs(self.toolDiam - lst.sub(ep).Length) lst = sp - if chkGap is True: + if chkGap: if gap < obj.GapThreshold.Value: PRTS.pop() # pop off 'BRK' marker (vA, vB, vC) = PRTS.pop() # pop off previous arc segment for combining with current arc = (vA, arc[1], vC) - closedGap = True + self.closedGap = True else: gap = round(gap, 6) - if gap < gaps[0]: - gaps.insert(0, gap) - gaps.pop() + if gap < self.gaps[0]: + self.gaps.insert(0, gap) + self.gaps.pop() PRTS.append(arc) cnt += 1 @@ -1622,6 +1683,8 @@ def pathGeomToCircularPointSet(obj, compGeoShp, cutClimb, toolDiam, closedGap, g dirFlg = -1 * dirFlg # Efor + ARCS.sort(key=dist_to_cent, reverse=obj.CutPatternReversed) + return ARCS def pathGeomToSpiralPointSet(obj, compGeoShp): @@ -1837,7 +1900,6 @@ class FindUnifiedRegions: def _groupEdgesByLength(self): PathLog.debug('_groupEdgesByLength()') - cont = True threshold = self.geomToler grp = list() processLast = False @@ -1859,7 +1921,6 @@ class FindUnifiedRegions: actvItem = DATA[actvIdx][0] # 0 index is length grp.append(actvIdx) idxCnt -= 1 - noMatch = True while idxCnt > 0: tstIdx = indexes[0] @@ -1872,7 +1933,6 @@ class FindUnifiedRegions: indexes.pop(0) idxCnt -= 1 grp.append(tstIdx) - noMatch = False else: if len(grp) > 1: # grp.sort() @@ -1889,7 +1949,6 @@ class FindUnifiedRegions: def _identifySharedEdgesByLength(self, grp): PathLog.debug('_identifySharedEdgesByLength()') holds = list() - cont = True specialIndexes = [] threshold = self.geomToler @@ -1899,7 +1958,6 @@ class FindUnifiedRegions: # Sort edgeData data self.edgeData.sort(key=keyFirst) DATA = self.edgeData - lenDATA = len(DATA) lenGrp = len(grp) while lenGrp > 0: @@ -1950,10 +2008,7 @@ class FindUnifiedRegions: PathLog.debug('_extractWiresFromEdges()') DATA = self.edgeData holds = list() - lastEdge = None - lastIdx = None firstEdge = None - isWire = False cont = True connectedEdges = [] connectedIndexes = [] @@ -2036,8 +2091,6 @@ class FindUnifiedRegions: # Put holds indexes back in search stack if notConnected: holds.append(actvIdx) - if idxCnt == 0: - lastLoop = True holds.extend(indexes) indexes = holds idxCnt = len(indexes) @@ -2051,7 +2104,6 @@ class FindUnifiedRegions: numLoops = len(LOOPS) PathLog.debug(' -numLoops: {}.'.format(numLoops)) if numLoops > 0: - FACES = list() for li in range(0, numLoops): Edges = LOOPS[li] #for e in Edges: @@ -2526,11 +2578,11 @@ class OCL_Tool(): # Engraver or V-bit cutter # OCL -> ConeCutter::ConeCutter(diameter, angle, length) if (self.diameter == -1.0 or - self.cutEdgeAngle == -1.0 or self.cutEdgeHeight == -1.0): + self.cuttingEdgeAngle == -1.0 or self.cutEdgeHeight == -1.0): return self.oclTool = self.ocl.ConeCutter( self.diameter, - self.cutEdgeAngle/2., + self.cuttingEdgeAngle, self.cutEdgeHeight + self.lengthOffset ) diff --git a/src/Mod/Path/PathScripts/PathThreadMilling.py b/src/Mod/Path/PathScripts/PathThreadMilling.py new file mode 100644 index 0000000000..7b15afbc36 --- /dev/null +++ b/src/Mod/Path/PathScripts/PathThreadMilling.py @@ -0,0 +1,344 @@ +# -*- coding: utf-8 -*- +# *************************************************************************** +# * * +# * Copyright (c) 2019 sliptonic * +# * * +# * 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 * +# * * +# *************************************************************************** + +from __future__ import print_function + +import FreeCAD +import Path +import PathScripts.PathCircularHoleBase as PathCircularHoleBase +import PathScripts.PathGeom as PathGeom +import PathScripts.PathLog as PathLog +import PathScripts.PathOp as PathOp +import PathScripts.PathUtils as PathUtils +import math + +from PySide import QtCore + +__title__ = "Path Thread Milling Operation" +__author__ = "sliptonic (Brad Collette)" +__url__ = "http://www.freecadweb.org" +__doc__ = "Path thread milling operation." + +PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) +#PathLog.trackModule(PathLog.thisModule()) + +# Qt translation handling +def translate(context, text, disambig=None): + return QtCore.QCoreApplication.translate(context, text, disambig) + + +def radiiInternal(majorDia, minorDia, toolDia, toolCrest = None): + '''internlThreadRadius(majorDia, minorDia, toolDia, toolCrest) ... returns the maximum radius for thread.''' + PathLog.track(majorDia, minorDia, toolDia, toolCrest) + if toolCrest is None: + toolCrest = 0.0 + # As it turns out metric and imperial standard threads follow the same rules. + # The determining factor is the height of the full 60 degree triangle H. + # - The minor diameter is 1/4 * H smaller than the pitch diameter. + # - The major diameter is 3/8 * H bigger than the pitch diameter + # Since we already have the outer diameter it's simpler to just add 1/8 * H + # to get the outer tip of the thread. + H = ((majorDia - minorDia) / 2.0 ) * 1.6 # (D - d)/2 = 5/8 * H + outerTip = majorDia / 2.0 + H / 8.0 + # Compensate for the crest of the tool + toolTip = outerTip - toolCrest * 0.8660254037844386 # math.sqrt(3)/2 ... 60deg triangle height + return ((minorDia - toolDia) / 2.0, toolTip - toolDia / 2.0) + +def threadPasses(count, radii, majorDia, minorDia, toolDia, toolCrest = None): + PathLog.track(count, radii, majorDia, minorDia, toolDia, toolCrest) + minor, major = radii(majorDia, minorDia, toolDia, toolCrest) + dr = float(major - minor) / count + return [major - dr * (count - (i + 1)) for i in range(count)] + +class _InternalThread(object): + '''Helper class for dealing with different thread types''' + def __init__(self, cmd, zStart, zFinal, pitch): + self.cmd = cmd + if zStart < zFinal: + self.pitch = pitch + else: + self.pitch = -pitch + self.hPitch = self.pitch / 2 + self.zStart = zStart + self.zFinal = zFinal + + def overshoots(self, z): + '''overshoots(z) ... returns true if adding another half helix goes beyond the thread bounds''' + if self.pitch < 0: + return z + self.hPitch < self.zFinal + return z + self.hPitch > self.zFinal + + def adjustX(self, x, dx): + '''adjustX(x, dx) ... move x by dx, the direction depends on the thread settings''' + if self.isG3() == (self.pitch > 0): + return x + dx + return x - dx + + def adjustY(self, y, dy): + '''adjustY(y, dy) ... move y by dy, the direction depends on the thread settings''' + if self.isG3(): + return y - dy + return y - dy + + def isG3(self): + '''isG3() ... returns True if this is a G3 command''' + return self.cmd in ['G3', 'G03', 'g3', 'g03'] + + def isUp(self): + '''isUp() ... returns True if the thread goes from the bottom up''' + return self.pitch > 0 + +def internalThreadCommands(loc, cmd, zStart, zFinal, pitch, radius, leadInOut): + '''internalThreadCommands(loc, cmd, zStart, zFinal, pitch, radius) ... returns the g-code to mill the given internal thread''' + thread = _InternalThread(cmd, zStart, zFinal, pitch) + + yMin = loc.y - radius + yMax = loc.y + radius + + path = [] + # at this point the tool is at a safe height (depending on the previous thread), so we can move + # into position first, and then drop to the start height. If there is any material in the way this + # op hasn't been setup properly. + path.append(Path.Command('G0', {'X': loc.x, 'Y': loc.y})) + path.append(Path.Command('G0', {'Z': thread.zStart})) + if leadInOut: + path.append(Path.Command(thread.cmd, {'Y': yMax, 'J': (yMax - loc.y) / 2})) + else: + path.append(Path.Command('G1', {'Y': yMax})) + + z = thread.zStart + r = -radius + i = 0 + while True: + z = thread.zStart + i*thread.hPitch + if thread.overshoots(z): + break + if 0 == (i & 0x01): + y = yMin + else: + y = yMax + path.append(Path.Command(thread.cmd, {'Y': y, 'Z': z + thread.hPitch, 'J': r})) + r = -r + i = i + 1 + + + z = thread.zStart + i*thread.hPitch + if PathGeom.isRoughly(z, thread.zFinal): + x = loc.x + else: + n = math.fabs(thread.zFinal - thread.zStart) / thread.hPitch + k = n - int(n) + dy = math.cos(k * math.pi) + dx = math.sin(k * math.pi) + y = thread.adjustY(loc.y, r * dy) + x = thread.adjustX(loc.x, r * dx) + path.append(Path.Command(thread.cmd, {'X': x, 'Y': y, 'Z': thread.zFinal, 'J': r})) + + if leadInOut: + path.append(Path.Command(thread.cmd, {'X': loc.x, 'Y': loc.y, 'I': (loc.x - x) / 2, 'J': (loc.y - y) / 2})) + else: + path.append(Path.Command('G1', {'X': loc.x, 'Y': loc.y})) + return path + +class ObjectThreadMilling(PathCircularHoleBase.ObjectOp): + '''Proxy object for thread milling operation.''' + + LeftHand = 'LeftHand' + RightHand = 'RightHand' + ThreadTypeCustom = 'Custom' + ThreadTypeMetricInternal = 'Metric - internal' + ThreadTypeImperialInternal = 'Imperial - internal' + DirectionClimb = 'Climb' + DirectionConventional = 'Conventional' + + ThreadOrientations = [LeftHand, RightHand] + ThreadTypes = [ThreadTypeCustom, ThreadTypeMetricInternal, ThreadTypeImperialInternal] + Directions = [DirectionClimb, DirectionConventional] + + def circularHoleFeatures(self, obj): + return PathOp.FeatureBaseGeometry + + def initCircularHoleOperation(self, obj): + obj.addProperty("App::PropertyEnumeration", "ThreadOrientation", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set thread orientation")) + obj.ThreadOrientation = self.ThreadOrientations + obj.addProperty("App::PropertyEnumeration", "ThreadType", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Currently only internal")) + obj.ThreadType = self.ThreadTypes + obj.addProperty("App::PropertyString", "ThreadName", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Devfines which standard thread was chosen")) + obj.addProperty("App::PropertyLength", "MajorDiameter", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set thread's major diameter")) + obj.addProperty("App::PropertyLength", "MinorDiameter", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set thread's minor diameter")) + obj.addProperty("App::PropertyLength", "Pitch", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set thread's pitch - used for metric threads")) + obj.addProperty("App::PropertyInteger", "TPI", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set thread's tpi - used for imperial threads")) + obj.addProperty("App::PropertyInteger", "ThreadFit", "Thread", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set how many passes are used to cut the thread")) + obj.addProperty("App::PropertyInteger", "Passes", "Operation", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set how many passes are used to cut the thread")) + obj.addProperty("App::PropertyEnumeration", "Direction", "Operation", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Direction of thread cutting operation")) + obj.addProperty("App::PropertyBool", "LeadInOut", "Operation", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Set to True to get lead in and lead out arcs at the start and end of the thread cut")) + obj.addProperty("App::PropertyLink", "ClearanceOp", "Operation", QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Operation to clear the inside of the thread")) + obj.Direction = self.Directions + + # Rotation related properties + if not hasattr(obj, 'EnableRotation'): + obj.addProperty("App::PropertyEnumeration", "EnableRotation", "Rotation", QtCore.QT_TRANSLATE_NOOP("App::Property", "Enable rotation to gain access to pockets/areas not normal to Z axis.")) + obj.EnableRotation = ['Off', 'A(x)', 'B(y)', 'A & B'] + + + def threadStartDepth(self, obj): + if obj.ThreadOrientation == self.RightHand: + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, obj.FinalDepth) + return obj.FinalDepth + PathLog.track(obj.Label, obj.StartDepth) + return obj.StartDepth + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, obj.StartDepth) + return obj.StartDepth + PathLog.track(obj.Label, obj.FinalDepth) + return obj.FinalDepth + + def threadFinalDepth(self, obj): + PathLog.track(obj.Label) + if obj.ThreadOrientation == self.RightHand: + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, obj.StartDepth) + return obj.StartDepth + PathLog.track(obj.Label, obj.FinalDepth) + return obj.FinalDepth + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, obj.FinalDepth) + return obj.FinalDepth + PathLog.track(obj.Label, obj.StartDepth) + return obj.StartDepth + + def threadDirectionCmd(self, obj): + PathLog.track(obj.Label) + if obj.ThreadOrientation == self.RightHand: + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, 'G2') + return 'G2' + PathLog.track(obj.Label, 'G3') + return 'G3' + if obj.Direction == self.DirectionClimb: + PathLog.track(obj.Label, 'G3') + return 'G3' + PathLog.track(obj.Label, 'G2') + return 'G2' + + def threadSetup(self, obj): + # the thing to remember is that Climb, for an internal thread must always be G3 + if obj.Direction == self.DirectionClimb: + if obj.ThreadOrientation == self.RightHand: + return ('G3', obj.FinalDepth.Value, obj.StartDepth.Value) + return ('G3', obj.StartDepth.Value, obj.FinalDepth.Value) + if obj.ThreadOrientation == self.RightHand: + return ('G2', obj.StartDepth.Value, obj.FinalDepth.Value) + return ('G2', obj.FinalDepth.Value, obj.StartDepth.Value) + + def threadPassRadii(self, obj): + PathLog.track(obj.Label) + rMajor = (obj.MajorDiameter.Value - self.tool.Diameter) / 2.0 + rMinor = (obj.MinorDiameter.Value - self.tool.Diameter) / 2.0 + if obj.Passes < 1: + obj.Passes = 1 + rPass = (rMajor - rMinor) / obj.Passes + passes = [rMajor] + for i in range(1, obj.Passes): + passes.append(rMajor - rPass * i) + return list(reversed(passes)) + + def executeThreadMill(self, obj, loc, gcode, zStart, zFinal, pitch): + PathLog.track(obj.Label, loc, gcode, zStart, zFinal, pitch) + + self.commandlist.append(Path.Command('G0', {'Z': obj.ClearanceHeight.Value, 'F': self.vertRapid})) + + for radius in threadPasses(obj.Passes, radiiInternal, obj.MajorDiameter.Value, obj.MinorDiameter.Value, float(self.tool.Diameter), float(self.tool.Crest)): + commands = internalThreadCommands(loc, gcode, zStart, zFinal, pitch, radius, obj.LeadInOut) + for cmd in commands: + p = cmd.Parameters + if cmd.Name in ['G0']: + p.update({'F': self.vertRapid}) + if cmd.Name in ['G1', 'G2', 'G3']: + p.update({'F': self.horizFeed}) + cmd.Parameters = p + self.commandlist.extend(commands) + + self.commandlist.append(Path.Command('G0', {'Z': obj.ClearanceHeight.Value, 'F': self.vertRapid})) + + def circularHoleExecute(self, obj, holes): + PathLog.track() + if self.isToolSupported(obj, self.tool): + self.commandlist.append(Path.Command("(Begin Thread Milling)")) + + (cmd, zStart, zFinal) = self.threadSetup(obj) + pitch = obj.Pitch.Value + if obj.TPI > 0: + pitch = 25.4 / obj.TPI + if pitch <= 0: + PathLog.error("Cannot create thread with pitch {}".format(pitch)) + return + + # rapid to clearance height + for loc in holes: + self.executeThreadMill(obj, FreeCAD.Vector(loc['x'], loc['y'], 0), cmd, zStart, zFinal, pitch) + else: + PathLog.error("No suitable Tool found for thread milling operation") + + + def opSetDefaultValues(self, obj, job): + obj.ThreadOrientation = self.RightHand + obj.ThreadType = self.ThreadTypeMetricInternal + obj.ThreadFit = 50 + obj.Pitch = 1 + obj.TPI = 0 + obj.Passes = 1 + obj.Direction = self.DirectionClimb + obj.LeadInOut = True + + def isToolSupported(self, obj, tool): + '''Thread milling only supports thread milling cutters.''' + return hasattr(tool, 'Diameter') and hasattr(tool, 'Crest') + + +def SetupProperties(): + setup = [] + setup.append("ThreadOrientation") + setup.append("ThreadType") + setup.append("ThreadName") + setup.append("ThreadFit") + setup.append("MajorDiameter") + setup.append("MinorDiameter") + setup.append("Pitch") + setup.append("TPI") + setup.append("Passes") + setup.append("Direction") + setup.append("LeadInOut") + return setup + + +def Create(name, obj=None): + '''Create(name) ... Creates and returns a thread milling operation.''' + if obj is None: + obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name) + obj.Proxy = ObjectThreadMilling(obj, name) + if obj.Proxy: + obj.Proxy.findAllHoles(obj) + return obj + diff --git a/src/Mod/Path/PathScripts/PathThreadMillingGui.py b/src/Mod/Path/PathScripts/PathThreadMillingGui.py new file mode 100644 index 0000000000..66acac9387 --- /dev/null +++ b/src/Mod/Path/PathScripts/PathThreadMillingGui.py @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- +# *************************************************************************** +# * * +# * Copyright (c) 2019 sliptonic * +# * * +# * 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 PathScripts.PathCircularHoleBaseGui as PathCircularHoleBaseGui +import PathScripts.PathThreadMilling as PathThreadMilling +import PathScripts.PathGui as PathGui +import PathScripts.PathLog as PathLog +import PathScripts.PathOpGui as PathOpGui +import csv + +from PySide import QtCore + +__title__ = "Path Thread Milling Operation UI." +__author__ = "sliptonic (Brad Collette)" +__url__ = "http://www.freecadweb.org" +__doc__ = "UI and Command for Path Thread Milling Operation." + +PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) +#PathLog.trackModule(PathLog.thisModule()) + +def setupCombo(combo, selections): + combo.clear() + for item in selections: + combo.addItem(item) + +def fillThreads(combo, dataFile): + combo.blockSignals(True) + combo.clear() + with open("{}Mod/Path/Data/Threads/{}.csv".format(FreeCAD.getHomePath(), dataFile)) as fp: + reader = csv.DictReader(fp) + for row in reader: + combo.addItem(row['name'], row) + combo.setEnabled(True) + combo.blockSignals(False) + +class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): + '''Controller for the thread milling operation's page''' + + def initPage(self, obj): + self.majorDia = PathGui.QuantitySpinBox(self.form.threadMajor, obj, 'MajorDiameter') # pylint: disable=attribute-defined-outside-init + self.minorDia = PathGui.QuantitySpinBox(self.form.threadMinor, obj, 'MinorDiameter') # pylint: disable=attribute-defined-outside-init + self.pitch = PathGui.QuantitySpinBox(self.form.threadPitch, obj, 'Pitch') # pylint: disable=attribute-defined-outside-init + + setupCombo(self.form.threadOrientation, obj.Proxy.ThreadOrientations) + setupCombo(self.form.threadType, obj.Proxy.ThreadTypes) + setupCombo(self.form.opDirection, obj.Proxy.Directions) + + def getForm(self): + '''getForm() ... return UI''' + return FreeCADGui.PySideUic.loadUi(":/panels/PageOpThreadMillingEdit.ui") + + def getFields(self, obj): + '''getFields(obj) ... update obj's properties with values from the UI''' + PathLog.track() + + self.majorDia.updateProperty() + self.minorDia.updateProperty() + self.pitch.updateProperty() + + obj.ThreadOrientation = self.form.threadOrientation.currentText() + obj.ThreadType = self.form.threadType.currentText() + obj.ThreadName = self.form.threadName.currentText() + obj.Direction = self.form.opDirection.currentText() + obj.Passes = self.form.opPasses.value() + obj.LeadInOut = self.form.leadInOut.checkState() == QtCore.Qt.Checked + obj.TPI = self.form.threadTPI.value() + + self.updateToolController(obj, self.form.toolController) + + def setFields(self, obj): + '''setFields(obj) ... update UI with obj properties' values''' + PathLog.track() + + self.form.threadOrientation.setCurrentText(obj.ThreadOrientation) + + self.form.threadType.blockSignals(True) + self.form.threadName.blockSignals(True) + self.form.threadType.setCurrentText(obj.ThreadType) + self._updateFromThreadType() + self.form.threadName.setCurrentText(obj.ThreadName) + self.form.threadType.blockSignals(False) + self.form.threadName.blockSignals(False) + self.form.threadTPI.setValue(obj.TPI) + + self.form.opPasses.setValue(obj.Passes) + self.form.opDirection.setCurrentText(obj.Direction) + self.form.leadInOut.setCheckState(QtCore.Qt.Checked if obj.LeadInOut else QtCore.Qt.Unchecked) + + self.majorDia.updateSpinBox() + self.minorDia.updateSpinBox() + self.pitch.updateSpinBox() + + self.setupToolController(obj, self.form.toolController) + + + def _isThreadMetric(self): + return self.form.threadType.currentText() == PathThreadMilling.ObjectThreadMilling.ThreadTypeMetricInternal + + def _isThreadImperial(self): + return self.form.threadType.currentText() == PathThreadMilling.ObjectThreadMilling.ThreadTypeImperialInternal + + def _updateFromThreadType(self): + + if self.form.threadType.currentText() == PathThreadMilling.ObjectThreadMilling.ThreadTypeCustom: + self.form.threadName.setEnabled(False) + self.form.threadFit.setEnabled(False) + self.form.threadFitLabel.setEnabled(False) + self.form.threadPitch.setEnabled(True) + self.form.threadPitchLabel.setEnabled(True) + self.form.threadTPI.setEnabled(True) + self.form.threadTPILabel.setEnabled(True) + + if self._isThreadMetric(): + self.form.threadFit.setEnabled(True) + self.form.threadFitLabel.setEnabled(True) + self.form.threadPitch.setEnabled(True) + self.form.threadPitchLabel.setEnabled(True) + self.form.threadTPI.setEnabled(False) + self.form.threadTPILabel.setEnabled(False) + self.form.threadTPI.setValue(0) + fillThreads(self.form.threadName, 'metric-internal') + + if self._isThreadImperial(): + self.form.threadFit.setEnabled(True) + self.form.threadFitLabel.setEnabled(True) + self.form.threadPitch.setEnabled(False) + self.form.threadPitchLabel.setEnabled(False) + self.form.threadTPI.setEnabled(True) + self.form.threadTPILabel.setEnabled(True) + self.pitch.updateSpinBox(0) + fillThreads(self.form.threadName, 'imperial-internal') + + def _updateFromThreadName(self): + thread = self.form.threadName.currentData() + fit = float(self.form.threadFit.value()) / 100 + mamin = float(thread['dMajorMin']) + mamax = float(thread['dMajorMax']) + major = mamin + (mamax - mamin) * fit + mimin = float(thread['dMinorMin']) + mimax = float(thread['dMinorMax']) + minor = mimin + (mimax - mimin) * fit + + if self._isThreadMetric(): + pitch = float(thread['pitch']) + self.pitch.updateSpinBox(pitch) + + if self._isThreadImperial(): + tpi = int(thread['tpi']) + self.form.threadTPI.setValue(tpi) + minor = minor * 25.4 + major = major * 25.4 + + self.majorDia.updateSpinBox(major) + self.minorDia.updateSpinBox(minor) + + self.setDirty() + + def getSignalsForUpdate(self, obj): + '''getSignalsForUpdate(obj) ... return list of signals which cause the receiver to update the model''' + signals = [] + + signals.append(self.form.threadMajor.editingFinished) + signals.append(self.form.threadMinor.editingFinished) + signals.append(self.form.threadPitch.editingFinished) + signals.append(self.form.threadOrientation.currentIndexChanged) + signals.append(self.form.threadTPI.editingFinished) + signals.append(self.form.opDirection.currentIndexChanged) + signals.append(self.form.opPasses.editingFinished) + signals.append(self.form.leadInOut.stateChanged) + + signals.append(self.form.toolController.currentIndexChanged) + + return signals + + def registerSignalHandlers(self, obj): + self.form.threadType.currentIndexChanged.connect(self._updateFromThreadType) + self.form.threadName.currentIndexChanged.connect(self._updateFromThreadName) + self.form.threadFit.valueChanged.connect(self._updateFromThreadName) + + +Command = PathOpGui.SetupOperation('Thread Milling', + PathThreadMilling.Create, + TaskPanelOpPage, + 'Path-ThreadMilling', + QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Thread Milling"), + QtCore.QT_TRANSLATE_NOOP("PathThreadMilling", "Creates a Path Thread Milling operation from features of a base object"), + PathThreadMilling.SetupProperties) + +FreeCAD.Console.PrintLog("Loading PathThreadMillingGui ... done\n") diff --git a/src/Mod/Path/PathScripts/PathToolBit.py b/src/Mod/Path/PathScripts/PathToolBit.py index d04473923d..9cd6f488de 100644 --- a/src/Mod/Path/PathScripts/PathToolBit.py +++ b/src/Mod/Path/PathScripts/PathToolBit.py @@ -45,29 +45,32 @@ __doc__ = "Class to deal with and represent a tool bit." # PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) # PathLog.trackModule() + def translate(context, text, disambig=None): return PySide.QtCore.QCoreApplication.translate(context, text, disambig) + ParameterTypeConstraint = { 'Angle': 'App::PropertyAngle', 'Distance': 'App::PropertyLength', 'DistanceX': 'App::PropertyLength', 'DistanceY': 'App::PropertyLength', - 'Radius': 'App::PropertyLength' - } + 'Radius': 'App::PropertyLength'} def _findTool(path, typ, dbg=False): - if os.path.exists(path): + if os.path.exists(path): # absolute reference if dbg: PathLog.debug("Found {} at {}".format(typ, path)) return path def searchFor(pname, fname): + # PathLog.debug("pname: {} fname: {}".format(pname, fname)) if dbg: PathLog.debug("Looking for {}".format(pname)) if fname: for p in PathPreferences.searchPathsTool(typ): + PathLog.track(p) f = os.path.join(p, fname) if dbg: PathLog.debug(" Checking {}".format(f)) @@ -76,6 +79,7 @@ def _findTool(path, typ, dbg=False): PathLog.debug(" Found {} at {}".format(typ, f)) return f if pname and os.path.sep != pname: + PathLog.track(pname) ppname, pfname = os.path.split(pname) ffname = os.path.join(pfname, fname) if fname else pfname return searchFor(ppname, ffname) @@ -83,20 +87,28 @@ def _findTool(path, typ, dbg=False): return searchFor(path, '') + def findShape(path): - '''findShape(path) ... search for path, full and partially in all known shape directories.''' + ''' + findShape(path) ... search for path, full and partially + in all known shape directories. + ''' return _findTool(path, 'Shape') + def findBit(path): + PathLog.track(path) if path.endswith('.fctb'): return _findTool(path, 'Bit') return _findTool("{}.fctb".format(path), 'Bit') + def findLibrary(path, dbg=False): if path.endswith('.fctl'): return _findTool(path, 'Library', dbg) return _findTool("{}.fctl".format(path), 'Library', dbg) + def _findRelativePath(path, typ): relative = path for p in PathPreferences.searchPathsTool(typ): @@ -108,15 +120,19 @@ def _findRelativePath(path, typ): relative = p return relative + def findRelativePathShape(path): return _findRelativePath(path, 'Shape') + def findRelativePathTool(path): return _findRelativePath(path, 'Bit') + def findRelativePathLibrary(path): return _findRelativePath(path, 'Library') + def updateConstraint(sketch, name, value): for i, constraint in enumerate(sketch.Constraints): if constraint.Name.split(';')[0] == name: @@ -128,7 +144,9 @@ def updateConstraint(sketch, name, value): if constr is not None: if not PathGeom.isRoughly(constraint.Value, value.Value): - PathLog.track(name, constraint.Type, 'update', i, "(%.2f -> %.2f)" % (constraint.Value, value.Value)) + PathLog.track(name, constraint.Type, + 'update', i, "(%.2f -> %.2f)" + % (constraint.Value, value.Value)) sketch.delConstraint(i) sketch.recompute() n = sketch.addConstraint(constr) @@ -141,15 +159,21 @@ def updateConstraint(sketch, name, value): PropertyGroupBit = 'Bit' PropertyGroupAttribute = 'Attribute' + class ToolBit(object): def __init__(self, obj, shapeFile): PathLog.track(obj.Label, shapeFile) self.obj = obj - obj.addProperty('App::PropertyFile', 'BitShape', 'Base', translate('PathToolBit', 'Shape for bit shape')) - obj.addProperty('App::PropertyLink', 'BitBody', 'Base', translate('PathToolBit', 'The parametrized body representing the tool bit')) - obj.addProperty('App::PropertyFile', 'File', 'Base', translate('PathToolBit', 'The file of the tool')) - obj.addProperty('App::PropertyString', 'ShapeName', 'Base', translate('PathToolBit', 'The name of the shape file')) + obj.addProperty('App::PropertyFile', 'BitShape', 'Base', + translate('PathToolBit', 'Shape for bit shape')) + obj.addProperty('App::PropertyLink', 'BitBody', 'Base', + translate('PathToolBit', + 'The parametrized body representing the tool bit')) + obj.addProperty('App::PropertyFile', 'File', 'Base', + translate('PathToolBit', 'The file of the tool')) + obj.addProperty('App::PropertyString', 'ShapeName', 'Base', + translate('PathToolBit', 'The name of the shape file')) if shapeFile is None: obj.BitShape = 'endmill.fcstd' self._setupBitShape(obj) @@ -184,14 +208,14 @@ class ToolBit(object): for prop in self.propertyNamesBit(obj): obj.setEditorMode(prop, 1) # I currently don't see why these need to be read-only - #for prop in self.propertyNamesAttribute(obj): + # for prop in self.propertyNamesAttribute(obj): # obj.setEditorMode(prop, 1) def onChanged(self, obj, prop): PathLog.track(obj.Label, prop) - if prop == 'BitShape' and not 'Restore' in obj.State: + if prop == 'BitShape' and 'Restore' not in obj.State: self._setupBitShape(obj) - #elif obj.getGroupOfProperty(prop) == PropertyGroupBit: + # elif obj.getGroupOfProperty(prop) == PropertyGroupBit: # self._updateBitShape(obj, [prop]) def onDelete(self, obj, arg2=None): @@ -200,7 +224,7 @@ class ToolBit(object): obj.Document.removeObject(obj.Name) def _updateBitShape(self, obj, properties=None): - if not obj.BitBody is None: + if obj.BitBody is not None: if not properties: properties = self.propertyNamesBit(obj) for prop in properties: @@ -234,7 +258,6 @@ class ToolBit(object): return (doc, docOpened) def _removeBitBody(self, obj): - print('in _removebitbody') if obj.BitBody: obj.BitBody.removeObjectsFromDocument() obj.Document.removeObject(obj.BitBody.Name) @@ -286,7 +309,7 @@ class ToolBit(object): prop = parts[0] desc = '' if len(parts) > 1: - desc = parts[1] + desc = parts[1] obj.addProperty(typ, prop, PropertyGroupBit, desc) obj.setEditorMode(prop, 1) value = constraint.Value @@ -299,15 +322,18 @@ class ToolBit(object): path = findShape(obj.BitShape) if path: with open(path, 'rb') as fd: - zf = zipfile.ZipFile(fd) - pf = zf.open('thumbnails/Thumbnail.png', 'r') - data = pf.read() - pf.close() - return data + try: + zf = zipfile.ZipFile(fd) + pf = zf.open('thumbnails/Thumbnail.png', 'r') + data = pf.read() + pf.close() + return data + except KeyError: + pass return None def saveToFile(self, obj, path, setFile=True): - print('were saving now') + PathLog.track(path) try: with open(path, 'w') as fp: json.dump(self.templateAttrs(obj), fp, indent=' ') @@ -315,12 +341,13 @@ class ToolBit(object): obj.File = path return True except (OSError, IOError) as e: - PathLog.error("Could not save tool %s to %s (%s)" % (obj.Label, path, e)) + PathLog.error("Could not save tool {} to {} ({})".format( + obj.Label, path, e)) raise def templateAttrs(self, obj): attrs = {} - attrs['version'] = 2 # Path.Tool is version 1 + attrs['version'] = 2 # Path.Tool is version 1 attrs['name'] = obj.Label if PathPreferences.toolsStoreAbsolutePaths(): attrs['shape'] = obj.BitShape @@ -332,7 +359,6 @@ class ToolBit(object): attrs['parameter'] = params params = {} for name in self.propertyNamesAttribute(obj): - #print(f"shapeattr {name}") if name == "UserAttributes": for key, value in obj.UserAttributes.items(): params[key] = value @@ -341,26 +367,43 @@ class ToolBit(object): attrs['attribute'] = params return attrs + def Declaration(path): + PathLog.track(path) with open(path, 'r') as fp: return json.load(fp) + class AttributePrototype(PathSetupSheetOpPrototype.OpPrototype): def __init__(self): PathSetupSheetOpPrototype.OpPrototype.__init__(self, 'ToolBitAttribute') - self.addProperty('App::PropertyEnumeration', 'Material', PropertyGroupAttribute, translate('PathToolBit', 'Tool bit material')) - self.Material = ['Carbide', 'CastAlloy', 'Ceramics', 'Diamond', 'HighCarbonToolSteel', 'HighSpeedSteel', 'Sialon'] - self.addProperty('App::PropertyDistance', 'LengthOffset', PropertyGroupAttribute, translate('PathToolBit', 'Length offset in Z direction')) - self.addProperty('App::PropertyInteger', 'Flutes', PropertyGroupAttribute, translate('PathToolBit', 'The number of flutes')) - self.addProperty('App::PropertyDistance', 'ChipLoad', PropertyGroupAttribute, translate('PathToolBit', 'Chipload as per manufacturer')) - self.addProperty('App::PropertyMap', 'UserAttributes', PropertyGroupAttribute, translate('PathTooolBit', 'User Defined Values')) + self.addProperty('App::PropertyEnumeration', 'Material', + PropertyGroupAttribute, + translate('PathToolBit', 'Tool bit material')) + self.Material = ['Carbide', 'CastAlloy', 'Ceramics', 'Diamond', + 'HighCarbonToolSteel', 'HighSpeedSteel', 'Sialon'] + self.addProperty('App::PropertyDistance', 'LengthOffset', + PropertyGroupAttribute, translate('PathToolBit', + 'Length offset in Z direction')) + self.addProperty('App::PropertyInteger', 'Flutes', + PropertyGroupAttribute, translate('PathToolBit', + 'The number of flutes')) + self.addProperty('App::PropertyDistance', 'ChipLoad', + PropertyGroupAttribute, translate('PathToolBit', + 'Chipload as per manufacturer')) + self.addProperty('App::PropertyMap', 'UserAttributes', + PropertyGroupAttribute, translate('PathToolBit', + 'User Defined Values')) + self.addProperty('App::PropertyBool', 'SpindlePower', + PropertyGroupAttribute, translate('PathToolBit', + 'Whether Spindle Power should be allowed')) class ToolBitFactory(object): def CreateFromAttrs(self, attrs, name='ToolBit'): - # pylint: disable=protected-access + PathLog.debug(attrs) obj = Factory.Create(name, attrs['shape']) obj.Label = attrs['name'] params = attrs['parameter'] @@ -372,23 +415,17 @@ class ToolBitFactory(object): proto = AttributePrototype() uservals = {} for pname in params: - #print(f"pname: {pname}") try: prop = proto.getProperty(pname) - val = prop.valueFromString(params[pname]) prop.setupProperty(obj, pname, PropertyGroupAttribute, prop.valueFromString(params[pname])) - except: - # prop = obj.addProperty('App::PropertyString', pname, "Attribute", translate('PathTooolBit', 'User Defined Value')) - # setattr(obj, pname, params[pname]) + except Exception: prop = proto.getProperty("UserAttributes") uservals.update({pname: params[pname]}) - #prop.setupProperty(obj, pname, "UserAttributes", prop.valueFromString(params[pname])) if len(uservals.items()) > 0: - prop.setupProperty(obj, "UserAttributes", PropertyGroupAttribute, uservals) + prop.setupProperty(obj, "UserAttributes", + PropertyGroupAttribute, uservals) - # print("prop[%s] = %s (%s)" % (pname, params[pname], type(val))) - #prop.setupProperty(obj, pname, PropertyGroupAttribute, prop.valueFromString(params[pname])) return obj def CreateFrom(self, path, name='ToolBit'): @@ -406,4 +443,5 @@ class ToolBitFactory(object): obj.Proxy = ToolBit(obj, shapeFile) return obj + Factory = ToolBitFactory() diff --git a/src/Mod/Path/PathScripts/PathToolBitCmd.py b/src/Mod/Path/PathScripts/PathToolBitCmd.py index f968cc748a..31df9d5ba2 100644 --- a/src/Mod/Path/PathScripts/PathToolBitCmd.py +++ b/src/Mod/Path/PathScripts/PathToolBitCmd.py @@ -36,7 +36,7 @@ class CommandToolBitCreate: pass def GetResources(self): - return {'Pixmap': 'Path-ToolBit', + return {'Pixmap': 'Path_ToolBit', 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Create Tool"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Creates a new ToolBit object")} @@ -60,7 +60,7 @@ class CommandToolBitSave: menuTxt = QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Save Tool as...") else: menuTxt = QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Save Tool") - return {'Pixmap': 'Path-ToolBit', + return {'Pixmap': 'Path_ToolBit', 'MenuText': menuTxt, 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Save an existing ToolBit object to a file")} @@ -109,7 +109,7 @@ class CommandToolBitLoad: pass def GetResources(self): - return {'Pixmap': 'Path-ToolBit', + return {'Pixmap': 'Path_ToolBit', 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Load Tool"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBit", "Load an existing ToolBit object from a file")} diff --git a/src/Mod/Path/PathScripts/PathToolBitEdit.py b/src/Mod/Path/PathScripts/PathToolBitEdit.py index a8e76cf20e..0ee54747bb 100644 --- a/src/Mod/Path/PathScripts/PathToolBitEdit.py +++ b/src/Mod/Path/PathScripts/PathToolBitEdit.py @@ -31,7 +31,7 @@ import re from PySide import QtCore, QtGui -# PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) +PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) # PathLog.trackModule(PathLog.thisModule()) @@ -42,10 +42,12 @@ def translate(context, text, disambig=None): class ToolBitEditor(object): '''UI and controller for editing a ToolBit. - The controller embeds the UI to the parentWidget which has to have a layout attached to it. + The controller embeds the UI to the parentWidget which has to have a + layout attached to it. ''' - def __init__(self, tool, parentWidget=None): + def __init__(self, tool, parentWidget=None, loadBitBody=True): + PathLog.track() self.form = FreeCADGui.PySideUic.loadUi(":/panels/ToolBitEditor.ui") if parentWidget: @@ -53,13 +55,18 @@ class ToolBitEditor(object): parentWidget.layout().addWidget(self.form) self.tool = tool + self.loadbitbody = loadBitBody if not tool.BitShape: self.tool.BitShape = 'endmill.fcstd' - self.tool.Proxy.loadBitBody(self.tool) + + if self.loadbitbody: + self.tool.Proxy.loadBitBody(self.tool) + self.setupTool(self.tool) self.setupAttributes(self.tool) def setupTool(self, tool): + PathLog.track() layout = self.form.bitParams.layout() for i in range(layout.rowCount() - 1, -1, -1): layout.removeRow(i) @@ -69,7 +76,8 @@ class ToolBitEditor(object): if tool.getGroupOfProperty(name) == PathToolBit.PropertyGroupBit: qsb = ui.createWidget('Gui::QuantitySpinBox') editor[name] = PathGui.QuantitySpinBox(qsb, tool, name) - label = QtGui.QLabel(re.sub('([A-Z][a-z]+)', r' \1', re.sub('([A-Z]+)', r' \1', name))) + label = QtGui.QLabel(re.sub('([A-Z][a-z]+)', r' \1', + re.sub('([A-Z]+)', r' \1', name))) layout.addRow(label, qsb) self.bitEditor = editor img = tool.Proxy.getBitThumbnail(tool) @@ -79,6 +87,7 @@ class ToolBitEditor(object): self.form.image.setPixmap(QtGui.QPixmap()) def setupAttributes(self, tool): + PathLog.track() self.proto = PathToolBit.AttributePrototype() self.props = sorted(self.proto.properties) self.delegate = PathSetupSheetGui.Delegate(self.form) @@ -86,7 +95,7 @@ class ToolBitEditor(object): self.model.setHorizontalHeaderLabels(['Set', 'Property', 'Value']) for i, name in enumerate(self.props): - print("propname: %s " % name) + PathLog.debug("propname: %s " % name) prop = self.proto.getProperty(name) isset = hasattr(tool, name) @@ -99,10 +108,15 @@ class ToolBitEditor(object): else: - self.model.setData(self.model.index(i, 0), isset, QtCore.Qt.EditRole) - self.model.setData(self.model.index(i, 1), name, QtCore.Qt.EditRole) - self.model.setData(self.model.index(i, 2), prop, PathSetupSheetGui.Delegate.PropertyRole) - self.model.setData(self.model.index(i, 2), prop.displayString(), QtCore.Qt.DisplayRole) + self.model.setData(self.model.index(i, 0), isset, + QtCore.Qt.EditRole) + self.model.setData(self.model.index(i, 1), name, + QtCore.Qt.EditRole) + self.model.setData(self.model.index(i, 2), prop, + PathSetupSheetGui.Delegate.PropertyRole) + self.model.setData(self.model.index(i, 2), + prop.displayString(), + QtCore.Qt.DisplayRole) self.model.item(i, 0).setCheckable(True) self.model.item(i, 0).setText('') @@ -119,7 +133,7 @@ class ToolBitEditor(object): if hasattr(tool, "UserAttributes"): for key, value in tool.UserAttributes.items(): - print(key, value) + PathLog.debug(key, value) c1 = QtGui.QStandardItem() c1.setCheckable(False) c1.setEditable(False) @@ -141,26 +155,33 @@ class ToolBitEditor(object): self.model.dataChanged.connect(self.updateData) def updateData(self, topLeft, bottomRight): - # pylint: disable=unused-argument + PathLog.track() if 0 == topLeft.column(): - isset = self.model.item(topLeft.row(), 0).checkState() == QtCore.Qt.Checked + isset = self.model.item(topLeft.row(), + 0).checkState() == QtCore.Qt.Checked self.model.item(topLeft.row(), 1).setEnabled(isset) self.model.item(topLeft.row(), 2).setEnabled(isset) def accept(self): + PathLog.track() self.refresh() self.tool.Proxy.unloadBitBody(self.tool) # get the attributes for i, name in enumerate(self.props): + PathLog.debug('in accept: {}'.format(name)) prop = self.proto.getProperty(name) - enabled = self.model.item(i, 0).checkState() == QtCore.Qt.Checked - if enabled and not prop.getValue() is None: - prop.setupProperty(self.tool, name, PathToolBit.PropertyGroupAttribute, prop.getValue()) - elif hasattr(self.tool, name): - self.tool.removeProperty(name) + if self.model.item(i, 0) is not None: + enabled = self.model.item(i, 0).checkState() == QtCore.Qt.Checked + if enabled and not prop.getValue() is None: + prop.setupProperty(self.tool, name, + PathToolBit.PropertyGroupAttribute, + prop.getValue()) + elif hasattr(self.tool, name): + self.tool.removeProperty(name) def reject(self): + PathLog.track() self.tool.Proxy.unloadBitBody(self.tool) def updateUI(self): @@ -172,6 +193,7 @@ class ToolBitEditor(object): self.bitEditor[editor].updateSpinBox() def updateShape(self): + PathLog.track() self.tool.BitShape = str(self.form.shapePath.text()) self.setupTool(self.tool) self.form.toolName.setText(self.tool.Label) @@ -180,7 +202,6 @@ class ToolBitEditor(object): self.bitEditor[editor].updateSpinBox() def updateTool(self): - # pylint: disable=protected-access PathLog.track() self.tool.Label = str(self.form.toolName.text()) self.tool.BitShape = str(self.form.shapePath.text()) @@ -188,7 +209,7 @@ class ToolBitEditor(object): for editor in self.bitEditor: self.bitEditor[editor].updateProperty() - self.tool.Proxy._updateBitShape(self.tool) + # self.tool.Proxy._updateBitShape(self.tool) def refresh(self): PathLog.track() @@ -198,13 +219,14 @@ class ToolBitEditor(object): self.form.blockSignals(False) def selectShape(self): + PathLog.track() path = self.tool.BitShape if not path: path = PathPreferences.lastPathToolShape() foo = QtGui.QFileDialog.getOpenFileName(self.form, - "Path - Tool Shape", - path, - "*.fcstd") + "Path - Tool Shape", + path, + "*.fcstd") if foo and foo[0]: PathPreferences.setLastPathToolShape(os.path.dirname(foo[0])) self.form.shapePath.setText(foo[0]) diff --git a/src/Mod/Path/PathScripts/PathToolBitGui.py b/src/Mod/Path/PathScripts/PathToolBitGui.py index 9702dfe469..1fe1df5370 100644 --- a/src/Mod/Path/PathScripts/PathToolBitGui.py +++ b/src/Mod/Path/PathScripts/PathToolBitGui.py @@ -36,12 +36,15 @@ __author__ = "sliptonic (Brad Collette)" __url__ = "https://www.freecadweb.org" __doc__ = "Task panel editor for a ToolBit" + # Qt translation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) -#PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) -#PathLog.trackModule(PathLog.thisModule()) + +PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + class ViewProvider(object): '''ViewProvider for a ToolBit. @@ -58,7 +61,7 @@ class ViewProvider(object): def attach(self, vobj): PathLog.track(vobj.Object) self.vobj = vobj - self.obj = vobj.Object + self.obj = vobj.Object def getIcon(self): png = self.obj.Proxy.getBitThumbnail(self.obj) @@ -66,7 +69,7 @@ class ViewProvider(object): pixmap = QtGui.QPixmap() pixmap.loadFromData(png, 'PNG') return QtGui.QIcon(pixmap) - return ':/icons/Path-ToolBit.svg' + return ':/icons/Path_ToolBit.svg' def __getstate__(self): return None @@ -111,7 +114,15 @@ class ViewProvider(object): return [] def doubleClicked(self, vobj): - self.setEdit(vobj) + if os.path.exists(vobj.Object.BitShape): + self.setEdit(vobj) + else: + msg = translate('PathToolBit', + 'Toolbit cannot be edited: Shapefile not found') + diag = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 'Error', msg) + diag.setWindowModality(QtCore.Qt.ApplicationModal) + diag.exec_() + class TaskPanel: '''TaskPanel for the SetupSheet - if it is being edited directly.''' @@ -123,7 +134,8 @@ class TaskPanel: self.editor = PathToolBitEdit.ToolBitEditor(self.obj) self.form = self.editor.form self.deleteOnReject = deleteOnReject - FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', 'Edit ToolBit')) + FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', + 'Edit ToolBit')) def reject(self): FreeCAD.ActiveDocument.abortTransaction() @@ -145,6 +157,7 @@ class TaskPanel: FreeCAD.ActiveDocument.recompute() def updateUI(self): + PathLog.track() self.editor.updateUI() def updateModel(self): @@ -155,141 +168,106 @@ class TaskPanel: self.editor.setupUI() -class ToolBitSelector(object): - ToolRole = QtCore.Qt.UserRole + 1 - - def __init__(self): - self.buttons = None - self.editor = None - self.dialog = None - self.form = FreeCADGui.PySideUic.loadUi(':/panels/ToolBitSelector.ui') - self.setupUI() - - def updateTools(self, selected=None): - PathLog.track() - selItem = None - self.form.tools.setUpdatesEnabled(False) - if selected is None and self.form.tools.currentItem(): - selected = self.form.tools.currentItem().text() - self.form.tools.clear() - for tool in sorted(self.loadedTools(), key=lambda t: t.Label): - icon = None - if tool.ViewObject and tool.ViewObject.Proxy: - icon = tool.ViewObject.Proxy.getIcon() - if icon and isinstance(icon, QtGui.QIcon): - item = QtGui.QListWidgetItem(icon, tool.Label) - else: - item = QtGui.QListWidgetItem(tool.Label) - item.setData(self.ToolRole, tool) - if selected == tool.Label: - selItem = item - self.form.tools.addItem(item) - if selItem: - self.form.tools.setCurrentItem(selItem) - self.updateSelection() - self.form.tools.setUpdatesEnabled(True) - - def getTool(self): - PathLog.track() - self.updateTools() - res = self.form.exec_() - if 1 == res and self.form.tools.currentItem(): - return self.form.tools.currentItem().data(self.ToolRole) - return None - - def loadedTools(self): - PathLog.track() - if FreeCAD.ActiveDocument: - return [o for o in FreeCAD.ActiveDocument.Objects if hasattr(o, 'Proxy') and isinstance(o.Proxy, PathToolBit.ToolBit)] - return [] - - def loadTool(self): - PathLog.track() - tool = LoadTool(self.form) - if tool: - self.updateTools(tool.Label) - - def createTool(self): - PathLog.track() - tool = PathToolBit.Factory.Create() - - def accept(): - self.editor.accept() - self.dialog.done(1) - self.updateTools(tool.Label) - - def reject(): - FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', 'Uncreate ToolBit')) - self.editor.reject() - self.dialog.done(0) - FreeCAD.ActiveDocument.removeObject(tool.Name) - FreeCAD.ActiveDocument.commitTransaction() - - self.dialog = QtGui.QDialog(self.form) - layout = QtGui.QVBoxLayout(self.dialog) - self.editor = PathToolBitEdit.ToolBitEditor(tool, self.dialog) - self.editor.setupUI() - self.buttons = QtGui.QDialogButtonBox( - QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel, - QtCore.Qt.Horizontal, self.dialog) - layout.addWidget(self.buttons) - self.buttons.accepted.connect(accept) - self.buttons.rejected.connect(reject) - print(self.dialog.exec_()) - - def updateSelection(self): - PathLog.track() - if self.form.tools.selectedItems(): - self.form.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(True) - else: - self.form.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False) - - def setupUI(self): - PathLog.track() - self.form.toolCreate.clicked.connect(self.createTool) - self.form.toolLoad.clicked.connect(self.loadTool) - self.form.tools.itemSelectionChanged.connect(self.updateSelection) - self.form.tools.doubleClicked.connect(self.form.accept) - class ToolBitGuiFactory(PathToolBit.ToolBitFactory): def Create(self, name='ToolBit', shapeFile=None): '''Create(name = 'ToolBit') ... creates a new tool bit. It is assumed the tool will be edited immediately so the internal bit body is still attached.''' - FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', 'Create ToolBit')) + + FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', + 'Create ToolBit')) tool = PathToolBit.ToolBitFactory.Create(self, name, shapeFile) PathIconViewProvider.Attach(tool.ViewObject, name) FreeCAD.ActiveDocument.commitTransaction() return tool -def GetToolFile(parent = None): +def isValidFileName(filename): + print(filename) + try: + with open(filename, "w") as tempfile: + return True + except: + return False + + +def GetNewToolFile(parent=None): if parent is None: parent = QtGui.QApplication.activeWindow() - foo = QtGui.QFileDialog.getOpenFileName(parent, 'Tool', PathPreferences.lastPathToolBit(), '*.fctb') + + foo = QtGui.QFileDialog.getSaveFileName(parent, 'Tool', + PathPreferences.lastPathToolBit(), + '*.fctb') + if foo and foo[0]: + if not isValidFileName(foo[0]): + msgBox = QtGui.QMessageBox() + msg = translate("Path", "Invalid Filename", None) + msgBox.setText(msg) + msgBox.exec_() + else: + PathPreferences.setLastPathToolBit(os.path.dirname(foo[0])) + return foo[0] + return None + + +def GetToolFile(parent=None): + if parent is None: + parent = QtGui.QApplication.activeWindow() + foo = QtGui.QFileDialog.getOpenFileName(parent, 'Tool', + PathPreferences.lastPathToolBit(), + '*.fctb') if foo and foo[0]: PathPreferences.setLastPathToolBit(os.path.dirname(foo[0])) return foo[0] return None -def GetToolFiles(parent = None): + +def GetToolFiles(parent=None): if parent is None: parent = QtGui.QApplication.activeWindow() - foo = QtGui.QFileDialog.getOpenFileNames(parent, 'Tool', PathPreferences.lastPathToolBit(), '*.fctb') + foo = QtGui.QFileDialog.getOpenFileNames(parent, 'Tool', + PathPreferences.lastPathToolBit(), + '*.fctb') if foo and foo[0]: PathPreferences.setLastPathToolBit(os.path.dirname(foo[0][0])) return foo[0] return [] -def LoadTool(parent = None): - '''LoadTool(parent=None) ... Open a file dialog to load a tool from a file.''' +def GetToolShapeFile(parent=None): + if parent is None: + parent = QtGui.QApplication.activeWindow() + + location = PathPreferences.lastPathToolShape() + if os.path.isfile(location): + location = os.path.split(location)[0] + elif not os.path.isdir(location): + location = PathPreferences.filePath() + + fname = QtGui.QFileDialog.getOpenFileName(parent, 'Select Tool Shape', + location, '*.fcstd') + if fname and fname[0]: + if fname != location: + PathPreferences.setLastPathToolShape(location) + return fname[0] + else: + return None + + +def LoadTool(parent=None): + ''' + LoadTool(parent=None) ... Open a file dialog to load a tool from a file. + ''' foo = GetToolFile(parent) return PathToolBit.Factory.CreateFrom(foo) if foo else foo -def LoadTools(parent = None): - '''LoadTool(parent=None) ... Open a file dialog to load a tool from a file.''' + +def LoadTools(parent=None): + ''' + LoadTool(parent=None) ... Open a file dialog to load a tool from a file. + ''' return [PathToolBit.Factory.CreateFrom(foo) for foo in GetToolFiles(parent)] + # Set the factory so all tools are created with UI PathToolBit.Factory = ToolBitGuiFactory() diff --git a/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py b/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py index 10ad578196..6c3d82b834 100644 --- a/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py +++ b/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py @@ -25,21 +25,53 @@ import FreeCADGui import PySide.QtCore as QtCore import PathScripts.PathPreferences as PathPreferences -class CommandToolBitLibraryOpen: + +class CommandToolBitSelectorOpen: ''' - Command to ToolBitLibrary editor. + Command to toggle the ToolBitSelector Dock ''' def __init__(self): pass def GetResources(self): - return {'Pixmap': 'Path-ToolTable', - 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Open ToolBit Library editor"), - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Open an editor to manage ToolBit libraries")} + return {'Pixmap': 'Path_ToolTable', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "ToolBit Dock"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Toggle the Toolbit Dock"), + 'Accel': "P, T", + 'CmdType': "ForEdit"} def IsActive(self): - return True + return FreeCAD.ActiveDocument is not None + + def Activated(self): + import PathScripts.PathToolBitLibraryGui as PathToolBitLibraryGui + dock = PathToolBitLibraryGui.ToolBitSelector() + + lastlib = PathPreferences.lastPathToolLibrary() + + if PathPreferences.toolsOpenLastLibrary(): + dock.open(lastlib) + else: + dock.open() + + +class CommandToolBitLibraryOpen: + ''' + Command to open ToolBitLibrary editor. + ''' + + def __init__(self): + pass + + def GetResources(self): + return {'Pixmap': 'Path_ToolTable', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "ToolBit Library editor"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Open an editor to manage ToolBit libraries"), + 'CmdType': "ForEdit"} + + def IsActive(self): + return FreeCAD.ActiveDocument is not None def Activated(self): import PathScripts.PathToolBitLibraryGui as PathToolBitLibraryGui @@ -52,55 +84,57 @@ class CommandToolBitLibraryOpen: else: library.open() -class CommandToolBitLibraryLoad: - ''' - Command used to load an entire ToolBitLibrary (or part of it) from a file into a job. - ''' +# class CommandToolBitLibraryLoad: +# ''' +# Command used to load an entire ToolBitLibrary (or part of it) from a file into a job. +# ''' - def __init__(self): - pass +# def __init__(self): +# pass - def GetResources(self): - return {'Pixmap': 'Path-ToolTable', - 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Load ToolBit Library"), - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Load an entire ToolBit library or part of it into a job")} +# def GetResources(self): +# return {'Pixmap': 'Path_ToolTable', +# 'MenuText': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Load ToolBit Library"), +# 'ToolTip': QtCore.QT_TRANSLATE_NOOP("PathToolBitLibrary", "Load an entire ToolBit library or part of it into a job")} - def selectedJob(self): - if FreeCAD.ActiveDocument: - sel = FreeCADGui.Selection.getSelectionEx() - if sel and sel[0].Object.Name[:3] == 'Job': - return sel[0].Object - jobs = [o for o in FreeCAD.ActiveDocument.Objects if o.Name[:3] == 'Job'] - if 1 == len(jobs): - return jobs[0] - return None +# def selectedJob(self): +# if FreeCAD.ActiveDocument: +# sel = FreeCADGui.Selection.getSelectionEx() +# if sel and sel[0].Object.Name[:3] == 'Job': +# return sel[0].Object +# jobs = [o for o in FreeCAD.ActiveDocument.Objects if o.Name[:3] == 'Job'] +# if 1 == len(jobs): +# return jobs[0] +# return None - def IsActive(self): - return not self.selectedJob() is None +# def IsActive(self): +# return not self.selectedJob() is None - def Activated(self): - job = self.selectedJob() - self.Execute(job) +# def Activated(self): +# job = self.selectedJob() +# self.Execute(job) - @classmethod - def Execute(cls, job): - import PathScripts.PathToolBitLibraryGui as PathToolBitLibraryGui - import PathScripts.PathToolControllerGui as PathToolControllerGui +# @classmethod +# def Execute(cls, job): +# import PathScripts.PathToolBitLibraryGui as PathToolBitLibraryGui +# import PathScripts.PathToolControllerGui as PathToolControllerGui - library = PathToolBitLibraryGui.ToolBitLibrary() +# library = PathToolBitLibraryGui.ToolBitLibrary() + +# if 1 == library.open() and job: +# for nr, tool in library.selectedOrAllTools(): +# tc = PathToolControllerGui.Create("TC: {}".format(tool.Label), tool, nr) +# job.Proxy.addToolController(tc) +# FreeCAD.ActiveDocument.recompute() +# return True +# return False - if 1 == library.open() and job: - for nr, tool in library.selectedOrAllTools(): - tc = PathToolControllerGui.Create("TC: {}".format(tool.Label), tool, nr) - job.Proxy.addToolController(tc) - FreeCAD.ActiveDocument.recompute() - return True - return False if FreeCAD.GuiUp: FreeCADGui.addCommand('Path_ToolBitLibraryOpen', CommandToolBitLibraryOpen()) - FreeCADGui.addCommand('Path_ToolBitLibraryLoad', CommandToolBitLibraryLoad()) + FreeCADGui.addCommand('Path_ToolBitDock', CommandToolBitSelectorOpen()) -CommandList = ['Path_ToolBitLibraryOpen', 'Path_ToolBitLibraryLoad'] +BarList = ['Path_ToolBitDock'] +MenuList = ['Path_ToolBitLibraryOpen', 'Path_ToolBitDock'] FreeCAD.Console.PrintLog("Loading PathToolBitLibraryCmd... done\n") diff --git a/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py b/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py index 2dbb4c0ce9..b7b41c4fb3 100644 --- a/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py +++ b/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py @@ -35,9 +35,10 @@ from PySide import QtCore, QtGui import PySide import json import os -import traceback +import glob import uuid as UUID from functools import partial +import shutil # PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) # PathLog.trackModule(PathLog.thisModule()) @@ -55,11 +56,11 @@ class _TableView(PySide.QtGui.QTableView): def __init__(self, parent): PySide.QtGui.QTableView.__init__(self, parent) - self.setDragEnabled(True) - self.setAcceptDrops(True) - self.setDropIndicatorShown(True) - self.setDragDropMode(PySide.QtGui.QAbstractItemView.InternalMove) - self.setDefaultDropAction(PySide.QtCore.Qt.MoveAction) + self.setDragEnabled(False) + self.setAcceptDrops(False) + self.setDropIndicatorShown(False) + self.setDragDropMode(PySide.QtGui.QAbstractItemView.DragOnly) + self.setDefaultDropAction(PySide.QtCore.Qt.IgnoreAction) self.setSortingEnabled(True) self.setSelectionBehavior(PySide.QtGui.QAbstractItemView.SelectRows) self.verticalHeader().hide() @@ -68,18 +69,18 @@ class _TableView(PySide.QtGui.QTableView): return [PySide.QtCore.Qt.CopyAction, PySide.QtCore.Qt.MoveAction] def _uuidOfRow(self, row): - model = self.model() + model = self.toolModel() return model.data(model.index(row, 0), _UuidRole) def _rowWithUuid(self, uuid): - model = self.model() + model = self.toolModel() for row in range(model.rowCount()): if self._uuidOfRow(row) == uuid: return row return None def _copyTool(self, uuid_, dstRow): - model = self.model() + model = self.toolModel() model.insertRow(dstRow) srcRow = self._rowWithUuid(uuid_) for col in range(model.columnCount()): @@ -108,23 +109,9 @@ class _TableView(PySide.QtGui.QTableView): # pylint: disable=unused-variable row = stream.readInt32() srcRows.append(row) - # col = stream.readInt32() - # PathLog.track(row, col) - # cnt = stream.readInt32() - # for i in range(cnt): - # key = stream.readInt32() - # val = stream.readQVariant() - # PathLog.track(' ', i, key, val, type(val)) - # I have no idea what these three integers are, - # or if they even are three integers, - # but it seems to work out this way. - # i0 = stream.readInt32() - # i1 = stream.readInt32() - # i2 = stream.readInt32() - # PathLog.track(' ', i0, i1, i2) # get the uuids of all srcRows - model = self.model() + model = self.toolModel() srcUuids = [self._uuidOfRow(row) for row in set(srcRows)] destRow = self.rowAt(event.pos().y()) @@ -134,264 +121,484 @@ class _TableView(PySide.QtGui.QTableView): model.removeRow(self._rowWithUuid(uuid)) -class ToolBitLibrary(object): - '''ToolBitLibrary is the controller for displaying/selecting/creating/editing a collection of ToolBits.''' +class ModelFactory(object): + ''' Helper class to generate qtdata models for toolbit libraries + ''' def __init__(self, path=None): - self.path = path + PathLog.track() + self.path = "" + # self.currentLib = "" + + def __libraryLoad(self, path, datamodel): + PathLog.track(path) + PathPreferences.setLastFileToolLibrary(path) + # self.currenLib = path + + with open(path) as fp: + library = json.load(fp) + + for toolBit in library['tools']: + try: + nr = toolBit['nr'] + bit = PathToolBit.findBit(toolBit['path']) + if bit: + PathLog.track(bit) + tool = PathToolBit.Declaration(bit) + datamodel.appendRow(self._toolAdd(nr, tool, bit)) + else: + PathLog.error("Could not find tool #{}: {}".format(nr, toolBit['path'])) + except Exception as e: + msg = "Error loading tool: {} : {}".format(toolBit['path'], e) + FreeCAD.Console.PrintError(msg) + + def _toolAdd(self, nr, tool, path): + + strShape = os.path.splitext(os.path.basename(tool['shape']))[0] + # strDiam = tool['parameter']['Diameter'] + tooltip = "{}".format(strShape) + + toolNr = PySide.QtGui.QStandardItem() + toolNr.setData(nr, PySide.QtCore.Qt.EditRole) + toolNr.setToolTip(tool['shape']) + toolNr.setData(path, _PathRole) + toolNr.setData(UUID.uuid4(), _UuidRole) + toolNr.setToolTip(tooltip) + + toolName = PySide.QtGui.QStandardItem() + toolName.setData(tool['name'], PySide.QtCore.Qt.EditRole) + toolName.setEditable(False) + toolName.setToolTip(tooltip) + + toolShape = PySide.QtGui.QStandardItem() + toolShape.setData(strShape, PySide.QtCore.Qt.EditRole) + toolShape.setEditable(False) + + return [toolNr, toolName, toolShape] + + def newTool(self, datamodel, path): + ''' + Adds a toolbit item to a model + ''' + PathLog.track() + + try: + nr = 0 + for row in range(datamodel.rowCount()): + itemNr = int(datamodel.item(row, 0).data(PySide.QtCore.Qt.EditRole)) + nr = max(nr, itemNr) + nr += 1 + tool = PathToolBit.Declaration(path) + except Exception as e: + PathLog.error(e) + + datamodel.appendRow(self._toolAdd(nr, tool, path)) + + def findLibraries(self, model): + ''' + Finds all the fctl files in a location + Returns a QStandardItemModel + ''' + PathLog.track() + path = PathPreferences.lastPathToolLibrary() + + if os.path.isdir(path): # opening all tables in a directory + libFiles = [f for f in glob.glob(path + '/*.fctl')] + libFiles.sort() + for libFile in libFiles: + loc, fnlong = os.path.split(libFile) + fn, ext = os.path.splitext(fnlong) + libItem = QtGui.QStandardItem(fn) + libItem.setToolTip(loc) + libItem.setData(libFile, _PathRole) + libItem.setIcon(QtGui.QPixmap(':/icons/Path_ToolTable.svg')) + model.appendRow(libItem) + + PathLog.debug('model rows: {}'.format(model.rowCount())) + return model + + def libraryOpen(self, model, lib=""): + ''' + opens the tools in library + Returns a QStandardItemModel + ''' + PathLog.track(lib) + + if lib == "": + lib = PathPreferences.lastFileToolLibrary() + + if lib == "" or lib is None: + return model + + if os.path.isfile(lib): # An individual library is wanted + self.__libraryLoad(lib, model) + + PathLog.debug('model rows: {}'.format(model.rowCount())) + return model + + +class ToolBitSelector(object): + '''Controller for displaying a library and creating ToolControllers''' + + def __init__(self): + self.form = FreeCADGui.PySideUic.loadUi(':/panels/ToolBitSelector.ui') + self.factory = ModelFactory() + self.toolModel = PySide.QtGui.QStandardItemModel(0, len(self.columnNames())) + self.setupUI() + self.title = self.form.windowTitle() + + def columnNames(self): + return ['#', 'Tool'] + + def curLib(self): + libfile = PathPreferences.lastFileToolLibrary() + if libfile is None or libfile == "": + return "" + else: + libfile = os.path.split(PathPreferences.lastFileToolLibrary())[1] + libfile = os.path.splitext(libfile)[0] + return libfile + + def loadData(self): + PathLog.track() + self.toolModel.clear() + self.toolModel.setHorizontalHeaderLabels(self.columnNames()) + self.form.lblLibrary.setText(self.curLib()) + self.factory.libraryOpen(self.toolModel) + self.toolModel.takeColumn(3) + self.toolModel.takeColumn(2) + + def setupUI(self): + PathLog.track() + self.loadData() + + self.form.tools.setModel(self.toolModel) + self.form.tools.selectionModel().selectionChanged.connect(self.enableButtons) + self.form.tools.doubleClicked.connect(partial(self.selectedOrAllToolControllers)) + self.form.libraryEditorOpen.clicked.connect(self.libraryEditorOpen) + self.form.addToolController.clicked.connect(self.selectedOrAllToolControllers) + + def enableButtons(self): + selected = (len(self.form.tools.selectedIndexes()) >= 1) + if selected: + jobs = len([1 for j in FreeCAD.ActiveDocument.Objects if j.Name[:3] == "Job"]) >= 1 + self.form.addToolController.setEnabled(selected and jobs) + + def libraryEditorOpen(self): + library = ToolBitLibrary() + library.open() + self.loadData() + + def selectedOrAllTools(self): + ''' + Iterate the selection and add individual tools + If a group is selected, iterate and add children + ''' + + itemsToProcess = [] + for index in self.form.tools.selectedIndexes(): + item = index.model().itemFromIndex(index) + + if item.hasChildren(): + for i in range(item.rowCount()-1): + if item.child(i).column() == 0: + itemsToProcess.append(item.child(i)) + + elif item.column() == 0: + itemsToProcess.append(item) + + tools = [] + for item in itemsToProcess: + toolNr = int(item.data(PySide.QtCore.Qt.EditRole)) + toolPath = item.data(_PathRole) + tools.append((toolNr, PathToolBit.Factory.CreateFrom(toolPath))) + return tools + + def selectedOrAllToolControllers(self, index=None): + ''' + if no jobs, don't do anything, otherwise all TCs for all + selected toolbits + ''' + jobs = PathUtilsGui.PathUtils.GetJobs() + if len(jobs) == 0: + return + elif len(jobs) == 1: + job = jobs[0] + else: + userinput = PathUtilsGui.PathUtilsUserInput() + job = userinput.chooseJob(jobs) + + if job is None: # user may have canceled + return + + tools = self.selectedOrAllTools() + + for tool in tools: + tc = PathToolControllerGui.Create(tool[1].Label, tool[1], tool[0]) + job.Proxy.addToolController(tc) + FreeCAD.ActiveDocument.recompute() + + def open(self, path=None): + ''' load library stored in path and bring up ui''' + docs = FreeCADGui.getMainWindow().findChildren(QtGui.QDockWidget) + for doc in docs: + if doc.objectName() == "ToolSelector": + if doc.isVisible(): + doc.deleteLater() + return + else: + doc.setVisible(True) + return + + mw = FreeCADGui.getMainWindow() + mw.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.form, + PySide.QtCore.Qt.Orientation.Vertical) + + +class ToolBitLibrary(object): + '''ToolBitLibrary is the controller for + displaying/selecting/creating/editing a collection of ToolBits.''' + + def __init__(self): + PathLog.track() + if not self.checkWorkingDir(): + return + + self.factory = ModelFactory() + self.temptool = None + self.toolModel = PySide.QtGui.QStandardItemModel(0, len(self.columnNames())) + self.listModel = PySide.QtGui.QStandardItemModel() self.form = FreeCADGui.PySideUic.loadUi(':/panels/ToolBitLibraryEdit.ui') self.toolTableView = _TableView(self.form.toolTableGroup) self.form.toolTableGroup.layout().replaceWidget(self.form.toolTable, self.toolTableView) self.form.toolTable.hide() self.setupUI() self.title = self.form.windowTitle() - self.LibFiles = [] - if path: - self.libraryLoad(path) - self.form.addToolController.setEnabled(False) - self.form.ButtonRemoveToolTable.setEnabled(False) - self.form.ButtonRenameToolTable.setEnabled(False) - - def _toolAdd(self, nr, tool, path): - toolNr = PySide.QtGui.QStandardItem() - toolNr.setData(nr, PySide.QtCore.Qt.EditRole) - toolNr.setData(path, _PathRole) - toolNr.setData(UUID.uuid4(), _UuidRole) - - toolName = PySide.QtGui.QStandardItem() - toolName.setData(tool['name'], PySide.QtCore.Qt.EditRole) - toolName.setEditable(False) - - toolShape = PySide.QtGui.QStandardItem() - toolShape.setData(os.path.splitext(os.path.basename(tool['shape']))[0], PySide.QtCore.Qt.EditRole) - toolShape.setEditable(False) - - toolDiameter = PySide.QtGui.QStandardItem() - toolDiameter.setData(tool['parameter']['Diameter'], PySide.QtCore.Qt.EditRole) - toolDiameter.setEditable(False) - - self.model.appendRow([toolNr, toolName, toolShape, toolDiameter]) - - def toolAdd(self): + def checkWorkingDir(self): + # users shouldn't use the example toolbits and libraries. + # working directory should be writable PathLog.track() - # pylint: disable=broad-except - try: - nr = 0 - for row in range(self.model.rowCount()): - itemNr = int(self.model.item(row, 0).data(PySide.QtCore.Qt.EditRole)) - nr = max(nr, itemNr) - nr += 1 - for i, foo in enumerate(PathToolBitGui.GetToolFiles(self.form)): - tool = PathToolBit.Declaration(foo) - self._toolAdd(nr + i, tool, foo) - self.toolTableView.resizeColumnsToContents() - except Exception: - PathLog.error('something happened') - PathLog.error(traceback.print_exc()) + workingdir = os.path.dirname(PathPreferences.lastPathToolLibrary()) + defaultdir = os.path.dirname(PathPreferences.pathDefaultToolsPath()) - def selectedOrAllTools(self): - selectedRows = set([index.row() for index in self.toolTableView.selectedIndexes()]) - if not selectedRows: - selectedRows = list(range(self.model.rowCount())) - tools = [] - for row in selectedRows: - item = self.model.item(row, 0) - toolNr = int(item.data(PySide.QtCore.Qt.EditRole)) - toolPath = item.data(_PathRole) - tools.append((toolNr, PathToolBit.Factory.CreateFrom(toolPath))) - return tools + dirOK = lambda : workingdir != defaultdir and (os.access(workingdir, os.W_OK)) - def selectedOrAllToolControllers(self): - tools = self.selectedOrAllTools() + if dirOK(): + return True - userinput = PathUtilsGui.PathUtilsUserInput() - job = userinput.chooseJob(PathUtilsGui.PathUtils.GetJobs()) - for tool in tools: - print(tool) - tc = PathToolControllerGui.Create(tool[1].Label, tool[1], tool[0]) - job.Proxy.addToolController(tc) - FreeCAD.ActiveDocument.recompute() + qm = PySide.QtGui.QMessageBox + ret = qm.question(None,'', "Toolbit working directory not set up. Do that now?", qm.Yes | qm.No) + + if ret == qm.No: + return False + + msg = translate("Path", "Choose a writable location for your toolbits", None) + while not dirOK(): + workingdir = PySide.QtGui.QFileDialog.getExistingDirectory(None, msg, + PathPreferences.filePath()) + + PathPreferences.setLastPathToolLibrary("{}/Library".format(workingdir)) + + subdirlist = ['Bit', 'Library', 'Shape'] + mode = 0o777 + for dir in subdirlist: + subdir = "{}/{}".format(workingdir, dir) + if not os.path.exists(subdir): + qm = PySide.QtGui.QMessageBox + ret = qm.question(None,'', "Toolbit Working directory {} should contain a '{}' subdirectory. Create it?".format(workingdir, dir), qm.Yes | qm.No) + + if ret == qm.Yes: + os.mkdir(subdir, mode) + qm = PySide.QtGui.QMessageBox + ret = qm.question(None,'', "Copy example files to new {} directory?".format(dir), qm.Yes | qm.No) + if ret == qm.Yes: + src="{}/{}".format(defaultdir, dir) + src_files = os.listdir(src) + for file_name in src_files: + full_file_name = os.path.join(src, file_name) + if os.path.isfile(full_file_name): + shutil.copy(full_file_name, subdir) + + return True + + + def toolBitNew(self): + PathLog.track() + + # select the shape file + shapefile = PathToolBitGui.GetToolShapeFile() + if shapefile is None: # user canceled + return + + filename = PathToolBitGui.GetNewToolFile() + if filename is None: + return + + # Parse out the name of the file and write the structure + loc, fil = os.path.split(filename) + fname = os.path.splitext(fil)[0] + fullpath = "{}/{}.fctb".format(loc, fname) + PathLog.debug(fullpath) + + self.temptool = PathToolBit.ToolBitFactory().Create(name=fname) + self.temptool.BitShape = shapefile + self.temptool.Proxy.unloadBitBody(self.temptool) + self.temptool.Label = fname + self.temptool.Proxy.saveToFile(self.temptool, fullpath) + self.temptool.Document.removeObject(self.temptool.Name) + self.temptool = None + + # add it to the model + self.factory.newTool(self.toolModel, fullpath) + + def toolBitExisting(self): + + filenames = PathToolBitGui.GetToolFiles() + + if len(filenames) == 0: + return + + for f in filenames: + + loc, fil = os.path.split(f) + fname = os.path.splitext(fil)[0] + fullpath = "{}/{}.fctb".format(loc, fname) + + self.factory.newTool(self.toolModel, fullpath) def toolDelete(self): PathLog.track() selectedRows = set([index.row() for index in self.toolTableView.selectedIndexes()]) for row in sorted(list(selectedRows), key=lambda r: -r): - self.model.removeRows(row, 1) - - def libraryDelete(self): - PathLog.track() - reply = QtGui.QMessageBox.question(self.form, 'Warning', "Delete " + os.path.basename(self.path) + "?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.Cancel) - if reply == QtGui.QMessageBox.Yes and len(self.path) > 0: - os.remove(self.path) - PathPreferences.setLastPathToolTable("") - self.libraryOpen(filedialog=False) - - def toolEnumerate(self): - PathLog.track() - for row in range(self.model.rowCount()): - self.model.setData(self.model.index(row, 0), row + 1, PySide.QtCore.Qt.EditRole) + self.toolModel.removeRows(row, 1) def toolSelect(self, selected, deselected): - # pylint: disable=unused-argument sel = len(self.toolTableView.selectedIndexes()) > 0 self.form.toolDelete.setEnabled(sel) - if sel: - self.form.addToolController.setEnabled(True) - else: - self.form.addToolController.setEnabled(False) - def tableSelected(self, index): ''' loads the tools for the selected tool table ''' - name = self.form.TableList.itemWidget(self.form.TableList.itemFromIndex(index)).getTableName() - self.libraryLoad(PathPreferences.lastPathToolLibrary() + '/' + name) - self.form.ButtonRemoveToolTable.setEnabled(True) - self.form.ButtonRenameToolTable.setEnabled(True) + PathLog.track() + item = index.model().itemFromIndex(index) + libpath = item.data(_PathRole) + self.loadData(libpath) + self.path = libpath - def open(self, path=None, dialog=False): - '''open(path=None, dialog=False) ... load library stored in path and bring up ui. - Returns 1 if user pressed OK, 0 otherwise.''' - if path: - self.libraryOpen(path, filedialog=False) - elif dialog: - self.libraryOpen(None, True) - else: - self.libraryOpen(None, False) + def open(self): + PathLog.track() return self.form.exec_() - def updateToolbar(self): - if self.path: - self.form.librarySave.setEnabled(True) - else: - self.form.librarySave.setEnabled(False) - - def libraryOpen(self, path=None, filedialog=True): - import glob + def libraryPath(self): PathLog.track() + path = PySide.QtGui.QFileDialog.getExistingDirectory(self.form, 'Tool Library Path', PathPreferences.lastPathToolLibrary()) + if len(path) == 0: + return - # Load default search path - path = PathPreferences.lastPathToolLibrary() + PathPreferences.setLastPathToolLibrary(path) + self.loadData() - if filedialog or len(path) == 0: - path = PySide.QtGui.QFileDialog.getExistingDirectory(self.form, 'Tool Library Path', PathPreferences.lastPathToolLibrary()) - if len(path) > 0: - PathPreferences.setLastPathToolLibrary(path) - else: - return + def cleanupDocument(self): + # This feels like a hack. Remove the toolbit object + # remove the editor from the dialog + # re-enable all the controls + self.temptool.Proxy.unloadBitBody(self.temptool) + self.temptool.Document.removeObject(self.temptool.Name) + self.temptool = None + widget = self.form.toolTableGroup.children()[-1] + widget.setParent(None) + self.editor = None + self.lockoff() - # Clear view - self.form.TableList.clear() - self.LibFiles.clear() - self.form.lineLibPath.clear() - self.form.lineLibPath.insert(path) + def accept(self): + self.editor.accept() + self.temptool.Proxy.saveToFile(self.temptool, self.temptool.File) + self.librarySave() + self.loadData() + self.cleanupDocument() - # Find all tool tables in directory - for file in glob.glob(path + '/*.fctl'): - self.LibFiles.append(file) + def reject(self): + self.cleanupDocument() - self.LibFiles.sort() + def lockon(self): + self.toolTableView.setEnabled(False) + self.form.toolCreate.setEnabled(False) + self.form.toolDelete.setEnabled(False) + self.form.toolAdd.setEnabled(False) + self.form.TableList.setEnabled(False) + self.form.libraryOpen.setEnabled(False) + self.form.libraryExport.setEnabled(False) + self.form.addToolTable.setEnabled(False) + self.form.librarySave.setEnabled(False) - # Add all tables to list - for table in self.LibFiles: - listWidgetItem = QtGui.QListWidgetItem() - listItem = ToolTableListWidgetItem() - listItem.setTableName(os.path.basename(table)) - listItem.setIcon(QtGui.QPixmap(':/icons/Path-ToolTable.svg')) - listWidgetItem.setSizeHint(QtCore.QSize(0, 40)) - self.form.TableList.addItem(listWidgetItem) - self.form.TableList.setItemWidget(listWidgetItem, listItem) + def lockoff(self): + self.toolTableView.setEnabled(True) + self.form.toolCreate.setEnabled(True) + self.form.toolDelete.setEnabled(True) + self.form.toolAdd.setEnabled(True) + self.form.toolTable.setEnabled(True) + self.form.TableList.setEnabled(True) + self.form.libraryOpen.setEnabled(True) + self.form.libraryExport.setEnabled(True) + self.form.addToolTable.setEnabled(True) + self.form.librarySave.setEnabled(True) - self.path = [] - self.form.ButtonRemoveToolTable.setEnabled(False) - self.form.ButtonRenameToolTable.setEnabled(False) + def toolEdit(self, selected): + item = self.toolModel.item(selected.row(), 0) - self.toolTableView.setUpdatesEnabled(False) - self.model.clear() - self.model.setHorizontalHeaderLabels(self.columnNames()) - self.toolTableView.resizeColumnsToContents() - self.toolTableView.setUpdatesEnabled(True) + if self.temptool is not None: + self.temptool.Document.removeObject(self.temptool.Name) - # Search last selected table - if len(self.LibFiles) > 0: - for idx in range(len(self.LibFiles)): - if PathPreferences.lastPathToolTable() == os.path.basename(self.LibFiles[idx]): - break - # Not found, select first entry - if idx >= len(self.LibFiles): - idx = 0 + if selected.column() == 0: # editing Nr + pass + else: + tbpath = item.data(_PathRole) + self.temptool = PathToolBit.ToolBitFactory().CreateFrom(tbpath, 'temptool') + self.editor = PathToolBitEdit.ToolBitEditor(self.temptool, self.form.toolTableGroup, loadBitBody=False) - # Load selected table - self.libraryLoad(self.LibFiles[idx]) - self.form.TableList.setCurrentRow(idx) - self.form.ButtonRemoveToolTable.setEnabled(True) - self.form.ButtonRenameToolTable.setEnabled(True) + QBtn = QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel + buttonBox = QtGui.QDialogButtonBox(QBtn) + buttonBox.accepted.connect(self.accept) + buttonBox.rejected.connect(self.reject) - def libraryLoad(self, path): - self.toolTableView.setUpdatesEnabled(False) - self.model.clear() - self.model.setHorizontalHeaderLabels(self.columnNames()) + layout = self.editor.form.layout() + layout.addWidget(buttonBox) + self.lockon() + self.editor.setupUI() - if path: - with open(path) as fp: - PathPreferences.setLastPathToolTable(os.path.basename(path)) - library = json.load(fp) - - for toolBit in library['tools']: - nr = toolBit['nr'] - bit = PathToolBit.findBit(toolBit['path']) - if bit: - PathLog.track(bit) - tool = PathToolBit.Declaration(bit) - self._toolAdd(nr, tool, bit) - else: - PathLog.error("Could not find tool #{}: {}".format(nr, library['tools'][nr])) - - self.toolTableView.resizeColumnsToContents() - - self.toolTableView.setUpdatesEnabled(True) - - self.form.setWindowTitle("{} - {}".format(self.title, os.path.basename(path) if path else '')) - self.path = path - self.updateToolbar() + def toolEditDone(self, success=True): + FreeCAD.ActiveDocument.removeObject("temptool") + print('all done') def libraryNew(self): - self.libraryLoad(None) - self.librarySaveAs() + TooltableTypeJSON = translate("PathToolLibraryManager", "Tooltable JSON (*.fctl)") - def renameLibrary(self): - name = self.form.TableList.itemWidget(self.form.TableList.currentItem()).getTableName() - newName, ok = QtGui.QInputDialog.getText(None, translate( - "TooltableEditor", "Rename Tooltable"), translate( - "TooltableEditor", "Enter Name:"), QtGui.QLineEdit.Normal, name) - if ok and newName: - os.rename(PathPreferences.lastPathToolLibrary() + '/' + name, PathPreferences.lastPathToolLibrary() + '/' + newName) - self.libraryOpen(filedialog=False) + filename = PySide.QtGui.QFileDialog.getSaveFileName(self.form, + translate("TooltableEditor", "Save toolbit library", None), + PathPreferences.lastPathToolLibrary(), "{}".format(TooltableTypeJSON)) - # def createToolBit(self): - # tool = PathToolBit.ToolBitFactory().Create() + if not (filename and filename[0]): + self.loadData() - # #self.dialog = PySide.QtGui.QDialog(self.form) - # #layout = PySide.QtGui.QVBoxLayout(self.dialog) - # self.editor = PathToolBitEdit.ToolBitEditor(tool, self.form.toolTableGroup) - # self.editor.setupUI() - # self.buttons = PySide.QtGui.QDialogButtonBox( - # PySide.QtGui.QDialogButtonBox.Ok | PySide.QtGui.QDialogButtonBox.Cancel, - # PySide.QtCore.Qt.Horizontal, self.dialog) - # layout.addWidget(self.buttons) - # #self.buttons.accepted.connect(accept) - # #self.buttons.rejected.connect(reject) - # print(self.dialog.exec_()) + path = filename[0] if filename[0].endswith('.fctl') else "{}.fctl".format(filename[0]) + library = {} + tools = [] + library['version'] = 1 + library['tools'] = tools + with open(path, 'w') as fp: + json.dump(library, fp, sort_keys=True, indent=2) + + self.loadData() def librarySave(self): library = {} tools = [] library['version'] = 1 library['tools'] = tools - for row in range(self.model.rowCount()): - toolNr = self.model.data(self.model.index(row, 0), PySide.QtCore.Qt.EditRole) - toolPath = self.model.data(self.model.index(row, 0), _PathRole) + for row in range(self.toolModel.rowCount()): + toolNr = self.toolModel.data(self.toolModel.index(row, 0), PySide.QtCore.Qt.EditRole) + toolPath = self.toolModel.data(self.toolModel.index(row, 0), _PathRole) if PathPreferences.toolsStoreAbsolutePaths(): tools.append({'nr': toolNr, 'path': toolPath}) else: @@ -400,13 +607,109 @@ class ToolBitLibrary(object): with open(self.path, 'w') as fp: json.dump(library, fp, sort_keys=True, indent=2) + def libraryOk(self): + self.librarySave() + self.form.close() + + def libPaths(self): + lib = PathPreferences.lastFileToolLibrary() + loc = PathPreferences.lastPathToolLibrary() + + PathLog.track("lib: {} loc: {}".format(lib, loc)) + return lib, loc + + def columnNames(self): + return ['Nr', 'Tool', 'Shape'] + + def loadData(self, path=None): + PathLog.track(path) + self.toolTableView.setUpdatesEnabled(False) + self.form.TableList.setUpdatesEnabled(False) + + if path is None: + path, loc = self.libPaths() + + self.toolModel.clear() + self.listModel.clear() + self.factory.libraryOpen(self.toolModel, lib=path) + self.factory.findLibraries(self.listModel) + + else: + self.toolModel.clear() + self.factory.libraryOpen(self.toolModel, lib=path) + + self.path = path + self.form.setWindowTitle("{}".format(PathPreferences.lastPathToolLibrary())) + self.toolModel.setHorizontalHeaderLabels(self.columnNames()) + self.listModel.setHorizontalHeaderLabels(['Library']) + + # Select the current library in the list of tables + curIndex = None + for i in range(self.listModel.rowCount()): + item = self.listModel.item(i) + if item.data(_PathRole) == path: + curIndex = self.listModel.indexFromItem(item) + + if curIndex: + sm = self.form.TableList.selectionModel() + sm.select(curIndex, QtCore.QItemSelectionModel.Select) + + self.toolTableView.setUpdatesEnabled(True) + self.form.TableList.setUpdatesEnabled(True) + + def setupUI(self): + PathLog.track() + self.form.TableList.setModel(self.listModel) + self.toolTableView.setModel(self.toolModel) + + self.loadData() + + self.toolTableView.resizeColumnsToContents() + self.toolTableView.selectionModel().selectionChanged.connect(self.toolSelect) + self.toolTableView.doubleClicked.connect(self.toolEdit) + + self.form.TableList.clicked.connect(self.tableSelected) + + self.form.toolAdd.clicked.connect(self.toolBitExisting) + self.form.toolDelete.clicked.connect(self.toolDelete) + self.form.toolCreate.clicked.connect(self.toolBitNew) + + self.form.addToolTable.clicked.connect(self.libraryNew) + + self.form.libraryOpen.clicked.connect(self.libraryPath) + self.form.librarySave.clicked.connect(self.libraryOk) + self.form.libraryExport.clicked.connect(self.librarySaveAs) + + self.toolSelect([], []) + + def librarySaveAs(self, path): + + TooltableTypeJSON = translate("PathToolLibraryManager", "Tooltable JSON (*.fctl)") + TooltableTypeLinuxCNC = translate("PathToolLibraryManager", "LinuxCNC tooltable (*.tbl)") + + filename = PySide.QtGui.QFileDialog.getSaveFileName(self.form, + translate("TooltableEditor", "Save toolbit library", None), + PathPreferences.lastPathToolLibrary(), "{};;{}".format(TooltableTypeJSON, + TooltableTypeLinuxCNC)) + if filename and filename[0]: + if filename[1] == TooltableTypeLinuxCNC: + path = filename[0] if filename[0].endswith('.tbl') else "{}.tbl".format(filename[0]) + self.libararySaveLinuxCNC(path) + else: + path = filename[0] if filename[0].endswith('.fctl') else "{}.fctl".format(filename[0]) + self.path = path + self.librarySave() + self.updateToolbar() + def libararySaveLinuxCNC(self, path): + # linuxcnc line template + LIN = "T{} P{} X{} Y{} Z{} A{} B{} C{} U{} V{} W{} D{} I{} J{} Q{}; {}" with open(path, 'w') as fp: fp.write(";\n") - for row in range(self.model.rowCount()): - toolNr = self.model.data(self.model.index(row, 0), PySide.QtCore.Qt.EditRole) - toolPath = self.model.data(self.model.index(row, 0), _PathRole) + for row in range(self.toolModel.rowCount()): + toolNr = self.toolModel.data(self.toolModel.index(row, 0), PySide.QtCore.Qt.EditRole) + toolPath = self.toolModel.data(self.toolModel.index(row, 0), _PathRole) bit = PathToolBit.Factory.CreateFrom(toolPath) if bit: @@ -429,129 +732,12 @@ class ToolBitLibrary(object): orientation = bit.Orientation if hasattr(bit, "Orientation") else "0" remark = bit.Label - fp.write("T%s P%s X%s Y%s Z%s A%s B%s C%s U%s V%s W%s D%s I%s J%s Q%s ; %s\n" % - (toolNr, - pocket, - xoffset, - yoffset, - zoffset, - aoffset, - boffset, - coffset, - uoffset, - voffset, - woffset, - diameter, - frontangle, - backangle, - orientation, - remark)) + fp.write(LIN.format(toolNr, pocket, xoffset, yoffset, + zoffset, aoffset, boffset, coffset, uoffset, + voffset, woffset, diameter, frontangle, backangle, + orientation, remark) + "\n") FreeCAD.ActiveDocument.removeObject(bit.Name) else: PathLog.error("Could not find tool #{} ".format(toolNr)) - - def librarySaveAs(self): - TooltableTypeJSON = translate("PathToolLibraryManager", "Tooltable JSON (*.fctl)") - TooltableTypeLinuxCNC = translate("PathToolLibraryManager", "LinuxCNC tooltable (*.tbl)") - - filename = PySide.QtGui.QFileDialog.getSaveFileName(self.form, - translate("TooltableEditor", "Save toolbit library", None), - PathPreferences.lastPathToolLibrary(), "{};;{}".format(TooltableTypeJSON, - TooltableTypeLinuxCNC)) - # filename = PySide.QtGui.QFileDialog.getSaveFileName(self.form, \ - # 'Tool Library', PathPreferences.lastPathToolLibrary(), '*.fctl') - if filename and filename[0]: - if filename[1] == TooltableTypeLinuxCNC: - path = filename[0] if filename[0].endswith('.tbl') else "{}.tbl".format(filename[0]) - self.libararySaveLinuxCNC(path) - else: - path = filename[0] if filename[0].endswith('.fctl') else "{}.fctl".format(filename[0]) - PathPreferences.setLastPathToolLibrary(os.path.dirname(path)) - self.path = path - self.librarySave() - self.updateToolbar() - PathPreferences.setLastPathToolTable(os.path.basename(path)) - self.libraryOpen(None, False) - - def libraryCancel(self): - self.form.close() - - def columnNames(self): - return ['Nr', 'Tool', 'Shape', 'Diameter'] - - def toolEdit(self, selected): - print('here') - print(selected) - if selected.column() == 0: - print('nope') - else: - print('yep') - - def setupUI(self): - PathLog.track('+') - self.model = PySide.QtGui.QStandardItemModel(0, len(self.columnNames()), self.toolTableView) - self.model.setHorizontalHeaderLabels(self.columnNames()) - - self.toolTableView.setModel(self.model) - self.toolTableView.resizeColumnsToContents() - self.toolTableView.selectionModel().selectionChanged.connect(self.toolSelect) - self.toolTableView.doubleClicked.connect(self.toolEdit) - - self.form.toolAdd.clicked.connect(self.toolAdd) - self.form.toolDelete.clicked.connect(self.toolDelete) - self.form.toolEnumerate.clicked.connect(self.toolEnumerate) - # self.form.createToolBit.clicked.connect(self.createToolBit) - - self.form.ButtonAddToolTable.clicked.connect(self.libraryNew) - self.form.ButtonRemoveToolTable.clicked.connect(self.libraryDelete) - self.form.ButtonRenameToolTable.clicked.connect(self.renameLibrary) - - # self.form.libraryNew.clicked.connect(self.libraryNew) - self.form.libraryOpen.clicked.connect(partial(self.libraryOpen, filedialog=True)) - self.form.librarySave.clicked.connect(self.librarySave) - self.form.librarySaveAs.clicked.connect(self.librarySaveAs) - self.form.libraryCancel.clicked.connect(self.libraryCancel) - - self.form.addToolController.clicked.connect(self.selectedOrAllToolControllers) - - self.form.TableList.clicked.connect(self.tableSelected) - - self.toolSelect([], []) - self.updateToolbar() - PathLog.track('-') - - -class ToolTableListWidgetItem(QtGui.QWidget): - toolMoved = QtCore.Signal() - - def __init__(self): - super(ToolTableListWidgetItem, self).__init__() - - self.setAcceptDrops(True) - - self.mainLayout = QtGui.QHBoxLayout() - self.iconQLabel = QtGui.QLabel() - self.tableNameLabel = QtGui.QLabel() - self.mainLayout.addWidget(self.iconQLabel, 0) - self.mainLayout.addWidget(self.tableNameLabel, 1) - self.setLayout(self.mainLayout) - - def setTableName(self, text): - self.tableNameLabel.setText(text) - - def getTableName(self): - return self.tableNameLabel.text() - - def setIcon(self, icon): - icon = icon.scaled(22, 22) - self.iconQLabel.setPixmap(icon) - - # def dragEnterEvent(self, e): - # currentToolTable = self.tlm.getCurrentTableName() - # thisToolTable = self.getTableName() - - def dropEvent(self, e): - selectedTools = e.source().selectedIndexes() - print("Drop: {}, {}".format(selectedTools, selectedTools[1].data())) diff --git a/src/Mod/Path/PathScripts/PathToolController.py b/src/Mod/Path/PathScripts/PathToolController.py index a3c315288e..45e468500f 100644 --- a/src/Mod/Path/PathScripts/PathToolController.py +++ b/src/Mod/Path/PathScripts/PathToolController.py @@ -30,16 +30,17 @@ import PathScripts.PathToolBit as PathToolBit from PySide import QtCore -#PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) -#PathLog.trackModule(PathLog.thisModule()) +# PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + # Qt translation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) + class ToolControllerTemplate: '''Attribute and sub element strings for template export/import.''' - # pylint: disable=no-init Expressions = 'xengine' ExprExpr = 'expr' @@ -56,21 +57,36 @@ class ToolControllerTemplate: VertFeed = 'vfeed' VertRapid = 'vrapid' + class ToolController: def __init__(self, obj, cTool=False): PathLog.track('tool: {}'.format(cTool)) - obj.addProperty("App::PropertyIntegerConstraint", "ToolNumber", "Tool", QtCore.QT_TRANSLATE_NOOP("PathToolController", "The active tool")) + obj.addProperty("App::PropertyIntegerConstraint", "ToolNumber", + "Tool", QtCore.QT_TRANSLATE_NOOP("PathToolController", + "The active tool")) obj.ToolNumber = (0, 0, 10000, 1) self.ensureUseLegacyTool(obj, cTool) - obj.addProperty("App::PropertyFloat", "SpindleSpeed", "Tool", QtCore.QT_TRANSLATE_NOOP("PathToolController", "The speed of the cutting spindle in RPM")) - obj.addProperty("App::PropertyEnumeration", "SpindleDir", "Tool", QtCore.QT_TRANSLATE_NOOP("PathToolController", "Direction of spindle rotation")) + obj.addProperty("App::PropertyFloat", "SpindleSpeed", "Tool", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "The speed of the cutting spindle in RPM")) + obj.addProperty("App::PropertyEnumeration", "SpindleDir", "Tool", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "Direction of spindle rotation")) obj.SpindleDir = ['Forward', 'Reverse'] - obj.addProperty("App::PropertySpeed", "VertFeed", "Feed", QtCore.QT_TRANSLATE_NOOP("PathToolController", "Feed rate for vertical moves in Z")) - obj.addProperty("App::PropertySpeed", "HorizFeed", "Feed", QtCore.QT_TRANSLATE_NOOP("PathToolController", "Feed rate for horizontal moves")) - obj.addProperty("App::PropertySpeed", "VertRapid", "Rapid", QtCore.QT_TRANSLATE_NOOP("PathToolController", "Rapid rate for vertical moves in Z")) - obj.addProperty("App::PropertySpeed", "HorizRapid", "Rapid", QtCore.QT_TRANSLATE_NOOP("PathToolController", "Rapid rate for horizontal moves")) + obj.addProperty("App::PropertySpeed", "VertFeed", "Feed", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "Feed rate for vertical moves in Z")) + obj.addProperty("App::PropertySpeed", "HorizFeed", "Feed", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "Feed rate for horizontal moves")) + obj.addProperty("App::PropertySpeed", "VertRapid", "Rapid", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "Rapid rate for vertical moves in Z")) + obj.addProperty("App::PropertySpeed", "HorizRapid", "Rapid", + QtCore.QT_TRANSLATE_NOOP("PathToolController", + "Rapid rate for horizontal moves")) obj.setEditorMode('Placement', 2) def onDocumentRestored(self, obj): @@ -82,10 +98,12 @@ class ToolController: if hasattr(obj.Tool, 'InList') and len(obj.Tool.InList) == 1: if hasattr(obj.Tool.Proxy, 'onDelete'): obj.Tool.Proxy.onDelete(obj.Tool) - obj.Document.removeObject(obj.Tool.Name) def setFromTemplate(self, obj, template): - '''setFromTemplate(obj, xmlItem) ... extract properties from xmlItem and assign to receiver.''' + ''' + setFromTemplate(obj, xmlItem) ... extract properties from xmlItem + and assign to receiver. + ''' PathLog.track(obj.Name, template) version = 0 if template.get(ToolControllerTemplate.Version): @@ -158,10 +176,21 @@ class ToolController: commands += "(" + obj.Label + ")"+'\n' commands += 'M6 T'+str(obj.ToolNumber)+'\n' - if obj.SpindleDir == 'Forward': - commands += 'M3 S' + str(obj.SpindleSpeed) + '\n' - else: - commands += 'M4 S' + str(obj.SpindleSpeed) + '\n' + # If a toolbit is used, check to see if spindlepower is allowed. + # This is to prevent accidentally spinning the spindle with an + # unpowered tool like probe or dragknife + + allowSpindlePower = True + if (not isinstance(obj.Tool, Path.Tool) and + hasattr(obj.Tool, "SpindlePower")): + allowSpindlePower = obj.Tool.SpindlePower + + if allowSpindlePower: + PathLog.debug('selected tool preventing spindle power') + if obj.SpindleDir == 'Forward': + commands += 'M3 S' + str(obj.SpindleSpeed) + '\n' + else: + commands += 'M4 S' + str(obj.SpindleSpeed) + '\n' if commands == "": commands += "(No commands processed)" @@ -195,13 +224,14 @@ class ToolController: else: obj.addProperty("App::PropertyLink", "Tool", "Base", QtCore.QT_TRANSLATE_NOOP("PathToolController", "The tool used by this controller")) -def Create(name = 'Default Tool', tool=None, toolNumber=1, assignViewProvider=True): + +def Create(name='Default Tool', tool=None, toolNumber=1, assignViewProvider=True): legacyTool = PathPreferences.toolsReallyUseLegacyTools() if tool is None else isinstance(tool, Path.Tool) PathLog.track(tool, toolNumber, legacyTool) obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name) - obj.Label = name + obj.Label = "TC: {}".format(name) obj.Proxy = ToolController(obj, legacyTool) if FreeCAD.GuiUp and assignViewProvider: @@ -224,6 +254,7 @@ def Create(name = 'Default Tool', tool=None, toolNumber=1, assignViewProvider=Tr obj.ToolNumber = toolNumber return obj + def FromTemplate(template, assignViewProvider=True): # pylint: disable=unused-argument PathLog.track() @@ -234,6 +265,7 @@ def FromTemplate(template, assignViewProvider=True): return obj + if FreeCAD.GuiUp: # need ViewProvider class in this file to support loading of old files from PathScripts.PathToolControllerGui import ViewProvider diff --git a/src/Mod/Path/PathScripts/PathToolControllerGui.py b/src/Mod/Path/PathScripts/PathToolControllerGui.py index c290abb299..62709086e0 100644 --- a/src/Mod/Path/PathScripts/PathToolControllerGui.py +++ b/src/Mod/Path/PathScripts/PathToolControllerGui.py @@ -35,10 +35,12 @@ from PySide import QtCore, QtGui from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader('Part', globals(), 'Part') + # Qt translation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) + class ViewProvider: def __init__(self, vobj): @@ -65,7 +67,7 @@ class ViewProvider: return None def getIcon(self): - return ":/icons/Path-ToolController.svg" + return ":/icons/Path_ToolController.svg" def onChanged(self, vobj, prop): # pylint: disable=unused-argument @@ -122,7 +124,8 @@ class ViewProvider: return [obj.Tool] return [] -def Create(name = 'Default Tool', tool=None, toolNumber=1): + +def Create(name='Default Tool', tool=None, toolNumber=1): PathLog.track(tool, toolNumber) obj = PathScripts.PathToolController.Create(name, tool, toolNumber) @@ -138,7 +141,7 @@ class CommandPathToolController(object): # pylint: disable=no-init def GetResources(self): - return {'Pixmap': 'Path-LengthOffset', + return {'Pixmap': 'Path_LengthOffset', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_ToolController", "Add Tool Controller to the Job"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_ToolController", "Add Tool Controller")} @@ -172,6 +175,7 @@ class CommandPathToolController(object): job.Proxy.addToolController(tc) FreeCAD.ActiveDocument.recompute() + class ToolControllerEditor(object): def __init__(self, obj, asDialog): @@ -180,13 +184,18 @@ class ToolControllerEditor(object): self.form.buttonBox.hide() self.obj = obj - self.vertFeed = PathGui.QuantitySpinBox(self.form.vertFeed, obj, 'VertFeed') - self.horizFeed = PathGui.QuantitySpinBox(self.form.horizFeed, obj, 'HorizFeed') - self.vertRapid = PathGui.QuantitySpinBox(self.form.vertRapid, obj, 'VertRapid') - self.horizRapid = PathGui.QuantitySpinBox(self.form.horizRapid, obj, 'HorizRapid') + self.vertFeed = PathGui.QuantitySpinBox(self.form.vertFeed, obj, + 'VertFeed') + self.horizFeed = PathGui.QuantitySpinBox(self.form.horizFeed, obj, + 'HorizFeed') + self.vertRapid = PathGui.QuantitySpinBox(self.form.vertRapid, obj, + 'VertRapid') + self.horizRapid = PathGui.QuantitySpinBox(self.form.horizRapid, obj, + 'HorizRapid') if obj.Proxy.usesLegacyTool(obj): - self.editor = PathToolEdit.ToolEditor(obj.Tool, self.form.toolEditor) + self.editor = PathToolEdit.ToolEditor(obj.Tool, + self.form.toolEditor) else: self.editor = None self.form.toolBox.widget(1).hide() @@ -201,7 +210,8 @@ class ToolControllerEditor(object): self.vertFeed.updateSpinBox() self.vertRapid.updateSpinBox() self.form.spindleSpeed.setValue(tc.SpindleSpeed) - index = self.form.spindleDirection.findText(tc.SpindleDir, QtCore.Qt.MatchFixedString) + index = self.form.spindleDirection.findText(tc.SpindleDir, + QtCore.Qt.MatchFixedString) if index >= 0: self.form.spindleDirection.setCurrentIndex(index) @@ -224,9 +234,9 @@ class ToolControllerEditor(object): self.editor.updateTool() tc.Tool = self.editor.tool - except Exception as e: # pylint: disable=broad-except - PathLog.error(translate("PathToolController", "Error updating TC: %s") % e) - + except Exception as e: + PathLog.error(translate("PathToolController", + "Error updating TC: %s") % e) def refresh(self): self.form.blockSignals(True) @@ -243,6 +253,8 @@ class ToolControllerEditor(object): self.form.vertFeed.editingFinished.connect(self.refresh) self.form.horizRapid.editingFinished.connect(self.refresh) self.form.vertRapid.editingFinished.connect(self.refresh) + self.form.spindleSpeed.editingFinished.connect(self.refresh) + self.form.spindleDirection.currentIndexChanged.connect(self.refresh) class TaskPanel: @@ -296,7 +308,8 @@ class TaskPanel: def setupUi(self): if self.editor.editor: t = Part.makeCylinder(1, 1) - self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", "tool") + self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", + "tool") self.toolrep.Shape = t self.setFields() @@ -311,7 +324,7 @@ class DlgToolControllerEdit: self.obj = obj def exec_(self): - restoreTC = self.obj.Proxy.templateAttrs(self.obj) + restoreTC = self.obj.Proxy.templateAttrs(self.obj) rc = False if not self.editor.form.exec_(): @@ -320,6 +333,7 @@ class DlgToolControllerEdit: rc = True return rc + if FreeCAD.GuiUp: # register the FreeCAD command FreeCADGui.addCommand('Path_ToolController', CommandPathToolController()) diff --git a/src/Mod/Path/PathScripts/PathToolEdit.py b/src/Mod/Path/PathScripts/PathToolEdit.py index 4268bfa033..0b4bc95bea 100644 --- a/src/Mod/Path/PathScripts/PathToolEdit.py +++ b/src/Mod/Path/PathScripts/PathToolEdit.py @@ -149,6 +149,11 @@ class ToolEditorEndmill(ToolEditorImage): def __init__(self, editor): super(ToolEditorEndmill, self).__init__(editor, 'endmill.svg', 'da', 'S') +class ToolEditorReamer(ToolEditorImage): + '''Tool parameter editor for reamers.''' + def __init__(self, editor): + super(ToolEditorReamer, self).__init__(editor, 'reamer.svg', 'da', 'S') + class ToolEditorDrill(ToolEditorImage): '''Tool parameter editor for drills.''' def __init__(self, editor): @@ -186,7 +191,8 @@ class ToolEditor: ToolTypeImage = { 'EndMill': ToolEditorEndmill, 'Drill': ToolEditorDrill, - 'Engraver': ToolEditorEngrave } + 'Engraver': ToolEditorEngrave, + 'Reamer': ToolEditorReamer, } def __init__(self, tool, parentWidget, parent=None): self.Parent = parent @@ -250,6 +256,7 @@ class ToolEditor: def setupToolType(self, tt): PathLog.track() + print("Tool type: %s" % (tt)) if 'Undefined' == tt: tt = Path.Tool.getToolTypes(Path.Tool())[0] if tt in self.ToolTypeImage: diff --git a/src/Mod/Path/PathScripts/PathToolLibraryEditor.py b/src/Mod/Path/PathScripts/PathToolLibraryEditor.py index 83c8dbfcfe..dd37954687 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryEditor.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryEditor.py @@ -314,7 +314,7 @@ class EditorPanel(): listWidgetItem = QtGui.QListWidgetItem() listItem = ToolTableListWidgetItem(self.TLM) listItem.setTableName(table.Name) - listItem.setIcon(QtGui.QPixmap(':/icons/Path-ToolTable.svg')) + listItem.setIcon(QtGui.QPixmap(':/icons/Path_ToolTable.svg')) listItem.toolMoved.connect(self.reloadReset) listWidgetItem.setSizeHint(QtCore.QSize(0,40)) self.form.TableList.addItem(listWidgetItem) @@ -449,7 +449,7 @@ class CommandToolLibraryEdit(): cb() def GetResources(self): - return {'Pixmap' : 'Path-ToolTable', + return {'Pixmap' : 'Path_ToolTable', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_ToolTable","Tool Manager"), 'Accel': "P, T", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_ToolTable","Tool Manager")} diff --git a/src/Mod/Path/PathScripts/PathUtils.py b/src/Mod/Path/PathScripts/PathUtils.py index e78b1cfb2d..c53b7a2ab6 100644 --- a/src/Mod/Path/PathScripts/PathUtils.py +++ b/src/Mod/Path/PathScripts/PathUtils.py @@ -392,19 +392,22 @@ def reverseEdge(e): return newedge -def getToolControllers(obj): +def getToolControllers(obj, proxy=None): '''returns all the tool controllers''' + if proxy is None: + proxy = obj.Proxy try: job = findParentJob(obj) except Exception: # pylint: disable=broad-except job = None + print("op={} ({})".format(obj.Label, type(obj))) if job: - return job.ToolController + return [c for c in job.ToolController if proxy.isToolSupported(obj, c.Tool)] return [] -def findToolController(obj, name=None): +def findToolController(obj, proxy, name=None): '''returns a tool controller with a given name. If no name is specified, returns the first controller. if no controller is found, returns None''' @@ -416,7 +419,7 @@ def findToolController(obj, name=None): if c is not None: return c - controllers = getToolControllers(obj) + controllers = getToolControllers(obj, proxy) if len(controllers) == 0: return None diff --git a/src/Mod/Path/PathScripts/PathVcarve.py b/src/Mod/Path/PathScripts/PathVcarve.py index 51609933a0..00e812392f 100644 --- a/src/Mod/Path/PathScripts/PathVcarve.py +++ b/src/Mod/Path/PathScripts/PathVcarve.py @@ -47,7 +47,8 @@ COLINEAR = 4 TWIN = 5 PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) -#PathLog.trackModule(PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + # Qt translation handling def translate(context, text, disambig=None): @@ -59,6 +60,7 @@ Vertex = {} _sorting = 'global' + def _collectVoronoiWires(vd): edges = [e for e in vd.Edges if e.Color == PRIMARY] vertex = {} @@ -105,7 +107,7 @@ def _collectVoronoiWires(vd): vStart = vFirst vLast = vFirst if len(vertex[vStart]): - while not vStart is None: + while vStart is not None: vLast = vStart edges = vertex[vStart] if len(edges) > 0: @@ -120,7 +122,8 @@ def _collectVoronoiWires(vd): knots = [v for v in knots if v != vLast] return wires -def _sortVoronoiWires(wires, start = FreeCAD.Vector(0, 0, 0)): + +def _sortVoronoiWires(wires, start=FreeCAD.Vector(0, 0, 0)): def closestTo(start, point): p = None l = None @@ -130,12 +133,11 @@ def _sortVoronoiWires(wires, start = FreeCAD.Vector(0, 0, 0)): p = i return (p, l) - begin = {} end = {} for i, w in enumerate(wires): - begin[i] = w[ 0].Vertices[0].toPoint() + begin[i] = w[0].Vertices[0].toPoint() end[i] = w[-1].Vertices[1].toPoint() result = [] @@ -155,12 +157,13 @@ def _sortVoronoiWires(wires, start = FreeCAD.Vector(0, 0, 0)): return result + class ObjectVcarve(PathEngraveBase.ObjectOp): '''Proxy class for Vcarve operation.''' def opFeatures(self, obj): '''opFeatures(obj) ... return all standard features and edges based geomtries''' - return PathOp.FeatureTool | PathOp.FeatureHeights | PathOp.FeatureBaseFaces | PathOp.FeatureCoolant + return PathOp.FeatureTool | PathOp.FeatureHeights | PathOp.FeatureDepths | PathOp.FeatureBaseFaces | PathOp.FeatureCoolant def setupAdditionalProperties(self, obj): if not hasattr(obj, 'BaseShapes'): @@ -179,13 +182,13 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): obj.addProperty("App::PropertyFloat", "Discretize", "Path", QtCore.QT_TRANSLATE_NOOP("PathVcarve", "The deflection value for discretizing arcs")) - obj.addProperty("App::PropertyFloat", "Threshold", "Path", + obj.addProperty("App::PropertyFloat", "Colinear", "Path", QtCore.QT_TRANSLATE_NOOP("PathVcarve", - "cutoff for removing colinear segments (degrees). \ + "Cutoff for removing colinear segments (degrees). \ default=10.0.")) obj.addProperty("App::PropertyFloat", "Tolerance", "Path", QtCore.QT_TRANSLATE_NOOP("PathVcarve", "")) - obj.Threshold = 10.0 + obj.Colinear = 10.0 obj.Discretize = 0.01 obj.Tolerance = PathPreferences.defaultGeometryTolerance() self.setupAdditionalProperties(obj) @@ -194,16 +197,29 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): # upgrade ... self.setupAdditionalProperties(obj) - def _calculate_depth(self, MIC, zStart, zStop, zScale): + def _calculate_depth(self, MIC, zStart, zStop, zScale, finaldepth): # given a maximum inscribed circle (MIC) and tool angle, # return depth of cut relative to zStart. depth = zStart - round(MIC / zScale, 4) PathLog.debug('zStart value: {} depth: {}'.format(zStart, depth)) + + # Never go below the operation final depth. + zStop = zStop if zStop > finaldepth else finaldepth + return depth if depth > zStop else zStop - def _getPartEdge(self, edge, zStart, zStop, zScale): + def _getPartEdge(self, edge, zStart, zStop, zScale, finaldepth): dist = edge.getDistances() - return edge.toShape(self._calculate_depth(dist[0], zStart, zStop, zScale), self._calculate_depth(dist[1], zStart, zStop, zScale)) + return edge.toShape(self._calculate_depth(dist[0], + zStart, + zStop, + zScale, + finaldepth), + self._calculate_depth(dist[1], + zStart, + zStop, + zScale, + finaldepth)) def _getPartEdges(self, obj, vWire): # pre-calculate the depth limits - pre-mature optimisation ;) @@ -212,10 +228,11 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): zStart = self.model[0].Shape.BoundBox.ZMin zStop = zStart - r / math.tan(math.radians(toolangle/2)) zScale = 1.0 / math.tan(math.radians(toolangle / 2)) + finaldepth = obj.FinalDepth.Value edges = [] for e in vWire: - edges.append(self._getPartEdge(e, zStart, zStop, zScale)) + edges.append(self._getPartEdge(e, zStart, zStop, zScale, finaldepth)) return edges def buildPathMedial(self, obj, Faces): @@ -261,10 +278,10 @@ class ObjectVcarve(PathEngraveBase.ObjectOp): vd.colorExterior(EXTERIOR2, lambda v: not f.isInside(v.toPoint(f.BoundBox.ZMin), obj.Tolerance, True)) - vd.colorColinear(COLINEAR, obj.Threshold) + vd.colorColinear(COLINEAR, obj.Colinear) vd.colorTwins(TWIN) - wires = _collectVoronoiWires(vd); + wires = _collectVoronoiWires(vd) if _sorting != 'global': wires = _sortVoronoiWires(wires) voronoiWires.extend(wires) @@ -328,6 +345,16 @@ operation will produce no output.')) job = PathUtils.findParentJob(obj) self.opSetDefaultValues(obj, job) + def opSetDefaultValues(self, obj, job): + '''opSetDefaultValues(obj) ... set depths for vcarving''' + if PathOp.FeatureDepths & self.opFeatures(obj): + if job and len(job.Model.Group) > 0: + bb = job.Proxy.modelBoundBox(job) + obj.OpStartDepth = bb.ZMax + obj.OpFinalDepth = job.Stock.Shape.BoundBox.ZMin + else: + obj.OpFinalDepth = -0.1 + def SetupProperties(): return ["Discretize"] diff --git a/src/Mod/Path/PathScripts/PathVcarveGui.py b/src/Mod/Path/PathScripts/PathVcarveGui.py index d2823939d7..5254a78a22 100644 --- a/src/Mod/Path/PathScripts/PathVcarveGui.py +++ b/src/Mod/Path/PathScripts/PathVcarveGui.py @@ -120,15 +120,15 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): '''getFields(obj) ... transfers values from UI to obj's proprties''' if obj.Discretize != self.form.discretize.value(): obj.Discretize = self.form.discretize.value() - if obj.Threshold != self.form.threshold.value(): - obj.Threshold = self.form.threshold.value() + if obj.Colinear != self.form.colinearFilter.value(): + obj.Colinear = self.form.colinearFilter.value() self.updateToolController(obj, self.form.toolController) self.updateCoolant(obj, self.form.coolantController) def setFields(self, obj): '''setFields(obj) ... transfers obj's property values to UI''' self.form.discretize.setValue(obj.Discretize) - self.form.threshold.setValue(obj.Threshold) + self.form.colinearFilter.setValue(obj.Colinear) self.setupToolController(obj, self.form.toolController) self.setupCoolant(obj, self.form.coolantController) @@ -136,7 +136,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): '''getSignalsForUpdate(obj) ... return list of signals for updating obj''' signals = [] signals.append(self.form.discretize.editingFinished) - signals.append(self.form.threshold.editingFinished) + signals.append(self.form.colinearFilter.editingFinished) signals.append(self.form.toolController.currentIndexChanged) signals.append(self.form.coolantController.currentIndexChanged) return signals @@ -146,9 +146,12 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): return TaskPanelBaseGeometryPage(obj, features) -Command = PathOpGui.SetupOperation('Vcarve', PathVcarve.Create, TaskPanelOpPage, - 'Path-Vcarve', QtCore.QT_TRANSLATE_NOOP("PathVcarve", "Vcarve"), - QtCore.QT_TRANSLATE_NOOP("PathVcarve", "Creates a medial line engraving path"), +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"), PathVcarve.SetupProperties) FreeCAD.Console.PrintLog("Loading PathVcarveGui... done\n") diff --git a/src/Mod/Path/PathScripts/PathWaterline.py b/src/Mod/Path/PathScripts/PathWaterline.py index a314f70893..34d1abffb8 100644 --- a/src/Mod/Path/PathScripts/PathWaterline.py +++ b/src/Mod/Path/PathScripts/PathWaterline.py @@ -1441,11 +1441,14 @@ class ObjectWaterline(PathOp.ObjectOp): self.showDebugObject(pathGeom, 'PathGeom_{}'.format(round(csHght, 2))) if cutPattern == 'Line': - pntSet = PathSurfaceSupport.pathGeomToLinesPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + # pntSet = PathSurfaceSupport.pathGeomToLinesPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + pntSet = PathSurfaceSupport.pathGeomToLinesPointSet(self, obj, pathGeom) elif cutPattern == 'ZigZag': - pntSet = PathSurfaceSupport.pathGeomToZigzagPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + # pntSet = PathSurfaceSupport.pathGeomToZigzagPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps) + pntSet = PathSurfaceSupport.pathGeomToZigzagPointSet(self, obj, pathGeom) elif cutPattern in ['Circular', 'CircularZigZag']: - pntSet = PathSurfaceSupport.pathGeomToCircularPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps, self.tmpCOM) + # pntSet = PathSurfaceSupport.pathGeomToCircularPointSet(obj, pathGeom, self.CutClimb, self.toolDiam, self.closedGap, self.gaps, self.tmpCOM) + pntSet = PathSurfaceSupport.pathGeomToCircularPointSet(self, obj, pathGeom) elif cutPattern == 'Spiral': pntSet = PathSurfaceSupport.pathGeomToSpiralPointSet(obj, pathGeom) diff --git a/src/Mod/Path/PathScripts/PathWaterlineGui.py b/src/Mod/Path/PathScripts/PathWaterlineGui.py index 2fe16a6ff1..07958536fd 100644 --- a/src/Mod/Path/PathScripts/PathWaterlineGui.py +++ b/src/Mod/Path/PathScripts/PathWaterlineGui.py @@ -145,9 +145,9 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage): Command = PathOpGui.SetupOperation('Waterline', PathWaterline.Create, TaskPanelOpPage, - 'Path-Waterline', - QtCore.QT_TRANSLATE_NOOP("Waterline", "Waterline"), - QtCore.QT_TRANSLATE_NOOP("Waterline", "Create a Waterline Operation from a model"), + 'Path_Waterline', + QtCore.QT_TRANSLATE_NOOP("Path_Waterline", "Waterline"), + QtCore.QT_TRANSLATE_NOOP("Path_Waterline", "Create a Waterline Operation from a model"), PathWaterline.SetupProperties) FreeCAD.Console.PrintLog("Loading PathWaterlineGui... done\n") diff --git a/src/Mod/Path/PathScripts/PostUtils.py b/src/Mod/Path/PathScripts/PostUtils.py index 920894603b..06bd1914e0 100644 --- a/src/Mod/Path/PathScripts/PostUtils.py +++ b/src/Mod/Path/PathScripts/PostUtils.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- #*************************************************************************** #* Copyright (c) 2014 Yorik van Havre * #* * diff --git a/src/Mod/Path/PathScripts/post/gcode_pre.py b/src/Mod/Path/PathScripts/post/gcode_pre.py index 648f57f7e8..f6707fd3cd 100644 --- a/src/Mod/Path/PathScripts/post/gcode_pre.py +++ b/src/Mod/Path/PathScripts/post/gcode_pre.py @@ -112,7 +112,11 @@ def insert(filename, docname): # Create a custom and viewobject obj = PathCustom.Create("Custom") - res = PathOpGui.CommandResources('Custom', PathCustom.Create, PathCustomGui.TaskPanelOpPage, 'Path-Custom', 'Path-Custom', '', '') + res = PathOpGui.CommandResources('Custom', + PathCustom.Create, PathCustomGui.TaskPanelOpPage, + 'Path_Custom', + QtCore.QT_TRANSLATE_NOOP('Path_Custom', 'Custom'), '', '' + ) obj.ViewObject.Proxy = PathOpGui.ViewProvider(obj.ViewObject, res) obj.ViewObject.Proxy.setDeleteObjectsOnReject(False) diff --git a/src/Mod/Path/PathTests/TestPathThreadMilling.py b/src/Mod/Path/PathTests/TestPathThreadMilling.py new file mode 100644 index 0000000000..e8ac9c8a65 --- /dev/null +++ b/src/Mod/Path/PathTests/TestPathThreadMilling.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# *************************************************************************** +# * * +# * Copyright (c) 2019 sliptonic * +# * * +# * 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 PathScripts.PathGeom as PathGeom +import PathScripts.PathThreadMilling as PathThreadMilling +import math + +from PathTests.PathTestUtils import PathTestBase + +def radii(major, minor, toolDia, toolCrest): + '''test radii function for simple testing''' + return (minor, major) + +class TestPathThreadMilling(PathTestBase): + '''Test thread milling basics.''' + + def assertRadii(self, have, want): + self.assertRoughly(have[0], want[0]) + self.assertRoughly(have[1], want[1]) + + def assertList(self, have, want): + self.assertEqual(len(have), len(want)); + for i in range(len(have)): + self.assertRoughly(have[i], want[i]) + + def test00(self): + '''Verify internal radii.''' + self.assertRadii(PathThreadMilling.radiiInternal(20, 18, 2, 0), (8, 9.2)) + self.assertRadii(PathThreadMilling.radiiInternal(20, 19, 2, 0), (8.5, 9.1)) + + def test01(self): + '''Verify internal radii with tool crest.''' + self.assertRadii(PathThreadMilling.radiiInternal(20, 18, 2, 0.1), (8, 9.113397)) + + def test10(self): + '''Verify thread passes.''' + self.assertList(PathThreadMilling.threadPasses(1, radii, 10, 9, 0, 0), [10]) + self.assertList(PathThreadMilling.threadPasses(2, radii, 10, 9, 0, 0), [9.5, 10]) + self.assertList(PathThreadMilling.threadPasses(5, radii, 10, 9, 0, 0), [9.2, 9.4, 9.6, 9.8, 10]) + diff --git a/src/Mod/Path/TestPathApp.py b/src/Mod/Path/TestPathApp.py index 1f4c0247fb..623bf180ee 100644 --- a/src/Mod/Path/TestPathApp.py +++ b/src/Mod/Path/TestPathApp.py @@ -41,6 +41,7 @@ from PathTests.TestPathSetupSheet import TestPathSetupSheet from PathTests.TestPathDeburr import TestPathDeburr from PathTests.TestPathHelix import TestPathHelix from PathTests.TestPathVoronoi import TestPathVoronoi +from PathTests.TestPathThreadMilling import TestPathThreadMilling # dummy usage to get flake8 and lgtm quiet False if TestApp.__name__ else True @@ -62,4 +63,5 @@ False if TestPathHelix.__name__ else True False if TestPathPreferences.__name__ else True False if TestPathToolBit.__name__ else True False if TestPathVoronoi.__name__ else True +False if TestPathThreadMilling.__name__ else True diff --git a/src/Mod/Path/Tools/Bit/45degree_chamfer.fctb b/src/Mod/Path/Tools/Bit/45degree_chamfer.fctb new file mode 100644 index 0000000000..6c1231ed0f --- /dev/null +++ b/src/Mod/Path/Tools/Bit/45degree_chamfer.fctb @@ -0,0 +1,14 @@ +{ + "version": 2, + "name": "45 Deg. Chamfer", + "shape": "chamfer.fcstd", + "parameter": { + "CuttingEdgeAngle": "45.0000 \u00b0", + "CuttingEdgeHeight": "6.3500 mm", + "Diameter": "12.3323 mm", + "FlatRadius": "5.0000 mm", + "Length": "30.0000 mm", + "ShankDiameter": "6.3500 mm" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/5mm-thread-cutter.fctb b/src/Mod/Path/Tools/Bit/5mm-thread-cutter.fctb new file mode 100644 index 0000000000..265978053b --- /dev/null +++ b/src/Mod/Path/Tools/Bit/5mm-thread-cutter.fctb @@ -0,0 +1,14 @@ +{ + "version": 2, + "name": "3mm-thread-cutter", + "shape": "thread-mill.fcstd", + "parameter": { + "Crest": "0.10 mm", + "Diameter": "5.00 mm", + "Length": "50.00 mm", + "NeckDiameter": "3.00 mm", + "NeckHeight": "20.00 mm", + "ShankDiameter": "5.00 mm" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/5mm_Drill.fctb b/src/Mod/Path/Tools/Bit/5mm_Drill.fctb new file mode 100644 index 0000000000..40243399a2 --- /dev/null +++ b/src/Mod/Path/Tools/Bit/5mm_Drill.fctb @@ -0,0 +1,11 @@ +{ + "version": 2, + "name": "5mm Drill", + "shape": "drill.fcstd", + "parameter": { + "Diameter": "5.0000 mm", + "Length": "50.0000 mm", + "TipAngle": "119.0000 \u00b0" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/5mm_Endmill.fctb b/src/Mod/Path/Tools/Bit/5mm_Endmill.fctb new file mode 100644 index 0000000000..7cc72ba33c --- /dev/null +++ b/src/Mod/Path/Tools/Bit/5mm_Endmill.fctb @@ -0,0 +1,12 @@ +{ + "version": 2, + "name": "5mm Endmill", + "shape": "endmill.fcstd", + "parameter": { + "CuttingEdgeHeight": "30.0000 mm", + "Diameter": "5.0000 mm", + "Length": "50.0000 mm", + "ShankDiameter": "3.0000 mm" + }, + "attribute": {} +} diff --git a/src/Mod/Path/Tools/Bit/60degree_Vbit.fctb b/src/Mod/Path/Tools/Bit/60degree_Vbit.fctb new file mode 100644 index 0000000000..715361ec34 --- /dev/null +++ b/src/Mod/Path/Tools/Bit/60degree_Vbit.fctb @@ -0,0 +1,14 @@ +{ + "version": 2, + "name": "60 Deg. V-Bit", + "shape": "v-bit.fcstd", + "parameter": { + "CuttingEdgeAngle": "60.0000 \u00b0", + "Diameter": "10.0000 mm", + "FlatHeight": "1.0000 mm", + "FlatRadius": "0.5000 mm", + "Length": "20.0000 mm", + "ShankDiameter": "5.0000 mm" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/6mm_Ball_End.fctb b/src/Mod/Path/Tools/Bit/6mm_Ball_End.fctb new file mode 100644 index 0000000000..9e9afbabc8 --- /dev/null +++ b/src/Mod/Path/Tools/Bit/6mm_Ball_End.fctb @@ -0,0 +1,12 @@ +{ + "version": 2, + "name": "6mm Ball End", + "shape": "ballend.fcstd", + "parameter": { + "CuttingEdgeHeight": "40.0000 mm", + "Diameter": "6.0000 mm", + "Length": "50.0000 mm", + "ShankDiameter": "3.0000 mm" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/6mm_Bullnose.fctb b/src/Mod/Path/Tools/Bit/6mm_Bullnose.fctb new file mode 100644 index 0000000000..05d80b1d2a --- /dev/null +++ b/src/Mod/Path/Tools/Bit/6mm_Bullnose.fctb @@ -0,0 +1,13 @@ +{ + "version": 2, + "name": "6 mm Bull Nose", + "shape": "bullnose.fcstd", + "parameter": { + "CuttingEdgeHeight": "40.0000 mm", + "Diameter": "6.0000 mm", + "FlatRadius": "1.5000 mm", + "Length": "50.0000 mm", + "ShankDiameter": "3.0000 mm" + }, + "attribute": {} +} \ No newline at end of file diff --git a/src/Mod/Path/Tools/Bit/probe.fctb b/src/Mod/Path/Tools/Bit/probe.fctb new file mode 100644 index 0000000000..b92828e7ac --- /dev/null +++ b/src/Mod/Path/Tools/Bit/probe.fctb @@ -0,0 +1,11 @@ +{ + "version": 2, + "name": "Probe004", + "shape": "probe.fcstd", + "parameter": { + "Diameter": "6.0000 mm", + "Length": "50.0000 mm", + "ShaftDiameter": "4.0000 mm" + }, + "attribute": {} +} diff --git a/src/Mod/Path/Tools/Bit/slittingsaw.fctb b/src/Mod/Path/Tools/Bit/slittingsaw.fctb new file mode 100644 index 0000000000..e9d33fe571 --- /dev/null +++ b/src/Mod/Path/Tools/Bit/slittingsaw.fctb @@ -0,0 +1,14 @@ +{ + "version": 2, + "name": "Slitting Saw", + "shape": "slittingsaw.fcstd", + "parameter": { + "BladeThickness": "3.0000 mm", + "BoltHeight": "3.0000 mm", + "BoltWidth": "8.0000 mm", + "Diameter": "76.2000 mm", + "Length": "50.0000 mm", + "ShankDiameter": "19.0500 mm" + }, + "attribute": {} +} diff --git a/src/Mod/Path/Tools/Bit/t1.fctb b/src/Mod/Path/Tools/Bit/t1.fctb deleted file mode 100644 index 9221229563..0000000000 --- a/src/Mod/Path/Tools/Bit/t1.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 2, - "name": "T1", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "1.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t2.fctb b/src/Mod/Path/Tools/Bit/t2.fctb deleted file mode 100644 index 1c70485e5c..0000000000 --- a/src/Mod/Path/Tools/Bit/t2.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T2", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "2.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t3.fctb b/src/Mod/Path/Tools/Bit/t3.fctb deleted file mode 100644 index 86e6bf1110..0000000000 --- a/src/Mod/Path/Tools/Bit/t3.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 2, - "name": "T3", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "3.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t4.fctb b/src/Mod/Path/Tools/Bit/t4.fctb deleted file mode 100644 index c97b20feed..0000000000 --- a/src/Mod/Path/Tools/Bit/t4.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T4", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "4.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t5.fctb b/src/Mod/Path/Tools/Bit/t5.fctb deleted file mode 100644 index 014ebea50c..0000000000 --- a/src/Mod/Path/Tools/Bit/t5.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T5", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "5.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t6.fctb b/src/Mod/Path/Tools/Bit/t6.fctb deleted file mode 100644 index 521b489554..0000000000 --- a/src/Mod/Path/Tools/Bit/t6.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T6", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "6.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t7.fctb b/src/Mod/Path/Tools/Bit/t7.fctb deleted file mode 100644 index b10067d4aa..0000000000 --- a/src/Mod/Path/Tools/Bit/t7.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T7", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "7.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t8.fctb b/src/Mod/Path/Tools/Bit/t8.fctb deleted file mode 100644 index 2ad54eb330..0000000000 --- a/src/Mod/Path/Tools/Bit/t8.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T8", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "8.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Bit/t9.fctb b/src/Mod/Path/Tools/Bit/t9.fctb deleted file mode 100644 index 3a3dbc3f78..0000000000 --- a/src/Mod/Path/Tools/Bit/t9.fctb +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "name": "T9", - "shape": "endmill.fcstd", - "attribute": {}, - "parameter": { - "CuttingEdgeHeight": "30.000 mm", - "Diameter": "9.000 mm", - "Length": "50.000 mm", - "ShankDiameter": "3.000 mm" - } -} diff --git a/src/Mod/Path/Tools/Library/Default.fctl b/src/Mod/Path/Tools/Library/Default.fctl new file mode 100644 index 0000000000..60de98e08e --- /dev/null +++ b/src/Mod/Path/Tools/Library/Default.fctl @@ -0,0 +1,41 @@ +{ + "tools": [ + { + "nr": 1, + "path": "5mm_Endmill.fctb" + }, + { + "nr": 2, + "path": "5mm_Drill.fctb" + }, + { + "nr": 3, + "path": "6mm_Ball_End.fctb" + }, + { + "nr": 4, + "path": "6mm_Bullnose.fctb" + }, + { + "nr": 5, + "path": "60degree_Vbit.fctb" + }, + { + "nr": 6, + "path": "45degree_chamfer.fctb" + }, + { + "nr": 7, + "path": "slittingsaw.fctb" + }, + { + "nr": 8, + "path": "probe.fctb" + }, + { + "nr": 9, + "path": "5mm-thread-cutter.fctb" + } + ], + "version": 1 +} diff --git a/src/Mod/Path/Tools/Library/endmills.fctl b/src/Mod/Path/Tools/Library/endmills.fctl deleted file mode 100644 index c443e6cd10..0000000000 --- a/src/Mod/Path/Tools/Library/endmills.fctl +++ /dev/null @@ -1,41 +0,0 @@ -{ - "tools": [ - { - "nr": 1, - "path": "t1.fctb" - }, - { - "nr": 2, - "path": "t2.fctb" - }, - { - "nr": 3, - "path": "t3.fctb" - }, - { - "nr": 4, - "path": "t4.fctb" - }, - { - "nr": 5, - "path": "t5.fctb" - }, - { - "nr": 6, - "path": "t6.fctb" - }, - { - "nr": 7, - "path": "t7.fctb" - }, - { - "nr": 8, - "path": "t8.fctb" - }, - { - "nr": 9, - "path": "t9.fctb" - } - ], - "version": 1 -} diff --git a/src/Mod/Path/Tools/Shape/ballend.fcstd b/src/Mod/Path/Tools/Shape/ballend.fcstd index 430a6f8160..79cbd68605 100644 Binary files a/src/Mod/Path/Tools/Shape/ballend.fcstd and b/src/Mod/Path/Tools/Shape/ballend.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/bullnose.fcstd b/src/Mod/Path/Tools/Shape/bullnose.fcstd index a97cacde63..c2f7240b72 100644 Binary files a/src/Mod/Path/Tools/Shape/bullnose.fcstd and b/src/Mod/Path/Tools/Shape/bullnose.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/chamfer.fcstd b/src/Mod/Path/Tools/Shape/chamfer.fcstd new file mode 100644 index 0000000000..e56a1359d4 Binary files /dev/null and b/src/Mod/Path/Tools/Shape/chamfer.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/drill.fcstd b/src/Mod/Path/Tools/Shape/drill.fcstd index 75f7573829..aa2a626d02 100644 Binary files a/src/Mod/Path/Tools/Shape/drill.fcstd and b/src/Mod/Path/Tools/Shape/drill.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/endmill.fcstd b/src/Mod/Path/Tools/Shape/endmill.fcstd index 79acaf72fc..8e258621ba 100644 Binary files a/src/Mod/Path/Tools/Shape/endmill.fcstd and b/src/Mod/Path/Tools/Shape/endmill.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/probe.fcstd b/src/Mod/Path/Tools/Shape/probe.fcstd new file mode 100644 index 0000000000..5f853f415b Binary files /dev/null and b/src/Mod/Path/Tools/Shape/probe.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/slittingsaw.fcstd b/src/Mod/Path/Tools/Shape/slittingsaw.fcstd new file mode 100644 index 0000000000..81d3d7f3d9 Binary files /dev/null and b/src/Mod/Path/Tools/Shape/slittingsaw.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/thread-mill.fcstd b/src/Mod/Path/Tools/Shape/thread-mill.fcstd new file mode 100644 index 0000000000..ba9294fe6f Binary files /dev/null and b/src/Mod/Path/Tools/Shape/thread-mill.fcstd differ diff --git a/src/Mod/Path/Tools/Shape/v-bit.fcstd b/src/Mod/Path/Tools/Shape/v-bit.fcstd index 6a333a871c..5d35188c81 100644 Binary files a/src/Mod/Path/Tools/Shape/v-bit.fcstd and b/src/Mod/Path/Tools/Shape/v-bit.fcstd differ diff --git a/src/Mod/Plot/resources/translations/Plot_af.qm b/src/Mod/Plot/resources/translations/Plot_af.qm index 299d295e05..0e98d7c10d 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_af.qm and b/src/Mod/Plot/resources/translations/Plot_af.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ar.qm b/src/Mod/Plot/resources/translations/Plot_ar.qm index eb51ae0df2..9badb93394 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ar.qm and b/src/Mod/Plot/resources/translations/Plot_ar.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ca.qm b/src/Mod/Plot/resources/translations/Plot_ca.qm index 49142965a5..567c79b2d9 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ca.qm and b/src/Mod/Plot/resources/translations/Plot_ca.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_cs.qm b/src/Mod/Plot/resources/translations/Plot_cs.qm index df2c36331d..47bb331af5 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_cs.qm and b/src/Mod/Plot/resources/translations/Plot_cs.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_de.qm b/src/Mod/Plot/resources/translations/Plot_de.qm index 6e7b20b701..6f1f4510f1 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_de.qm and b/src/Mod/Plot/resources/translations/Plot_de.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_el.qm b/src/Mod/Plot/resources/translations/Plot_el.qm index 215c8d950d..cf79053a28 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_el.qm and b/src/Mod/Plot/resources/translations/Plot_el.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_es-ES.qm b/src/Mod/Plot/resources/translations/Plot_es-ES.qm index 0b5a27dbdd..5c3f610813 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_es-ES.qm and b/src/Mod/Plot/resources/translations/Plot_es-ES.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_eu.qm b/src/Mod/Plot/resources/translations/Plot_eu.qm index 890780c3c0..351e38bc17 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_eu.qm and b/src/Mod/Plot/resources/translations/Plot_eu.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_fi.qm b/src/Mod/Plot/resources/translations/Plot_fi.qm index 491dbbe77b..ca141f7654 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_fi.qm and b/src/Mod/Plot/resources/translations/Plot_fi.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_fil.qm b/src/Mod/Plot/resources/translations/Plot_fil.qm index 7535ce968e..54cb62d9ea 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_fil.qm and b/src/Mod/Plot/resources/translations/Plot_fil.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_fr.qm b/src/Mod/Plot/resources/translations/Plot_fr.qm index 631420d334..b4c11b5016 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_fr.qm and b/src/Mod/Plot/resources/translations/Plot_fr.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_gl.qm b/src/Mod/Plot/resources/translations/Plot_gl.qm index 86aa62dc5b..fa308fc0e8 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_gl.qm and b/src/Mod/Plot/resources/translations/Plot_gl.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_hr.qm b/src/Mod/Plot/resources/translations/Plot_hr.qm index 887160ec3c..545f015984 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_hr.qm and b/src/Mod/Plot/resources/translations/Plot_hr.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_hu.qm b/src/Mod/Plot/resources/translations/Plot_hu.qm index 61288133a4..faba2c8738 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_hu.qm and b/src/Mod/Plot/resources/translations/Plot_hu.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_id.qm b/src/Mod/Plot/resources/translations/Plot_id.qm index 1333a7b073..96656d1022 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_id.qm and b/src/Mod/Plot/resources/translations/Plot_id.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_it.qm b/src/Mod/Plot/resources/translations/Plot_it.qm index 31a5805fda..514b4a2348 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_it.qm and b/src/Mod/Plot/resources/translations/Plot_it.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ja.qm b/src/Mod/Plot/resources/translations/Plot_ja.qm index 8007b799ba..56ba012a75 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ja.qm and b/src/Mod/Plot/resources/translations/Plot_ja.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_kab.qm b/src/Mod/Plot/resources/translations/Plot_kab.qm index 0647d3e39a..f0516b3566 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_kab.qm and b/src/Mod/Plot/resources/translations/Plot_kab.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ko.qm b/src/Mod/Plot/resources/translations/Plot_ko.qm index 51cd2cf5ea..09d7de2b67 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ko.qm and b/src/Mod/Plot/resources/translations/Plot_ko.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_lt.qm b/src/Mod/Plot/resources/translations/Plot_lt.qm index af3a0e87ab..0e2b1994fa 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_lt.qm and b/src/Mod/Plot/resources/translations/Plot_lt.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_nl.qm b/src/Mod/Plot/resources/translations/Plot_nl.qm index 544d079640..6e07a620b1 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_nl.qm and b/src/Mod/Plot/resources/translations/Plot_nl.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_no.qm b/src/Mod/Plot/resources/translations/Plot_no.qm index 1f86c804ab..7fa7e48646 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_no.qm and b/src/Mod/Plot/resources/translations/Plot_no.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_pl.qm b/src/Mod/Plot/resources/translations/Plot_pl.qm index 112738e136..306cb77e51 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_pl.qm and b/src/Mod/Plot/resources/translations/Plot_pl.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_pl.ts b/src/Mod/Plot/resources/translations/Plot_pl.ts index 4607a5e18d..bc0b055fb9 100644 --- a/src/Mod/Plot/resources/translations/Plot_pl.ts +++ b/src/Mod/Plot/resources/translations/Plot_pl.ts @@ -430,7 +430,7 @@ Line width - Line width + Szerokość linii diff --git a/src/Mod/Plot/resources/translations/Plot_pt-BR.qm b/src/Mod/Plot/resources/translations/Plot_pt-BR.qm index 357e8b873d..dce24b65de 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_pt-BR.qm and b/src/Mod/Plot/resources/translations/Plot_pt-BR.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_pt-PT.qm b/src/Mod/Plot/resources/translations/Plot_pt-PT.qm index 9e0acc4dcb..133942486d 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_pt-PT.qm and b/src/Mod/Plot/resources/translations/Plot_pt-PT.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ro.qm b/src/Mod/Plot/resources/translations/Plot_ro.qm index cc959f699e..b98a636b02 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ro.qm and b/src/Mod/Plot/resources/translations/Plot_ro.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_ru.qm b/src/Mod/Plot/resources/translations/Plot_ru.qm index 90dce85e00..2aee4d63ed 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_ru.qm and b/src/Mod/Plot/resources/translations/Plot_ru.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_sk.qm b/src/Mod/Plot/resources/translations/Plot_sk.qm index 6404e86c2a..d4232b83b1 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_sk.qm and b/src/Mod/Plot/resources/translations/Plot_sk.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_sl.qm b/src/Mod/Plot/resources/translations/Plot_sl.qm index 7a616edfc0..009b1fe6bb 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_sl.qm and b/src/Mod/Plot/resources/translations/Plot_sl.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_sr.qm b/src/Mod/Plot/resources/translations/Plot_sr.qm index 62e4a56045..e4af87e959 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_sr.qm and b/src/Mod/Plot/resources/translations/Plot_sr.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_sv-SE.qm b/src/Mod/Plot/resources/translations/Plot_sv-SE.qm index de26d408b9..a62e281f8a 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_sv-SE.qm and b/src/Mod/Plot/resources/translations/Plot_sv-SE.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_tr.qm b/src/Mod/Plot/resources/translations/Plot_tr.qm index b849b55f12..1c445ce3b4 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_tr.qm and b/src/Mod/Plot/resources/translations/Plot_tr.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_uk.qm b/src/Mod/Plot/resources/translations/Plot_uk.qm index 8995709e03..9f89aefb20 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_uk.qm and b/src/Mod/Plot/resources/translations/Plot_uk.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_val-ES.qm b/src/Mod/Plot/resources/translations/Plot_val-ES.qm index 87edcf3c84..803cdb532a 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_val-ES.qm and b/src/Mod/Plot/resources/translations/Plot_val-ES.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_vi.qm b/src/Mod/Plot/resources/translations/Plot_vi.qm index 85f0b6ebb2..e9908496b5 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_vi.qm and b/src/Mod/Plot/resources/translations/Plot_vi.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_zh-CN.qm b/src/Mod/Plot/resources/translations/Plot_zh-CN.qm index 92c3a33130..ca0a7160fe 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_zh-CN.qm and b/src/Mod/Plot/resources/translations/Plot_zh-CN.qm differ diff --git a/src/Mod/Plot/resources/translations/Plot_zh-TW.qm b/src/Mod/Plot/resources/translations/Plot_zh-TW.qm index 44fc6675b4..22b4be9bfd 100644 Binary files a/src/Mod/Plot/resources/translations/Plot_zh-TW.qm and b/src/Mod/Plot/resources/translations/Plot_zh-TW.qm differ diff --git a/src/Mod/Points/Gui/Command.cpp b/src/Mod/Points/Gui/Command.cpp index a0234b2d3b..b3fa151137 100644 --- a/src/Mod/Points/Gui/Command.cpp +++ b/src/Mod/Points/Gui/Command.cpp @@ -85,7 +85,7 @@ void CmdPointsImport::activated(int iMsg) if (!fn.isEmpty()) { fn = Base::Tools::escapeEncodeFilename(fn); Gui::Document* doc = getActiveGuiDocument(); - openCommand("Import points"); + openCommand(QT_TRANSLATE_NOOP("Command", "Import points")); addModule(Command::App, "Points"); doCommand(Command::Doc, "Points.insert(\"%s\", \"%s\")", fn.toUtf8().data(), doc->getDocument()->getName()); @@ -165,7 +165,7 @@ void CmdPointsTransform::activated(int iMsg) Base::Placement trans; trans.setRotation(Base::Rotation(Base::Vector3d(0.0, 0.0, 1.0), 1.570796)); - openCommand("Transform points"); + openCommand(QT_TRANSLATE_NOOP("Command", "Transform points")); //std::vector points = getSelection().getObjectsOfType(Points::Feature::getClassTypeId()); //for (std::vector::const_iterator it = points.begin(); it != points.end(); ++it) { // Base::Placement p = static_cast(*it)->Placement.getValue(); @@ -191,6 +191,7 @@ CmdPointsConvert::CmdPointsConvert() sToolTipText = QT_TR_NOOP("Convert to points"); sWhatsThis = "Points_Convert"; sStatusTip = QT_TR_NOOP("Convert to points"); + sPixmap = "Points_Convert"; } void CmdPointsConvert::activated(int iMsg) @@ -199,12 +200,12 @@ void CmdPointsConvert::activated(int iMsg) bool ok; double tol = QInputDialog::getDouble(Gui::getMainWindow(), QObject::tr("Distance"), - QObject::tr("Enter maximum distance:"), 0.1, 0.05, 10.0, 2, &ok); + QObject::tr("Enter maximum distance:"), 0.1, 0.05, 10.0, 2, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; Gui::WaitCursor wc; - openCommand("Convert to points"); + openCommand(QT_TRANSLATE_NOOP("Command", "Convert to points")); std::vector geoObject = getSelection().getObjectsOfType(Base::Type::fromName("App::GeoFeature")); bool addedPoints = false; @@ -321,6 +322,7 @@ CmdPointsMerge::CmdPointsMerge() sToolTipText = QT_TR_NOOP("Merge several point clouds into one"); sWhatsThis = "Points_Merge"; sStatusTip = QT_TR_NOOP("Merge several point clouds into one"); + sPixmap = "Points_Merge"; } void CmdPointsMerge::activated(int iMsg) @@ -363,6 +365,7 @@ CmdPointsStructure::CmdPointsStructure() sToolTipText = QT_TR_NOOP("Convert points to structured point cloud"); sWhatsThis = "Points_Structure"; sStatusTip = QT_TR_NOOP("Convert points to structured point cloud"); + sPixmap = "Points_Structure"; } void CmdPointsStructure::activated(int iMsg) diff --git a/src/Mod/Points/Gui/PreCompiled.h b/src/Mod/Points/Gui/PreCompiled.h index 6516a965ed..a49f644201 100644 --- a/src/Mod/Points/Gui/PreCompiled.h +++ b/src/Mod/Points/Gui/PreCompiled.h @@ -36,7 +36,9 @@ #endif #ifdef FC_OS_WIN32 +# ifndef NOMINMAX # define NOMINMAX +# endif #endif #ifdef _PreComp_ diff --git a/src/Mod/Points/Gui/Resources/Points.qrc b/src/Mod/Points/Gui/Resources/Points.qrc index 550c0f5945..8dc2517b60 100644 --- a/src/Mod/Points/Gui/Resources/Points.qrc +++ b/src/Mod/Points/Gui/Resources/Points.qrc @@ -1,7 +1,10 @@ + icons/Points_Convert.svg icons/Points_Export_Point_cloud.svg icons/Points_Import_Point_cloud.svg + icons/Points_Merge.svg + icons/Points_Structure.svg icons/PointsWorkbench.svg translations/Points_af.qm translations/Points_de.qm diff --git a/src/Mod/Points/Gui/Resources/icons/Points_Convert.svg b/src/Mod/Points/Gui/Resources/icons/Points_Convert.svg new file mode 100644 index 0000000000..184ecd9d3f --- /dev/null +++ b/src/Mod/Points/Gui/Resources/icons/Points_Convert.svg @@ -0,0 +1,341 @@ + + + Points_Convert + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Points_Convert + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020-11-21 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + Based on Alexander Gryson's work + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Points/Gui/Resources/icons/Points_Merge.svg b/src/Mod/Points/Gui/Resources/icons/Points_Merge.svg new file mode 100644 index 0000000000..913a3e2a44 --- /dev/null +++ b/src/Mod/Points/Gui/Resources/icons/Points_Merge.svg @@ -0,0 +1,193 @@ + + + Points_Merge + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Points_Merge + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020-11-21 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + Based on Alexander Gryson's work + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Points/Gui/Resources/icons/Points_Structure.svg b/src/Mod/Points/Gui/Resources/icons/Points_Structure.svg new file mode 100644 index 0000000000..04445c4f16 --- /dev/null +++ b/src/Mod/Points/Gui/Resources/icons/Points_Structure.svg @@ -0,0 +1,197 @@ + + + Points_Structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Points_Structure + + + [bitacovir] + + + Part_Shape_from_Mesh + 2020-11-21 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + Based on Alexander Gryson's work + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Points/Gui/Resources/translations/Points_af.qm b/src/Mod/Points/Gui/Resources/translations/Points_af.qm index 5bbe40d453..0eac2f0faa 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_af.qm and b/src/Mod/Points/Gui/Resources/translations/Points_af.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ar.qm b/src/Mod/Points/Gui/Resources/translations/Points_ar.qm index 573c67c0ac..ed6c69cbcb 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ar.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ar.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ca.qm b/src/Mod/Points/Gui/Resources/translations/Points_ca.qm index 96fa162795..cfcbcf46a7 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ca.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ca.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_cs.qm b/src/Mod/Points/Gui/Resources/translations/Points_cs.qm index 5f2aab4a25..54dec28fad 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_cs.qm and b/src/Mod/Points/Gui/Resources/translations/Points_cs.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_de.qm b/src/Mod/Points/Gui/Resources/translations/Points_de.qm index d4c7b41f74..674426d9a7 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_de.qm and b/src/Mod/Points/Gui/Resources/translations/Points_de.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_el.qm b/src/Mod/Points/Gui/Resources/translations/Points_el.qm index 2bf9f9603b..7e5622f769 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_el.qm and b/src/Mod/Points/Gui/Resources/translations/Points_el.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_es-ES.qm b/src/Mod/Points/Gui/Resources/translations/Points_es-ES.qm index 736b4d8aa0..f9fb2d1129 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_es-ES.qm and b/src/Mod/Points/Gui/Resources/translations/Points_es-ES.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_eu.qm b/src/Mod/Points/Gui/Resources/translations/Points_eu.qm index 1a4496026f..4687863e0f 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_eu.qm and b/src/Mod/Points/Gui/Resources/translations/Points_eu.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_fi.qm b/src/Mod/Points/Gui/Resources/translations/Points_fi.qm index 554d1f34b4..b10b65b290 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_fi.qm and b/src/Mod/Points/Gui/Resources/translations/Points_fi.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_fil.qm b/src/Mod/Points/Gui/Resources/translations/Points_fil.qm index e25b4fbe4c..427fd4b8a3 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_fil.qm and b/src/Mod/Points/Gui/Resources/translations/Points_fil.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_fr.qm b/src/Mod/Points/Gui/Resources/translations/Points_fr.qm index e695001da7..7fcc50b279 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_fr.qm and b/src/Mod/Points/Gui/Resources/translations/Points_fr.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_gl.qm b/src/Mod/Points/Gui/Resources/translations/Points_gl.qm index 198765cdcf..9cd3058a58 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_gl.qm and b/src/Mod/Points/Gui/Resources/translations/Points_gl.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_hr.qm b/src/Mod/Points/Gui/Resources/translations/Points_hr.qm index 2a279d65ab..c843c44a0f 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_hr.qm and b/src/Mod/Points/Gui/Resources/translations/Points_hr.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_hu.qm b/src/Mod/Points/Gui/Resources/translations/Points_hu.qm index a5ae539b8f..4ffe047568 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_hu.qm and b/src/Mod/Points/Gui/Resources/translations/Points_hu.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_id.qm b/src/Mod/Points/Gui/Resources/translations/Points_id.qm index c00dda3e0a..9fcd32f17c 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_id.qm and b/src/Mod/Points/Gui/Resources/translations/Points_id.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_it.qm b/src/Mod/Points/Gui/Resources/translations/Points_it.qm index a60ef4461c..7f3ecafc0c 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_it.qm and b/src/Mod/Points/Gui/Resources/translations/Points_it.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ja.qm b/src/Mod/Points/Gui/Resources/translations/Points_ja.qm index 035271ef50..e570f3bc92 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ja.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ja.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_kab.qm b/src/Mod/Points/Gui/Resources/translations/Points_kab.qm index f148690495..7374357907 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_kab.qm and b/src/Mod/Points/Gui/Resources/translations/Points_kab.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ko.qm b/src/Mod/Points/Gui/Resources/translations/Points_ko.qm index 7b46dd77ea..829aef2f12 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ko.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ko.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_lt.qm b/src/Mod/Points/Gui/Resources/translations/Points_lt.qm index 4ab727373e..f01a4e55b2 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_lt.qm and b/src/Mod/Points/Gui/Resources/translations/Points_lt.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_nl.qm b/src/Mod/Points/Gui/Resources/translations/Points_nl.qm index 6f04e0ba94..5035fe8f91 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_nl.qm and b/src/Mod/Points/Gui/Resources/translations/Points_nl.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_no.qm b/src/Mod/Points/Gui/Resources/translations/Points_no.qm index 2a74c2c911..611d96cfc9 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_no.qm and b/src/Mod/Points/Gui/Resources/translations/Points_no.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_pl.qm b/src/Mod/Points/Gui/Resources/translations/Points_pl.qm index cdf81c41fb..a19560f826 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_pl.qm and b/src/Mod/Points/Gui/Resources/translations/Points_pl.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_pt-BR.qm b/src/Mod/Points/Gui/Resources/translations/Points_pt-BR.qm index be0f5f755a..01cb759ffb 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_pt-BR.qm and b/src/Mod/Points/Gui/Resources/translations/Points_pt-BR.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_pt-PT.qm b/src/Mod/Points/Gui/Resources/translations/Points_pt-PT.qm index 9e4d0a3a78..629f4da069 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_pt-PT.qm and b/src/Mod/Points/Gui/Resources/translations/Points_pt-PT.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ro.qm b/src/Mod/Points/Gui/Resources/translations/Points_ro.qm index 6f8d9a45df..650dd7199c 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ro.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ro.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_ru.qm b/src/Mod/Points/Gui/Resources/translations/Points_ru.qm index f5d69a066e..2a53cafc6d 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_ru.qm and b/src/Mod/Points/Gui/Resources/translations/Points_ru.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_sk.qm b/src/Mod/Points/Gui/Resources/translations/Points_sk.qm index aaf2e62640..13e669ea85 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_sk.qm and b/src/Mod/Points/Gui/Resources/translations/Points_sk.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_sl.qm b/src/Mod/Points/Gui/Resources/translations/Points_sl.qm index a6bc71a6e9..38b29e4abf 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_sl.qm and b/src/Mod/Points/Gui/Resources/translations/Points_sl.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_sr.qm b/src/Mod/Points/Gui/Resources/translations/Points_sr.qm index c1b12c439b..14c1bd6008 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_sr.qm and b/src/Mod/Points/Gui/Resources/translations/Points_sr.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_sr.ts b/src/Mod/Points/Gui/Resources/translations/Points_sr.ts index 3ca1e9733a..2436fb0525 100644 --- a/src/Mod/Points/Gui/Resources/translations/Points_sr.ts +++ b/src/Mod/Points/Gui/Resources/translations/Points_sr.ts @@ -68,13 +68,13 @@ Merge point clouds - Merge point clouds + Споји облак тачака Merge several point clouds into one - Merge several point clouds into one + Споји више облака тачака у један
      @@ -106,13 +106,13 @@ Structured point cloud - Structured point cloud + Структурни облак тачака Convert points to structured point cloud - Convert points to structured point cloud + Претвори тачке у структурни облак тачака @@ -285,7 +285,7 @@ Point formats - Point formats + Формати тачке diff --git a/src/Mod/Points/Gui/Resources/translations/Points_sv-SE.qm b/src/Mod/Points/Gui/Resources/translations/Points_sv-SE.qm index 78705c31ab..9735958a1e 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_sv-SE.qm and b/src/Mod/Points/Gui/Resources/translations/Points_sv-SE.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_tr.qm b/src/Mod/Points/Gui/Resources/translations/Points_tr.qm index 87fccf4aea..0721b68846 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_tr.qm and b/src/Mod/Points/Gui/Resources/translations/Points_tr.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_uk.qm b/src/Mod/Points/Gui/Resources/translations/Points_uk.qm index 677657d1f0..9c77ee3821 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_uk.qm and b/src/Mod/Points/Gui/Resources/translations/Points_uk.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_val-ES.qm b/src/Mod/Points/Gui/Resources/translations/Points_val-ES.qm index 0064c9d3e3..a268b62988 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_val-ES.qm and b/src/Mod/Points/Gui/Resources/translations/Points_val-ES.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_vi.qm b/src/Mod/Points/Gui/Resources/translations/Points_vi.qm index 2b5d6b12c0..30ab04ae98 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_vi.qm and b/src/Mod/Points/Gui/Resources/translations/Points_vi.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_zh-CN.qm b/src/Mod/Points/Gui/Resources/translations/Points_zh-CN.qm index 2c9f74b21b..ccdb90873e 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_zh-CN.qm and b/src/Mod/Points/Gui/Resources/translations/Points_zh-CN.qm differ diff --git a/src/Mod/Points/Gui/Resources/translations/Points_zh-TW.qm b/src/Mod/Points/Gui/Resources/translations/Points_zh-TW.qm index 3b8f489601..975ae62ced 100644 Binary files a/src/Mod/Points/Gui/Resources/translations/Points_zh-TW.qm and b/src/Mod/Points/Gui/Resources/translations/Points_zh-TW.qm differ diff --git a/src/Mod/Points/Gui/ViewProvider.cpp b/src/Mod/Points/Gui/ViewProvider.cpp index fc243f8cdf..c4ec5de76c 100644 --- a/src/Mod/Points/Gui/ViewProvider.cpp +++ b/src/Mod/Points/Gui/ViewProvider.cpp @@ -465,7 +465,7 @@ void ViewProviderScattered::cut(const std::vector& picked, Gui::View3DI return; // nothing needs to be done //Remove the points from the cloud and open a transaction object for the undo/redo stuff - Gui::Application::Instance->activeDocument()->openCommand("Cut points"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Cut points")); // sets the points outside the polygon to update the Inventor node fea->Points.removeIndices(removeIndices); @@ -624,7 +624,7 @@ void ViewProviderStructured::cut(const std::vector& picked, Gui::View3D if (invalidatePoints) { //Remove the points from the cloud and open a transaction object for the undo/redo stuff - Gui::Application::Instance->activeDocument()->openCommand("Cut points"); + Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Cut points")); // sets the points outside the polygon to update the Inventor node fea->Points.setValue(newKernel); diff --git a/src/Mod/Points/Gui/Workbench.cpp b/src/Mod/Points/Gui/Workbench.cpp index b6f2714997..ae8e3e0243 100644 --- a/src/Mod/Points/Gui/Workbench.cpp +++ b/src/Mod/Points/Gui/Workbench.cpp @@ -57,6 +57,9 @@ Gui::ToolBarItem* Workbench::setupToolBars() const *pnt << "Points_Import" << "Points_Export" << "Separator" + << "Points_Convert" + << "Points_Structure" + << "Points_Merge" << "Points_PolyCut"; return root; } @@ -68,7 +71,10 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const Gui::ToolBarItem* pnt = new Gui::ToolBarItem( root ); pnt->setCommand("Points tools"); *pnt << "Points_Import" - << "Points_Export"; + << "Points_Export" + << "Points_Convert" + << "Points_Structure" + << "Points_Merge"; return root; } @@ -78,7 +84,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const Gui::MenuItem* item = root->findItem("&Windows"); Gui::MenuItem* pnts = new Gui::MenuItem; root->insertItem(item, pnts); - + pnts->setCommand("&Points"); *pnts << "Points_Convert" << "Points_Structure" diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_af.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_af.qm index 51dcb3b18c..440d3a37b2 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_af.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_af.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ar.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ar.qm index 19407494b5..6e2fa22525 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ar.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ar.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ca.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ca.qm index 4982a1b1b9..db10da11c0 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ca.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ca.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_cs.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_cs.qm index d7ad0f0cda..4a29a8729f 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_cs.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_cs.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_de.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_de.qm index 6e484a2ebe..81e2eef793 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_de.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_de.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_el.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_el.qm index 91b45ceb55..46f376e06f 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_el.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_el.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_es-ES.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_es-ES.qm index bad3ef198f..89f08f4e1d 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_es-ES.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_es-ES.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_eu.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_eu.qm index 2cbc5ab352..9ca213c7be 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_eu.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_eu.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fi.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fi.qm index 5722b508eb..02b4da4734 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fi.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fi.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fil.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fil.qm index 750767ca5b..c9765887cf 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fil.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fil.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fr.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fr.qm index 97ec887846..d29e2802a9 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fr.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_fr.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_gl.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_gl.qm index af14ddcbae..72c6edf42a 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_gl.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_gl.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hr.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hr.qm index 0e31bb5c39..4cdde3bf73 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hr.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hr.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hu.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hu.qm index 31f71c4569..b1829dc5dc 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hu.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_hu.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_id.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_id.qm index ee7fb6c6c6..ae47eadb76 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_id.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_id.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_it.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_it.qm index 25b8d6d4a0..5983073b82 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_it.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_it.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ja.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ja.qm index 6e09aa03c5..984c05338d 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ja.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ja.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_kab.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_kab.qm index d2b2e57d51..3c4455a9e2 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_kab.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_kab.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ko.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ko.qm index 879b74235e..154a261d44 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ko.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ko.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_lt.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_lt.qm index 26fc31726a..485dc84ec2 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_lt.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_lt.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_nl.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_nl.qm index d228babbea..27904fa121 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_nl.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_nl.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_no.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_no.qm index a6f622cec4..5d1d7cbd01 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_no.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_no.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pl.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pl.qm index 6021ac270a..55a777c02c 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pl.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pl.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-BR.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-BR.qm index d040cdd8f2..e0cb42fd8b 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-BR.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-BR.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-PT.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-PT.qm index 3b2029c182..43b380979c 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-PT.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_pt-PT.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ro.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ro.qm index de73382eab..775fd47eef 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ro.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ro.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ru.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ru.qm index 3a4b4cd852..aefc9f9351 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ru.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_ru.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sk.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sk.qm index afd5a3a7b9..66df0267b1 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sk.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sk.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sl.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sl.qm index 502eaaeba5..ce4d61305c 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sl.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sl.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sr.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sr.qm index ae87c913cf..5c5447ccc9 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sr.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sr.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sv-SE.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sv-SE.qm index 026f02517a..399983be7a 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sv-SE.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_sv-SE.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_tr.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_tr.qm index 80cb911192..8f670bab80 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_tr.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_tr.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_uk.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_uk.qm index 9eb9930ce8..245884f769 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_uk.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_uk.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_val-ES.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_val-ES.qm index 270d9ccf48..495330b300 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_val-ES.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_val-ES.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_vi.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_vi.qm index 2424aa99d5..d953f98232 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_vi.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_vi.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-CN.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-CN.qm index e8ad3cb9a5..9af5d43845 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-CN.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-CN.qm differ diff --git a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-TW.qm b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-TW.qm index 9c45161fbd..86701a45ee 100644 Binary files a/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-TW.qm and b/src/Mod/Raytracing/Gui/Resources/translations/Raytracing_zh-TW.qm differ diff --git a/src/Mod/Raytracing/Gui/ViewProvider.cpp b/src/Mod/Raytracing/Gui/ViewProvider.cpp index 193f456db7..768bc6dd07 100644 --- a/src/Mod/Raytracing/Gui/ViewProvider.cpp +++ b/src/Mod/Raytracing/Gui/ViewProvider.cpp @@ -96,7 +96,7 @@ bool ViewProviderLux::setEdit(int ModNum) int current = items.indexOf(cfi.absoluteFilePath()); bool ok; - QString file = QInputDialog::getItem(Gui::getMainWindow(), tr("LuxRender template"), tr("Select a LuxRender template"), items, current, false, &ok); + QString file = QInputDialog::getItem(Gui::getMainWindow(), tr("LuxRender template"), tr("Select a LuxRender template"), items, current, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok) { App::Document* doc = getObject()->getDocument(); doc->openTransaction("Edit LuxRender project"); @@ -175,7 +175,7 @@ bool ViewProviderPovray::setEdit(int ModNum) int current = items.indexOf(cfi.absoluteFilePath()); bool ok; - QString file = QInputDialog::getItem(Gui::getMainWindow(), tr("Povray template"), tr("Select a Povray template"), items, current, false, &ok); + QString file = QInputDialog::getItem(Gui::getMainWindow(), tr("Povray template"), tr("Select a Povray template"), items, current, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok) { App::Document* doc = getObject()->getDocument(); doc->openTransaction("Edit Povray project"); diff --git a/src/Mod/ReverseEngineering/App/ApproxSurface.cpp b/src/Mod/ReverseEngineering/App/ApproxSurface.cpp index 8899b4619e..d68ee8815b 100644 --- a/src/Mod/ReverseEngineering/App/ApproxSurface.cpp +++ b/src/Mod/ReverseEngineering/App/ApproxSurface.cpp @@ -188,7 +188,7 @@ BSplineBasis::ValueT BSplineBasis::LocalSupport(int iIndex, double fParam) int m = _vKnotVector.Length()-1; int p = _iOrder-1; - if ((iIndex == 0 && fParam == _vKnotVector(0)) || + if ((iIndex == 0 && fParam == _vKnotVector(0)) || (iIndex == m-p-1 && fParam == _vKnotVector(m))) { return BSplineBasis::Full; } @@ -207,7 +207,7 @@ double BSplineBasis::BasisFunction(int iIndex, double fParam) double saved; TColStd_Array1OfReal N(0,p); - if ((iIndex == 0 && fParam == _vKnotVector(0)) || + if ((iIndex == 0 && fParam == _vKnotVector(0)) || (iIndex == m-p-1 && fParam == _vKnotVector(m))) { return 1.0; } @@ -254,7 +254,7 @@ void BSplineBasis::DerivativesOfBasisFunction(int iIndex, int iMaxDer, double fP int iMax = iMaxDer; if (Derivat.Length() != iMax+1) Standard_RangeError::Raise("BSplineBasis"); - //k-te Ableitungen (k>Grad) sind Null + //k-te Ableitungen (k>Grad) sind Null if (iMax >= _iOrder) { for (int i=_iOrder; i<=iMaxDer; i++) Derivat(i) = 0.0; @@ -277,7 +277,7 @@ void BSplineBasis::DerivativesOfBasisFunction(int iIndex, int iMaxDer, double fP for (int j=0; j<_iOrder; j++) { if (fParam >= _vKnotVector(iIndex+j) && fParam < _vKnotVector(iIndex+j+1)) N(j,0) = 1.0; - else + else N(j,0) = 0.0; } @@ -345,7 +345,7 @@ double BSplineBasis::DerivativeOfBasisFunction(int iIndex, int iMaxDer, double f if (iMax == 0) return BasisFunction(iIndex, fParam); - //k-te Ableitungen (k>Grad) sind Null + //k-te Ableitungen (k>Grad) sind Null if (iMax >= _iOrder) { return 0.0; } @@ -364,7 +364,7 @@ double BSplineBasis::DerivativeOfBasisFunction(int iIndex, int iMaxDer, double f for (int j=0; j<_iOrder; j++) { if (fParam >= _vKnotVector(iIndex+j) && fParam < _vKnotVector(iIndex+j+1)) N(j,0) = 1.0; - else + else N(j,0) = 0.0; } @@ -442,8 +442,8 @@ double BSplineBasis::GetIntegralOfProductOfBSplines(int iIdx1, int iIdx2, int iO if (fMax > fMin) { for (int i=0; i<=iMax; i++) { double fParam = 0.5*(vRoots(i)+1)*(fMax-fMin)+fMin; - dIntegral += 0.5*(fMax-fMin)*vWeights(i) * - DerivativeOfBasisFunction(iIdx1, iOrd1, fParam) * + dIntegral += 0.5*(fMax-fMin)*vWeights(i) * + DerivativeOfBasisFunction(iIdx1, iOrd1, fParam) * DerivativeOfBasisFunction(iIdx2, iOrd2, fParam); } } @@ -716,7 +716,7 @@ void ParameterCorrection::ProjectControlPointsOnPlane() } } -Handle(Geom_BSplineSurface) ParameterCorrection::CreateSurface(const TColgp_Array1OfPnt& points, +Handle(Geom_BSplineSurface) ParameterCorrection::CreateSurface(const TColgp_Array1OfPnt& points, int iIter, bool bParaCor, double fSizeFactor) @@ -803,7 +803,7 @@ void BSplineParameterCorrection::Init() _vUMults(0) = _usUOrder; _vUMults(usUMax) = _usUOrder; - + // v-Richtung for (unsigned i=0; i<=usVMax; i++) { _vVKnots(i) = static_cast(i) / static_cast(usVMax); diff --git a/src/Mod/ReverseEngineering/App/ApproxSurface.h b/src/Mod/ReverseEngineering/App/ApproxSurface.h index 6d3d8d7836..cf335497ce 100644 --- a/src/Mod/ReverseEngineering/App/ApproxSurface.h +++ b/src/Mod/ReverseEngineering/App/ApproxSurface.h @@ -122,8 +122,8 @@ public: /** * Setzt den Knotenvektor und die Ordnung fest. uebergeben wird der Knotenvektor der Form - * (Wert, Vielfachheit). Intern wird dieser in einen Knotenvektor der Form (Wert,1) - * umgerechnet. Die Groesse dieses neuen Vektors muss exakt so gross sein, wie im Konstruktor + * (Wert, Vielfachheit). Intern wird dieser in einen Knotenvektor der Form (Wert,1) + * umgerechnet. Die Groesse dieses neuen Vektors muss exakt so gross sein, wie im Konstruktor * festgelegt. */ virtual void SetKnots(TColStd_Array1OfReal& vKnots, TColStd_Array1OfInteger& vMults, int iOrder=1); @@ -172,7 +172,7 @@ public: virtual int FindSpan(double fParam); /** - * Berechnet die Funktionswerte der an der Stelle fParam + * Berechnet die Funktionswerte der an der Stelle fParam * nicht verschwindenden Basisfunktionen. Es muss darauf geachtet werden, dass * die Liste fuer d(=Grad des B-Splines) Elemente (0,...,d-1) ausreicht. * (aus: Piegl/Tiller 96 The NURBS-Book) @@ -221,7 +221,7 @@ public: virtual double DerivativeOfBasisFunction(int iIndex, int k, double fParam); /** - * Berechnet das Integral des Produkts zweier B-Splines bzw. deren Ableitungen. + * Berechnet das Integral des Produkts zweier B-Splines bzw. deren Ableitungen. * Der Integrationsbereich erstreckt sich ueber den ganzen Definitionsbereich. * Berechnet wird das Integral mittels der Gauss'schen Quadraturformeln. */ @@ -280,10 +280,10 @@ protected: void ProjectControlPointsOnPlane(); /** - * Berechnet eine initiale Flaeche zu Beginn des Algorithmus. Dazu wird die Ausgleichsebene zu der + * Berechnet eine initiale Flaeche zu Beginn des Algorithmus. Dazu wird die Ausgleichsebene zu der * Punktwolke berechnet. - * Die Punkte werden bzgl. der Basis bestehend aus den Eigenvektoren der Kovarianzmatrix berechnet und - * auf die Ausgleichsebene projiziert. Von diesen Punkten wird die Boundingbox berechnet, dann werden + * Die Punkte werden bzgl. der Basis bestehend aus den Eigenvektoren der Kovarianzmatrix berechnet und + * auf die Ausgleichsebene projiziert. Von diesen Punkten wird die Boundingbox berechnet, dann werden * die u/v-Parameter fuer die Punkte berechnet. */ virtual bool DoInitialParameterCorrection(double fSizeFactor=0.0f); @@ -427,7 +427,7 @@ public: virtual const math_Matrix& GetThirdSmoothMatrix() const; /** - * Setzt die erste Matrix der Glaettungsterme + * Setzt die erste Matrix der Glaettungsterme */ virtual void SetFirstSmoothMatrix(const math_Matrix& rclMat); diff --git a/src/Mod/ReverseEngineering/App/PreCompiled.cpp b/src/Mod/ReverseEngineering/App/PreCompiled.cpp index 1e5d389dd2..7cd1cae80f 100644 --- a/src/Mod/ReverseEngineering/App/PreCompiled.cpp +++ b/src/Mod/ReverseEngineering/App/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/ReverseEngineering/App/Segmentation.cpp b/src/Mod/ReverseEngineering/App/Segmentation.cpp index eb2f7c5bcb..b809c0e963 100644 --- a/src/Mod/ReverseEngineering/App/Segmentation.cpp +++ b/src/Mod/ReverseEngineering/App/Segmentation.cpp @@ -66,7 +66,7 @@ void Segmentation::perform(int ksearch) // All the objects needed pcl::PassThrough pass; pcl::NormalEstimation ne; - pcl::SACSegmentationFromNormals seg; + pcl::SACSegmentationFromNormals seg; pcl::ExtractIndices extract; pcl::ExtractIndices extract_normals; pcl::search::KdTree::Ptr tree (new pcl::search::KdTree ()); diff --git a/src/Mod/ReverseEngineering/App/SurfaceTriangulation.cpp b/src/Mod/ReverseEngineering/App/SurfaceTriangulation.cpp index 56c5d71f34..427fe176d4 100644 --- a/src/Mod/ReverseEngineering/App/SurfaceTriangulation.cpp +++ b/src/Mod/ReverseEngineering/App/SurfaceTriangulation.cpp @@ -347,9 +347,9 @@ void GridReconstruction::perform(int ksearch) GridProjection grid; // Set parameters - grid.setResolution(0.005); - grid.setPaddingSize(3); - grid.setNearestNeighborNum(100); + grid.setResolution(0.005); + grid.setPaddingSize(3); + grid.setNearestNeighborNum(100); grid.setMaxBinarySearchLevel(10); grid.setInputCloud (cloud_with_normals); grid.setSearchMethod (tree2); @@ -395,9 +395,9 @@ void GridReconstruction::perform(const std::vector& normals) GridProjection grid; // Set parameters - grid.setResolution(0.005); - grid.setPaddingSize(3); - grid.setNearestNeighborNum(100); + grid.setResolution(0.005); + grid.setPaddingSize(3); + grid.setNearestNeighborNum(100); grid.setMaxBinarySearchLevel(10); grid.setInputCloud (cloud_with_normals); grid.setSearchMethod (tree); diff --git a/src/Mod/ReverseEngineering/App/SurfaceTriangulation.h b/src/Mod/ReverseEngineering/App/SurfaceTriangulation.h index 09a46e1a5a..3299a8ff6f 100644 --- a/src/Mod/ReverseEngineering/App/SurfaceTriangulation.h +++ b/src/Mod/ReverseEngineering/App/SurfaceTriangulation.h @@ -56,14 +56,14 @@ public: * (this will make the algorithm adapt to different point densities in the cloud). * \param[in] mu the multiplier */ - inline void + inline void setMu (double mu) { this->mu = mu; } /** \brief Set the sphere radius that is to be used for determining the k-nearest neighbors used for triangulating. * \param[in] radius the sphere radius that is to contain all k-nearest neighbors * \note This distance limits the maximum edge length! */ - inline void + inline void setSearchRadius (double radius) { this->searchRadius = radius; } private: diff --git a/src/Mod/ReverseEngineering/Gui/Command.cpp b/src/Mod/ReverseEngineering/Gui/Command.cpp index 67fd948b2e..e954e1d042 100644 --- a/src/Mod/ReverseEngineering/Gui/Command.cpp +++ b/src/Mod/ReverseEngineering/Gui/Command.cpp @@ -187,7 +187,7 @@ void CmdApproxPlane::activated(int) << "Base.Vector(" << base.x << "," << base.y << "," << base.z << ")," << "Base.Rotation(" << q0 << "," << q1 << "," << q2 << "," << q3 << "))" << std::endl; - openCommand("Fit plane"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fit plane")); runCommand(Gui::Command::Doc, str.str().c_str()); commitCommand(); updateActive(); @@ -218,7 +218,7 @@ CmdApproxCylinder::CmdApproxCylinder() void CmdApproxCylinder::activated(int) { std::vector sel = getSelection().getObjectsOfType(); - openCommand("Fit cylinder"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fit cylinder")); for (auto it : sel) { const Mesh::MeshObject& mesh = it->Mesh.getValue(); const MeshCore::MeshKernel& kernel = mesh.getKernel(); @@ -284,7 +284,7 @@ CmdApproxSphere::CmdApproxSphere() void CmdApproxSphere::activated(int) { std::vector sel = getSelection().getObjectsOfType(); - openCommand("Fit sphere"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fit sphere")); for (auto it : sel) { const Mesh::MeshObject& mesh = it->Mesh.getValue(); const MeshCore::MeshKernel& kernel = mesh.getKernel(); @@ -332,7 +332,7 @@ void CmdApproxPolynomial::activated(int) { std::vector sel = getSelection().getObjectsOfType(); App::Document* doc = App::GetApplication().getActiveDocument(); - openCommand("Fit polynomial surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Fit polynomial surface")); for (auto it : sel) { const Mesh::MeshObject& mesh = it->Mesh.getValue(); const MeshCore::MeshKernel& kernel = mesh.getKernel(); @@ -598,7 +598,7 @@ void CmdViewTriangulation::activated(int) { std::vector obj = Gui::Selection().getObjectsOfType(Points::Structured::getClassTypeId()); addModule(App,"ReverseEngineering"); - openCommand("View triangulation"); + openCommand(QT_TRANSLATE_NOOP("Command", "View triangulation")); try { for (std::vector::iterator it = obj.begin(); it != obj.end(); ++it) { App::DocumentObjectT objT(*it); diff --git a/src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp b/src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp index 118d8166f6..366d12900d 100644 --- a/src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp +++ b/src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp @@ -153,7 +153,7 @@ void FitBSplineSurfaceWidget::on_makePlacement_clicked() QString command = QString::fromLatin1("%1.addObject(\"App::Placement\", \"Placement\").Placement = %2") .arg(document, argument); - Gui::Command::openCommand("Placement"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Placement")); Gui::Command::runCommand(Gui::Command::Doc, "from FreeCAD import Base"); Gui::Command::runCommand(Gui::Command::Doc, command.toLatin1()); Gui::Command::commitCommand(); @@ -225,7 +225,7 @@ bool FitBSplineSurfaceWidget::accept() Gui::WaitCursor wc; Gui::Command::addModule(Gui::Command::App, "ReverseEngineering"); - Gui::Command::openCommand("Fit B-Spline"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Fit B-Spline")); Gui::Command::runCommand(Gui::Command::Doc, command.toLatin1()); Gui::Command::commitCommand(); Gui::Command::updateActive(); diff --git a/src/Mod/ReverseEngineering/Gui/Poisson.cpp b/src/Mod/ReverseEngineering/Gui/Poisson.cpp index 8364318dbd..a2c0eeaaa3 100644 --- a/src/Mod/ReverseEngineering/Gui/Poisson.cpp +++ b/src/Mod/ReverseEngineering/Gui/Poisson.cpp @@ -98,7 +98,7 @@ bool PoissonWidget::accept() Gui::WaitCursor wc; Gui::Command::addModule(Gui::Command::App, "ReverseEngineering"); - Gui::Command::openCommand("Poisson reconstruction"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Poisson reconstruction")); Gui::Command::runCommand(Gui::Command::Doc, command.toLatin1()); Gui::Command::commitCommand(); Gui::Command::updateActive(); diff --git a/src/Mod/ReverseEngineering/Gui/PreCompiled.cpp b/src/Mod/ReverseEngineering/Gui/PreCompiled.cpp index 1e5d389dd2..7cd1cae80f 100644 --- a/src/Mod/ReverseEngineering/Gui/PreCompiled.cpp +++ b/src/Mod/ReverseEngineering/Gui/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_af.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_af.qm index c81cb3ec9c..6aae5e3970 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_af.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_af.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ar.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ar.qm index 7480fca272..55e890c688 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ar.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ar.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ca.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ca.qm index a75b92462a..3e05f42983 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ca.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ca.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_cs.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_cs.qm index 064b4cf5ec..49d7bace5d 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_cs.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_cs.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_de.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_de.qm index 0c7b5c6bb2..ce7aaa9320 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_de.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_de.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_el.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_el.qm index 59d2a9a7ab..84eeac13e8 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_el.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_el.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_es-ES.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_es-ES.qm index 6fd55bc70a..d882875363 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_es-ES.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_es-ES.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_eu.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_eu.qm index c1a8d231da..71eb4ed8e0 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_eu.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_eu.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fi.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fi.qm index c2bb4482c4..d4bca9ab56 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fi.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fi.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fil.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fil.qm index ec1da49bae..9b66a7058a 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fil.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fil.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.qm index 870d47a969..34cf9bbb2d 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.ts b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.ts index 88899b4a08..dea8a18a66 100644 --- a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.ts +++ b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_fr.ts @@ -508,7 +508,7 @@ Cut segment from mesh - Cut segment from mesh + Couper le segment du maillage diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_gl.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_gl.qm index 6bc60b515a..b4cddb681b 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_gl.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_gl.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hr.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hr.qm index ac39bd5ceb..5b43306a60 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hr.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hr.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hu.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hu.qm index 138f937113..553f2b7021 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hu.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_hu.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_id.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_id.qm index bffaa7bb9e..b033cbe5ad 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_id.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_id.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_it.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_it.qm index afd96cfec7..8f4a48f73e 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_it.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_it.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ja.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ja.qm index abd008417a..83e9c35015 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ja.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ja.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_kab.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_kab.qm index f5303994df..b64991ca99 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_kab.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_kab.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ko.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ko.qm index c9f7f1ebd9..8307280be7 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ko.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ko.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_lt.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_lt.qm index f3ad8326e9..98c85edd13 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_lt.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_lt.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_nl.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_nl.qm index 39cd442d4f..da8a14c765 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_nl.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_nl.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_no.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_no.qm index cad49542dc..9390d48741 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_no.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_no.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.qm index edc14e69df..303d501ac1 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.ts b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.ts index 85b081d04a..693ddd887e 100644 --- a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.ts +++ b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pl.ts @@ -137,7 +137,7 @@ Mesh segmentation... - Mesh segmentation... + Segmentacja siatki... @@ -389,7 +389,7 @@ Distance to plane - Distance to plane + Odległość do płaszczyzny diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-BR.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-BR.qm index 46f335e6eb..f8ffa790b3 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-BR.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-BR.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-PT.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-PT.qm index 4a924946f8..212b62b74d 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-PT.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_pt-PT.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ro.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ro.qm index ac4227ce7a..13852422b2 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ro.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ro.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ru.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ru.qm index 1eb85d1560..96981ea601 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ru.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_ru.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sk.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sk.qm index 63345a9878..e3c91ecef3 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sk.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sk.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sl.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sl.qm index 0be1563647..b12ad5f49a 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sl.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sl.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sr.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sr.qm index ac51ba7ea6..395ab536a0 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sr.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sr.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sv-SE.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sv-SE.qm index 0f289dc95e..9bef70ce33 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sv-SE.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_sv-SE.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_tr.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_tr.qm index 1148e9bd6b..f34040a83f 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_tr.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_tr.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_uk.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_uk.qm index 1b5b1c0190..c49a2379fe 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_uk.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_uk.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_val-ES.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_val-ES.qm index e8a94a84f8..92cea2dcf4 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_val-ES.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_val-ES.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_vi.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_vi.qm index 87c206d402..53eccf947d 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_vi.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_vi.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-CN.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-CN.qm index 65d3811df9..6e5e4b2ea1 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-CN.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-CN.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-TW.qm b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-TW.qm index bef20ba3cb..ea2b5b866c 100644 Binary files a/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-TW.qm and b/src/Mod/ReverseEngineering/Gui/Resources/translations/ReverseEngineering_zh-TW.qm differ diff --git a/src/Mod/ReverseEngineering/Gui/SegmentationManual.cpp b/src/Mod/ReverseEngineering/Gui/SegmentationManual.cpp index da48973d7a..64b3806283 100644 --- a/src/Mod/ReverseEngineering/Gui/SegmentationManual.cpp +++ b/src/Mod/ReverseEngineering/Gui/SegmentationManual.cpp @@ -231,7 +231,7 @@ void SegmentationManual::createSegment() return; // delete all selected faces App::Document* adoc = gdoc->getDocument(); - gdoc->openCommand("Segmentation"); + gdoc->openCommand(QT_TRANSLATE_NOOP("Command", "Segmentation")); std::vector meshes = adoc->getObjectsOfType(); bool selected = false; diff --git a/src/Mod/ReverseEngineering/Gui/Workbench.h b/src/Mod/ReverseEngineering/Gui/Workbench.h index f7cea4cb78..11bac50861 100644 --- a/src/Mod/ReverseEngineering/Gui/Workbench.h +++ b/src/Mod/ReverseEngineering/Gui/Workbench.h @@ -48,4 +48,4 @@ protected: } // namespace ReverseEngineeringGui -#endif // REENGUI_WORKBENCH_H +#endif // REENGUI_WORKBENCH_H diff --git a/src/Mod/ReverseEngineering/Init.py b/src/Mod/ReverseEngineering/Init.py index 042fb264cc..9f25ae3d58 100644 --- a/src/Mod/ReverseEngineering/Init.py +++ b/src/Mod/ReverseEngineering/Init.py @@ -1,7 +1,4 @@ # -*- coding: utf8 -*- -# FreeCAD init script of the ReverseEngineering module -# (c) 2001 Juergen Riegel - # *************************************************************************** # * Copyright (c) 2002 Juergen Riegel * # * * @@ -14,13 +11,14 @@ # * for detail see the LICENCE text file. * # * * # * FreeCAD is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * # * GNU Lesser General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * -# * License along with FreeCAD; if not, write to the Free Software * +# * License along with FreeCAD; if not, write to the Free Software * # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * # * USA * # * * # ***************************************************************************/ +# FreeCAD init script of the ReverseEngineering module diff --git a/src/Mod/ReverseEngineering/InitGui.py b/src/Mod/ReverseEngineering/InitGui.py index e9ace199fd..7b647c2b5a 100644 --- a/src/Mod/ReverseEngineering/InitGui.py +++ b/src/Mod/ReverseEngineering/InitGui.py @@ -1,10 +1,3 @@ -# ReverseEngineering gui init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** #* Copyright (c) 2002 Juergen Riegel * #* * @@ -28,6 +21,12 @@ #* * #***************************************************************************/ +# ReverseEngineering gui init module +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up + class ReverseEngineeringWorkbench ( Workbench ): "ReverseEngineering workbench object" diff --git a/src/Mod/ReverseEngineering/reverseengineering.dox b/src/Mod/ReverseEngineering/reverseengineering.dox index 7db86c977b..a3ebec68e8 100644 --- a/src/Mod/ReverseEngineering/reverseengineering.dox +++ b/src/Mod/ReverseEngineering/reverseengineering.dox @@ -1,5 +1,8 @@ /** \defgroup REEN ReverseEngineering - * \ingroup CWORKBENCHES + * \ingroup CWORKBENCHES * \brief Generate Part shapes from Mesh and Points based objects + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + */ diff --git a/src/Mod/Robot/Gui/CommandTrajectory.cpp b/src/Mod/Robot/Gui/CommandTrajectory.cpp index ef15ca005f..316989fd05 100644 --- a/src/Mod/Robot/Gui/CommandTrajectory.cpp +++ b/src/Mod/Robot/Gui/CommandTrajectory.cpp @@ -267,7 +267,7 @@ void CmdRobotSetDefaultValues::activated(int) bool ok; QString text = QInputDialog::getText(0, QObject::tr("Set default speed"), QObject::tr("speed: (e.g. 1 m/s or 3 cm/s)"), QLineEdit::Normal, - QString::fromLatin1("1 m/s"), &ok); + QString::fromLatin1("1 m/s"), &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok && !text.isEmpty() ) { doCommand(Doc,"_DefSpeed = '%s'",text.toLatin1().constData()); } @@ -276,7 +276,7 @@ void CmdRobotSetDefaultValues::activated(int) items << QString::fromLatin1("False") << QString::fromLatin1("True"); QString item = QInputDialog::getItem(0, QObject::tr("Set default continuity"), - QObject::tr("continuous ?"), items, 0, false, &ok); + QObject::tr("continuous ?"), items, 0, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (ok && !item.isEmpty()) doCommand(Doc,"_DefCont = %s",item.toLatin1().constData()); @@ -284,7 +284,7 @@ void CmdRobotSetDefaultValues::activated(int) text = QInputDialog::getText(0, QObject::tr("Set default acceleration"), QObject::tr("acceleration: (e.g. 1 m/s^2 or 3 cm/s^2)"), QLineEdit::Normal, - QString::fromLatin1("1 m/s^2"), &ok); + QString::fromLatin1("1 m/s^2"), &ok, Qt::MSWindowsFixedSizeDialogHint); if ( ok && !text.isEmpty() ) { doCommand(Doc,"_DefAccelaration = '%s'",text.toLatin1().constData()); } diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_af.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_af.qm index 9074a437ad..45f5a7b592 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_af.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_af.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ar.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ar.qm index 2576df11de..b25f4644c5 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ar.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ar.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ca.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ca.qm index 4112710915..44716cb2db 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ca.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ca.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_cs.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_cs.qm index 8de530f450..dc77feb54b 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_cs.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_cs.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_de.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_de.qm index fe307b0f1b..bef87811bb 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_de.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_de.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_el.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_el.qm index 0e400fd466..4b75ca4f4a 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_el.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_el.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.qm index 332177904a..01c18bcbe9 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_es-ES.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.qm index dacc396aad..4c56fd9fe4 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts index e83eae7d5e..af334690c7 100644 --- a/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts +++ b/src/Mod/Robot/Gui/Resources/translations/Robot_eu.ts @@ -562,7 +562,7 @@ TaskEdge2TracParameter - TaskEdge2TracParameter + TaskEdge2TracParameter @@ -620,7 +620,7 @@ TaskRobot6Axis - TaskRobot6Axis + TaskRobot6Axis @@ -628,7 +628,7 @@ TaskRobotControl - TaskRobotControl + TaskRobotControl @@ -636,7 +636,7 @@ TaskRobotMessages - TaskRobotMessages + TaskRobotMessages diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_fi.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_fi.qm index e46bec56aa..2a343fac9b 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_fi.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_fi.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_fil.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_fil.qm index 5f0e652ac6..879a643432 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_fil.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_fil.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_fr.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_fr.qm index cc30d693f2..59eb83c538 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_fr.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_fr.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_gl.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_gl.qm index 1fa2928707..2a2d2d5f85 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_gl.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_gl.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_hr.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_hr.qm index 4ef53ddd2c..a784601ba2 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_hr.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_hr.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_hu.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_hu.qm index fcadce6da2..0198c846c8 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_hu.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_hu.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_id.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_id.qm index 0e5f0d73b7..a22722a3cc 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_id.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_id.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_it.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_it.qm index d672580d4f..77ada9f7c1 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_it.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_it.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ja.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ja.qm index c321c5ddbc..9426815a39 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ja.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ja.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_kab.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_kab.qm index 3fd2363c1f..27d3b1aeb4 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_kab.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_kab.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ko.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ko.qm index ad2442062a..979190aee8 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ko.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ko.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_lt.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_lt.qm index 5dcc402c58..d6daf9dc55 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_lt.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_lt.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_nl.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_nl.qm index b9b191481e..d412a7b589 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_nl.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_nl.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_no.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_no.qm index c7d7b142f1..392deec4a6 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_no.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_no.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pl.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_pl.qm index 031995c36d..2cba154354 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_pl.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_pl.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.qm index 7715f2271f..8c9ea2788a 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-BR.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.qm index 5e8ab7680a..6268792ff0 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_pt-PT.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ro.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ro.qm index 5d8fb139db..6f3e948b42 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ro.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ro.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_ru.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_ru.qm index 6edaed28a6..df183de005 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_ru.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_ru.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sk.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_sk.qm index f2410c3f18..9380fafbbc 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_sk.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_sk.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sl.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_sl.qm index 968b2b7d17..8332dc7681 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_sl.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_sl.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sr.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_sr.qm index f2cff87db6..44731aef8e 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_sr.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_sr.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.qm index 7f1eed6176..b1a6d649f7 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_sv-SE.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_tr.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_tr.qm index 461f9f68db..f3a6d54aef 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_tr.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_tr.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_uk.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_uk.qm index 4bf7136b00..63a9e282da 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_uk.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_uk.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.qm index e744880f98..163181f9be 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_val-ES.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_vi.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_vi.qm index 5171d33bf5..bb226de57c 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_vi.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_vi.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.qm index 149b6cf580..315cd32264 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-CN.qm differ diff --git a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.qm b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.qm index 38162ae9c9..6054a00c4c 100644 Binary files a/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.qm and b/src/Mod/Robot/Gui/Resources/translations/Robot_zh-TW.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_af.qm b/src/Mod/Ship/resources/translations/Ship_af.qm index b8afc23bcb..1d50bdc72a 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_af.qm and b/src/Mod/Ship/resources/translations/Ship_af.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ar.qm b/src/Mod/Ship/resources/translations/Ship_ar.qm index da660ec081..c23d86fad2 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ar.qm and b/src/Mod/Ship/resources/translations/Ship_ar.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ca.qm b/src/Mod/Ship/resources/translations/Ship_ca.qm index d46dd728bb..8d7bbea58b 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ca.qm and b/src/Mod/Ship/resources/translations/Ship_ca.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_cs.qm b/src/Mod/Ship/resources/translations/Ship_cs.qm index 4cd6ece9f4..b8fae67af2 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_cs.qm and b/src/Mod/Ship/resources/translations/Ship_cs.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_de.qm b/src/Mod/Ship/resources/translations/Ship_de.qm index 24ae93d6de..d4dc2dd1e4 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_de.qm and b/src/Mod/Ship/resources/translations/Ship_de.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_el.qm b/src/Mod/Ship/resources/translations/Ship_el.qm index bd12952129..28529c8d34 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_el.qm and b/src/Mod/Ship/resources/translations/Ship_el.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_es-ES.qm b/src/Mod/Ship/resources/translations/Ship_es-ES.qm index 2b63ebf97f..f9bb7b616b 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_es-ES.qm and b/src/Mod/Ship/resources/translations/Ship_es-ES.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_eu.qm b/src/Mod/Ship/resources/translations/Ship_eu.qm index 1d057dbd72..58b1460bc4 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_eu.qm and b/src/Mod/Ship/resources/translations/Ship_eu.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_fi.qm b/src/Mod/Ship/resources/translations/Ship_fi.qm index eb799e13e6..dcc3ca69d2 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_fi.qm and b/src/Mod/Ship/resources/translations/Ship_fi.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_fil.qm b/src/Mod/Ship/resources/translations/Ship_fil.qm index f1425edfc5..af9e963d12 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_fil.qm and b/src/Mod/Ship/resources/translations/Ship_fil.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_fr.qm b/src/Mod/Ship/resources/translations/Ship_fr.qm index 3830d6ec6b..b4a4ea64fe 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_fr.qm and b/src/Mod/Ship/resources/translations/Ship_fr.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_gl.qm b/src/Mod/Ship/resources/translations/Ship_gl.qm index 42c75c2e0d..68ff5223fa 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_gl.qm and b/src/Mod/Ship/resources/translations/Ship_gl.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_hr.qm b/src/Mod/Ship/resources/translations/Ship_hr.qm index 4f061e87c5..5a8e1fd5ab 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_hr.qm and b/src/Mod/Ship/resources/translations/Ship_hr.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_hu.qm b/src/Mod/Ship/resources/translations/Ship_hu.qm index 41dca94fc4..b39f20630e 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_hu.qm and b/src/Mod/Ship/resources/translations/Ship_hu.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_id.qm b/src/Mod/Ship/resources/translations/Ship_id.qm index f8883cd565..8ad9a2c900 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_id.qm and b/src/Mod/Ship/resources/translations/Ship_id.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_it.qm b/src/Mod/Ship/resources/translations/Ship_it.qm index 0f53f88416..f07d76ed87 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_it.qm and b/src/Mod/Ship/resources/translations/Ship_it.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ja.qm b/src/Mod/Ship/resources/translations/Ship_ja.qm index c1ee53ab24..d47516238c 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ja.qm and b/src/Mod/Ship/resources/translations/Ship_ja.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_kab.qm b/src/Mod/Ship/resources/translations/Ship_kab.qm index b0d15b1a38..90bd7ee866 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_kab.qm and b/src/Mod/Ship/resources/translations/Ship_kab.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ko.qm b/src/Mod/Ship/resources/translations/Ship_ko.qm index 7ac6dce22c..a32dc30c46 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ko.qm and b/src/Mod/Ship/resources/translations/Ship_ko.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_lt.qm b/src/Mod/Ship/resources/translations/Ship_lt.qm index 3bee167507..0972c7eb06 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_lt.qm and b/src/Mod/Ship/resources/translations/Ship_lt.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_nl.qm b/src/Mod/Ship/resources/translations/Ship_nl.qm index 837167f8c8..255061ae39 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_nl.qm and b/src/Mod/Ship/resources/translations/Ship_nl.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_no.qm b/src/Mod/Ship/resources/translations/Ship_no.qm index 03fd4e90c8..2545f5bbdb 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_no.qm and b/src/Mod/Ship/resources/translations/Ship_no.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_pl.qm b/src/Mod/Ship/resources/translations/Ship_pl.qm index 301486b215..4e0455585a 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_pl.qm and b/src/Mod/Ship/resources/translations/Ship_pl.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_pt-BR.qm b/src/Mod/Ship/resources/translations/Ship_pt-BR.qm index 4e21ee7dc2..14978edcdd 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_pt-BR.qm and b/src/Mod/Ship/resources/translations/Ship_pt-BR.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_pt-PT.qm b/src/Mod/Ship/resources/translations/Ship_pt-PT.qm index 2435ba4016..8353e91a7f 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_pt-PT.qm and b/src/Mod/Ship/resources/translations/Ship_pt-PT.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ro.qm b/src/Mod/Ship/resources/translations/Ship_ro.qm index 93bca2e024..c97560fd1a 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ro.qm and b/src/Mod/Ship/resources/translations/Ship_ro.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_ru.qm b/src/Mod/Ship/resources/translations/Ship_ru.qm index 4b6ff0923e..c111d87286 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_ru.qm and b/src/Mod/Ship/resources/translations/Ship_ru.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_sk.qm b/src/Mod/Ship/resources/translations/Ship_sk.qm index eef15c56b6..fe49a402dc 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_sk.qm and b/src/Mod/Ship/resources/translations/Ship_sk.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_sl.qm b/src/Mod/Ship/resources/translations/Ship_sl.qm index 792d8a2dc0..de6708eda2 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_sl.qm and b/src/Mod/Ship/resources/translations/Ship_sl.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_sr.qm b/src/Mod/Ship/resources/translations/Ship_sr.qm index 08896f5aa2..71e8d00044 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_sr.qm and b/src/Mod/Ship/resources/translations/Ship_sr.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_sv-SE.qm b/src/Mod/Ship/resources/translations/Ship_sv-SE.qm index e010fe120d..a73d363f23 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_sv-SE.qm and b/src/Mod/Ship/resources/translations/Ship_sv-SE.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_tr.qm b/src/Mod/Ship/resources/translations/Ship_tr.qm index 4ec4213c67..972bbd4fd4 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_tr.qm and b/src/Mod/Ship/resources/translations/Ship_tr.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_uk.qm b/src/Mod/Ship/resources/translations/Ship_uk.qm index 5eca19db93..edab14481f 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_uk.qm and b/src/Mod/Ship/resources/translations/Ship_uk.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_val-ES.qm b/src/Mod/Ship/resources/translations/Ship_val-ES.qm index 0555c432d8..618a072923 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_val-ES.qm and b/src/Mod/Ship/resources/translations/Ship_val-ES.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_vi.qm b/src/Mod/Ship/resources/translations/Ship_vi.qm index 86ec10cbe2..89f91d3526 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_vi.qm and b/src/Mod/Ship/resources/translations/Ship_vi.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_zh-CN.qm b/src/Mod/Ship/resources/translations/Ship_zh-CN.qm index 186f984158..0020160d2a 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_zh-CN.qm and b/src/Mod/Ship/resources/translations/Ship_zh-CN.qm differ diff --git a/src/Mod/Ship/resources/translations/Ship_zh-TW.qm b/src/Mod/Ship/resources/translations/Ship_zh-TW.qm index 070a2fee43..2f54e9d6b1 100644 Binary files a/src/Mod/Ship/resources/translations/Ship_zh-TW.qm and b/src/Mod/Ship/resources/translations/Ship_zh-TW.qm differ diff --git a/src/Mod/Sketcher/App/Constraint.cpp b/src/Mod/Sketcher/App/Constraint.cpp index 20c1b28dca..1b00d25061 100644 --- a/src/Mod/Sketcher/App/Constraint.cpp +++ b/src/Mod/Sketcher/App/Constraint.cpp @@ -126,6 +126,7 @@ Quantity Constraint::getPresentationValue() const quantity.setUnit(Unit::Angle); break; case SnellsLaw: + case Weight: quantity.setValue(Value); break; default: diff --git a/src/Mod/Sketcher/App/Constraint.h b/src/Mod/Sketcher/App/Constraint.h index b8ee2a2ac3..7a3316b08a 100644 --- a/src/Mod/Sketcher/App/Constraint.h +++ b/src/Mod/Sketcher/App/Constraint.h @@ -57,6 +57,7 @@ enum ConstraintType { SnellsLaw = 16, Block = 17, Diameter = 18, + Weight = 19, NumConstraintTypes // must be the last item! }; @@ -117,7 +118,7 @@ public: inline bool isDimensional() const { return Type == Distance || Type == DistanceX || Type == DistanceY || - Type == Radius || Type == Diameter || Type == Angle || Type == SnellsLaw; + Type == Radius || Type == Diameter || Type == Angle || Type == SnellsLaw || Type == Weight; } friend class PropertyConstraintList; diff --git a/src/Mod/Sketcher/App/ConstraintPyImp.cpp b/src/Mod/Sketcher/App/ConstraintPyImp.cpp index 03204f4aca..cafa0019e0 100644 --- a/src/Mod/Sketcher/App/ConstraintPyImp.cpp +++ b/src/Mod/Sketcher/App/ConstraintPyImp.cpp @@ -169,6 +169,13 @@ int ConstraintPy::PyInit(PyObject* args, PyObject* /*kwd*/) this->getConstraintPtr()->LabelPosition = 10; valid = true; } + else if (strcmp("Weight",ConstraintType) == 0) { + this->getConstraintPtr()->Type = Weight; + // set a value that is out of range of result of atan2 + // this value is handled in ViewProviderSketch + this->getConstraintPtr()->LabelPosition = 10; + valid = true; + } if (valid) { this->getConstraintPtr()->First = FirstIndex; this->getConstraintPtr()->setValue(Value); @@ -503,6 +510,7 @@ std::string ConstraintPy::representation(void) const case Block : result << "'Block' (" << getConstraintPtr()->First << ")>";break; case Radius : result << "'Radius'>";break; case Diameter : result << "'Diameter'>";break; + case Weight : result << "'Weight'>";break; case Parallel : result << "'Parallel'>";break; case Tangent : if (this->getConstraintPtr()->Third == Constraint::GeoUndef) @@ -554,6 +562,7 @@ Py::String ConstraintPy::getType(void) const case Block : return Py::String("Block");break; case Radius : return Py::String("Radius");break; case Diameter : return Py::String("Diameter");break; + case Weight : return Py::String("Weight");break; case Parallel : return Py::String("Parallel");break; case Tangent : return Py::String("Tangent");break; case Perpendicular : return Py::String("Perpendicular");break; diff --git a/src/Mod/Sketcher/App/ExternalGeometryExtension.cpp b/src/Mod/Sketcher/App/ExternalGeometryExtension.cpp index f229e690e3..5312e6092f 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryExtension.cpp +++ b/src/Mod/Sketcher/App/ExternalGeometryExtension.cpp @@ -33,16 +33,11 @@ using namespace Sketcher; //---------- Geometry Extension -constexpr std::array ISketchExternalGeometryExtension::flag2str; +constexpr std::array ExternalGeometryExtension::flag2str; -TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryExtension,Part::GeometryExtension) +TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryExtension,Part::GeometryPersistenceExtension) // Persistence implementer -unsigned int ExternalGeometryExtension::getMemSize (void) const -{ - return sizeof(long int); -} - void ExternalGeometryExtension::Save(Base::Writer &writer) const { writer.Stream() << writer.ind() << "getTypeId().getName(); @@ -85,3 +80,20 @@ PyObject * ExternalGeometryExtension::getPyObject(void) return new ExternalGeometryExtensionPy(new ExternalGeometryExtension(*this)); } +bool ExternalGeometryExtension::getFlagsFromName(std::string str, ExternalGeometryExtension::Flag &flag) +{ + auto pos = std::find_if( ExternalGeometryExtension::flag2str.begin(), + ExternalGeometryExtension::flag2str.end(), + [str](const char * val) { + return strcmp(val,str.c_str())==0;} + ); + + if( pos != ExternalGeometryExtension::flag2str.end()) { + int index = std::distance( ExternalGeometryExtension::flag2str.begin(), pos ); + + flag = static_cast(index); + return true; + } + + return false; +} diff --git a/src/Mod/Sketcher/App/ExternalGeometryExtension.h b/src/Mod/Sketcher/App/ExternalGeometryExtension.h index 58557fdc1f..e306d9cb3a 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryExtension.h +++ b/src/Mod/Sketcher/App/ExternalGeometryExtension.h @@ -32,20 +32,6 @@ namespace Sketcher class ISketchExternalGeometryExtension { -public: - // START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) - enum Flag { - Defining = 0, // allow an external geometry to build shape - Frozen = 1, // freeze an external geometry - Detached = 2, // signal the intentions of detaching the geometry from external reference - Missing = 3, // geometry with missing external reference - Sync = 4, // signal the intention to synchronize a frozen geometry - NumFlags // Must be the last type - }; - // END_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) - - constexpr static std::array flag2str {{ "Defining", "Frozen", "Detached","Missing", "Sync" }}; - public: // Identification information // START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) @@ -60,16 +46,28 @@ public: virtual void setRef(const std::string & ref) = 0; }; -class SketcherExport ExternalGeometryExtension : public Part::GeometryExtension, public ISketchExternalGeometryExtension +class SketcherExport ExternalGeometryExtension : public Part::GeometryPersistenceExtension, private ISketchExternalGeometryExtension { TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: + // START_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) + enum Flag { + Defining = 0, // allow an external geometry to build shape + Frozen = 1, // freeze an external geometry + Detached = 2, // signal the intentions of detaching the geometry from external reference + Missing = 3, // geometry with missing external reference + Sync = 4, // signal the intention to synchronize a frozen geometry + NumFlags // Must be the last type + }; + // END_CREDIT_BLOCK: Credit under LGPL for this block to Zheng, Lei (realthunder) + + constexpr static std::array flag2str {{ "Defining", "Frozen", "Detached","Missing", "Sync" }}; +public: ExternalGeometryExtension() = default; virtual ~ExternalGeometryExtension() override = default; // Persistence implementer --------------------- - virtual unsigned int getMemSize(void) const override; virtual void Save(Base::Writer &/*writer*/) const override; virtual void Restore(Base::XMLReader &/*reader*/) override; @@ -88,6 +86,8 @@ public: virtual const std::string& getRef() const override {return Ref;} virtual void setRef(const std::string & ref) override {Ref = ref;} + static bool getFlagsFromName(std::string str, ExternalGeometryExtension::Flag &flag); + private: ExternalGeometryExtension(const ExternalGeometryExtension&) = default; diff --git a/src/Mod/Sketcher/App/ExternalGeometryExtensionPyImp.cpp b/src/Mod/Sketcher/App/ExternalGeometryExtensionPyImp.cpp index f1addee140..2336c5f7d2 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryExtensionPyImp.cpp +++ b/src/Mod/Sketcher/App/ExternalGeometryExtensionPyImp.cpp @@ -55,7 +55,7 @@ std::string ExternalGeometryExtensionPy::representation(void) const bool first=true; - for(size_t i=0;itestFlag(i)) { if(first) { first=false; @@ -104,15 +104,10 @@ PyObject* ExternalGeometryExtensionPy::testFlag(PyObject *args) char* flag; if (PyArg_ParseTuple(args, "s",&flag)) { - auto pos = std::find_if(getExternalGeometryExtensionPtr()->flag2str.begin(), - getExternalGeometryExtensionPtr()->flag2str.end(), - [flag](const char * val) { return strcmp(val,flag) == 0;}); + ExternalGeometryExtension::Flag flagtype; - if( pos != getExternalGeometryExtensionPtr()->flag2str.end()) { - int index = std::distance( getExternalGeometryExtensionPtr()->flag2str.begin(), pos ); - - return new_reference_to(Py::Boolean(this->getExternalGeometryExtensionPtr()->testFlag(index))); - } + if(getExternalGeometryExtensionPtr()->getFlagsFromName(flag, flagtype)) + return new_reference_to(Py::Boolean(this->getExternalGeometryExtensionPtr()->testFlag(flagtype))); PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); return NULL; @@ -129,16 +124,11 @@ PyObject* ExternalGeometryExtensionPy::setFlag(PyObject *args) PyObject * bflag = Py_True; if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) { - auto pos = std::find_if(getExternalGeometryExtensionPtr()->flag2str.begin(), - getExternalGeometryExtensionPtr()->flag2str.end(), - [flag](const char * val) { - return strcmp(val,flag)==0;} - ); + ExternalGeometryExtension::Flag flagtype; - if( pos != getExternalGeometryExtensionPtr()->flag2str.end()) { - int index = std::distance( getExternalGeometryExtensionPtr()->flag2str.begin(), pos ); + if(getExternalGeometryExtensionPtr()->getFlagsFromName(flag, flagtype)) { - this->getExternalGeometryExtensionPtr()->setFlag(index,PyObject_IsTrue(bflag) ? true : false); + this->getExternalGeometryExtensionPtr()->setFlag(flagtype,PyObject_IsTrue(bflag) ? true : false); Py_Return; } diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp b/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp index 3fe4850ed7..a60d60e464 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.cpp @@ -36,7 +36,7 @@ using namespace Sketcher; -TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryFacade,Part::GeometryExtension) +TYPESYSTEM_SOURCE(Sketcher::ExternalGeometryFacade,Base::BaseClass) ExternalGeometryFacade::ExternalGeometryFacade(): Geo(nullptr), SketchGeoExtension(nullptr), ExternalGeoExtension(nullptr) { @@ -54,14 +54,18 @@ ExternalGeometryFacade::ExternalGeometryFacade(const Part::Geometry * geometry) std::unique_ptr ExternalGeometryFacade::getFacade(Part::Geometry * geometry) { - return std::unique_ptr(new ExternalGeometryFacade(geometry)); - //return std::make_unique(geometry); // make_unique has no access to private constructor + if(geometry != nullptr) + return std::unique_ptr(new ExternalGeometryFacade(geometry)); + else + return std::unique_ptr(nullptr); } std::unique_ptr ExternalGeometryFacade::getFacade(const Part::Geometry * geometry) { - return std::unique_ptr(new ExternalGeometryFacade(geometry)); - //return std::make_unique(geometry); // make_unique has no access to private constructor + if(geometry != nullptr) + return std::unique_ptr(new ExternalGeometryFacade(geometry)); + else + return std::unique_ptr(nullptr); } void ExternalGeometryFacade::setGeometry(Part::Geometry *geometry) diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.h b/src/Mod/Sketcher/App/ExternalGeometryFacade.h index 9f5bda7895..788ffbcb0b 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacade.h +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.h @@ -41,11 +41,15 @@ class ExternalGeometryFacadePy; // // Exactly the same considerations as for GeometryFacade apply (see documentation of GeometryFacade). // +// It was not made publicly deriving from GeometryFacade because it is not possible to differentiate functions by return type, which is the +// case of getFacade() returning a unique_ptr to GeometryFacade in GeometryFacade, and one to ExternalGeometryFacade. I have not managed to +// find a good solution to this problem, thus the code duplication. +// // Summary Remarks: // It is intended to have a separate type (not being a Geometry type). // it is intended to have the relevant interface in full for the sketcher extension only // It is intended to work on borrowed memory allocation. -class SketcherExport ExternalGeometryFacade : public Base::BaseClass, public ISketchGeometryExtension, public ISketchExternalGeometryExtension +class SketcherExport ExternalGeometryFacade : public Base::BaseClass, private ISketchGeometryExtension, private ISketchExternalGeometryExtension { TYPESYSTEM_HEADER_WITH_OVERRIDE(); @@ -80,6 +84,19 @@ public: inline virtual long getId() const override {return getGeoExt()->getId();} virtual void setId(long id) override {getGeoExt()->setId(id);} + virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} + virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + + virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); } + virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); } + + // Convenience accessor + bool getBlocked() const { return this->testGeometryMode(GeometryMode::Blocked);} + void setBlocked(bool status = true) {this->setGeometryMode(GeometryMode::Blocked, status);} + + inline bool getConstruction(void) const {return this->testGeometryMode(GeometryMode::Construction);}; + inline void setConstruction(bool construction) {this->setGeometryMode(GeometryMode::Construction, construction);}; + // Geometry Extension Information inline const std::string &getSketchExtensionName () const {return SketchGeoExtension->getName();} inline const std::string &getExternalExtensionName () const {return ExternalGeoExtension->getName();} @@ -107,8 +124,6 @@ public: const Handle(Geom_Geometry)& handle() const {return getGeo()->handle();}; Part::Geometry *copy(void) const {return getGeo()->copy();}; Part::Geometry *clone(void) const {return getGeo()->clone();}; - inline bool getConstruction(void) const {return getGeo()->getConstruction();}; - inline void setConstruction(bool construction) {getGeo()->setConstruction(construction);}; boost::uuids::uuid getTag() const {return getGeo()->getTag();}; std::vector> getExtensions() const {return getGeo()->getExtensions();}; diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml index 9209b9b42c..290e9767ce 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml @@ -15,32 +15,54 @@ Describes a GeometryFacade - - - - returns the Id of the SketchGeometryExtension. - - - - - returns a boolean indicating whether the given bit is set. + Returns a boolean indicating whether the given bit is set. - sets the given bit to true/false. + Sets the given bit to true/false. - returns the reference string of this external geometry. + Returns the reference string of this external geometry. + + + + Sets/returns the Internal Alignment Type of the Geometry. + + + + + + + Sets/returns this geometry as a construction one, which will not be part of a later built shape. + + + + + + + Sets/returns the Internal Alignment Type of the Geometry. + + + + + + + + Sets/returns whether the geometry is blocked or not. + + + + Performs the symmetrical transformation of this geometric object @@ -106,13 +128,6 @@ Returns a list with information about the geometry extensions. - - - Defines this geometry as a construction one which -means that it is not part of a later built shape. - - - Gives the tag of the geometry as string. @@ -121,7 +136,7 @@ means that it is not part of a later built shape. - Gives the tag of the geometry as string. + Returns the underlying geometry object. diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp b/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp index 8c19125f54..13095bec3c 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp +++ b/src/Mod/Sketcher/App/ExternalGeometryFacadePyImp.cpp @@ -87,12 +87,12 @@ PyObject* ExternalGeometryFacadePy::testFlag(PyObject *args) char* flag; if (PyArg_ParseTuple(args, "s",&flag)) { - auto pos = std::find_if(getExternalGeometryFacadePtr()->flag2str.begin(), - getExternalGeometryFacadePtr()->flag2str.end(), + auto pos = std::find_if(ExternalGeometryExtension::flag2str.begin(), + ExternalGeometryExtension::flag2str.end(), [flag](const char * val) { return strcmp(val,flag) == 0;}); - if( pos != getExternalGeometryFacadePtr()->flag2str.end()) { - int index = std::distance( getExternalGeometryFacadePtr()->flag2str.begin(), pos ); + if( pos != ExternalGeometryExtension::flag2str.end()) { + int index = std::distance( ExternalGeometryExtension::flag2str.begin(), pos ); return new_reference_to(Py::Boolean(this->getExternalGeometryFacadePtr()->testFlag(index))); } @@ -112,14 +112,14 @@ PyObject* ExternalGeometryFacadePy::setFlag(PyObject *args) PyObject * bflag = Py_True; if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) { - auto pos = std::find_if(getExternalGeometryFacadePtr()->flag2str.begin(), - getExternalGeometryFacadePtr()->flag2str.end(), + auto pos = std::find_if(ExternalGeometryExtension::flag2str.begin(), + ExternalGeometryExtension::flag2str.end(), [flag](const char * val) { return strcmp(val,flag)==0;} ); - if( pos != getExternalGeometryFacadePtr()->flag2str.end()) { - int index = std::distance( getExternalGeometryFacadePtr()->flag2str.begin(), pos ); + if( pos != ExternalGeometryExtension::flag2str.end()) { + int index = std::distance( ExternalGeometryExtension::flag2str.begin(), pos ); this->getExternalGeometryFacadePtr()->setFlag(index,PyObject_IsTrue(bflag) ? true : false); Py_Return; @@ -153,6 +153,41 @@ void ExternalGeometryFacadePy::setId(Py::Long Id) this->getExternalGeometryFacadePtr()->setId(long(Id)); } +Py::String ExternalGeometryFacadePy::getInternalType(void) const +{ + int internaltypeindex = (int)this->getExternalGeometryFacadePtr()->getInternalType(); + + if(internaltypeindex >= InternalType::NumInternalGeometryType) + throw Py::NotImplementedError("String name of enum not implemented"); + + std::string typestr = SketchGeometryExtension::internaltype2str[internaltypeindex]; + + return Py::String(typestr); +} + +void ExternalGeometryFacadePy::setInternalType(Py::String arg) +{ + std::string argstr = arg; + InternalType::InternalType type; + + if(SketchGeometryExtension::getInternalTypeFromName(argstr, type)) { + this->getExternalGeometryFacadePtr()->setInternalType(type); + return; + } + + throw Py::ValueError("Argument is not a valid internal geometry type."); +} + +Py::Boolean ExternalGeometryFacadePy::getBlocked(void) const +{ + return Py::Boolean(getExternalGeometryFacadePtr()->getBlocked()); +} + +void ExternalGeometryFacadePy::setBlocked(Py::Boolean arg) +{ + getExternalGeometryFacadePtr()->setBlocked(arg); +} + PyObject* ExternalGeometryFacadePy::mirror(PyObject *args) { PyObject* o; @@ -270,8 +305,7 @@ PyObject* ExternalGeometryFacadePy::getExtensionOfType(PyObject *args) std::shared_ptr ext(this->getExternalGeometryFacadePtr()->getExtension(type)); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -282,6 +316,10 @@ PyObject* ExternalGeometryFacadePy::getExtensionOfType(PyObject *args) PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } else { @@ -304,8 +342,7 @@ PyObject* ExternalGeometryFacadePy::getExtensionOfName(PyObject *args) std::shared_ptr ext(this->getExternalGeometryFacadePtr()->getExtension(std::string(o))); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -316,6 +353,10 @@ PyObject* ExternalGeometryFacadePy::getExtensionOfName(PyObject *args) PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } @@ -428,9 +469,7 @@ PyObject* ExternalGeometryFacadePy::getExtensions(PyObject *args) try { const std::vector> ext = this->getExternalGeometryFacadePtr()->getExtensions(); - PyObject* list = PyList_New(ext.size()); - - Py::Tuple tuple(ext.size()); + Py::List list; for (std::size_t i=0; i(std::const_pointer_cast(p)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - - PyList_SetItem( list, i, cpy); + try { + list.append(Py::asObject(p->copyPyObject())); + } + catch(Base::NotImplementedError) { + // silently ignoring extensions not having a Python object + } } } - return list; + return Py::new_reference_to(list); } catch(const Base::ValueError& e) { PyErr_SetString(Part::PartExceptionOCCError, e.what()); @@ -473,7 +515,8 @@ Py::String ExternalGeometryFacadePy::getTag(void) const Py::Object ExternalGeometryFacadePy::getGeometry(void) const { // We return a clone - return Py::Object(getExternalGeometryFacadePtr()->getGeometry()->clone()->getPyObject(),true); + std::unique_ptr geo(getExternalGeometryFacadePtr()->getGeometry()->clone()); + return Py::Object(geo->getPyObject(), true); } void ExternalGeometryFacadePy::setGeometry(Py::Object arg) diff --git a/src/Mod/Sketcher/App/GeometryFacade.cpp b/src/Mod/Sketcher/App/GeometryFacade.cpp index 8a13bc1e4c..034e5e8f62 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.cpp +++ b/src/Mod/Sketcher/App/GeometryFacade.cpp @@ -28,7 +28,7 @@ #include "GeometryFacade.h" -#include // Only for Debug - To be removed +//#include // Only for Debug, when/if necessary #include #include @@ -36,7 +36,7 @@ using namespace Sketcher; -TYPESYSTEM_SOURCE(Sketcher::GeometryFacade,Part::GeometryExtension) +TYPESYSTEM_SOURCE(Sketcher::GeometryFacade,Base::BaseClass) GeometryFacade::GeometryFacade(): Geo(nullptr), SketchGeoExtension(nullptr) { @@ -50,17 +50,24 @@ GeometryFacade::GeometryFacade(const Part::Geometry * geometry) initExtension(); else THROWM(Base::ValueError, "GeometryFacade initialized with Geometry null pointer"); + } std::unique_ptr GeometryFacade::getFacade(Part::Geometry * geometry) { - return std::unique_ptr(new GeometryFacade(geometry)); + if(geometry != nullptr) + return std::unique_ptr(new GeometryFacade(geometry)); + else + return std::unique_ptr(nullptr); //return std::make_unique(geometry); // make_unique has no access to private constructor } std::unique_ptr GeometryFacade::getFacade(const Part::Geometry * geometry) { - return std::unique_ptr(new GeometryFacade(geometry)); + if(geometry != nullptr) + return std::unique_ptr(new GeometryFacade(geometry)); + else + return std::unique_ptr(nullptr); //return std::make_unique(geometry); // make_unique has no access to private constructor } @@ -80,7 +87,7 @@ void GeometryFacade::initExtension() getGeo()->setExtension(std::make_unique()); // Create getExtension - Base::Console().Warning("%s\nSketcher Geometry without Extension: %s \n", boost::uuids::to_string(Geo->getTag()).c_str()); + //Base::Console().Warning("%s\nSketcher Geometry without Extension: %s \n", boost::uuids::to_string(Geo->getTag()).c_str()); } SketchGeoExtension = @@ -113,6 +120,24 @@ void GeometryFacade::copyId(const Part::Geometry * src, Part::Geometry * dst) gfdst->setId(gfsrc->getId()); } +bool GeometryFacade::getConstruction(const Part::Geometry * geometry) +{ + auto gf = GeometryFacade::getFacade(geometry); + return gf->getConstruction(); +} + +void GeometryFacade::setConstruction(Part::Geometry * geometry, bool construction) +{ + auto gf = GeometryFacade::getFacade(geometry); + return gf->setConstruction(construction); +} + +bool GeometryFacade::isInternalType(const Part::Geometry * geometry, InternalType::InternalType type) +{ + auto gf = GeometryFacade::getFacade(geometry); + return gf->getInternalType() == type; +} + PyObject * GeometryFacade::getPyObject(void) { return new GeometryFacadePy(new GeometryFacade(this->Geo)); diff --git a/src/Mod/Sketcher/App/GeometryFacade.h b/src/Mod/Sketcher/App/GeometryFacade.h index f9252a405f..579f14805a 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.h +++ b/src/Mod/Sketcher/App/GeometryFacade.h @@ -38,8 +38,9 @@ namespace Sketcher class GeometryFacadePy; // This class is a Facade to handle geometry and sketcher geometry extensions with a single sketcher specific interface // -// The inherits and thus provides the same interface as the extension. It does not inherit from Part::Geometry and thus -// is intended to provide, in part a convenience subset of the interface of Part::Geometry, in part a different interface. +// The facade privately inherits from a common interface it shares with the extension thereby implementing a compiler enforced +// same interface as the extension. It does not inherit from Part::Geometry and thus is intended to provide, in part a convenience +// subset of the interface of Part::Geometry, in part a different interface. // // GeometryFacade has private constructors and objects may only be created using the getFacade factory methods. // @@ -69,15 +70,36 @@ class GeometryFacadePy; // Part::GeomBSplineCurve * gbsc = bspline.release(); // GeometryFacade::copyId(geo, gbsc); // +// Examples getting and setting the construction stations without creating a Facade: +// +// if ((*geo) && GeometryFacade::getConstruction(*geo) && +// (*geo)->getTypeId() == Part::GeomLineSegment::getClassTypeId()) +// count++; +// +// Part::Geometry* copy = v->copy(); +// +// if(construction && copy->getTypeId() != Part::GeomPoint::getClassTypeId()) { +// GeometryFacade::setConstruction(copy, construction); +// } +// +// +// Note: The standard GeometryFacade stores Part::Geometry derived clases as a Part::Geometry *, while +// it has the ability to return a dynamic_cast-ed version to a provided type as follows: +// +// HLine->getGeometry(); +// +// If for seamless operation it is convenient to have a given derived class of Part::Geometry, it is possible +// to use GeometryTypedFacade (see below). +// // Summary Remarks: // It is intended to have a separate type (not being a Geometry type). // it is intended to have the relevant interface in full for the sketcher extension only // It is intended to work on borrowed memory allocation. -class SketcherExport GeometryFacade : public Base::BaseClass, ISketchGeometryExtension +class SketcherExport GeometryFacade : public Base::BaseClass, private ISketchGeometryExtension { TYPESYSTEM_HEADER_WITH_OVERRIDE(); -private: +protected: GeometryFacade(const Part::Geometry * geometry); GeometryFacade(); // As TYPESYSTEM requirement @@ -90,6 +112,9 @@ public: // Factory methods public: // Utility methods static void ensureSketchGeometryExtension(Part::Geometry * geometry); static void copyId(const Part::Geometry * src, Part::Geometry * dst); + static bool getConstruction(const Part::Geometry * geometry); + static void setConstruction(Part::Geometry * geometry, bool construction); + static bool isInternalType(const Part::Geometry * geometry, InternalType::InternalType type); public: void setGeometry(Part::Geometry *geometry); @@ -98,6 +123,21 @@ public: inline virtual long getId() const override {return getGeoExt()->getId();} virtual void setId(long id) override {getGeoExt()->setId(id);} + virtual InternalType::InternalType getInternalType() const override {return getGeoExt()->getInternalType();} + virtual void setInternalType(InternalType::InternalType type) override {getGeoExt()->setInternalType(type);} + + virtual bool testGeometryMode(int flag) const override { return getGeoExt()->testGeometryMode(flag); } + virtual void setGeometryMode(int flag, bool v=true) override { getGeoExt()->setGeometryMode(flag, v); } + + // Convenience accessor + bool getBlocked() const { return this->testGeometryMode(GeometryMode::Blocked);} + void setBlocked(bool status = true) {this->setGeometryMode(GeometryMode::Blocked, status);} + + inline bool getConstruction(void) const {return this->testGeometryMode(GeometryMode::Construction);}; + inline void setConstruction(bool construction) {this->setGeometryMode(GeometryMode::Construction, construction);}; + + bool isInternalAligned() const { return this->getInternalType() != InternalType::None; } + // Geometry Extension Information inline const std::string &getExtensionName () const {return SketchGeoExtension->getName();} @@ -107,7 +147,7 @@ public: std::is_base_of::type>::value >::type > - GeometryT * getGeometry() {return dynamic_cast(const_cast(Geo));} + GeometryT * getGeometry() {return dynamic_cast(const_cast(Geo));} // Geometry Element template < typename GeometryT = Part::Geometry, @@ -124,8 +164,6 @@ public: const Handle(Geom_Geometry)& handle() const {return getGeo()->handle();}; Part::Geometry *copy(void) const {return getGeo()->copy();}; Part::Geometry *clone(void) const {return getGeo()->clone();}; - inline bool getConstruction(void) const {return getGeo()->getConstruction();}; - inline void setConstruction(bool construction) {getGeo()->setConstruction(construction);}; boost::uuids::uuid getTag() const {return getGeo()->getTag();}; std::vector> getExtensions() const {return getGeo()->getExtensions();}; @@ -144,6 +182,9 @@ public: void transform(Base::Matrix4D mat) {return getGeo()->transform(mat);}; void translate(Base::Vector3d vec) {return getGeo()->translate(vec);}; + // convenience GeometryFunctions + bool isGeoType(const Base::Type &type) const { return getGeo()->getTypeId() == type;} + private: void initExtension(void); void initExtension(void) const; @@ -161,6 +202,67 @@ private: +/////////////////////////////////////////////////////////////////////////////////////// +// +// GeometryTypedFacade +// +// It provides all the funcionality of GeometryFacade (derives from it), but in addition +// allows to indicate the type of a Part::Geometry derived class. +// +// auto HLineF = GeometryTypedFacade::getTypedFacade(HLine); +// +// Then it is possible to get the typed geometry directly via: +// +// HLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0)); +// +// If a facade is requested without passing an Part::Geometry derived object, the constructor +// of the indicated geometry type is called with any parameter passed as argument (emplace style) +// +// Example of seamless operation with a GeomLineSegment: +// +// auto HLine = GeometryTypedFacade::getTypedFacade(); +// HLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0)); +// HLine->setConstruction(true); +// ExternalGeo.push_back(HLine->getGeometry()); + +template < typename GeometryT > +class SketcherExport GeometryTypedFacade : public GeometryFacade +{ + static_assert( std::is_base_of::type>::value && + !std::is_same::type>::value, "Only for classes derived from Geometry!"); + private: + GeometryTypedFacade(const Part::Geometry * geometry):GeometryFacade(geometry) {}; + GeometryTypedFacade():GeometryFacade() {}; + +public: // Factory methods + static std::unique_ptr> getTypedFacade(GeometryT * geometry) { + if(geometry != nullptr) + return std::unique_ptr>(new GeometryTypedFacade(geometry)); + else + return std::unique_ptr>(nullptr); + } + static std::unique_ptr> getTypedFacade(const GeometryT * geometry) { + if(geometry != nullptr) + return std::unique_ptr>(new GeometryTypedFacade(geometry)); + else + return std::unique_ptr>(nullptr); + } + + template < typename... Args > + static std::unique_ptr> getTypedFacade(Args&&... args) { + return GeometryTypedFacade::getTypedFacade(new GeometryT(std::forward(args)...)); + } + + // Geometry Element + GeometryT * getTypedGeometry() {return GeometryFacade::getGeometry();} + + // Geometry Element + GeometryT * getTypedGeometry() const {return GeometryFacade::getGeometry();} +}; + + + + } //namespace Sketcher diff --git a/src/Mod/Sketcher/App/GeometryFacadePy.xml b/src/Mod/Sketcher/App/GeometryFacadePy.xml index fdb1aa5bc4..846db8c421 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/GeometryFacadePy.xml @@ -15,14 +15,46 @@ Describes a GeometryFacade + + + Returns a boolean indicating whether the given bit is set. + + + + + Sets the given bit to true/false. + + - returns the Id of the SketchGeometryExtension. + Sets/returns the Id of the SketchGeometryExtension. + + + + Sets/returns the Internal Alignment Type of the Geometry. + + + + + + + + Sets/returns whether the geometry is blocked or not. + + + + + + + Sets/returns this geometry as a construction one, which will not be part of a later built shape. + + + Performs the symmetrical transformation of this geometric object @@ -88,13 +120,6 @@ Returns a list with information about the geometry extensions. - - - Defines this geometry as a construction one which -means that it is not part of a later built shape. - - - Gives the tag of the geometry as string. @@ -103,7 +128,7 @@ means that it is not part of a later built shape. - Gives the tag of the geometry as string. + Returns the underlying geometry object. diff --git a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp index d6c3e06ab5..ab00cba9b6 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp +++ b/src/Mod/Sketcher/App/GeometryFacadePyImp.cpp @@ -92,6 +92,81 @@ void GeometryFacadePy::setId(Py::Long Id) this->getGeometryFacadePtr()->setId(long(Id)); } +Py::String GeometryFacadePy::getInternalType(void) const +{ + int internaltypeindex = (int)this->getGeometryFacadePtr()->getInternalType(); + + if(internaltypeindex >= InternalType::NumInternalGeometryType) + throw Py::NotImplementedError("String name of enum not implemented"); + + std::string typestr = SketchGeometryExtension::internaltype2str[internaltypeindex]; + + return Py::String(typestr); +} + +void GeometryFacadePy::setInternalType(Py::String arg) +{ + std::string argstr = arg; + InternalType::InternalType type; + + if(SketchGeometryExtension::getInternalTypeFromName(argstr, type)) { + this->getGeometryFacadePtr()->setInternalType(type); + return; + } + + throw Py::ValueError("Argument is not a valid internal geometry type."); +} + +Py::Boolean GeometryFacadePy::getBlocked(void) const +{ + return Py::Boolean(getGeometryFacadePtr()->getBlocked()); +} + +void GeometryFacadePy::setBlocked(Py::Boolean arg) +{ + getGeometryFacadePtr()->setBlocked(arg); +} + +PyObject* GeometryFacadePy::testGeometryMode(PyObject *args) +{ + char* flag; + if (PyArg_ParseTuple(args, "s",&flag)) { + + GeometryMode::GeometryMode mode; + + if(SketchGeometryExtension::getGeometryModeFromName(flag, mode)) + return new_reference_to(Py::Boolean(getGeometryFacadePtr()->testGeometryMode(mode))); + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + return NULL; +} + +PyObject* GeometryFacadePy::setGeometryMode(PyObject *args) +{ + char * flag; + PyObject * bflag = Py_True; + if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) { + + GeometryMode::GeometryMode mode; + + if(SketchGeometryExtension::getGeometryModeFromName(flag, mode)) { + getGeometryFacadePtr()->setGeometryMode(mode, PyObject_IsTrue(bflag) ? true : false); + Py_Return; + } + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + Py_Return; +} + + PyObject* GeometryFacadePy::mirror(PyObject *args) { PyObject* o; @@ -209,8 +284,7 @@ PyObject* GeometryFacadePy::getExtensionOfType(PyObject *args) std::shared_ptr ext(this->getGeometryFacadePtr()->getExtension(type)); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -221,6 +295,10 @@ PyObject* GeometryFacadePy::getExtensionOfType(PyObject *args) PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } else { @@ -243,8 +321,7 @@ PyObject* GeometryFacadePy::getExtensionOfName(PyObject *args) std::shared_ptr ext(this->getGeometryFacadePtr()->getExtension(std::string(o))); // we create a copy and transfer this copy's memory management responsibility to Python - PyObject* cpy = static_cast(std::const_pointer_cast(ext)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - + PyObject* cpy = ext->copyPyObject(); return cpy; } catch(const Base::ValueError& e) { @@ -255,7 +332,10 @@ PyObject* GeometryFacadePy::getExtensionOfName(PyObject *args) PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not exist anymore."); return 0; } - + catch(Base::NotImplementedError) { + PyErr_SetString(Part::PartExceptionOCCError, "Geometry extension does not implement a Python counterpart."); + return 0; + } } PyErr_SetString(Part::PartExceptionOCCError, "A string with the name of the geometry extension was expected"); @@ -367,9 +447,7 @@ PyObject* GeometryFacadePy::getExtensions(PyObject *args) try { const std::vector> ext = this->getGeometryFacadePtr()->getExtensions(); - PyObject* list = PyList_New(ext.size()); - - Py::Tuple tuple(ext.size()); + Py::List list; for (std::size_t i=0; i(std::const_pointer_cast(p)->getPyObject())->copy(Py::new_reference_to(Py::Tuple(size_t(0)))); - - PyList_SetItem( list, i, cpy); + try { + list.append(Py::asObject(p->copyPyObject())); + } + catch(Base::NotImplementedError) { + // silently ignoring extensions not having a Python object + } } } - return list; + return Py::new_reference_to(list); } catch(const Base::ValueError& e) { PyErr_SetString(Part::PartExceptionOCCError, e.what()); @@ -399,8 +480,7 @@ Py::Boolean GeometryFacadePy::getConstruction(void) const void GeometryFacadePy::setConstruction(Py::Boolean arg) { - if (getGeometryFacadePtr()->getTypeId() != Part::GeomPoint::getClassTypeId()) - getGeometryFacadePtr()->setConstruction(arg); + getGeometryFacadePtr()->setConstruction(arg); } Py::String GeometryFacadePy::getTag(void) const @@ -412,7 +492,8 @@ Py::String GeometryFacadePy::getTag(void) const Py::Object GeometryFacadePy::getGeometry(void) const { // We return a clone - return Py::Object(getGeometryFacadePtr()->getGeometry()->clone()->getPyObject(),true); + std::unique_ptr geo(getGeometryFacadePtr()->getGeometry()->clone()); + return Py::Object(geo->getPyObject(), true); } void GeometryFacadePy::setGeometry(Py::Object arg) diff --git a/src/Mod/Sketcher/App/PreCompiled.h b/src/Mod/Sketcher/App/PreCompiled.h index db682910cd..61d28cac82 100644 --- a/src/Mod/Sketcher/App/PreCompiled.h +++ b/src/Mod/Sketcher/App/PreCompiled.h @@ -86,7 +86,9 @@ #include #elif defined(FC_OS_WIN32) +#ifndef NOMINMAX #define NOMINMAX +#endif #include #endif // _PreComp_ #endif diff --git a/src/Mod/Sketcher/App/Sketch.cpp b/src/Mod/Sketcher/App/Sketch.cpp index f36f1e4d25..108ff572cc 100644 --- a/src/Mod/Sketcher/App/Sketch.cpp +++ b/src/Mod/Sketcher/App/Sketch.cpp @@ -58,6 +58,8 @@ #include "Sketch.h" #include "Constraint.h" +#include "GeometryFacade.h" + using namespace Sketcher; using namespace Base; using namespace Part; @@ -151,7 +153,7 @@ int Sketch::setUpSketch(const std::vector &GeoList, if (!Geoms.empty()) { addConstraints(ConstraintList,unenforceableConstraints); } - GCSsys.clearByTag(-1); + clearTemporaryConstraints(); GCSsys.declareUnknowns(Parameters); GCSsys.declareDrivenParams(DrivenParameters); GCSsys.initSolution(defaultSolverRedundant); @@ -170,6 +172,11 @@ int Sketch::setUpSketch(const std::vector &GeoList, return GCSsys.dofsNumber(); } +void Sketch::clearTemporaryConstraints(void) +{ + GCSsys.clearByTag(GCS::DefaultTemporaryConstraint); +} + void Sketch::calculateDependentParametersElements(void) { for(auto geo : Geoms) { @@ -274,7 +281,7 @@ void Sketch::calculateDependentParametersElements(void) int Sketch::resetSolver() { - GCSsys.clearByTag(-1); + clearTemporaryConstraints(); GCSsys.declareUnknowns(Parameters); GCSsys.declareDrivenParams(DrivenParameters); GCSsys.initSolution(defaultSolverRedundant); @@ -320,12 +327,13 @@ int Sketch::addGeometry(const Part::Geometry *geo, bool fixed) { if (geo->getTypeId() == GeomPoint::getClassTypeId()) { // add a point const GeomPoint *point = static_cast(geo); + auto pointf = GeometryFacade::getFacade(point); // create the definition struct for that geom - if( point->getConstruction() == false ) { - return addPoint(*point, fixed); + if( pointf->getInternalType() == InternalType::BSplineKnotPoint ) { + return addPoint(*point, true); } else { - return addPoint(*point, true); + return addPoint(*point, fixed); } } else if (geo->getTypeId() == GeomLineSegment::getClassTypeId()) { // add a line const GeomLineSegment *lineSeg = static_cast(geo); @@ -1047,7 +1055,8 @@ std::vector Sketch::extractGeometry(bool withConstructionEleme std::vector temp; temp.reserve(Geoms.size()); for (std::vector::const_iterator it=Geoms.begin(); it != Geoms.end(); ++it) { - if ((!it->external || withExternalElements) && (!it->geo->getConstruction() || withConstructionElements)) + auto gf = GeometryFacade::getFacade(it->geo); + if ((!it->external || withExternalElements) && (!gf->getConstruction() || withConstructionElements)) temp.push_back(it->geo->clone()); } @@ -1403,6 +1412,19 @@ int Sketch::addConstraint(const Constraint *constraint) rtn = addDiameterConstraint(constraint->First, c.value,c.driving); break; } + case Weight: + { + c.value = new double(constraint->getValue()); + if(c.driving) + FixParameters.push_back(c.value); + else { + Parameters.push_back(c.value); + DrivenParameters.push_back(c.value); + } + + rtn = addRadiusConstraint(constraint->First, c.value,c.driving); + break; + } case Equal: rtn = addEqualConstraint(constraint->First,constraint->Second); break; @@ -2898,8 +2920,9 @@ bool Sketch::updateGeometry() try { if (it->type == Point) { GeomPoint *point = static_cast(it->geo); + auto pointf = GeometryFacade::getFacade(point); - if(!point->getConstruction()) { + if(!(pointf->getInternalType() == InternalType::BSplineKnotPoint)) { point->setPoint(Vector3d(*Points[it->startPointId].x, *Points[it->startPointId].y, 0.0) @@ -3051,7 +3074,9 @@ bool Sketch::updateGeometry() if (Geoms[*it5].type == Point) { GeomPoint *point = static_cast(Geoms[*it5].geo); - if(point->getConstruction()) { + auto pointf = GeometryFacade::getFacade(point); + + if(pointf->getInternalType() == InternalType::BSplineKnotPoint) { point->setPoint(bsp->pointAtParameter(knots[index])); } } @@ -3101,7 +3126,7 @@ int Sketch::solve(void) { Base::TimeInfo start_time; if (!isInitMove) { // make sure we are in single subsystem mode - GCSsys.clearByTag(-1); + clearTemporaryConstraints(); isFine = true; } @@ -3181,7 +3206,7 @@ int Sketch::solve(void) int i=0; for (std::vector::iterator it = Parameters.begin(); it != Parameters.end(); ++it, i++) { InitParameters[i] = **it; - GCSsys.addConstraintEqual(*it, &InitParameters[i], -1); + GCSsys.addConstraintEqual(*it, &InitParameters[i], GCS::DefaultTemporaryConstraint); } GCSsys.initSolution(); ret = GCSsys.solve(isFine); @@ -3210,7 +3235,7 @@ int Sketch::solve(void) } if (soltype == 3) // cleanup temporary constraints of the augmented system - GCSsys.clearByTag(-1); + clearTemporaryConstraints(); if (valid_solution) { if (soltype == 1) @@ -3247,7 +3272,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) geoId = checkGeoId(geoId); - GCSsys.clearByTag(-1); + clearTemporaryConstraints(); // don't try to move sketches that contain conflicting constraints if (hasConflicts()) { @@ -3264,7 +3289,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) p0.y = &MoveParameters[1]; *p0.x = *point.x; *p0.y = *point.y; - GCSsys.addConstraintP2PCoincident(p0,point,-1); + GCSsys.addConstraintP2PCoincident(p0,point,GCS::DefaultTemporaryConstraint); } } else if (Geoms[geoId].type == Line) { if (pos == start || pos == end) { @@ -3276,12 +3301,12 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) GCS::Point &p = Points[Geoms[geoId].startPointId]; *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } else if (pos == end) { GCS::Point &p = Points[Geoms[geoId].endPointId]; *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } } else if (pos == none || pos == mid) { MoveParameters.resize(4); // x1,y1,x2,y2 @@ -3295,8 +3320,8 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p1.y = *l.p1.y; *p2.x = *l.p2.x; *p2.y = *l.p2.y; - GCSsys.addConstraintP2PCoincident(p1,l.p1,-1); - GCSsys.addConstraintP2PCoincident(p2,l.p2,-1); + GCSsys.addConstraintP2PCoincident(p1,l.p1,GCS::DefaultTemporaryConstraint); + GCSsys.addConstraintP2PCoincident(p2,l.p2,GCS::DefaultTemporaryConstraint); } } else if (Geoms[geoId].type == Circle) { GCS::Point ¢er = Points[Geoms[geoId].midPointId]; @@ -3307,20 +3332,21 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) p0.y = &MoveParameters[1]; *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } else if (pos == none) { - MoveParameters.resize(4); // x,y,cx,cy + //bool pole = GeometryFacade::isInternalType(Geoms[geoId].geo, InternalType::BSplineControlPoint); + MoveParameters.resize(4); // x,y,cx,cy - For poles blocking the center GCS::Circle &c = Circles[Geoms[geoId].index]; p0.x = &MoveParameters[0]; p0.y = &MoveParameters[1]; *p0.x = *center.x; *p0.y = *center.y + *c.rad; - GCSsys.addConstraintPointOnCircle(p0,c,-1); + GCSsys.addConstraintPointOnCircle(p0,c,GCS::DefaultTemporaryConstraint); p1.x = &MoveParameters[2]; p1.y = &MoveParameters[3]; *p1.x = *center.x; *p1.y = *center.y; - int i=GCSsys.addConstraintP2PCoincident(p1,center,-1); + int i=GCSsys.addConstraintP2PCoincident(p1,center,GCS::DefaultTemporaryConstraint); GCSsys.rescaleConstraint(i-1, 0.01); GCSsys.rescaleConstraint(i, 0.01); } @@ -3335,7 +3361,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } } else if (Geoms[geoId].type == ArcOfEllipse) { @@ -3347,7 +3373,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) p0.y = &MoveParameters[1]; *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } else if (pos == start || pos == end) { @@ -3360,7 +3386,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } p1.x = &MoveParameters[2]; @@ -3368,7 +3394,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p1.x = *center.x; *p1.y = *center.y; - int i=GCSsys.addConstraintP2PCoincident(p1,center,-1); + int i=GCSsys.addConstraintP2PCoincident(p1,center,GCS::DefaultTemporaryConstraint); GCSsys.rescaleConstraint(i-1, 0.01); GCSsys.rescaleConstraint(i, 0.01); } @@ -3383,7 +3409,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } else if (pos == start || pos == end) { MoveParameters.resize(4); // x,y,cx,cy @@ -3395,14 +3421,14 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } p1.x = &MoveParameters[2]; p1.y = &MoveParameters[3]; *p1.x = *center.x; *p1.y = *center.y; - int i=GCSsys.addConstraintP2PCoincident(p1,center,-1); + int i=GCSsys.addConstraintP2PCoincident(p1,center,GCS::DefaultTemporaryConstraint); GCSsys.rescaleConstraint(i-1, 0.01); GCSsys.rescaleConstraint(i, 0.01); @@ -3418,7 +3444,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } else if (pos == start || pos == end) { MoveParameters.resize(4); // x,y,cx,cy @@ -3430,14 +3456,14 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } p1.x = &MoveParameters[2]; p1.y = &MoveParameters[3]; *p1.x = *center.x; *p1.y = *center.y; - int i=GCSsys.addConstraintP2PCoincident(p1,center,-1); + int i=GCSsys.addConstraintP2PCoincident(p1,center,GCS::DefaultTemporaryConstraint); GCSsys.rescaleConstraint(i-1, 0.01); GCSsys.rescaleConstraint(i, 0.01); @@ -3452,12 +3478,12 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) GCS::Point &p = Points[Geoms[geoId].startPointId]; *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } else if (pos == end) { GCS::Point &p = Points[Geoms[geoId].endPointId]; *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } } else if (pos == none || pos == mid) { GCS::BSpline &bsp = BSplines[Geoms[geoId].index]; @@ -3473,7 +3499,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) *p1.x = *(*it).x; *p1.y = *(*it).y; - GCSsys.addConstraintP2PCoincident(p1,(*it),-1); + GCSsys.addConstraintP2PCoincident(p1,(*it),GCS::DefaultTemporaryConstraint); } } @@ -3486,7 +3512,7 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) p0.y = &MoveParameters[1]; *p0.x = *center.x; *p0.y = *center.y; - GCSsys.addConstraintP2PCoincident(p0,center,-1); + GCSsys.addConstraintP2PCoincident(p0,center,GCS::DefaultTemporaryConstraint); } else if (pos == start || pos == end || pos == none) { MoveParameters.resize(4); // x,y,cx,cy if (pos == start || pos == end) { @@ -3496,20 +3522,20 @@ int Sketch::initMove(int geoId, PointPos pos, bool fine) p0.y = &MoveParameters[1]; *p0.x = *p.x; *p0.y = *p.y; - GCSsys.addConstraintP2PCoincident(p0,p,-1); + GCSsys.addConstraintP2PCoincident(p0,p,GCS::DefaultTemporaryConstraint); } else if (pos == none) { GCS::Arc &a = Arcs[Geoms[geoId].index]; p0.x = &MoveParameters[0]; p0.y = &MoveParameters[1]; *p0.x = *center.x; *p0.y = *center.y + *a.rad; - GCSsys.addConstraintPointOnArc(p0,a,-1); + GCSsys.addConstraintPointOnArc(p0,a,GCS::DefaultTemporaryConstraint); } p1.x = &MoveParameters[2]; p1.y = &MoveParameters[3]; *p1.x = *center.x; *p1.y = *center.y; - int i=GCSsys.addConstraintP2PCoincident(p1,center,-1); + int i=GCSsys.addConstraintP2PCoincident(p1,center,GCS::DefaultTemporaryConstraint); GCSsys.rescaleConstraint(i-1, 0.01); GCSsys.rescaleConstraint(i, 0.01); } @@ -3802,7 +3828,8 @@ TopoShape Sketch::toShape(void) const // collecting all (non constructive and non external) edges out of the sketch for (;it!=Geoms.end();++it) { - if (!it->external && !it->geo->getConstruction() && (it->type != Point)) { + auto gf = GeometryFacade::getFacade(it->geo); + if (!it->external && !gf->getConstruction() && (it->type != Point)) { edge_list.push_back(TopoDS::Edge(it->geo->toShape())); } } diff --git a/src/Mod/Sketcher/App/Sketch.h b/src/Mod/Sketcher/App/Sketch.h index 3bc4a24eb6..2e35a40cdb 100644 --- a/src/Mod/Sketcher/App/Sketch.h +++ b/src/Mod/Sketcher/App/Sketch.h @@ -471,6 +471,8 @@ private: void calculateDependentParametersElements(void); + void clearTemporaryConstraints(void); + /// checks if the index bounds and converts negative indices to positive int checkGeoId(int geoId) const; GCS::Curve* getGCSCurveByGeoId(int geoId); diff --git a/src/Mod/Sketcher/App/SketchAnalysis.cpp b/src/Mod/Sketcher/App/SketchAnalysis.cpp index 2849196cca..0f5d3f8070 100644 --- a/src/Mod/Sketcher/App/SketchAnalysis.cpp +++ b/src/Mod/Sketcher/App/SketchAnalysis.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include "SketchAnalysis.h" @@ -144,13 +145,13 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool std::vector vertexIds; const std::vector& geom = sketch->getInternalGeometry(); for (std::size_t i=0; igetConstruction() && !includeconstruction) + if(gf->getConstruction() && !includeconstruction) continue; - if (g->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { - const Part::GeomLineSegment *segm = static_cast(g); + if (gf->getGeometry()->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { + const Part::GeomLineSegment *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -161,8 +162,8 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool id.v = segm->getEndPoint(); vertexIds.push_back(id); } - else if (g->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { - const Part::GeomArcOfCircle *segm = static_cast(g); + else if (gf->getGeometry()->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { + const Part::GeomArcOfCircle *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -173,8 +174,8 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool id.v = segm->getEndPoint(/*emulateCCW=*/true); vertexIds.push_back(id); } - else if (g->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) { - const Part::GeomArcOfEllipse *segm = static_cast(g); + else if (gf->getGeometry()->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) { + const Part::GeomArcOfEllipse *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -185,8 +186,8 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool id.v = segm->getEndPoint(/*emulateCCW=*/true); vertexIds.push_back(id); } - else if (g->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { - const Part::GeomArcOfHyperbola *segm = static_cast(g); + else if (gf->getGeometry()->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { + const Part::GeomArcOfHyperbola *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -197,8 +198,8 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool id.v = segm->getEndPoint(); vertexIds.push_back(id); } - else if (g->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()) { - const Part::GeomArcOfParabola *segm = static_cast(g); + else if (gf->getGeometry()->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()) { + const Part::GeomArcOfParabola *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -209,8 +210,8 @@ int SketchAnalysis::detectMissingPointOnPointConstraints(double precision, bool id.v = segm->getEndPoint(); vertexIds.push_back(id); } - else if (g->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { - const Part::GeomBSplineCurve *segm = static_cast(g); + else if (gf->getGeometry()->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { + const Part::GeomBSplineCurve *segm = static_cast(gf->getGeometry()); VertexIds id; id.GeoId = (int)i; id.PosId = Sketcher::start; @@ -828,13 +829,13 @@ int SketchAnalysis::detectDegeneratedGeometries(double tolerance) int countDegenerated = 0; const std::vector& geom = sketch->getInternalGeometry(); for (std::size_t i=0; igetConstruction()) + if (gf->getConstruction()) continue; - if (g->getTypeId().isDerivedFrom(Part::GeomCurve::getClassTypeId())) { - Part::GeomCurve* curve = static_cast(g); + if (gf->getGeometry()->getTypeId().isDerivedFrom(Part::GeomCurve::getClassTypeId())) { + Part::GeomCurve* curve = static_cast(gf->getGeometry()); double len = curve->length(curve->getFirstParameter(), curve->getLastParameter()); if (len < tolerance) countDegenerated++; @@ -849,13 +850,13 @@ int SketchAnalysis::removeDegeneratedGeometries(double tolerance) std::set delInternalGeometries; const std::vector& geom = sketch->getInternalGeometry(); for (std::size_t i=0; igetConstruction()) + if (gf->getConstruction()) continue; - if (g->getTypeId().isDerivedFrom(Part::GeomCurve::getClassTypeId())) { - Part::GeomCurve* curve = static_cast(g); + if (gf->getGeometry()->getTypeId().isDerivedFrom(Part::GeomCurve::getClassTypeId())) { + Part::GeomCurve* curve = static_cast(gf->getGeometry()); double len = curve->length(curve->getFirstParameter(), curve->getLastParameter()); if (len < tolerance) delInternalGeometries.insert(static_cast(i)); diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp index d1c3867637..3599ba2489 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp @@ -31,29 +31,27 @@ using namespace Sketcher; -//---------- Geometry Extension -TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension) +//---------- Geometry Extension +constexpr std::array SketchGeometryExtension::internaltype2str; +constexpr std::array SketchGeometryExtension::geometrymode2str; + +TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryPersistenceExtension) // scoped within the class, multithread ready std::atomic SketchGeometryExtension::_GeometryID; -SketchGeometryExtension::SketchGeometryExtension():Id(++SketchGeometryExtension::_GeometryID) +SketchGeometryExtension::SketchGeometryExtension():Id(++SketchGeometryExtension::_GeometryID),InternalGeometryType(InternalType::None) { } -SketchGeometryExtension::SketchGeometryExtension(long cid):Id(cid) +SketchGeometryExtension::SketchGeometryExtension(long cid):Id(cid),InternalGeometryType(InternalType::None) { } // Persistence implementer -unsigned int SketchGeometryExtension::getMemSize (void) const -{ - return sizeof(long int); -} - void SketchGeometryExtension::Save(Base::Writer &writer) const { writer.Stream() << writer.ind() << "getTypeId().getName(); @@ -63,14 +61,22 @@ void SketchGeometryExtension::Save(Base::Writer &writer) const if(name.size() > 0) writer.Stream() << "\" name=\"" << name; - writer.Stream() << "\" id=\"" << Id << "\"/>" << std::endl; + writer.Stream() // << "\" id=\"" << Id // This is removed as the stored Id is not used and it may interfere with RT's future implementation + << "\" internalGeometryType=\"" << (int) InternalGeometryType + << "\" geometryModeFlags=\"" << GeometryModeFlags.to_string() + << "\"/>" << std::endl; } void SketchGeometryExtension::Restore(Base::XMLReader &reader) { restoreNameAttribute(reader); - Id = reader.getAttributeAsInteger("id"); + if(reader.hasAttribute("id")) + Id = reader.getAttributeAsInteger("id"); + + InternalGeometryType = (InternalType::InternalType) reader.getAttributeAsInteger("internalGeometryType"); + + GeometryModeFlags = GeometryModeFlagType(reader.getAttribute("geometryModeFlags")); } std::unique_ptr SketchGeometryExtension::copy(void) const @@ -78,6 +84,8 @@ std::unique_ptr SketchGeometryExtension::copy(void) con auto cpy = std::make_unique(); cpy->Id = this->Id; + cpy->InternalGeometryType = this->InternalGeometryType; + cpy->GeometryModeFlags = this->GeometryModeFlags; cpy->setName(this->getName()); // Base Class @@ -93,3 +101,39 @@ PyObject * SketchGeometryExtension::getPyObject(void) return new SketchGeometryExtensionPy(new SketchGeometryExtension(*this)); } +bool SketchGeometryExtension::getInternalTypeFromName(std::string str, InternalType::InternalType &type) +{ + auto pos = std::find_if( SketchGeometryExtension::internaltype2str.begin(), + SketchGeometryExtension::internaltype2str.end(), + [str](const char * val) { + return strcmp(val,str.c_str())==0;} + ); + + if( pos != SketchGeometryExtension::internaltype2str.end()) { + int index = std::distance( SketchGeometryExtension::internaltype2str.begin(), pos ); + + type = static_cast(index); + return true; + } + + return false; +} + +bool SketchGeometryExtension::getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type) +{ + auto pos = std::find_if( SketchGeometryExtension::geometrymode2str.begin(), + SketchGeometryExtension::geometrymode2str.end(), + [str](const char * val) { + return strcmp(val,str.c_str())==0;} + ); + + if( pos != SketchGeometryExtension::geometrymode2str.end()) { + int index = std::distance( SketchGeometryExtension::geometrymode2str.begin(), pos ); + + type = static_cast(index); + return true; + } + + return false; +} + diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.h b/src/Mod/Sketcher/App/SketchGeometryExtension.h index 774816c588..dd49341c0b 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtension.h +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.h @@ -25,10 +25,37 @@ #include #include +#include +#include namespace Sketcher { + namespace InternalType { + enum InternalType { + None = 0, + EllipseMajorDiameter = 1, + EllipseMinorDiameter = 2, + EllipseFocus1 = 3, + EllipseFocus2 = 4, + HyperbolaMajor = 5, + HyperbolaMinor = 6, + HyperbolaFocus = 7, + ParabolaFocus = 8, + BSplineControlPoint = 9, + BSplineKnotPoint = 10, + NumInternalGeometryType // Must be the last + }; + } + + namespace GeometryMode { + enum GeometryMode { + Blocked = 0, + Construction = 1, + NumGeometryMode // Must be the last + }; + } + class ISketchGeometryExtension { @@ -36,18 +63,26 @@ public: // Identification information virtual long getId() const = 0; virtual void setId(long id) = 0; + + // Internal Alignment Geometry Type + virtual InternalType::InternalType getInternalType() const = 0; + virtual void setInternalType(InternalType::InternalType type) = 0; + + // Geometry functional mode + virtual bool testGeometryMode(int flag) const = 0; + virtual void setGeometryMode(int flag, bool v=true) = 0; }; -class SketcherExport SketchGeometryExtension : public Part::GeometryExtension, ISketchGeometryExtension +class SketcherExport SketchGeometryExtension : public Part::GeometryPersistenceExtension, private ISketchGeometryExtension { TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: + SketchGeometryExtension(); SketchGeometryExtension(long cid); virtual ~SketchGeometryExtension() override = default; // Persistence implementer --------------------- - virtual unsigned int getMemSize(void) const override; virtual void Save(Base::Writer &/*writer*/) const override; virtual void Restore(Base::XMLReader &/*reader*/) override; @@ -58,11 +93,28 @@ public: virtual long getId() const override {return Id;} virtual void setId(long id) override {Id = id;} + virtual InternalType::InternalType getInternalType() const override {return InternalGeometryType;} + virtual void setInternalType(InternalType::InternalType type) override {InternalGeometryType = type;} + + virtual bool testGeometryMode(int flag) const override { return GeometryModeFlags.test((size_t)(flag)); }; + virtual void setGeometryMode(int flag, bool v=true) override { GeometryModeFlags.set((size_t)(flag), v); }; + + constexpr static std::array internaltype2str {{ "None", "EllipseMajorDiameter", "EllipseMinorDiameter","EllipseFocus1", "EllipseFocus2", "HyperbolaMajor", "HyperbolaMinor", "HyperbolaFocus", "ParabolaFocus", "BSplineControlPoint", "BSplineKnotPoint" }}; + + constexpr static std::array geometrymode2str {{ "Blocked", "Construction" }}; + + static bool getInternalTypeFromName(std::string str, InternalType::InternalType &type); + + static bool getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type); + private: SketchGeometryExtension(const SketchGeometryExtension&) = default; private: - long Id; + using GeometryModeFlagType = std::bitset<32>; + long Id; + InternalType::InternalType InternalGeometryType; + GeometryModeFlagType GeometryModeFlags; private: static std::atomic _GeometryID; diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml index 5ace89f320..6f3619cd4f 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml +++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml @@ -15,13 +15,45 @@ Describes a SketchGeometryExtension + + + Returns a boolean indicating whether the given bit is set. + + + + + Sets the given bit to true/false. + + - returns the Id of the SketchGeometryExtension. + Returns the Id of the SketchGeometryExtension. + + + + Returns the Id of the SketchGeometryExtension. + + + + + + + + Sets/returns whether the geometry is blocked or not. + + + + + + + Sets/returns this geometry as a construction one, which will not be part of a later built shape. + + + diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp index 8e7bcaa6e8..efed2ae53a 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp +++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPyImp.cpp @@ -89,6 +89,90 @@ void SketchGeometryExtensionPy::setId(Py::Long Id) this->getSketchGeometryExtensionPtr()->setId(long(Id)); } +Py::String SketchGeometryExtensionPy::getInternalType(void) const +{ + int internaltypeindex = (int)this->getSketchGeometryExtensionPtr()->getInternalType(); + + if(internaltypeindex >= InternalType::NumInternalGeometryType) + throw Py::NotImplementedError("String name of enum not implemented"); + + std::string typestr = this->getSketchGeometryExtensionPtr()->internaltype2str[internaltypeindex]; + + return Py::String(typestr); +} + +void SketchGeometryExtensionPy::setInternalType(Py::String arg) +{ + std::string argstr = arg; + InternalType::InternalType type; + + if(SketchGeometryExtension::getInternalTypeFromName(argstr, type)) { + this->getSketchGeometryExtensionPtr()->setInternalType(type); + return; + } + + throw Py::ValueError("Argument is not a valid internal geometry type."); +} + +Py::Boolean SketchGeometryExtensionPy::getBlocked(void) const +{ + return Py::Boolean(getSketchGeometryExtensionPtr()->testGeometryMode(GeometryMode::Blocked)); +} + +void SketchGeometryExtensionPy::setBlocked(Py::Boolean arg) +{ + getSketchGeometryExtensionPtr()->setGeometryMode(GeometryMode::Blocked, arg); +} + +Py::Boolean SketchGeometryExtensionPy::getConstruction(void) const +{ + return Py::Boolean(getSketchGeometryExtensionPtr()->testGeometryMode(GeometryMode::Construction)); +} + +void SketchGeometryExtensionPy::setConstruction(Py::Boolean arg) +{ + getSketchGeometryExtensionPtr()->setGeometryMode(GeometryMode::Construction, arg); +} + +PyObject* SketchGeometryExtensionPy::testGeometryMode(PyObject *args) +{ + char* flag; + if (PyArg_ParseTuple(args, "s",&flag)) { + + GeometryMode::GeometryMode mode; + + if(getSketchGeometryExtensionPtr()->getGeometryModeFromName(flag, mode)) + return new_reference_to(Py::Boolean(getSketchGeometryExtensionPtr()->testGeometryMode(mode))); + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + return NULL; +} + +PyObject* SketchGeometryExtensionPy::setGeometryMode(PyObject *args) +{ + char * flag; + PyObject * bflag = Py_True; + if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) { + + GeometryMode::GeometryMode mode; + + if(getSketchGeometryExtensionPtr()->getGeometryModeFromName(flag, mode)) { + getSketchGeometryExtensionPtr()->setGeometryMode(mode, PyObject_IsTrue(bflag) ? true : false); + Py_Return; + } + + PyErr_SetString(PyExc_TypeError, "Flag string does not exist."); + return NULL; + } + + PyErr_SetString(PyExc_TypeError, "No flag string provided."); + Py_Return; +} + PyObject *SketchGeometryExtensionPy::getCustomAttributes(const char* /*attr*/) const { return 0; diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index fdbc880252..55ffdfa7d0 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -77,8 +77,7 @@ #include #include #include - -#include "GeometryFacade.h" +#include #include "SketchObject.h" #include "Sketch.h" @@ -118,14 +117,14 @@ SketchObject::SketchObject() for (std::vector::iterator it=ExternalGeo.begin(); it != ExternalGeo.end(); ++it) if (*it) delete *it; ExternalGeo.clear(); - Part::GeomLineSegment *HLine = new Part::GeomLineSegment(); - Part::GeomLineSegment *VLine = new Part::GeomLineSegment(); - HLine->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0)); - VLine->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(0,1,0)); + auto HLine = GeometryTypedFacade::getTypedFacade(); + auto VLine = GeometryTypedFacade::getTypedFacade(); + HLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0)); + VLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(0,1,0)); HLine->setConstruction(true); VLine->setConstruction(true); - ExternalGeo.push_back(HLine); - ExternalGeo.push_back(VLine); + ExternalGeo.push_back(HLine->getGeometry()); + ExternalGeo.push_back(VLine->getGeometry()); rebuildVertexIndex(); lastDoF=0; @@ -147,6 +146,7 @@ SketchObject::SketchObject() internaltransaction=false; managedoperation=false; + deletinginternalgeometry=false; } SketchObject::~SketchObject() @@ -327,7 +327,7 @@ int SketchObject::setDatum(int ConstrId, double Datum) type != Perpendicular) return -1; - if ((type == Distance || type == Radius || type == Diameter) && Datum <= 0) + if ((type == Distance || type == Radius || type == Diameter || type == Weight) && Datum <= 0) return (Datum == 0) ? -5 : -4; // copy the list @@ -410,13 +410,19 @@ int SketchObject::toggleDriving(int ConstrId) if(ret<0) return ret; - const Part::Geometry * geo1 = getGeometry(vals[ConstrId]->First); - const Part::Geometry * geo2 = getGeometry(vals[ConstrId]->Second); - const Part::Geometry * geo3 = getGeometry(vals[ConstrId]->Third); + const auto geof1 = getGeometryFacade(vals[ConstrId]->First); + const auto geof2 = getGeometryFacade(vals[ConstrId]->Second); + const auto geof3 = getGeometryFacade(vals[ConstrId]->Third); - bool extorconstructionpoint1 = (vals[ConstrId]->First == Constraint::GeoUndef) || (vals[ConstrId]->First < 0) || (geo1 && geo1->getTypeId() == Part::GeomPoint::getClassTypeId() && geo1->getConstruction() == true); - bool extorconstructionpoint2 = (vals[ConstrId]->Second == Constraint::GeoUndef) || (vals[ConstrId]->Second < 0) || (geo2 && geo2->getTypeId() == Part::GeomPoint::getClassTypeId() && geo2->getConstruction() == true); - bool extorconstructionpoint3 = (vals[ConstrId]->Third == Constraint::GeoUndef) || (vals[ConstrId]->Third < 0) || (geo3 && geo3->getTypeId() == Part::GeomPoint::getClassTypeId() && geo3->getConstruction() == true); + bool extorconstructionpoint1 = (vals[ConstrId]->First == Constraint::GeoUndef) || + (vals[ConstrId]->First < 0) || + (geof1 && geof1->isGeoType(Part::GeomPoint::getClassTypeId()) && geof1->getConstruction() == true); + bool extorconstructionpoint2 = (vals[ConstrId]->Second == Constraint::GeoUndef)|| + (vals[ConstrId]->Second < 0) || + (geof2 && geof2->isGeoType(Part::GeomPoint::getClassTypeId()) && geof2->getConstruction() == true); + bool extorconstructionpoint3 = (vals[ConstrId]->Third == Constraint::GeoUndef) || + (vals[ConstrId]->Third < 0) || + (geof3 && geof3->isGeoType(Part::GeomPoint::getClassTypeId()) && geof3->getConstruction() == true); if (extorconstructionpoint1 && extorconstructionpoint2 && extorconstructionpoint3 && vals[ConstrId]->isDriving==false) return -4; @@ -803,7 +809,7 @@ int SketchObject::getAxisCount(void) const int count=0; for (std::vector::const_iterator geo=vals.begin(); geo != vals.end(); geo++) - if ((*geo) && (*geo)->getConstruction() && + if ((*geo) && GeometryFacade::getConstruction(*geo) && (*geo)->getTypeId() == Part::GeomLineSegment::getClassTypeId()) count++; @@ -819,7 +825,7 @@ Base::Axis SketchObject::getAxis(int axId) const int count=0; for (std::vector::const_iterator geo=vals.begin(); geo != vals.end(); geo++) - if ((*geo) && (*geo)->getConstruction() && + if ((*geo) && GeometryFacade::getConstruction(*geo) && (*geo)->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { if (count == axId) { Part::GeomLineSegment *lineSeg = static_cast(*geo); @@ -894,7 +900,7 @@ int SketchObject::addGeometry(const std::vector &geoList, bool Part::Geometry* copy = v->copy(); if(construction && copy->getTypeId() != Part::GeomPoint::getClassTypeId()) { - copy->setConstruction(construction); + GeometryFacade::setConstruction(copy, construction); } newVals.push_back(copy); @@ -922,7 +928,7 @@ int SketchObject::addGeometry(const Part::Geometry *geo, bool construction/*=fal Part::Geometry *geoNew = geo->copy(); if(geoNew->getTypeId() != Part::GeomPoint::getClassTypeId()) - geoNew->setConstruction(construction); + GeometryFacade::setConstruction(geoNew, construction); newVals.push_back(geoNew); @@ -950,6 +956,11 @@ int SketchObject::delGeometry(int GeoId, bool deleteinternalgeo) geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId())) { this->deleteUnusedInternalGeometry(GeoId, true); + + Geometry.touch(); + + if(noRecomputes) // if we do not have a recompute, the sketch must be solved to update the DoF of the solver + solve(); return 0; } } @@ -992,10 +1003,12 @@ int SketchObject::delGeometry(int GeoId, bool deleteinternalgeo) this->Constraints.setValues(std::move(newConstraints)); } // Update geometry indices and rebuild vertexindex now via onChanged, so that ViewProvider::UpdateData is triggered. - Geometry.touch(); + if(!deletinginternalgeometry) { + Geometry.touch(); - if(noRecomputes) // if we do not have a recompute, the sketch must be solved to update the DoF of the solver - solve(); + if(noRecomputes) // if we do not have a recompute, the sketch must be solved to update the DoF of the solver + solve(); + } return 0; } @@ -1130,7 +1143,7 @@ int SketchObject::toggleConstruction(int GeoId) newVals[i] = newVals[i]->clone(); if((int)i == GeoId) { - newVals[i]->setConstruction(!newVals[i]->getConstruction()); + GeometryFacade::setConstruction(newVals[i], !GeometryFacade::getConstruction(newVals[i])); } } @@ -1163,7 +1176,7 @@ int SketchObject::setConstruction(int GeoId, bool on) newVals[i] = newVals[i]->clone(); if((int)i == GeoId) { - newVals[i]->setConstruction(on); + GeometryFacade::setConstruction(newVals[i], on); } } @@ -1178,6 +1191,109 @@ int SketchObject::setConstruction(int GeoId, bool on) return 0; } +void SketchObject::addGeometryState(const Constraint* cstr) const +{ + const std::vector< Part::Geometry * > &vals = getInternalGeometry(); + + if(cstr->Type == InternalAlignment) { + + switch(cstr->AlignmentType){ + case Undef: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::None); + break; + } + case EllipseMajorDiameter: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::EllipseMajorDiameter); + break; + } + case EllipseMinorDiameter: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::EllipseMinorDiameter); + break; + } + case EllipseFocus1: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::EllipseFocus1); + break; + } + case EllipseFocus2: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::EllipseFocus2); + break; + } + case HyperbolaMajor: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::HyperbolaMajor); + break; + } + case HyperbolaMinor: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::HyperbolaMinor); + break; + } + case HyperbolaFocus: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::HyperbolaFocus); + break; + } + case ParabolaFocus: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::ParabolaFocus); + break; + } + case BSplineControlPoint: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::BSplineControlPoint); + + // handle constraint as adimensional + + break; + } + case BSplineKnotPoint: + { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::BSplineKnotPoint); + break; + } + } + } + + // Assign Blocked geometry mode + if(cstr->Type == Block){ + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setBlocked(); + } +} + +void SketchObject::removeGeometryState(const Constraint* cstr) const +{ + const std::vector< Part::Geometry * > &vals = getInternalGeometry(); + + // Assign correct Internal Geometry Type (see SketchGeometryExtension) + if(cstr->Type == InternalAlignment) { + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setInternalType(InternalType::None); + } + + // Assign Blocked geometry mode (see SketchGeometryExtension) + if(cstr->Type == Block){ + auto gf = GeometryFacade::getFacade(vals[cstr->First]); + gf->setBlocked(false); + } +} + //ConstraintList is used only to make copies. int SketchObject::addConstraints(const std::vector &ConstraintList) { @@ -1203,6 +1319,8 @@ int SketchObject::addConstraints(const std::vector &ConstraintList if( cnew->Type == Tangent || cnew->Type == Perpendicular ){ AutoLockTangencyAndPerpty(cnew); } + + addGeometryState(cnew); } this->Constraints.setValues(std::move(newVals)); @@ -1271,6 +1389,8 @@ int SketchObject::addConstraint(const Constraint *constraint) if (constNew->Type == Tangent || constNew->Type == Perpendicular) AutoLockTangencyAndPerpty(constNew); + addGeometryState(constNew); + newVals.push_back(constNew); // add new constraint at the back this->Constraints.setValues(std::move(newVals)); @@ -1287,7 +1407,9 @@ int SketchObject::delConstraint(int ConstrId) return -1; std::vector< Constraint * > newVals(vals); - newVals.erase(newVals.begin()+ConstrId); + auto ctriter = newVals.begin()+ConstrId; + removeGeometryState(*ctriter); + newVals.erase(ctriter); this->Constraints.setValues(newVals); if(noRecomputes) // if we do not have a recompute, the sketch must be solved to update the DoF of the solver @@ -1311,8 +1433,11 @@ int SketchObject::delConstraints(std::vector ConstrIds, bool updategeometry if (ConstrIds.front() < 0 || ConstrIds.back() >= int(vals.size())) return -1; - for(auto rit = ConstrIds.rbegin(); rit!=ConstrIds.rend(); rit++) - newVals.erase(newVals.begin()+*rit); + for(auto rit = ConstrIds.rbegin(); rit!=ConstrIds.rend(); rit++) { + auto ctriter = newVals.begin()+*rit; + removeGeometryState(*ctriter); + newVals.erase(ctriter); + } this->Constraints.setValues(newVals); @@ -3730,6 +3855,7 @@ int SketchObject::addSymmetric(const std::vector &geoIdList, int refGeoId, (*it)->Type == Sketcher::Equal || (*it)->Type == Sketcher::Radius || (*it)->Type == Sketcher::Diameter || + (*it)->Type == Sketcher::Weight || (*it)->Type == Sketcher::Angle || (*it)->Type == Sketcher::PointOnObject ){ Constraint *constNew = (*it)->copy(); @@ -4024,9 +4150,10 @@ int SketchObject::addCopy(const std::vector &geoIdList, const Base::Vector3 if( ((*it)->Type != Sketcher::DistanceX && (*it)->Type != Sketcher::DistanceY ) || (*it)->FirstPos == Sketcher::none ) { // if it is not a point locking DistanceX/Y if (((*it)->Type == Sketcher::DistanceX || - (*it)->Type == Sketcher::DistanceY || - (*it)->Type == Sketcher::Distance || - (*it)->Type == Sketcher::Diameter || + (*it)->Type == Sketcher::DistanceY || + (*it)->Type == Sketcher::Distance || + (*it)->Type == Sketcher::Diameter || + (*it)->Type == Sketcher::Weight || (*it)->Type == Sketcher::Radius ) && clone ) { // Distances on a single Element are mapped to equality constraints in clone mode Constraint *constNew = (*it)->copy(); @@ -4103,7 +4230,7 @@ int SketchObject::addCopy(const std::vector &geoIdList, const Base::Vector3 (double(x-1)*displacement+double(y)*perpendicularDisplacement)); // position of the reference point Base::Vector3d ep = iterfirstpoint; // position of the current instance corresponding point constrline->setPoints(sp,ep); - constrline->setConstruction(true); + GeometryFacade::setConstruction(constrline,true); newgeoVals.push_back(constrline); @@ -4722,12 +4849,9 @@ int SketchObject::exposeInternalGeometry(int GeoId) // search for first pole weight constraint for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); it != vals.end(); ++it) { - if((*it)->Type == Sketcher::Radius && (*it)->First == controlpointgeoids[0]) { + if((*it)->Type == Sketcher::Weight && (*it)->First == controlpointgeoids[0]) { isfirstweightconstrained = true ; } - else if((*it)->Type == Sketcher::Diameter && (*it)->First == controlpointgeoids[0]) { - isfirstweightconstrained = true ; - } } } @@ -4800,7 +4924,7 @@ int SketchObject::exposeInternalGeometry(int GeoId) // a construction point, for now on, is a point that is not handled by the solver and does not contribute to the dofs // This is done so as to avoid having to add another data member to GeomPoint that is specific for the sketcher. - kp->setConstruction(true); + GeometryFacade::setConstruction(kp, true); igeo.push_back(kp); @@ -4855,6 +4979,8 @@ int SketchObject::exposeInternalGeometry(int GeoId) int SketchObject::deleteUnusedInternalGeometry(int GeoId, bool delgeoid) { + Base::StateLocker lock(deletinginternalgeometry, true); + if (GeoId < 0 || GeoId > getHighestCurveIndex()) return -1; @@ -5109,10 +5235,8 @@ int SketchObject::deleteUnusedInternalGeometry(int GeoId, bool delgeoid) } } - // ignore radii and diameters - else if (((*itc)->Type!=Sketcher::Radius && (*itc)->Type!=Sketcher::Diameter) && ( (*itc)->Second == (*it) || (*itc)->First == (*it) || (*itc)->Third == (*it)) ) { - (*ita)++; - } + // We do not ignore weight constraints as we did with radius constraints, because the radius magnitude no longer makes sense + // without the B-Spline. } if ( (*ita) < 2 ) { // IA @@ -5607,7 +5731,7 @@ int SketchObject::carbonCopy(App::DocumentObject * pObj, bool construction) for (std::vector::const_iterator it=svals.begin(); it != svals.end(); ++it){ Part::Geometry *geoNew = (*it)->copy(); if(construction && geoNew->getTypeId() != Part::GeomPoint::getClassTypeId()) { - geoNew->setConstruction(true); + GeometryFacade::setConstruction(geoNew, true); } newVals.push_back(geoNew); } @@ -5647,6 +5771,7 @@ int SketchObject::carbonCopy(App::DocumentObject * pObj, bool construction) if ((*it)->Type == Sketcher::Distance || (*it)->Type == Sketcher::Radius || (*it)->Type == Sketcher::Diameter || + (*it)->Type == Sketcher::Weight || (*it)->Type == Sketcher::Angle || (*it)->Type == Sketcher::SnellsLaw || (*it)->Type == Sketcher::DistanceX || @@ -5861,7 +5986,12 @@ const Part::Geometry* SketchObject::getGeometry(int GeoId) const else if (-GeoId <= int(ExternalGeo.size())) return ExternalGeo[-GeoId-1]; - return 0; + return nullptr; +} + +std::unique_ptr SketchObject::getGeometryFacade(int GeoId) const +{ + return GeometryFacade::getFacade(getGeometry(GeoId)); } // Auxiliary Method: returns vector projection in UV space of plane @@ -5941,13 +6071,13 @@ Part::Geometry* projectLine(const BRepAdaptor_Curve& curve, const Handle(Geom_Pl if (Base::Distance(p1,p2) < Precision::Confusion()) { Base::Vector3d p = (p1 + p2) / 2; Part::GeomPoint* point = new Part::GeomPoint(p); - point->setConstruction(true); + GeometryFacade::setConstruction(point, true); return point; } else { Part::GeomLineSegment* line = new Part::GeomLineSegment(); line->setPoints(p1,p2); - line->setConstruction(true); + GeometryFacade::setConstruction(line, true); return line; } } @@ -6067,8 +6197,8 @@ void SketchObject::rebuildExternalGeometry(void) Part::GeomLineSegment *VLine = new Part::GeomLineSegment(); HLine->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0)); VLine->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(0,1,0)); - HLine->setConstruction(true); - VLine->setConstruction(true); + GeometryFacade::setConstruction(HLine, true); + GeometryFacade::setConstruction(VLine, true); ExternalGeo.push_back(HLine); ExternalGeo.push_back(VLine); for (int i=0; i < int(Objects.size()); i++) { @@ -6166,7 +6296,7 @@ void SketchObject::rebuildExternalGeometry(void) gCircle->setRadius(circle.Radius()); gCircle->setCenter(Base::Vector3d(cnt.X(),cnt.Y(),cnt.Z())); - gCircle->setConstruction(true); + GeometryFacade::setConstruction(gCircle, true); ExternalGeo.push_back(gCircle); } else { @@ -6175,7 +6305,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_TrimmedCurve) tCurve = new Geom_TrimmedCurve(hCircle, curve.FirstParameter(), curve.LastParameter()); gArc->setHandle(tCurve); - gArc->setConstruction(true); + GeometryFacade::setConstruction(gArc, true); ExternalGeo.push_back(gArc); } } @@ -6277,7 +6407,7 @@ void SketchObject::rebuildExternalGeometry(void) invPlm.multVec(p2,p2); projectedSegment->setPoints(p1, p2); - projectedSegment->setConstruction(true); + GeometryFacade::setConstruction(projectedSegment, true); ExternalGeo.push_back(projectedSegment); } else { // general case, full circle @@ -6303,7 +6433,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_Ellipse) curve = new Geom_Ellipse(refFrameEllipse, origCircle.Radius(), minorRadius); Part::GeomEllipse* ellipse = new Part::GeomEllipse(); ellipse->setHandle(curve); - ellipse->setConstruction(true); + GeometryFacade::setConstruction(ellipse, true); ExternalGeo.push_back(ellipse); } @@ -6326,7 +6456,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_Ellipse) curve = new Geom_Ellipse(elipsDest); Part::GeomEllipse* ellipse = new Part::GeomEllipse(); ellipse->setHandle(curve); - ellipse->setConstruction(true); + GeometryFacade::setConstruction(ellipse, true); ExternalGeo.push_back(ellipse); } @@ -6372,7 +6502,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_Circle) curve = new Geom_Circle(destCurveAx2, 0.5 * (rDest + RDest)); Part::GeomCircle* circle = new Part::GeomCircle(); circle->setHandle(curve); - circle->setConstruction(true); + GeometryFacade::setConstruction(circle, true); ExternalGeo.push_back(circle); } @@ -6384,7 +6514,7 @@ void SketchObject::rebuildExternalGeometry(void) Part::GeomLineSegment * projectedSegment = new Part::GeomLineSegment(); projectedSegment->setPoints(Base::Vector3d(start.X(), start.Y(), start.Z()), Base::Vector3d(end.X(), end.Y(), end.Z())); - projectedSegment->setConstruction(true); + GeometryFacade::setConstruction(projectedSegment, true); ExternalGeo.push_back(projectedSegment); } else { @@ -6397,7 +6527,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_Ellipse) curve = new Geom_Ellipse(elipsDest); Part::GeomEllipse* ellipse = new Part::GeomEllipse(); ellipse->setHandle(curve); - ellipse->setConstruction(true); + GeometryFacade::setConstruction(ellipse, true); ExternalGeo.push_back(ellipse); } @@ -6426,13 +6556,13 @@ void SketchObject::rebuildExternalGeometry(void) if (Base::Distance(p1,p2) < Precision::Confusion()) { Base::Vector3d p = (p1 + p2) / 2; Part::GeomPoint* point = new Part::GeomPoint(p); - point->setConstruction(true); + GeometryFacade::setConstruction(point, true); ExternalGeo.push_back(point); } else { Part::GeomLineSegment* line = new Part::GeomLineSegment(); line->setPoints(p1,p2); - line->setConstruction(true); + GeometryFacade::setConstruction(line, true); ExternalGeo.push_back(line); } } @@ -6447,7 +6577,7 @@ void SketchObject::rebuildExternalGeometry(void) circle->setRadius(c.Radius()); circle->setCenter(Base::Vector3d(p.X(),p.Y(),p.Z())); - circle->setConstruction(true); + GeometryFacade::setConstruction(circle, true); ExternalGeo.push_back(circle); } else { @@ -6456,7 +6586,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_TrimmedCurve) tCurve = new Geom_TrimmedCurve(curve, projCurve.FirstParameter(), projCurve.LastParameter()); arc->setHandle(tCurve); - arc->setConstruction(true); + GeometryFacade::setConstruction(arc, true); ExternalGeo.push_back(arc); } } else if (projCurve.GetType() == GeomAbs_BSplineCurve) { @@ -6478,11 +6608,11 @@ void SketchObject::rebuildExternalGeometry(void) gp_Pnt center = circ->Axis().Location(); circle->setCenter(Base::Vector3d(center.X(), center.Y(), center.Z())); - circle->setConstruction(true); + GeometryFacade::setConstruction(circle, true); ExternalGeo.push_back(circle); } else { Part::GeomBSplineCurve* bspline = new Part::GeomBSplineCurve(projCurve.BSpline()); - bspline->setConstruction(true); + GeometryFacade::setConstruction(bspline, true); ExternalGeo.push_back(bspline); } } else if (projCurve.GetType() == GeomAbs_Hyperbola) { @@ -6501,7 +6631,7 @@ void SketchObject::rebuildExternalGeometry(void) hyperbola->setMinorRadius(e.MinorRadius()); hyperbola->setCenter(Base::Vector3d(p.X(),p.Y(),p.Z())); hyperbola->setAngleXU(-xdir.AngleWithRef(xdirref.XDirection(),normal)); - hyperbola->setConstruction(true); + GeometryFacade::setConstruction(hyperbola, true); ExternalGeo.push_back(hyperbola); } else { @@ -6510,7 +6640,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_TrimmedCurve) tCurve = new Geom_TrimmedCurve(curve, projCurve.FirstParameter(), projCurve.LastParameter()); aoh->setHandle(tCurve); - aoh->setConstruction(true); + GeometryFacade::setConstruction(aoh, true); ExternalGeo.push_back(aoh); } } else if (projCurve.GetType() == GeomAbs_Parabola) { @@ -6528,7 +6658,7 @@ void SketchObject::rebuildExternalGeometry(void) parabola->setFocal(e.Focal()); parabola->setCenter(Base::Vector3d(p.X(),p.Y(),p.Z())); parabola->setAngleXU(-xdir.AngleWithRef(xdirref.XDirection(),normal)); - parabola->setConstruction(true); + GeometryFacade::setConstruction(parabola, true); ExternalGeo.push_back(parabola); } else { @@ -6537,7 +6667,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_TrimmedCurve) tCurve = new Geom_TrimmedCurve(curve, projCurve.FirstParameter(), projCurve.LastParameter()); aop->setHandle(tCurve); - aop->setConstruction(true); + GeometryFacade::setConstruction(aop, true); ExternalGeo.push_back(aop); } } @@ -6555,7 +6685,7 @@ void SketchObject::rebuildExternalGeometry(void) Part::GeomEllipse* ellipse = new Part::GeomEllipse(); Handle(Geom_Ellipse) curve = new Geom_Ellipse(e); ellipse->setHandle(curve); - ellipse->setConstruction(true); + GeometryFacade::setConstruction(ellipse, true); ExternalGeo.push_back(ellipse); } else { @@ -6564,7 +6694,7 @@ void SketchObject::rebuildExternalGeometry(void) Handle(Geom_TrimmedCurve) tCurve = new Geom_TrimmedCurve(curve, projCurve.FirstParameter(), projCurve.LastParameter()); aoe->setHandle(tCurve); - aoe->setConstruction(true); + GeometryFacade::setConstruction(aoe, true); ExternalGeo.push_back(aoe); } } @@ -6589,7 +6719,7 @@ void SketchObject::rebuildExternalGeometry(void) invPlm.multVec(p,p); Part::GeomPoint* point = new Part::GeomPoint(p); - point->setConstruction(true); + GeometryFacade::setConstruction(point, true); ExternalGeo.push_back(point); } break; @@ -6958,6 +7088,7 @@ bool SketchObject::evaluateConstraint(const Constraint *constraint) const switch (constraint->Type) { case Radius: case Diameter: + case Weight: case Horizontal: case Vertical: case Distance: @@ -7339,16 +7470,7 @@ void SketchObject::onUndoRedoFinished() void SketchObject::onDocumentRestored() { try { - validateExternalLinks(); - rebuildExternalGeometry(); - Constraints.acceptGeometry(getCompleteGeometry()); - // this may happen when saving a sketch directly in edit mode - // but never performed a recompute before - if (Shape.getValue().IsNull() && hasConflicts() == 0) { - if (this->solve(true) == 0) - Shape.setValue(solvedSketch.toShape()); - } - + restoreFinished(); Part::Part2DObject::onDocumentRestored(); } catch (...) { @@ -7358,6 +7480,8 @@ void SketchObject::onDocumentRestored() void SketchObject::restoreFinished() { try { + migrateSketch(); + validateExternalLinks(); rebuildExternalGeometry(); Constraints.acceptGeometry(getCompleteGeometry()); @@ -7372,6 +7496,63 @@ void SketchObject::restoreFinished() } } +void SketchObject::migrateSketch(void) +{ + bool noextensions = false; + + for( const auto & g : getInternalGeometry() ) + if(!g->hasExtension(SketchGeometryExtension::getClassTypeId())) // no extension - legacy file + noextensions = true; + + if(noextensions) { + for( auto c : Constraints.getValues()) { + + addGeometryState(c); + + // Convert B-Spline controlpoints radius/diameter constraints to Weight constraints + if(c->Type == InternalAlignment && c->AlignmentType == BSplineControlPoint) { + int circlegeoid = c->First; + int bsplinegeoid = c->Second; + + auto bsp = static_cast(getGeometry(bsplinegeoid)); + + std::vector weights = bsp->getWeights(); + + for( auto ccp : Constraints.getValues()) { + + if( (ccp->Type == Radius || ccp->Type == Diameter ) && + ccp->First == circlegeoid ) { + + if(c->InternalAlignmentIndex < int(weights.size())) { + ccp->Type = Weight; + ccp->setValue(weights[c->InternalAlignmentIndex]); + + } + } + } + } + } + + // Construction migration to extension + for( auto g : Geometry.getValues()) { + + if(g->hasExtension(Part::GeometryMigrationExtension::getClassTypeId())) + { + auto ext = std::static_pointer_cast( + g->getExtension(Part::GeometryMigrationExtension::getClassTypeId()).lock()); + + if(ext->testMigrationType(Part::GeometryMigrationExtension::Construction)) + { + GeometryFacade::setConstruction(g, ext->getConstruction()); + } + + g->deleteExtension(Part::GeometryMigrationExtension::getClassTypeId()); + } + + } + } +} + void SketchObject::getGeoVertexIndex(int VertexId, int &GeoId, PointPos &PosId) const { if (VertexId < 0 || VertexId >= int(VertexId2GeoId.size())) { @@ -7783,9 +7964,6 @@ int SketchObject::getGeometryId(int GeoId, long &id) const return 0; } - - - // Python Sketcher feature --------------------------------------------------------- namespace App { diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index d9b2ebb36c..f937bbc3c9 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -34,6 +34,8 @@ #include +#include "GeometryFacade.h" + #include "Analyse.h" #include "Sketch.h" @@ -146,6 +148,9 @@ public: * id<=-3 for user defined projected external geometries, */ const Part::Geometry* getGeometry(int GeoId) const; + + std::unique_ptr getGeometryFacade(int GeoId) const; + /// returns a list of all internal geometries const std::vector &getInternalGeometry(void) const { return Geometry.getValues(); } /// returns a list of projected external geometries @@ -450,6 +455,9 @@ protected: virtual void onUndoRedoFinished() override; + // migration functions + void migrateSketch(void); + private: /// Flag to allow external geometry from other bodies than the one this sketch belongs to bool allowOtherBody; @@ -483,11 +491,28 @@ private: bool AutoLockTangencyAndPerpty(Constraint* cstr, bool bForce = false, bool bLock = true); + // Geometry Extensions is used to store on geometry a state that is enforced by pre-existing constraints + // Like Block constraint and InternalAlignment constraint. This enables (more) convenient handling in ViewProviderSketch + // and solver. + // + // These functions are responsible for updating the Geometry State, currently Geometry Mode (Blocked) and + // Geometry InternalType (BSplineKnot, BSplinePole). + // + // The data life model for handling this state is as follows: + // 1. Upon restore, any migration is handled to set the status for legacy files (backwards compatibility) + // 2. Functionality adding constraints (of the relevant type) calls addGeometryState to set the status + // 3. Functionality removing constraints (of the relevant type) calls removeGeometryState to remove the status + // 4. Save mechanism will ensure persistence. + void addGeometryState(const Constraint* cstr) const; + void removeGeometryState(const Constraint* cstr) const; + SketchAnalysis * analyser; bool internaltransaction; bool managedoperation; // indicates whether changes to properties are the deed of SketchObject or not (for input validation) + + bool deletinginternalgeometry; // sets a lock to deletinginternalgeometryoperation so that no individual triggers are perform on each element. }; typedef App::FeaturePythonT SketchObjectPython; diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h index bd6484a93c..85a5fd7130 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.h +++ b/src/Mod/Sketcher/App/planegcs/GCS.h @@ -69,6 +69,19 @@ namespace GCS IterationLevel = 2 }; + // Magic numbers for Constraint tags + // - Positive Tags identify a higher level constraint form which the solver constraint originates + // - Negative Tags represent temporary constraints, used for example in moving operations, these + // have a different handling in component splitting, see GCS::initSolution. Lifetime is defined by + // the container object via GCS::clearByTag. + // - -1 is typically used as tag for these temporary constraints, its parameters are enforced with + // a lower priority than the main system (real sketcher constraints). It gives a nice effect when + // dragging the edge of an unconstrained circle, that the center won't move if the edge can be dragged, + // and only when/if the edge cannot be dragged, e.g. radius constraint, the center is moved). + enum SpecialTag { + DefaultTemporaryConstraint = -1 + }; + class System { // This is the main class. It holds all constraints and information diff --git a/src/Mod/Sketcher/Gui/AppSketcherGui.cpp b/src/Mod/Sketcher/Gui/AppSketcherGui.cpp index 9f19709a9d..c0e2931128 100644 --- a/src/Mod/Sketcher/Gui/AppSketcherGui.cpp +++ b/src/Mod/Sketcher/Gui/AppSketcherGui.cpp @@ -42,6 +42,7 @@ #include "SoZoomTranslation.h" #include "SketcherSettings.h" #include "PropertyConstraintListItem.h" +#include "ViewProviderSketchGeometryExtension.h" // create the commands @@ -122,13 +123,14 @@ PyMOD_INIT_FUNC(SketcherGui) SketcherGui::Workbench::init(); // init objects - SketcherGui::ViewProviderSketch ::init(); - SketcherGui::ViewProviderPython ::init(); - SketcherGui::ViewProviderCustom ::init(); - SketcherGui::ViewProviderCustomPython ::init(); - SketcherGui::SoDatumLabel ::initClass(); - SketcherGui::SoZoomTranslation ::initClass(); - SketcherGui::PropertyConstraintListItem ::init(); + SketcherGui::ViewProviderSketch ::init(); + SketcherGui::ViewProviderPython ::init(); + SketcherGui::ViewProviderCustom ::init(); + SketcherGui::ViewProviderCustomPython ::init(); + SketcherGui::SoDatumLabel ::initClass(); + SketcherGui::SoZoomTranslation ::initClass(); + SketcherGui::PropertyConstraintListItem ::init(); + SketcherGui::ViewProviderSketchGeometryExtension ::init(); (void)new Gui::PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Sketcher") ); (void)new Gui::PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Sketcher") ); diff --git a/src/Mod/Sketcher/Gui/CMakeLists.txt b/src/Mod/Sketcher/Gui/CMakeLists.txt index d7ba36057f..2a16b77d0e 100644 --- a/src/Mod/Sketcher/Gui/CMakeLists.txt +++ b/src/Mod/Sketcher/Gui/CMakeLists.txt @@ -140,6 +140,8 @@ SET(SketcherGui_SRCS TaskDlgEditSketch.h ViewProviderPython.cpp ViewProviderPython.h + ViewProviderSketchGeometryExtension.h + ViewProviderSketchGeometryExtension.cpp ) if(FREECAD_USE_PCH) diff --git a/src/Mod/Sketcher/Gui/Command.cpp b/src/Mod/Sketcher/Gui/Command.cpp index 8590277747..9be8eb86c4 100644 --- a/src/Mod/Sketcher/Gui/Command.cpp +++ b/src/Mod/Sketcher/Gui/Command.cpp @@ -179,7 +179,7 @@ void CmdSketcherNewSketch::activated(int iMsg) QString text = QInputDialog::getItem(Gui::getMainWindow(), qApp->translate("Sketcher_NewSketch", "Sketch attachment"), qApp->translate("Sketcher_NewSketch", "Select the method to attach this sketch to selected object"), - items, iSugg, false, &ok); + items, iSugg, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; int index = items.indexOf(text); if (index == 0){ @@ -204,7 +204,7 @@ void CmdSketcherNewSketch::activated(int iMsg) // create Sketch on Face std::string FeatName = getUniqueObjectName("Sketch"); - openCommand("Create a new sketch on a face"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create a new sketch on a face")); doCommand(Doc,"App.activeDocument().addObject('Sketcher::SketchObject', '%s')", FeatName.c_str()); if (mapmode < Attacher::mmDummy_NumberOfModes) doCommand(Gui,"App.activeDocument().%s.MapMode = \"%s\"",FeatName.c_str(),AttachEngine::getModeName(mapmode).c_str()); @@ -235,7 +235,7 @@ void CmdSketcherNewSketch::activated(int iMsg) std::string FeatName = getUniqueObjectName("Sketch"); - openCommand("Create a new sketch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create a new sketch")); doCommand(Doc, "App.activeDocument().addObject('Sketcher::SketchObject', '%s')", FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.Placement = App.Placement(App.Vector(%f, %f, %f), App.Rotation(%f, %f, %f, %f))", @@ -485,7 +485,7 @@ void CmdSketcherReorientSketch::activated(int iMsg) break; } - openCommand("Reorient sketch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Reorient sketch")); Gui::cmdAppObjectArgs(sketch, "Placement = App.Placement(App.Vector(%f, %f, %f), App.Rotation(%f, %f, %f, %f))", p.x, p.y, p.z, r[0], r[1], r[2], r[3]); @@ -541,7 +541,7 @@ void CmdSketcherMapSketch::activated(int iMsg) QString text = QInputDialog::getItem(Gui::getMainWindow(), qApp->translate("Sketcher_MapSketch", "Select sketch"), qApp->translate("Sketcher_MapSketch", "Select a sketch from the list"), - items, 0, false, &ok); + items, 0, false, &ok, Qt::MSWindowsFixedSizeDialogHint); if (!ok) return; int index = items.indexOf(text); @@ -620,7 +620,8 @@ void CmdSketcherMapSketch::activated(int iMsg) items, bCurIncompatible ? iSugg : iCurr, false, - &ok); + &ok, + Qt::MSWindowsFixedSizeDialogHint); // * collect dialog result if (!ok) return; @@ -639,12 +640,12 @@ void CmdSketcherMapSketch::activated(int iMsg) Gui::Selection().getAsPropertyLinkSubList(support); std::string supportString = support.getPyReprString(); - openCommand("Attach sketch"); + 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()); commitCommand(); } else { - openCommand("Detach sketch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Detach sketch")); Gui::cmdAppObjectArgs(sketch, "MapMode = \"%s\"",AttachEngine::getModeName(suggMapMode).c_str()); Gui::cmdAppObjectArgs(sketch, "Support = None"); commitCommand(); @@ -784,7 +785,7 @@ void CmdSketcherMirrorSketch::activated(int iMsg) refposid = smd.RefPosid; App::Document* doc = App::GetApplication().getActiveDocument(); - openCommand("Create a mirrored sketch for each selected sketch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create a mirrored sketch for each selected sketch")); for (std::vector::const_iterator it=selection.begin(); it != selection.end(); ++it) { // create Sketch @@ -883,7 +884,7 @@ void CmdSketcherMergeSketches::activated(int iMsg) // create Sketch std::string FeatName = getUniqueObjectName("Sketch"); - openCommand("Merge sketches"); + openCommand(QT_TRANSLATE_NOOP("Command", "Merge sketches")); doCommand(Doc,"App.activeDocument().addObject('Sketcher::SketchObject', '%s')", FeatName.c_str()); Sketcher::SketchObject* mergesketch = static_cast(doc->getObject(FeatName.c_str())); diff --git a/src/Mod/Sketcher/Gui/CommandAlterGeometry.cpp b/src/Mod/Sketcher/Gui/CommandAlterGeometry.cpp index b8e09a2776..2074be1132 100644 --- a/src/Mod/Sketcher/Gui/CommandAlterGeometry.cpp +++ b/src/Mod/Sketcher/Gui/CommandAlterGeometry.cpp @@ -134,7 +134,7 @@ void CmdSketcherToggleConstruction::activated(int iMsg) } // undo command open - openCommand("Toggle draft from/to draft"); + openCommand(QT_TRANSLATE_NOOP("Command", "Toggle draft from/to draft")); // go through the selected subelements for (std::vector::const_iterator it=SubNames.begin();it!=SubNames.end();++it){ diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.cpp b/src/Mod/Sketcher/Gui/CommandConstraints.cpp index 5ae595805f..970341f1ea 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.cpp +++ b/src/Mod/Sketcher/Gui/CommandConstraints.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include "ViewProviderSketch.h" #include "DrawSketchHandler.h" @@ -237,7 +238,7 @@ bool SketcherGui::isSimpleVertex(const Sketcher::SketchObject* Obj, int GeoId, P bool SketcherGui::isConstructionPoint(const Sketcher::SketchObject* Obj, int GeoId) { const Part::Geometry * geo = Obj->getGeometry(GeoId); - return (geo && geo->getTypeId() == Part::GeomPoint::getClassTypeId() && geo->getConstruction() == true); + return (geo && geo->getTypeId() == Part::GeomPoint::getClassTypeId() && GeometryFacade::getConstruction(geo)); } bool SketcherGui::IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher::PointPos PosIdPoint, Sketcher::SketchObject* Obj) @@ -255,6 +256,36 @@ bool SketcherGui::IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher return Obj->isPointOnCurve(GeoIdCurve, p.x, p.y); } +bool SketcherGui::isBsplinePole(const Part::Geometry * geo) +{ + auto gf = GeometryFacade::getFacade(geo); + + return gf->getInternalType() == InternalType::BSplineControlPoint; +} + +bool SketcherGui::isBsplinePole(const Sketcher::SketchObject* Obj, int GeoId) +{ + auto geom = Obj->getGeometry(GeoId); + + return isBsplinePole(geom); +} + +bool SketcherGui::ReleaseHandler(Gui::Document* doc) { + if (doc) { + if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { + SketcherGui::ViewProviderSketch* vp = static_cast (doc->getInEdit()); + + if (static_cast(doc->getInEdit()) + ->getSketchMode() == ViewProviderSketch::STATUS_SKETCH_UseHandler) { + + vp->purgeHandler(); + return true; + } + } + } + return false; +} + /// Makes a simple tangency constraint using extra point + tangent via point /// ellipse => an ellipse /// geom2 => any of an ellipse, an arc of ellipse, a circle, or an arc (of circle) @@ -2639,6 +2670,14 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg) continue; } + if( geom && isBsplinePole(geom)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + abortCommand(); + + continue; + } + cnt++; Gui::cmdAppObjectArgs(selection[0].getObject(),"addConstraint(Sketcher.Constraint('PointOnObject',%d,%d,%d)) ", points[iPnt].GeoId, points[iPnt].PosId, curves[iCrv].GeoId); @@ -2652,9 +2691,10 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg) QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("None of the selected points were constrained " "onto the respective curves, " - "either because they are parts " + "because they are parts " "of the same element, " - "or because they are both external geometry.")); + "because they are both external geometry, " + "or because the edge is not eligible.")); } return; } @@ -2714,6 +2754,14 @@ void CmdSketcherConstrainPointOnObject::applyConstraint(std::vector & return; } + if( geom && isBsplinePole(geom)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + abortCommand(); + + return; + } + if (allOK) { Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('PointOnObject',%d,%d,%d)) ", GeoIdVt, PosIdVt, GeoIdCrv); @@ -3492,6 +3540,12 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg) if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add perpendicular constraint")); try{ @@ -3591,6 +3645,12 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg) return; } + if(isBsplinePole(geom2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add perpendicularity constraint")); Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Perpendicular',%d,%d,%d)) ", GeoId1,PosId1,GeoId2); @@ -3627,6 +3687,12 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg) if (geo1->getTypeId() == Part::GeomLineSegment::getClassTypeId()) std::swap(GeoId1,GeoId2); + if(isBsplinePole(Obj, GeoId1)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + // GeoId2 is the line geo1 = Obj->getGeometry(GeoId1); geo2 = Obj->getGeometry(GeoId2); @@ -3802,6 +3868,12 @@ void CmdSketcherConstrainPerpendicular::applyConstraint(std::vector & if (geo1->getTypeId() == Part::GeomLineSegment::getClassTypeId()) std::swap(GeoId1,GeoId2); + if(isBsplinePole(Obj, GeoId1)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + // GeoId2 is the line geo1 = Obj->getGeometry(GeoId1); geo2 = Obj->getGeometry(GeoId2); @@ -3947,6 +4019,12 @@ void CmdSketcherConstrainPerpendicular::applyConstraint(std::vector & if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add perpendicular constraint")); try{ @@ -4096,6 +4174,12 @@ void CmdSketcherConstrainTangent::activated(int iMsg) if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add tangent constraint")); try{ @@ -4178,6 +4262,12 @@ void CmdSketcherConstrainTangent::activated(int iMsg) return; } + if(isBsplinePole(geom2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add tangent constraint")); Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Tangent',%d,%d,%d)) ", GeoId1,PosId1,GeoId2); @@ -4202,6 +4292,11 @@ void CmdSketcherConstrainTangent::activated(int iMsg) return; } + if(isBsplinePole(geom1) || isBsplinePole(geom2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } // check if there is a coincidence constraint on GeoId1, GeoId2 const std::vector< Constraint * > &cvals = Obj->Constraints.getValues(); @@ -4421,6 +4516,12 @@ void CmdSketcherConstrainTangent::applyConstraint(std::vector &selSeq return; } + if(isBsplinePole(geom1) || isBsplinePole(geom2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + if( geom1 && geom2 && ( geom1->getTypeId() == Part::GeomEllipse::getClassTypeId() || @@ -4590,6 +4691,12 @@ void CmdSketcherConstrainTangent::applyConstraint(std::vector &selSeq if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + openCommand(QT_TRANSLATE_NOOP("Command", "Add tangent constraint")); try{ @@ -4651,8 +4758,8 @@ CmdSketcherConstrainRadius::CmdSketcherConstrainRadius() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Constrain radius"); - sToolTipText = QT_TR_NOOP("Fix the radius of a circle or an arc"); + sMenuText = QT_TR_NOOP("Constrain radius or weight"); + sToolTipText = QT_TR_NOOP("Fix the radius of a circle or an arc or fix the weight of a pole of a B-Spline"); sWhatsThis = "Sketcher_ConstrainRadius"; sStatusTip = sToolTipText; sPixmap = "Constraint_Radius"; @@ -4699,6 +4806,9 @@ void CmdSketcherConstrainRadius::activated(int iMsg) std::vector< std::pair > geoIdRadiusMap; std::vector< std::pair > externalGeoIdRadiusMap; + bool poles = false; + bool nonpoles = false; + for (std::vector::const_iterator it = SubNames.begin(); it != SubNames.end(); ++it) { bool issegmentfixed = false; int GeoId; @@ -4726,6 +4836,8 @@ void CmdSketcherConstrainRadius::activated(int iMsg) else { geoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } + + nonpoles = true; } else if (geom && geom->getTypeId() == Part::GeomCircle::getClassTypeId()) { const Part::GeomCircle *circle = static_cast(geom); @@ -4737,6 +4849,11 @@ void CmdSketcherConstrainRadius::activated(int iMsg) else { geoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } + + if(isBsplinePole(geom)) + poles = true; + else + nonpoles = true; } } @@ -4745,6 +4862,12 @@ void CmdSketcherConstrainRadius::activated(int iMsg) QObject::tr("Select one or more arcs or circles from the sketch.")); } + if(poles && nonpoles) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select either only one or more B-Spline poles or only one or more arcs or circles from the sketch, but not mixed.")); + return; + } + bool commitNeeded=false; bool updateNeeded=false; bool commandopened=false; @@ -4756,8 +4879,13 @@ void CmdSketcherConstrainRadius::activated(int iMsg) unsigned int constrSize = 0; for (std::vector< std::pair >::iterator it = externalGeoIdRadiusMap.begin(); it != externalGeoIdRadiusMap.end(); ++it) { - Gui::cmdAppObjectArgs(selection[0].getObject(),"addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", - it->first,it->second); + + if(nonpoles) + Gui::cmdAppObjectArgs(selection[0].getObject(),"addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", + it->first,it->second); + else + Gui::cmdAppObjectArgs(selection[0].getObject(),"addConstraint(Sketcher.Constraint('Weight',%d,%f)) ", + it->first,it->second); const std::vector &ConStr = Obj->Constraints.getValues(); @@ -4813,8 +4941,12 @@ void CmdSketcherConstrainRadius::activated(int iMsg) if(!commandopened) openCommand(QT_TRANSLATE_NOOP("Command", "Add radius constraint")); - Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", - refGeoId,radius); + if(nonpoles) + Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", + refGeoId,radius); + else + Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Weight',%d,%f)) ", + refGeoId,radius); // Add the equality constraints for (std::vector< std::pair >::iterator it = geoIdRadiusMap.begin()+1; it != geoIdRadiusMap.end(); ++it) { @@ -4828,8 +4960,12 @@ void CmdSketcherConstrainRadius::activated(int iMsg) if(!commandopened) openCommand(QT_TRANSLATE_NOOP("Command", "Add radius constraint")); for (std::vector< std::pair >::iterator it = geoIdRadiusMap.begin(); it != geoIdRadiusMap.end(); ++it) { - Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", - it->first,it->second); + if(nonpoles) + Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", + it->first,it->second); + else + Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Weight',%d,%f)) ", + it->first,it->second); if (constraintCreationMode==Reference) { const std::vector &ConStr = Obj->Constraints.getValues(); @@ -4862,12 +4998,20 @@ void CmdSketcherConstrainRadius::activated(int iMsg) QDialog dlg(Gui::getMainWindow()); Ui::InsertDatum ui_Datum; ui_Datum.setupUi(&dlg); - dlg.setWindowTitle(EditDatumDialog::tr("Change radius")); - ui_Datum.label->setText(EditDatumDialog::tr("Radius:")); Base::Quantity init_val; - init_val.setUnit(Base::Unit::Length); init_val.setValue(geoIdRadiusMap.front().second); + if(poles) { + dlg.setWindowTitle(EditDatumDialog::tr("Change weight")); + ui_Datum.label->setText(EditDatumDialog::tr("Weight:")); + + } + else{ + dlg.setWindowTitle(EditDatumDialog::tr("Change radius")); + ui_Datum.label->setText(EditDatumDialog::tr("Radius:")); + init_val.setUnit(Base::Unit::Length); + } + ui_Datum.labelEdit->setValue(init_val); ui_Datum.labelEdit->selectNumber(); if (constrainEqual || geoIdRadiusMap.size() == 1) @@ -4973,7 +5117,14 @@ void CmdSketcherConstrainRadius::applyConstraint(std::vector &selSeq, // Create the radius constraint now openCommand(QT_TRANSLATE_NOOP("Command", "Add radius constraint")); - Gui::cmdAppObjectArgs(Obj, "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", + + bool ispole = isBsplinePole(geom); + + if(ispole) + Gui::cmdAppObjectArgs(Obj, "addConstraint(Sketcher.Constraint('Weight',%d,%f)) ", + GeoId, radius); + else + Gui::cmdAppObjectArgs(Obj, "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", GeoId, radius); const std::vector &ConStr = Obj->Constraints.getValues(); @@ -5006,10 +5157,19 @@ void CmdSketcherConstrainRadius::applyConstraint(std::vector &selSeq, QDialog dlg(Gui::getMainWindow()); Ui::InsertDatum ui_Datum; ui_Datum.setupUi(&dlg); - dlg.setWindowTitle(EditDatumDialog::tr("Change radius")); - ui_Datum.label->setText(EditDatumDialog::tr("Radius:")); Base::Quantity init_val; - init_val.setUnit(Base::Unit::Length); + + if(ispole) { + dlg.setWindowTitle(EditDatumDialog::tr("Change weight")); + ui_Datum.label->setText(EditDatumDialog::tr("Weight:")); + + } + else{ + dlg.setWindowTitle(EditDatumDialog::tr("Change radius")); + ui_Datum.label->setText(EditDatumDialog::tr("Radius:")); + init_val.setUnit(Base::Unit::Length); + } + init_val.setValue(radius); ui_Datum.labelEdit->setValue(init_val); @@ -5189,6 +5349,12 @@ void CmdSketcherConstrainDiameter::activated(int iMsg) const Part::GeomCircle *circle = static_cast(geom); double radius = circle->getRadius(); + if(isBsplinePole(geom)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + continue; + } + if(issegmentfixed) { externalGeoIdDiameterMap.push_back(std::make_pair(GeoId, 2*radius)); } @@ -5428,6 +5594,12 @@ void CmdSketcherConstrainDiameter::applyConstraint(std::vector &selSe return; } + if(isBsplinePole(geom)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + // Create the diameter constraint now openCommand(QT_TRANSLATE_NOOP("Command", "Add diameter constraint")); Gui::cmdAppObjectArgs(Obj, "addConstraint(Sketcher.Constraint('Diameter',%d,%f)) ", @@ -5752,6 +5924,13 @@ void CmdSketcherConstrainAngle::activated(int iMsg) bool bothexternal=areBothPointsOrSegmentsFixed(Obj, GeoId1, GeoId2); if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + double ActAngle = 0.0; openCommand(QT_TRANSLATE_NOOP("Command", "Add angle constraint")); @@ -5808,6 +5987,12 @@ void CmdSketcherConstrainAngle::activated(int iMsg) std::swap(PosId1,PosId2); } + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + if (isEdge(GeoId2,PosId2)) { // line to line angle const Part::Geometry *geom1 = Obj->getGeometry(GeoId1); @@ -6093,6 +6278,13 @@ void CmdSketcherConstrainAngle::applyConstraint(std::vector &selSeq, bool bothexternal=areBothPointsOrSegmentsFixed(Obj,GeoId1, GeoId2); if (isEdge(GeoId1, PosId1) && isEdge(GeoId2, PosId2) && isVertex(GeoId3, PosId3)) { + + if(isBsplinePole(Obj, GeoId1) || isBsplinePole(Obj, GeoId2)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + double ActAngle = 0.0; openCommand(QT_TRANSLATE_NOOP("Command", "Add angle constraint")); @@ -6225,7 +6417,7 @@ void CmdSketcherConstrainEqual::activated(int iMsg) std::vector ids; bool lineSel = false, arcSel = false, circSel = false, ellipsSel = false, arcEllipsSel=false, hasAlreadyExternal = false; - bool hyperbSel = false, parabSel=false; + bool hyperbSel = false, parabSel=false, weightSel=false; for (std::vector::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) { @@ -6263,20 +6455,30 @@ void CmdSketcherConstrainEqual::activated(int iMsg) return; } - if (geo->getTypeId() == Part::GeomLineSegment::getClassTypeId()) + if (geo->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { lineSel = true; - else if (geo->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) + } + else if (geo->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { arcSel = true; - else if (geo->getTypeId() == Part::GeomCircle::getClassTypeId()) - circSel = true; - else if (geo->getTypeId() == Part::GeomEllipse::getClassTypeId()) + } + else if (geo->getTypeId() == Part::GeomCircle::getClassTypeId()) { + if(isBsplinePole(geo)) + weightSel = true; + else + circSel = true; + } + else if (geo->getTypeId() == Part::GeomEllipse::getClassTypeId()) { ellipsSel = true; - else if (geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) + } + else if (geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) { arcEllipsSel = true; - else if (geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) + } + else if (geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { hyperbSel = true; - else if (geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()) + } + else if (geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()) { parabSel = true; + } else { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select two or more edges of similar type")); @@ -6287,10 +6489,11 @@ void CmdSketcherConstrainEqual::activated(int iMsg) } // Check for heterogeneous groups in selection - if ( (lineSel && ((arcSel || circSel) || (ellipsSel || arcEllipsSel) || hyperbSel || parabSel) ) || - ((arcSel || circSel) && ((ellipsSel || arcEllipsSel) || hyperbSel || parabSel)) || - ((ellipsSel || arcEllipsSel) && (hyperbSel || parabSel)) || - (hyperbSel && parabSel) ) { + if ( (lineSel && ((arcSel || circSel) || (ellipsSel || arcEllipsSel) || hyperbSel || parabSel || weightSel) ) || + ((arcSel || circSel) && ((ellipsSel || arcEllipsSel) || hyperbSel || parabSel || weightSel)) || + ((ellipsSel || arcEllipsSel) && (hyperbSel || parabSel || weightSel)) || + ( hyperbSel && (parabSel || weightSel)) || + ( parabSel && weightSel)) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select two or more edges of similar type")); @@ -6332,6 +6535,23 @@ void CmdSketcherConstrainEqual::applyConstraint(std::vector &selSeq, return; } + const Part::Geometry *geo1 = Obj->getGeometry(GeoId1); + const Part::Geometry *geo2 = Obj->getGeometry(GeoId2); + + if ( (geo1->getTypeId() == Part::GeomLineSegment::getClassTypeId() && geo2->getTypeId() != Part::GeomLineSegment::getClassTypeId()) || + (geo1->getTypeId() == Part::GeomHyperbola::getClassTypeId() && geo2->getTypeId() != Part::GeomHyperbola::getClassTypeId()) || + (geo1->getTypeId() == Part::GeomParabola::getClassTypeId() && geo2->getTypeId() != Part::GeomParabola::getClassTypeId()) || + (isBsplinePole(geo1) && !isBsplinePole(geo1)) || + ( (geo1->getTypeId() == Part::GeomCircle::getClassTypeId() || geo1->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) && + (geo2->getTypeId() != Part::GeomCircle::getClassTypeId() || geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId())) || + ( (geo1->getTypeId() == Part::GeomEllipse::getClassTypeId() || geo1->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) && + (geo2->getTypeId() != Part::GeomEllipse::getClassTypeId() || geo2->getTypeId() != Part::GeomArcOfEllipse::getClassTypeId())) ){ + + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select two or more edges of similar type")); + return; + } + // undo command open openCommand(QT_TRANSLATE_NOOP("Command", "Add equality constraint")); Gui::cmdAppObjectArgs(Obj, "addConstraint(Sketcher.Constraint('Equal',%d,%d)) ", @@ -6729,6 +6949,12 @@ void CmdSketcherConstrainSnellsLaw::activated(int iMsg) return; } + if(isBsplinePole(geo)) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QObject::tr("Select an edge that is not a B-spline weight")); + return; + } + double n2divn1=0; //the essence. @@ -7003,7 +7229,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[0])); - if(!geo->getConstruction()) + if(!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[0]); } @@ -7014,7 +7240,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[0])); - if(!geo->getConstruction()) + if(!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[0]); minor=true; @@ -7031,7 +7257,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[1])); - if(!geo->getConstruction()) + if(!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[1]); } else @@ -7181,7 +7407,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[0])); - if(!geo->getConstruction()) + if(!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[0]); } @@ -7192,7 +7418,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[0])); - if(!geo->getConstruction()) + if(!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[0]); minor=true; @@ -7209,7 +7435,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) const Part::GeomLineSegment *geo = static_cast(Obj->getGeometry(lineids[1])); - if (!geo->getConstruction()) + if (!Sketcher::GeometryFacade::getConstruction(geo)) Gui::cmdAppObjectArgs(selection[0].getObject(),"toggleConstruction(%d) ",lineids[1]); } else diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.h b/src/Mod/Sketcher/Gui/CommandConstraints.h index e4896da6bc..f6a08d3632 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.h +++ b/src/Mod/Sketcher/Gui/CommandConstraints.h @@ -51,6 +51,13 @@ bool isConstructionPoint(const Sketcher::SketchObject* Obj, int GeoId); bool IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher::PointPos PosIdPoint, Sketcher::SketchObject* Obj); +bool isBsplinePole(const Part::Geometry * geo); + +bool isBsplinePole(const Sketcher::SketchObject* Obj, int GeoId); + +/// Release any currently-active handler for the document. +/// Returns true if a handler was released, and false if not +bool ReleaseHandler(Gui::Document* doc); // These functions are declared here to promote code reuse from other modules diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 54f08fc566..d53caf646a 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -316,7 +316,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch line"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch line")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.LineSegment(App.Vector(%f,%f,0),App.Vector(%f,%f,0)),%s)", EditCurve[0].x,EditCurve[0].y,EditCurve[1].x,EditCurve[1].y, geometryCreationMode==Construction?"True":"False"); @@ -490,7 +490,7 @@ public: int firstCurve = getHighestCurveIndex() + 1; try { - Gui::Command::openCommand("Add sketch box"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch box")); Gui::Command::doCommand(Gui::Command::Doc, "geoList = []\n" "geoList.append(Part.LineSegment(App.Vector(%f,%f,0),App.Vector(%f,%f,0)))\n" @@ -978,7 +978,7 @@ public: // issue the geometry try { // open the transaction - Gui::Command::openCommand("Add line to sketch wire"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add line to sketch wire")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.LineSegment(App.Vector(%f,%f,0),App.Vector(%f,%f,0)),%s)", EditCurve[0].x,EditCurve[0].y,EditCurve[1].x,EditCurve[1].y, geometryCreationMode==Construction?"True":"False"); @@ -998,7 +998,7 @@ public: } try { - Gui::Command::openCommand("Add arc to sketch wire"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add arc to sketch wire")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.ArcOfCircle" "(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%f,%f),%s)", CenterPoint.x, CenterPoint.y, std::abs(arcRadius), @@ -1441,7 +1441,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch arc"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.ArcOfCircle" "(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%f,%f),%s)", CenterPoint.x, CenterPoint.y, sqrt(rx*rx + ry*ry), @@ -1710,7 +1710,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch arc"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.ArcOfCircle" "(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%f,%f),%s)", CenterPoint.x, CenterPoint.y, radius, @@ -1979,7 +1979,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch circle"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch circle")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Circle" "(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%s)", EditCurve[0].x, EditCurve[0].y, @@ -2738,7 +2738,7 @@ private: int currentgeoid = getHighestCurveIndex(); // index of the ellipse we just created try { - Gui::Command::openCommand("Add sketch ellipse"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch ellipse")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Ellipse" "(App.Vector(%f,%f,0),App.Vector(%f,%f,0),App.Vector(%f,%f,0)),%s)", periapsis.x, periapsis.y, @@ -3107,7 +3107,7 @@ public: int currentgeoid = getHighestCurveIndex(); try { - Gui::Command::openCommand("Add sketch arc of ellipse"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc of ellipse")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.ArcOfEllipse" "(Part.Ellipse(App.Vector(%f,%f,0),App.Vector(%f,%f,0),App.Vector(%f,%f,0)),%f,%f),%s)", @@ -3445,7 +3445,7 @@ public: try { - Gui::Command::openCommand("Add sketch arc of hyperbola"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc of hyperbola")); //Add arc of hyperbola, point and constrain point as focus2. We add focus2 for it to balance //the intrinsic focus1, in order to balance out the intrinsic invisible focus1 when AOE is @@ -3747,7 +3747,7 @@ public: int currentgeoid = getHighestCurveIndex(); try { - Gui::Command::openCommand("Add sketch arc of Parabola"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc of Parabola")); //Add arc of parabola Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.ArcOfParabola" @@ -4070,7 +4070,7 @@ public: // insert circle point for pole, defer internal alignment constraining. try { - Gui::Command::openCommand("Add Pole circle"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add Pole circle")); //Add pole Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),10),True)", @@ -4131,36 +4131,15 @@ public: // insert circle point for pole, defer internal alignment constraining. try { - //Gui::Command::openCommand("Add Pole circle"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add Pole circle")); //Add pole - double guess = (EditCurve[1]-EditCurve[0]).Length()/6; - - auto normalize = [](double guess) { - double units=1.0; - - while (guess >= 10.0) { - guess /= 10.0; - units*=10.0; - } - - while (guess < 1.0) { - guess *= 10.0; - units/=10.0; - } - - return round(guess)*units; - - }; - - guess = normalize(guess); - Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),10),True)", EditCurve[EditCurve.size()-1].x,EditCurve[EditCurve.size()-1].y); if(EditCurve.size() == 2) { - Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('Radius',%d,%f)) ", - FirstPoleGeoId, guess ); + Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('Weight',%d,%f)) ", + FirstPoleGeoId, 1.0 ); // First pole defaults to 1.0 weight } Gui::cmdAppObjectArgs(sketchgui->getObject(), "addConstraint(Sketcher.Constraint('Equal',%d,%d)) ", @@ -4223,7 +4202,7 @@ public: try { - //Gui::Command::openCommand("Add B-spline curve"); + //Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add B-spline curve")); /*Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.BSplineCurve" "(%s,%s)," @@ -4686,7 +4665,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch circle"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch circle")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Circle" "(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%s)", CenterPoint.x, CenterPoint.y, @@ -4913,7 +4892,7 @@ public: resetPositionText(); try { - Gui::Command::openCommand("Add sketch point"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch point")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addGeometry(Part.Point(App.Vector(%f,%f,0)))", EditPoint.x,EditPoint.y); @@ -5133,7 +5112,7 @@ public: 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=geom1->getConstruction() && geom2->getConstruction(); + construction=Sketcher::GeometryFacade::getConstruction(geom1) && Sketcher::GeometryFacade::getConstruction(geom2); if (geom1->getTypeId() == Part::GeomLineSegment::getClassTypeId() && geom2->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { const Part::GeomLineSegment *lineSeg1 = static_cast(geom1); @@ -5156,7 +5135,7 @@ public: int currentgeoid= getHighestCurveIndex(); // create fillet at point try { - Gui::Command::openCommand("Create fillet"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create fillet")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "fillet(%d,%d,%f)", GeoId, PosId, radius); if (construction) { @@ -5216,7 +5195,7 @@ public: if (radius < 0) return false; - construction=lineSeg1->getConstruction() && lineSeg2->getConstruction(); + construction=Sketcher::GeometryFacade::getConstruction(lineSeg1) && Sketcher::GeometryFacade::getConstruction(lineSeg2); } else { // other supported curves const Part::Geometry *geo1 = static_cast @@ -5224,7 +5203,7 @@ public: const Part::Geometry *geo2 = static_cast (sketchgui->getSketchObject()->getGeometry(secondCurve)); - construction=geo1->getConstruction() && geo2->getConstruction(); + construction=Sketcher::GeometryFacade::getConstruction(geo1) && Sketcher::GeometryFacade::getConstruction(geo2); } @@ -5232,7 +5211,7 @@ public: // create fillet between lines try { - Gui::Command::openCommand("Create fillet"); + 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)", firstCurve, secondCurve, firstPos.x, firstPos.y, @@ -5384,7 +5363,7 @@ public: geom->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || geom->getTypeId() == Part::GeomEllipse::getClassTypeId()) { try { - Gui::Command::openCommand("Trim edge"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Trim edge")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "trim(%d,App.Vector(%f,%f,0))", GeoId, onSketchPos.x, onSketchPos.y); Gui::Command::commitCommand(); @@ -5655,7 +5634,7 @@ public: } } else if (Mode == STATUS_SEEK_Second) { try { - Gui::Command::openCommand("Extend edge"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Extend edge")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "extend(%d, %f, %d)\n", // GeoId, increment, PointPos BaseGeoId, Increment, ExtendFromStart ? Sketcher::start : Sketcher::end); Gui::Command::commitCommand(); @@ -5871,7 +5850,7 @@ public: (subName.size() > 6 && subName.substr(0,6) == "Vertex") || (subName.size() > 4 && subName.substr(0,4) == "Face")) { try { - Gui::Command::openCommand("Add external geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add external geometry")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "addExternal(\"%s\",\"%s\")", msg.pObjectName, msg.pSubName); Gui::Command::commitCommand(); @@ -6052,7 +6031,7 @@ namespace SketcherGui { if (obj->getTypeId() == Sketcher::SketchObject::getClassTypeId()) { try { - Gui::Command::openCommand("Add carbon copy"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add carbon copy")); Gui::cmdAppObjectArgs(sketchgui->getObject(), "carbonCopy(\"%s\",%s)", msg.pObjectName, geometryCreationMode==Construction?"True":"False"); @@ -6233,7 +6212,7 @@ public: } try { - Gui::Command::openCommand("Add slot"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add slot")); Gui::Command::doCommand(Gui::Command::Doc, "geoList = []\n" "geoList.append(Part.ArcOfCircle(Part.Circle(App.Vector(%f,%f,0),App.Vector(0,0,1),%f),%f,%f))\n" @@ -6446,7 +6425,7 @@ public: if (Mode==STATUS_End){ unsetCursor(); resetPositionText(); - Gui::Command::openCommand("Add hexagon"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add hexagon")); try { Gui::Command::doCommand(Gui::Command::Doc, diff --git a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp index 290d738e9f..170c9196c9 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp @@ -214,6 +214,37 @@ bool CmdSketcherBSplineKnotMultiplicity::isActive(void) return isSketcherBSplineActive(getActiveGuiDocument(), false); } +// +DEF_STD_CMD_A(CmdSketcherBSplinePoleWeight) + +CmdSketcherBSplinePoleWeight::CmdSketcherBSplinePoleWeight() + : Command("Sketcher_BSplinePoleWeight") +{ + sAppModule = "Sketcher"; + sGroup = QT_TR_NOOP("Sketcher"); + sMenuText = QT_TR_NOOP("Show/hide B-spline control point weight"); + sToolTipText = QT_TR_NOOP("Switches between showing and hiding the control point weight for all B-splines"); + sWhatsThis = "Sketcher_BSplinePoleWeight"; + sStatusTip = sToolTipText; + sPixmap = "Sketcher_BSplinePoleWeight"; + sAccel = ""; + eType = ForEdit; +} + +void CmdSketcherBSplinePoleWeight::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + Gui::Document* doc = getActiveGuiDocument(); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); + ShowRestoreInformationLayer(vp, "BSplinePoleWeightVisible"); +} + +bool CmdSketcherBSplinePoleWeight::isActive(void) +{ + return isSketcherBSplineActive(getActiveGuiDocument(), false); +} + // Composite drop down menu for show/hide geometry information layer DEF_STD_CMD_ACLU(CmdSketcherCompBSplineShowHideGeometryInformation) @@ -223,7 +254,7 @@ CmdSketcherCompBSplineShowHideGeometryInformation::CmdSketcherCompBSplineShowHid sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); sMenuText = QT_TR_NOOP("Show/hide B-spline information layer"); - sToolTipText = QT_TR_NOOP("Show/hide B-spline information layer"); + sToolTipText = sMenuText; sWhatsThis = "Sketcher_CompBSplineShowHideGeometryInformation"; sStatusTip = sToolTipText; eType = ForEdit; @@ -242,6 +273,8 @@ void CmdSketcherCompBSplineShowHideGeometryInformation::activated(int iMsg) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineComb"); else if (iMsg == 3) cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineKnotMultiplicity"); + else if (iMsg == 4) + cmd = rcCmdMgr.getCommandByName("Sketcher_BSplinePoleWeight"); else return; @@ -254,6 +287,8 @@ void CmdSketcherCompBSplineShowHideGeometryInformation::activated(int iMsg) assert(iMsg < a.size()); pcAction->setIcon(a[iMsg]->icon()); + // we must also set the tooltip of the used command + pcAction->setToolTip(a[iMsg]->toolTip()); } Gui::Action * CmdSketcherCompBSplineShowHideGeometryInformation::createAction(void) @@ -270,6 +305,8 @@ Gui::Action * CmdSketcherCompBSplineShowHideGeometryInformation::createAction(vo c3->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineComb")); QAction* c4 = pcAction->addAction(QString()); c4->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineKnotMultiplicity")); + QAction* c5 = pcAction->addAction(QString()); + c5->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplinePoleWeight")); _pcAction = pcAction; languageChange(); @@ -318,6 +355,14 @@ void CmdSketcherCompBSplineShowHideGeometryInformation::languageChange() "Switches between showing and hiding the knot multiplicity for all B-splines")); c4->setStatusTip(QApplication::translate("Sketcher_BSplineKnotMultiplicity", "Switches between showing and hiding the knot multiplicity for all B-splines")); + + QAction* c5 = a[4]; + c5->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation", + "Show/hide B-spline control point weight")); + c5->setToolTip(QApplication::translate("Sketcher_BSplinePoleWeight", + "Switches between showing and hiding the control point weight for all B-splines")); + c5->setStatusTip(QApplication::translate("Sketcher_BSplinePoleWeight", + "Switches between showing and hiding the control point weight for all B-splines")); } void CmdSketcherCompBSplineShowHideGeometryInformation::updateAction(int /*mode*/) @@ -365,7 +410,7 @@ void CmdSketcherConvertToNURB::activated(int iMsg) bool nurbsized = false; - openCommand("Convert to NURBS"); + openCommand(QT_TRANSLATE_NOOP("Command", "Convert to NURBS")); for (size_t i=0; i < SubNames.size(); i++) { // only handle edges @@ -431,7 +476,7 @@ void CmdSketcherIncreaseDegree::activated(int iMsg) const std::vector &SubNames = selection[0].getSubNames(); Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - openCommand("Increase spline degree"); + openCommand(QT_TRANSLATE_NOOP("Command", "Increase spline degree")); bool ignored = false; @@ -506,7 +551,7 @@ void CmdSketcherDecreaseDegree::activated(int iMsg) const std::vector &SubNames = selection[0].getSubNames(); Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - openCommand("Decrease spline degree"); + openCommand(QT_TRANSLATE_NOOP("Command", "Decrease spline degree")); bool ignored = false; @@ -599,7 +644,7 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg) Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - openCommand("Increase knot multiplicity"); + openCommand(QT_TRANSLATE_NOOP("Command", "Increase knot multiplicity")); bool applied = false; bool notaknot = true; @@ -753,7 +798,7 @@ void CmdSketcherDecreaseKnotMultiplicity::activated(int iMsg) Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - openCommand("Decrease knot multiplicity"); + openCommand(QT_TRANSLATE_NOOP("Command", "Decrease knot multiplicity")); bool applied = false; bool notaknot = true; @@ -945,6 +990,7 @@ void CreateSketcherCommandsBSpline(void) rcCmdMgr.addCommand(new CmdSketcherBSplinePolygon()); rcCmdMgr.addCommand(new CmdSketcherBSplineComb()); rcCmdMgr.addCommand(new CmdSketcherBSplineKnotMultiplicity()); + rcCmdMgr.addCommand(new CmdSketcherBSplinePoleWeight()); rcCmdMgr.addCommand(new CmdSketcherCompBSplineShowHideGeometryInformation()); rcCmdMgr.addCommand(new CmdSketcherConvertToNURB()); rcCmdMgr.addCommand(new CmdSketcherIncreaseDegree()); diff --git a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp index e301533298..34e74f0f5a 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp @@ -62,8 +62,10 @@ bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection) if (doc) { // checks if a Sketch Viewprovider is in Edit and is in no special mode if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - if (static_cast(doc->getInEdit()) - ->getSketchMode() == ViewProviderSketch::STATUS_NONE) { + auto mode = static_cast(doc->getInEdit()) + ->getSketchMode(); + if (mode == ViewProviderSketch::STATUS_NONE || + mode == ViewProviderSketch::STATUS_SKETCH_UseHandler) { if (!actsOnSelection) return true; else if (Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0) @@ -108,6 +110,11 @@ CmdSketcherCloseShape::CmdSketcherCloseShape() void CmdSketcherCloseShape::activated(int iMsg) { Q_UNUSED(iMsg); + + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + SketcherGui::ReleaseHandler(doc); + // get the selection std::vector selection; selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId()); @@ -133,7 +140,7 @@ void CmdSketcherCloseShape::activated(int iMsg) int GeoIdLast = -1; // undo command open - openCommand("Add coincident constraint"); + openCommand(QT_TRANSLATE_NOOP("Command", "Add coincident constraint")); // go through the selected subelements for (size_t i=0; i < (SubNames.size() - 1); i++) { // only handle edges @@ -213,6 +220,11 @@ CmdSketcherConnect::CmdSketcherConnect() void CmdSketcherConnect::activated(int iMsg) { Q_UNUSED(iMsg); + + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + SketcherGui::ReleaseHandler(doc); + // get the selection std::vector selection; selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId()); @@ -234,7 +246,7 @@ void CmdSketcherConnect::activated(int iMsg) Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // undo command open - openCommand("Add coincident constraint"); + openCommand(QT_TRANSLATE_NOOP("Command", "Add coincident constraint")); // go through the selected subelements for (unsigned int i=0; i<(SubNames.size()-1); i++ ) { @@ -293,10 +305,15 @@ CmdSketcherSelectConstraints::CmdSketcherSelectConstraints() void CmdSketcherSelectConstraints::activated(int iMsg) { Q_UNUSED(iMsg); + // get the selection std::vector selection; selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId()); + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + SketcherGui::ReleaseHandler(doc); + // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -361,6 +378,7 @@ void CmdSketcherSelectOrigin::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); // ViewProviderSketch * vp = static_cast(Gui::Application::Instance->getViewProvider(docobj)); @@ -404,6 +422,7 @@ void CmdSketcherSelectVerticalAxis::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -445,6 +464,7 @@ void CmdSketcherSelectHorizontalAxis::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -485,6 +505,7 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -536,6 +557,7 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); @@ -587,6 +609,7 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg) Q_UNUSED(iMsg); std::vector selection = Gui::Selection().getSelectionEx(); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -706,6 +729,7 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg) Q_UNUSED(iMsg); getSelection().clearSelection(); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -804,6 +828,11 @@ CmdSketcherRestoreInternalAlignmentGeometry::CmdSketcherRestoreInternalAlignment void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) { Q_UNUSED(iMsg); + + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + SketcherGui::ReleaseHandler(doc); + // get the selection std::vector selection; selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId()); @@ -844,7 +873,7 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) int currentgeoid = Obj->getHighestCurveIndex(); try { - Gui::Command::openCommand("Exposing Internal Geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Exposing Internal Geometry")); Gui::cmdAppObjectArgs(Obj, "exposeInternalGeometry(%d)", GeoId); int aftergeoid = Obj->getHighestCurveIndex(); @@ -893,6 +922,11 @@ CmdSketcherSymmetry::CmdSketcherSymmetry() void CmdSketcherSymmetry::activated(int iMsg) { Q_UNUSED(iMsg); + + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + SketcherGui::ReleaseHandler(doc); + // get the selection std::vector selection; selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId()); @@ -1049,7 +1083,7 @@ void CmdSketcherSymmetry::activated(int iMsg) geoIdList.insert(0, 1, '['); geoIdList.append(1, ']'); - Gui::Command::openCommand("Create symmetric geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create symmetric geometry")); try{ Gui::cmdAppObjectArgs(Obj, @@ -1191,7 +1225,7 @@ public: resetPositionText(); int currentgeoid = static_cast(sketchgui->getObject())->getHighestCurveIndex(); - Gui::Command::openCommand("Copy/clone/move geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Copy/clone/move geometry")); try{ if (Op != SketcherCopy::Move) { @@ -1715,7 +1749,7 @@ public: unsetCursor(); resetPositionText(); - Gui::Command::openCommand("Create copy of geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create copy of geometry")); try { Gui::cmdAppObjectArgs(sketchgui->getObject(), @@ -1930,11 +1964,12 @@ void CmdSketcherDeleteAllGeometry::activated(int iMsg) if (ret == QMessageBox::Yes) { getSelection().clearSelection(); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); try { - Gui::Command::openCommand("Delete all geometry"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Delete all geometry")); Gui::cmdAppObjectArgs(Obj, "deleteAllGeometry()"); Gui::Command::commitCommand(); } @@ -1989,11 +2024,12 @@ void CmdSketcherDeleteAllConstraints::activated(int iMsg) if (ret == QMessageBox::Yes) { getSelection().clearSelection(); Gui::Document * doc= getActiveGuiDocument(); + ReleaseHandler(doc); SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); try { - Gui::Command::openCommand("Delete All Constraints"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Delete All Constraints")); Gui::cmdAppObjectArgs(Obj, "deleteAllConstraints()"); Gui::Command::commitCommand(); } diff --git a/src/Mod/Sketcher/Gui/CommandSketcherVirtualSpace.cpp b/src/Mod/Sketcher/Gui/CommandSketcherVirtualSpace.cpp index 7b6f869e6c..f594483286 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherVirtualSpace.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherVirtualSpace.cpp @@ -152,7 +152,7 @@ void CmdSketcherSwitchVirtualSpace::activated(int iMsg) Sketcher::SketchObject* Obj = sketchgui->getSketchObject(); // undo command open - openCommand("Toggle constraints to the other virtual space"); + openCommand(QT_TRANSLATE_NOOP("Command", "Toggle constraints to the other virtual space")); int successful = SubNames.size(); // go through the selected subelements @@ -160,7 +160,7 @@ void CmdSketcherSwitchVirtualSpace::activated(int iMsg) // only handle constraints if (it->size() > 10 && it->substr(0,10) == "Constraint") { int ConstrId = Sketcher::PropertyConstraintList::getIndexFromConstraintName(*it); - Gui::Command::openCommand("Update constraint's virtual space"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Update constraint's virtual space")); try { Gui::cmdAppObjectArgs(Obj, "toggleVirtualSpace(%d)", ConstrId); } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 1860bf934f..7db982dcb4 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -589,7 +589,7 @@ void DrawSketchHandler::createAutoConstraints(const std::vector if(createowncommand) { // Open the Command - Gui::Command::openCommand("Add auto constraints"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add auto constraints")); } // Iterate through constraints diff --git a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp index 89a54d5e15..21ba1729bf 100644 --- a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp +++ b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include "ViewProviderSketch.h" #include "ui_InsertDatum.h" @@ -81,13 +82,14 @@ void EditDatumDialog::exec(bool atCursor) return; } + Base::Quantity init_val; + QDialog dlg(Gui::getMainWindow()); if (ui_ins_datum == nullptr) { ui_ins_datum.reset(new Ui_InsertDatum); ui_ins_datum->setupUi(&dlg); } double datum = Constr->getValue(); - Base::Quantity init_val; if (Constr->Type == Sketcher::Angle) { datum = Base::toDegrees(datum); @@ -108,6 +110,11 @@ void EditDatumDialog::exec(bool atCursor) ui_ins_datum->label->setText(tr("Diameter:")); ui_ins_datum->labelEdit->setParamGrpPath(QByteArray("User parameter:BaseApp/History/SketcherLength")); } + else if (Constr->Type == Sketcher::Weight) { + dlg.setWindowTitle(tr("Insert weight")); + ui_ins_datum->label->setText(tr("Weight:")); + ui_ins_datum->labelEdit->setParamGrpPath(QByteArray("User parameter:BaseApp/History/SketcherWeight")); + } else if (Constr->Type == Sketcher::SnellsLaw) { dlg.setWindowTitle(tr("Refractive index ratio", "Constraint_SnellsLaw")); ui_ins_datum->label->setText(tr("Ratio n2/n1:", "Constraint_SnellsLaw")); @@ -155,7 +162,10 @@ void EditDatumDialog::exec(bool atCursor) void EditDatumDialog::accepted() { Base::Quantity newQuant = ui_ins_datum->labelEdit->value(); - if (newQuant.isQuantity() || (Constr->Type == Sketcher::SnellsLaw && newQuant.isDimensionless())) { + if( newQuant.isQuantity() || + (Constr->Type == Sketcher::SnellsLaw && newQuant.isDimensionless()) || + (Constr->Type == Sketcher::Weight && newQuant.isDimensionless())) { + // save the value for the history ui_ins_datum->labelEdit->pushToHistory(); diff --git a/src/Mod/Sketcher/Gui/InsertDatum.ui b/src/Mod/Sketcher/Gui/InsertDatum.ui index e33741e15e..52e6baae3a 100644 --- a/src/Mod/Sketcher/Gui/InsertDatum.ui +++ b/src/Mod/Sketcher/Gui/InsertDatum.ui @@ -40,12 +40,6 @@ 0 - - - 0 - 20 - - @@ -63,12 +57,6 @@ 0 - - - 0 - 20 - - Constraint name (available for expressions) diff --git a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc index d559d213e1..03a33af692 100644 --- a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc +++ b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc @@ -232,6 +232,7 @@ icons/splines/Sketcher_BSplineIncreaseDegree.svg icons/splines/Sketcher_BSplineIncreaseKnotMultiplicity.svg icons/splines/Sketcher_BSplineKnotMultiplicity.svg + icons/splines/Sketcher_BSplinePoleWeight.svg icons/splines/Sketcher_BSplinePolygon.svg diff --git a/src/Mod/Sketcher/Gui/Resources/icons/splines/Sketcher_BSplinePoleWeight.svg b/src/Mod/Sketcher/Gui/Resources/icons/splines/Sketcher_BSplinePoleWeight.svg new file mode 100644 index 0000000000..2c38916e9a --- /dev/null +++ b/src/Mod/Sketcher/Gui/Resources/icons/splines/Sketcher_BSplinePoleWeight.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + [agryson] Alexander Gryson + + + Sketcher_Create_Periodic_BSpline + 2017-02-15 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_Toggle_BSpline_Information.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts index bfc637c227..b7fca2138f 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher.ts @@ -55,6 +55,24 @@ + + CmdSketcherBSplinePoleWeight + + + Sketcher + + + + + Show/hide B-spline control point weight + + + + + Switches between showing and hiding the control point weight for all B-splines + + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher - + Clone - + Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher - + Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher - - + Show/hide B-spline information layer - + Show/hide B-spline degree - + Show/hide B-spline control polygon - + Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + + CmdSketcherCompConstrainRadDia - + Sketcher - + Constrain arc or circle - + Constrain an arc or a circle - + Constrain radius - + Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher - + Copy - + Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher - + Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity - + Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher - + Connect edges - + Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher - + Constrain angle - + Fix the angle of a line or the angle between two lines @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher - + Constrain block - + Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher - + Constrain coincident - + Create a coincident constraint on the selected item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher - + Constrain diameter - + Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher - + Constrain distance - + Fix a length of a line or the distance between a line and a vertex @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher - + Constrain horizontal distance - + Fix the horizontal distance between two points or line ends @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher - + Constrain vertical distance - + Fix the vertical distance between two points or line ends @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher - + Constrain equal - + Create an equality constraint between two lines or between circles and arcs @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher - + Constrain horizontally - + Create a horizontal constraint on the selected item @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher - + Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher - + Constrain lock - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex @@ -625,17 +647,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher - + Constrain parallel - + Create a parallel constraint between two lines @@ -643,17 +665,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher - + Constrain perpendicular - + Create a perpendicular constraint between two lines @@ -661,17 +683,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher - + Constrain point onto object - + Fix a point onto an object @@ -679,17 +701,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher - + Constrain radius - + Fix the radius of a circle or an arc @@ -697,17 +719,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher - + Constrain refraction (Snell's law') - + Create a refraction law (Snell's law) constraint between two endpoints of rays and an edge as an interface. @@ -716,17 +738,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher - + Constrain symmetrical - + Create a symmetry constraint between two points with respect to a line or a third point @@ -735,17 +757,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher - + Constrain tangent - + Create a tangent constraint between two entities @@ -753,17 +775,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher - + Constrain vertically - + Create a vertical constraint on the selected item @@ -771,17 +793,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher - + Convert geometry to B-spline - + Converts the selected geometry to a B-spline @@ -789,17 +811,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher - + Copy - + Creates a simple copy of the geometry taking as reference the last selected point @@ -1275,17 +1297,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher - + Decrease B-spline degree - + Decreases the degree of the B-spline @@ -1293,17 +1315,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher - + Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline @@ -1311,17 +1333,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher - + Delete all constraints - + Delete all constraints in the sketch @@ -1329,17 +1351,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher - + Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1401,17 +1423,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher - + Increase B-spline degree - + Increases the degree of the B-spline @@ -1419,17 +1441,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher - + Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline @@ -1538,17 +1560,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher - + Move - + Moves the geometry taking as reference the last selected point @@ -1574,17 +1596,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher - + Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1611,17 +1633,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher - + Show/hide internal geometry - + Show all internal geometry or hide unused internal geometry @@ -1629,13 +1651,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher - - + + Select conflicting constraints @@ -1643,17 +1665,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher - + Select associated constraints - + Select the constraints associated with the selected geometrical elements @@ -1661,17 +1683,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher - + Select associated geometry - + Select the geometrical elements associated with the selected constraints @@ -1679,17 +1701,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher - + Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1697,17 +1719,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher - + Select horizontal axis - + Select the local horizontal axis of the sketch @@ -1715,17 +1737,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher - + Select origin - + Select the local origin point of the sketch @@ -1733,13 +1755,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher - - + + Select redundant constraints @@ -1747,17 +1769,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher - + Select vertical axis - + Select the local vertical axis of the sketch @@ -1801,17 +1823,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher - + Symmetry - + Creates symmetric geometry with respect to the last selected line or point @@ -1819,17 +1841,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher - + Activate/deactivate constraint - + Activates or deactivates the selected constraints @@ -1855,17 +1877,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher - + Toggle driving/reference constraint - + Set the toolbar, or the selected constraints, into driving or reference mode @@ -1954,6 +1976,246 @@ invalid constraints, degenerated geometry, etc. + + Command + + + + Add horizontal constraint + + + + + + + Add horizontal alignment + + + + + + Add vertical constraint + + + + + Add vertical alignment + + + + + Add 'Lock' constraint + + + + + Add relative 'Lock' constraint + + + + + Add fixed constraint + + + + + Add 'Block' constraint + + + + + Add block constraint + + + + + + + Add coincident constraint + + + + + Swap edge tangency with ptp tangency + + + + + + 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 length 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 + + + + + + + + + + + Add tangent constraint + + + + + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + + Add tangent constraint point + + + + + + + + Add radius constraint + + + + + + + + Add diameter constraint + + + + + + + + + + Add angle constraint + + + + + + Add equality constraint + + + + + + + + + Add symmetric constraint + + + + + Add Snell's law constraint + + + + + + Add internal alignment constraint + + + + + Toggle constraint to driving/reference + + + + + Activate/Deactivate constraint + + + Exceptions @@ -1992,47 +2254,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + 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. @@ -2101,134 +2363,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2242,136 +2504,136 @@ invalid constraints, degenerated geometry, etc. - - - - + + + + Dimensional constraint - - - + + + Only sketch and its support is allowed to select - + One of the selected has to be on the sketch - - + + 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! - + The selected item(s) can't accept a horizontal constraint! - + There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical 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 @@ -2386,160 +2648,160 @@ invalid constraints, degenerated geometry, etc. - + 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. - - - - - - - - + + + + + + + + Error - + Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. - - + + Constraint Substitution - + Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. - - + + Select exactly one line or one point and one line or two points from the sketch. - + Cannot add a length constraint on an axis! - + This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + 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. - - + + Select at least two lines from the sketch. - + Select 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. @@ -2547,45 +2809,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Select some geometry from the sketch. perpendicular constraint - + Wrong number of selected objects! perpendicular constraint - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint - - + + Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. - + 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. @@ -2593,249 +2855,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + Select some geometry from the sketch. tangent constraint - + Wrong number of selected objects! tangent constraint - - - + + + Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. - - + + Constrain equal - + Do you want to share the same radius for all selected elements? - - + + Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. - - + + Parallel lines - - + + An angle constraint cannot be set for two parallel lines. - + 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 - + Cannot create constraint with external geometry only. - + Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. - + Number of selected objects is not 3 (is %1). - - + + Select at least one ellipse and one edge from the sketch. - + Sketch axes cannot be used in internal alignment constraint - - + + Maximum 2 points are supported. - - + + Maximum 2 lines are supported. - - + + Nothing to constrain - - - - + + + + Extra elements - - - + + + More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. @@ -2848,124 +3110,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error - + None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. - + Input Error - - + + None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. - - + + One selected edge is not connectable - + Closing a shape formed by exactly two lines makes no sense. - - - - - - - - + + + + + + + + Select elements from a single sketch. - + No constraint selected - + At least one constraint must be selected - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element - + Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints - + Are you really sure you want to delete all the constraints? @@ -3026,62 +3288,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value - + Toggle to/from reference - + Deactivate - + Activate - + Show constraints - + Hide constraints - + Rename - + Center sketch - + Delete - + Swap constraint names - + Unnamed constraint - + Only the names of named constraints can be swapped. @@ -3104,8 +3366,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - - + + Radius: @@ -3116,8 +3378,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - - + + Diameter: @@ -3145,24 +3407,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - - + + Change radius - - + + Change diameter - + Refractive index ratio - + Ratio n2/n1: @@ -4020,13 +4282,13 @@ However, no constraints linking to the endpoints were found. - + Constraints - - + + Error @@ -4384,104 +4646,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch - + Over-constrained sketch - - - + + + (click to select) - + Sketch contains conflicting constraints - + Sketch contains redundant constraints - + Fully constrained sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec - + Unsolved (%1 sec) @@ -4489,8 +4751,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines @@ -4498,8 +4760,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline @@ -4507,8 +4769,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines @@ -4516,8 +4778,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline @@ -4525,17 +4787,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines @@ -4543,8 +4814,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point @@ -4552,17 +4823,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone - + Copy - + Move @@ -4570,8 +4841,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc @@ -4579,8 +4850,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc @@ -4588,8 +4859,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point @@ -4831,8 +5102,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.qm index 4ff5bd475b..38d9410ca9 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.ts index 8244650c7c..bb25c26023 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_af.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketser + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketser - + Clone Kloon - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketser - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketser - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketser - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Dwingradius - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketser - + Copy Kopieer - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketser - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketser - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketser - + Constrain angle Dwinghoek - + Fix the angle of a line or the angle between two lines Vries die hoek van 'n lyn of die hoek tussen twee lyne @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketser - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketser - + Constrain coincident Beperk samevalling - + Create a coincident constraint on the selected item Skep 'n samevallende beperking op die gekose item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketser - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketser - + Constrain distance Beperk afstand - + Fix a length of a line or the distance between a line and a vertex Herstel 'n lynlengte of afstand tussen 'n lyn en 'n hoekpunt @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketser - + Constrain horizontal distance Beperk horisontale afstand - + Fix the horizontal distance between two points or line ends Hou die horisontale afstand tussen twee punte of lyneindpunte konstant @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketser - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Hou die vertikale afstand tussen twee punte of lyneindpunte konstant @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketser - + Constrain equal Dwing ewe veel - + Create an equality constraint between two lines or between circles and arcs Skep 'n gelykheidsbeperking tussen twee lyne of tussen sirkels en boë @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketser - + Constrain horizontally Beperk horisontaal - + Create a horizontal constraint on the selected item Skep 'n horisontale beperking op die gekose item @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketser - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketser - + Constrain lock Beperk sluiting - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketser - + Constrain parallel Beperk parallel - + Create a parallel constraint between two lines Skep 'n parallelle beperking tussen twee lyne @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketser - + Constrain perpendicular Dwing loodreg - + Create a perpendicular constraint between two lines Create a perpendicular constraint between two lines @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketser - + Constrain point onto object Beperk die punt tot die voorwerp - + Fix a point onto an object Heg 'n punt aan 'n voorwerp @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketser - + Constrain radius Dwingradius - + Fix the radius of a circle or an arc Sluit vas die radius van 'n sirkel of 'n boog @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketser - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketser - + Constrain symmetrical Dwing simmetries - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketser - + Constrain tangent Dwingraaklyn - + Create a tangent constraint between two entities Skep 'n tangensiale beperking tussen die twee entiteite @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketser - + Constrain vertically Beperk vertikaal - + Create a vertical constraint on the selected item Skep 'n vertikale beperking op die gekose item @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketser - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketser - + Copy Kopieer - + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketser - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketser - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketser - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketser - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketser - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketser - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketser - + Move Verskuif - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketser - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketser - + Show/hide internal geometry Show/hide internal geometry - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketser - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketser - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketser - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketser - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketser - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketser - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketser - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketser - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketser - + Symmetry Symmetry - + Creates symmetric geometry with respect to the last selected line or point Creates symmetric geometry with respect to the last selected line or point @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketser - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketser - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Kies die kant(e) van die skets. - - - - + + + + Dimensional constraint Dimensionele beperking - - - + + + Only sketch and its support is allowed to select Slegs die skets en sy ondersteuning mag gekies word - + One of the selected has to be on the sketch Een van die keuses moet op die skets wees - - + + Select an edge from the sketch. Kies 'n rand in die skets. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Onmoontlike beperking - - - - + + + + The selected edge is not a line segment Die gekose rand is nie 'n lynsegment nie - - - - - - + + + + + + Double constraint Dubbele beperking - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! The selected item(s) can't accept a horizontal constraint! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! The selected item(s) can't accept a vertical 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Fout - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Select two or more vertexes from the sketch. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Kies hoekpunte in die skets. - - + + Select exactly one line or one point and one line or two points from the sketch. Kies presies een lyn of een punt en een lyn of twee punte uit die skets. - + Cannot add a length constraint on an axis! Cannot add a length constraint on an axis! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Kies presies een lyn of tot twee punte uit die skets. - + Cannot add a horizontal length constraint on an axis! 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 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. Kies twee of meer lyne van die skets. - - + + Select at least two lines from the sketch. Kies ten minste twee lyne van die skets. - + Select a valid line Kies 'n geldige lyn - - + + The selected edge is not a valid line Die gekose kant is nie 'n geldige lyn nie - + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. perpendicular constraint Select some geometry from the sketch. - + Wrong number of selected objects! perpendicular constraint Wrong number of selected objects! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint With 3 objects, there must be 2 curves and 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. One of the selected edges should be a line. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Select some geometry from the sketch. - + Wrong number of selected objects! tangent constraint Wrong number of selected objects! - - - + + + Cannot add a tangency constraint at an unconnected point! Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Select one or more arcs or circles from the sketch. - - + + Constrain equal Dwing ewe veel - + Do you want to share the same radius for all selected elements? Do you want to share the same radius for all selected elements? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Select one or two lines from the sketch. Or select two edges and a point. - - + + Parallel lines Parallel lines - - + + An angle constraint cannot be set for two parallel lines. An angle constraint cannot be set for two parallel lines. - + Cannot add an angle constraint on an axis! Cannot add an angle constraint on an axis! - + Select two edges from the sketch. Kies twee kante van die skets. - - + + 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. 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! 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Selected objects are not just geometry from one sketch. - + Number of selected objects is not 3 (is %1). Number of selected objects is not 3 (is %1). - - + + Select at least one ellipse and one edge from the sketch. Select at least one ellipse and one edge from the sketch. - + Sketch axes cannot be used in internal alignment constraint Sketch axes cannot be used in internal alignment constraint - - + + Maximum 2 points are supported. Maximum 2 points are supported. - - + + Maximum 2 lines are supported. Maximum 2 lines are supported. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Extra elements - - - + + + More elements than possible for the given ellipse were provided. These were ignored. More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Select at least two edges from the sketch. - - + + One selected edge is not connectable One selected edge is not connectable - + Closing a shape formed by exactly two lines makes no sense. Closing a shape formed by exactly two lines makes no sense. - - - - - - - - + + + + + + + + Select elements from a single sketch. Select elements from a single sketch. - + No constraint selected No constraint selected - + At least one constraint must be selected At least one constraint must be selected - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Verander waarde - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Hernoem - + Center sketch Center sketch - + Delete Vee uit - + Swap constraint names Swap constraint names - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert radius - - + + Radius: Radius: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Lengte: - - + + Change radius Change radius - - + + Change diameter Change diameter - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Beperkings - - + + Error Fout @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< SketcherGui::ViewProviderSketch - + Edit sketch Wysig skets - + A dialog is already open in the task panel 'n Dialoog is reeds oop in die taakpaneel - + Do you want to close this dialog? Wil jy hierdie dialoog toe maak? - + Invalid sketch Invalid sketch - + Do you want to open the sketch validation tool? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. The sketch is invalid and cannot be edited. - + Please remove the following constraint: Please remove the following constraint: - + Please remove at least one of the following constraints: Please remove at least one of the following constraints: - + Please remove the following redundant constraint: Please remove the following redundant constraint: - + Please remove the following redundant constraints: Please remove the following redundant constraints: - + Empty sketch Empty sketch - + Over-constrained sketch Over-constrained sketch - - - + + + (click to select) (click to select) - + Sketch contains conflicting constraints Sketch contains conflicting constraints - + Sketch contains redundant constraints Sketch contains redundant constraints - + Fully constrained sketch Fully constrained sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Solved in %1 sec - + Unsolved (%1 sec) Unsolved (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Kloon - + Copy Kopieer - + Move Verskuif @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Sluit vas die radius van 'n sirkel of 'n boog @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.qm index 2080eed5d9..7d716369f5 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.ts index b0343308b8..a63f79a34b 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ar.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone استنساخ - + Creates a clone of the geometry taking as reference the last selected point يقوم بإستنساخ الشكل الهندسي مع أخذ أخر نقطة تم إختيارها كمرجع @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius تقييد الشعاع - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy نسخ - + Creates a clone of the geometry taking as reference the last selected point يقوم بإستنساخ الشكل الهندسي مع أخذ أخر نقطة تم إختيارها كمرجع @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle تقييد الزاوية - + Fix the angle of a line or the angle between two lines ضبط زاوية خط ما أو الزاوية بين خطين @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Constrain coincident - + Create a coincident constraint on the selected item Create a coincident constraint on the selected item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance تقييد المسافة - + Fix a length of a line or the distance between a line and a vertex ضبط طول خط ما أو المسافة الفاصلة بين الخط وقمة الرأس @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends ضبط المسافة الأفقية بين نقطتين أو نهايات الخط @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends ضبط المسافة العمودية بين نقطتين أو نهايات الخط @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Constrain equal - + Create an equality constraint between two lines or between circles and arcs Create an equality constraint between two lines or between circles and arcs @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally تقييد أفقي - + Create a horizontal constraint on the selected item إنشاء تقييد أفقي على العنصر المختار @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Constrain lock - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Constrain parallel - + Create a parallel constraint between two lines Create a parallel constraint between two lines @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Constrain perpendicular - + Create a perpendicular constraint between two lines إنشاء تقييد عمودي بين خطين @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Constrain point onto object - + Fix a point onto an object Fix a point onto an object @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius تقييد الشعاع - + Fix the radius of a circle or an arc ضبط شعاع دائرة أو قوس @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Constrain symmetrical - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent تقييد المماس - + Create a tangent constraint between two entities إنشاء تقييد للمماس بين كِيَانَيْن @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Constrain vertically - + Create a vertical constraint on the selected item Create a vertical constraint on the selected item @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy نسخ - + Creates a simple copy of the geometry taking as reference the last selected point يقوم بإنشاء نسخة بسيطة للشكل الهندسي مع الأخذ كمرجع آخر نقطة تم إختيارها @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline يرفع من درجة المنحنى B @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move نقل - + Moves the geometry taking as reference the last selected point يُحَرِّكُ الشكل الهندسي مع أخذ أخر نقطة تم إختيارها كمرجع @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry إظهار/إخفاء الأشكال الهندسية الداخلية - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry التماثل - + Creates symmetric geometry with respect to the last selected line or point Creates symmetric geometry with respect to the last selected line or point @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. إن الإصدار الحالي لـ OCE/OCC لا يدعم عملية العقدة. يجب أن تتوفر على الإصدار 6.9.0 أو أعلى. - + 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. 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 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 is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. إختيار حافة(حواف) من الرسمة. - - - - + + + + Dimensional constraint Dimensional constraint - - - + + + Only sketch and its support is allowed to select Only sketch and its support is allowed to select - + One of the selected has to be on the sketch يجب على واحد من العناصر المختارة أن يكون على الرسمة - - + + Select an edge from the sketch. إختيار حافة من الرسمة. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Impossible constraint - - - - + + + + The selected edge is not a line segment إن الحافة التي تم إختيارها ليست عبارة عن شريحة خط - - - - - - + + + + + + Double constraint 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! The selected edge already has a Block constraint! - + The selected item(s) can't accept a horizontal constraint! العنصر(العناصر) الذي قمت باختياره لا يقبل تقييداً أفقياً! - + There are more than one fixed point selected. Select a maximum of one fixed point! لقد تم إختيار أكثر من نقطة تابثة واحدة. قم بإختيار نقطة تابثة واحدة كحد أقصى! - + The selected item(s) can't accept a vertical 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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 only edges from the sketch. إختيار الحواف فقط من الرسمة. - - - - - - - - + + + + + + + + Error خطأ - + Select two or more points from the sketch. قم باختيار نقطتين أو أكثر من الرسمة. - - + + Select two or more vertexes from the sketch. قم بإختيار إثنان أو أكثر من قمم الرؤوس من الرسمة. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. إختيار قمم الرأس من الرسمة. - - + + Select exactly one line or one point and one line or two points from the sketch. قم بإختيار خط واحد أو نقطة واحدة وخط واحد أو نقطتين بالضبط من الرسمة. - + Cannot add a length constraint on an axis! لا يمكن إضافة تقييد للطول على محور! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. قم باختيار العناصر الصحيحة من الرسمة. - - + + Point on B-spline edge currently unsupported. إن خاصية نقطة على حافة منحنى الـ B غير مدعومة حاليا. - - + + 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. لا تتوفر أي واحدة من النقاط التي تم إختيارها على تقييد بالمنحنيات التي تنتمي إليها، وهذا راجع لأنهم جزء من نفس العنصر، أو لأن كلاهما عبارة عن أشكال هندسية خارجية. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. قم بإختيار نقطة واحدة وعدة منحنيات، أو منحنى واحد وعدة نقط. لقد قمت باختيار %1 منحنى و %2 نقطة. - - - - + + + + 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! 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! Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. قم بإختيار خطين أو أكثر من الرسمة. - - + + Select at least two lines from the sketch. قم بإختيار خطين على الأقل من الرسمة. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c التركيبات المقبولة: منحنيان؛ نقطة نهاية ومنحنى؛ نقطتي نهاية؛ منحنيان ونقطة. - + Select some geometry from the sketch. perpendicular constraint قم بإختيار بعض الأشكال الهندسية من الرسمة. - + Wrong number of selected objects! perpendicular constraint عدد العناصر المختارة غير صحيح! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint With 3 objects, there must be 2 curves and 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. واحد من الحواف المختارة يجب أن يكون عبارة عن خط. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c التركيبات المقبولة: منحنيان؛ نقطة نهاية ومنحنى؛ نقطتي نهاية؛ منحنيان ونقطة. - + Select some geometry from the sketch. tangent constraint قم بإختيار بعض الأشكال الهندسية من الرسمة. - + Wrong number of selected objects! tangent constraint عدد العناصر المختارة غير صحيح! - - - + + + Cannot add a tangency constraint at an unconnected point! Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. إختيار قوس أو أكثر أو دوائر من الرسمة. - - + + Constrain equal Constrain equal - + Do you want to share the same radius for all selected elements? هل تريد منح نفس الشعاع لجميع العناصر التي تم إختيارها؟ - - + + Constraint only applies to arcs or circles. يمكن تطبيق التقييد على الأقواس والدوائر فقط. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. قم باختيار خط أو خطين من الرسمة. أو قم باختيار حافتين ونقطة. - - + + Parallel lines خطوط متوازية - - + + An angle constraint cannot be set for two parallel lines. إن تقييد الزاوية لا يمكن تعيينه على خطين متوازيين. - + 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 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. العناصر المختارة ليست أشكال هندسية من رسمة واحدة فقط. - + Number of selected objects is not 3 (is %1). عدد العناصر المختارة ليس 3 (إنه %1). - - + + Select at least one ellipse and one edge from the sketch. قم بإختيار إهليج واحد وحافة واحدة على الأقل من الرسمة. - + Sketch axes cannot be used in internal alignment constraint لا يمكن إستعمال محاور الرسمة في تقييد المحاذاة الداخلي - - + + Maximum 2 points are supported. يتم دعم نقطتين كحد أقصى. - - + + Maximum 2 lines are supported. يتم دعم خطين كحد أقصى. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Extra elements - - - + + + More elements than possible for the given ellipse were provided. These were ignored. More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. حاليا، الأشكال الهندسية الداخلية مدعومة فقط بالنسبة للإهليج أو قوس الإهليج. إن آخر عنصر (element) الذي تم إختياره، يجب أن يكون عبارة عن إهليج أو قوس إهليج. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. لا توجد أية حافة ضمن العناصر المختارة. - - + + At least one of the selected objects was not a B-Spline and was ignored. واحد على الأقل من العناصر المختارة ليس عبارة عن منحنى B وقد تم تجاهله. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher إن الإصدار الحالي لـ OCE/OCC لا يدعم عملية العقدة. يجب أن تتوفر على الإصدار 6.9.0 أو أعلى - - + + The selection comprises more than one item. Please select just one knot. إن الإختيار يحتوي على أكثر من عنصر. المرجو إختيار عقدة واحدة فقط. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline ولا واحد من العناصر المختارة هو عبارة عن عقدة منحنى B - - - - + + + + Select at least two edges from the sketch. قم باختيار حافتين على الأقل من الرسمة. - - + + One selected edge is not connectable One selected edge is not connectable - + Closing a shape formed by exactly two lines makes no sense. Closing a shape formed by exactly two lines makes no sense. - - - - - - - - + + + + + + + + Select elements from a single sketch. قم بإختيار العناصر من رسمة واحدة. - + No constraint selected لم يتم اختيار أي تقييد - + At least one constraint must be selected يجب اختيار تقييد واحد على الأقل - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. إن البناء المتماثل يتطلب عنصرين(element) هندسيين على الأقل، وأن يكون أخر عنصر هندسي هو المرجع بالنسبة للبناء المتماثل. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry حذف جميع الأشكال الهندسية - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value تغيير القيمة - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints إظهار التقييدات - + Hide constraints إخفاء التقييدات - + Rename إعادة التسمية - + Center sketch توسيط الرسمة - + Delete حذف - + Swap constraint names Swap constraint names - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c إدراج شعاع - - + + Radius: الشعاع: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: قطر الدائرة: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Length: - - + + Change radius Change radius - - + + Change diameter Change diameter - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error خطأ @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 Invalid sketch - + Do you want to open the sketch validation tool? 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 constraint: - + Please remove the following redundant constraints: Please remove the following redundant constraints: - + Empty sketch Empty sketch - + Over-constrained sketch Over-constrained sketch - - - + + + (click to select) (إضغط من أجل الإختيار) - + Sketch contains conflicting constraints Sketch contains conflicting constraints - + Sketch contains redundant constraints Sketch contains redundant constraints - + Fully constrained sketch Fully constrained sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Solved in %1 sec - + Unsolved (%1 sec) Unsolved (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines التبديل بين إظهار وإخفاء الدرجة بين كل منحنيات الـ B @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point يقوم بإستنساخ الشكل الهندسي مع أخذ أخر نقطة تم إختيارها كمرجع @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone استنساخ - + Copy نسخ - + Move نقل @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc ضبط شعاع دائرة أو قوس @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point يقوم بإنشاء نسخة بسيطة للشكل الهندسي مع الأخذ كمرجع آخر نقطة تم إختيارها @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point يُحَرِّكُ الشكل الهندسي مع أخذ أخر نقطة تم إختيارها كمرجع diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.qm index b90bc6dc5e..438c247c4d 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts index 99e80d2986..7328166c6a 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ca.ts @@ -55,6 +55,24 @@ Canvia entre mostrar i amagar la multiplicitat del nus per a totes les B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clona - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Mostra/Amaga la capa d'informació del B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copia - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifica la multiplicitat del nus - + Modifies the multiplicity of the selected knot of a B-spline Modifica la multiplicitat del nus seleccionat d'un B-spline - + Increase knot multiplicity Augmenta la multiplicitat del nus - + Decrease knot multiplicity Redueix la multiplicitat del nus @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Restricció coincident - + Create a coincident constraint on the selected item Crea una restricció coincident en l'element seleccionat @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + 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 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Restricció de distància - + Fix a length of a line or the distance between a line and a vertex Fixa una longitud d'una línia o la distància entre una línia i un vèrtex @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Restricció horitzontal - + Create a horizontal constraint on the selected item Crea una restricció horitzontal en l'element seleccionat @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Restringeix un element per a alinear-lo amb la geometria interna d'un altre element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Restricció de bloqueig - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Restricció de parel·lelisme - + Create a parallel constraint between two lines Crea una restricció de paral·lelisme entre dues línies @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Restricció de perpendicularitat - + Create a perpendicular constraint between two lines Crea una restricció de perpendicularitat entre dues línies @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Restricció d'un punt sobre l'objecte - + Fix a point onto an object Fixa un punt sobre un objecte @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Restricció del radi - + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Restricció de la refracció (llei d'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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + 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 @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Restricció tangent - + Create a tangent constraint between two entities Crea una restricció tangent entre dues entitats @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Restricció veertical - + Create a vertical constraint on the selected item Crea una restricció vertical en l'element seleccionat @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copia - + Creates a simple copy of the geometry taking as reference the last selected point Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Redueix la multiplicitat del nus - + Decreases the multiplicity of the selected knot of a B-spline Redueix la multiplicitat del nus seleccionat d'un B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Augmenta el grau del B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Augmenta la multiplicitat del nus - + Increases the multiplicity of the selected knot of a B-spline Augmenta la multiplicitat del nus seleccionat d'un B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Mou - + Moves the geometry taking as reference the last selected point Mou la geometria prenent com a referència l'últim punt seleccionat @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Crea un patró de matriu rectangular de la geometria prenent com a referència l'últim punt seleccionat @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Mostra o amaga la geometria interna - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetria - + Creates symmetric geometry with respect to the last selected line or point Crea una geometria simètrica respecte a l'última línia o punt seleccionats @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. Probar d'afegir una restricció coincident entre els vèrtexs de les corbes que esteu intentant arrodonir. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Aquesta versió d' OCE/OCC no permet operacions de nus. Necessiteu 6.9.0 o posteriors. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Seleccioneu aresta/es de l'esbós - - - - + + + + Dimensional constraint Restricció de dimensió - - - + + + Only sketch and its support is allowed to select Només es permet seleccionar l'esbós i el seu suport - + One of the selected has to be on the sketch Un dels elements seleccionats ha d'estar en l'esbós - - + + 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 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! - + The selected item(s) can't accept a horizontal constraint! El/s element/s seleccionat/s no poden acceptar una restricció horitzontal! - + There are more than one fixed point selected. Select a maximum of one fixed point! Hi ha més d'un punt fix seleccionat. Seleccioneu un màxim d'un punt fix! - + The selected item(s) can't accept a vertical constraint! El/s element/s seleccionat/s no poden acceptar una restricció vertical! - + 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 de l'esbós. - + Select one vertex from the sketch other than the origin. Seleccioneu un vèrtex de l'esbós 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 del Solver incorrecte @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Error - + Select two or more points from the sketch. Seleccioneu una o més punts de l'esbós. - - + + Select two or more vertexes from the sketch. Seleccioneu un o més vèrtexs de l'esbós. - - + + Constraint Substitution Substitucions de restricions - + Endpoint to endpoint tangency was applied instead. En el seu lloc s'ha aplicat una tangència entre extrems. - + Select vertexes from the sketch. Seleccioneu vèrtexs de l'esbós. - - + + 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! - + This constraint does not make sense for non-linear curves Aquesta restricció no té sentit per a corbes no lineals - - - - - - + + + + + + Select the right things from the sketch. Seleccioneu els elements correctes de l'esbós. - - + + Point on B-spline edge currently unsupported. Actualment no s'admet un punt sobre la vora del B-spline. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Seleccioneu o un punt i diverses corbes, o una corba i diversos punts. Heu seleccionat Corbes %1 i %2 punts. - - - - + + + + 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 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 sobre 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 una o més línies de l'esbós. - - + + Select at least two lines from the sketch. Seleccioneu almenys dues línies de l'esbós. - + Select a valid line Seleccioneu una línia vàlida - - + + 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. @@ -2557,45 +2819,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint El nombre d'objectes seleccionats és incorrecte! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Amb 3 objectes, hi ha d'haver 2 corbes i 1 punt. - - + + Cannot add a perpendicularity constraint at an unconnected point! No es pot afegir una restricció de perpendicularitat en un punt no connectat! - - - + + + Perpendicular to B-spline edge currently unsupported. Actualment no s'admet una perpendicular a la vora del B-spline. - - + + One of the selected edges should be a line. Una de les arestes seleccionades ha de ser una línia. - + 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. @@ -2603,249 +2865,249 @@ 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. - + Wrong number of selected objects! tangent constraint El nombre d'objectes seleccionats és incorrecte! - - - + + + Cannot add a tangency constraint at an unconnected point! No es pot afegir una restricció de tangència en un punt no connectat! - - - + + + Tangency to B-spline edge currently unsupported. Actualment no s'admet la tangència a la vora del B-spline. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Seleccioneu un o diversos arcs o cercles de l'esbós. - - + + Constrain equal Restricció igual - + Do you want to share the same radius for all selected elements? Voleu compartir el mateix radi per a tots els elements seleccionats? - - + + Constraint only applies to arcs or circles. La restricció només s'aplica a arcs i cercles. - + Do you want to share the same diameter for all selected elements? Voleu compartir el mateix diàmetre per a tots els elements seleccionats? - - + + 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 seleccionar dues vores i un punt. - - + + Parallel lines Línies paral·leles - - + + An angle constraint cannot be set for two parallel lines. 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 Seleccioneu dues o més arestes compatibles - + Sketch axes cannot be used in equality constraints Els eixos de l'esbós no es poden utilitzar en les 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 una 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Els objectes seleccionats no són només geometria d'un esbós. - + Number of selected objects is not 3 (is %1). Nombre d'objectes seleccionats no és 3 (és %1). - - + + Select at least one ellipse and one edge from the sketch. Seleccioneu almenys una el·lipse i un tall de l'esbós. - + Sketch axes cannot be used in internal alignment constraint Els eixos de l'esbós no es poden utilitzar en la restricció d'alineació interna - - + + Maximum 2 points are supported. S'admeten com a màxim 2 punts. - - + + Maximum 2 lines are supported. S'admeten com a màxim 2 línies. - - + + Nothing to constrain No hi ha res per restringir - - - - + + + + Extra elements Elements addicionals - - - + + + More elements than possible for the given ellipse were provided. These were ignored. S'han proporcionat més dels elements possibles per a l'el·lipse donada. S'ignoraran. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. No podeu restringir internament un arc d'el·lipse sobre un altre arc d'el·lipse. Seleccioneu-ne sols un. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. No podeu restringir internament un arc d'el·lipse sobre un altre arc d'el·lipse. Seleccioneu un únic arc d'el·lipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. S'han proporcionat més dels elements possibles per a l'arc d'el·lipse donat. S'ignoraran. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actualment la geometria interna només s'admet per a l'el·lipse i l'arc d'el·lipse. L'últim element seleccionat ha de ser una el·lipse o un arc d'el·lipse. @@ -2858,124 +3120,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Error del nucli del CAD - + None of the selected elements is an edge. Cap dels elements seleccionats és una vora. - - + + At least one of the selected objects was not a B-Spline and was ignored. Com a mínim, un els objectes seleccionats no és una B-Spline i s'ha ignorat. - - + + Wrong OCE/OCC version La versió d'OCE/OCC no és correcta - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Aquesta versió d'OCE/OCC no admet l'operació de nus. Necessiteu la versió 6.9.0 o superior - - + + The selection comprises more than one item. Please select just one knot. La selecció inclou més d'un element. Seleccioneu només un nus. - + Input Error Error d'entrada - - + + None of the selected elements is a knot of a B-spline Cap dels elements seleccionats és un nus d'un B-spline - - - - + + + + Select at least two edges from the sketch. Seleccioneu almenys dues arestes de l'esbós. - - + + One selected edge is not connectable Una aresta seleccionada no és connectable - + Closing a shape formed by exactly two lines makes no sense. Tancar una figura formada per exactament dues línies no té sentit. - - - - - - - - + + + + + + + + Select elements from a single sketch. Seleccioneu elements d'un únic esbós. - + No constraint selected No s'ha seleccionat cap restricció - + At least one constraint must be selected S'ha de seleccionar com a mínim una restricció - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Una construcció simètrica necessita com a mínim dos elements geomètrics, l'últim element geomètric és la referència per a la construcció de la simetria. - + The last element must be a point or a line serving as reference for the symmetry construction. L'últim element ha de ser un punt o una línia que servisca com a referència per a la construcció de la simetria. - - + + A copy requires at least one selected non-external geometric element Una còpia necessita com a mínim que se seleccione un element geomètric no extern - + Delete All Geometry Suprimeix totes les figures geomètriques - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Suprimeix totes les restriccions - + Are you really sure you want to delete all the constraints? Estàs realment segur que voleu suprimir totes les Restriccions? @@ -3036,62 +3298,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Canvia el valor - + Toggle to/from reference Commuta la referència a/des de - + Deactivate Desactiva - + Activate Activa - + Show constraints Mostra les restriccions - + Hide constraints Oculta les restriccions - + Rename Reanomena - + Center sketch Centra l'esbós - + Delete Elimina - + Swap constraint names Intercanvia els noms de restricció - + Unnamed constraint Restricció sense nom - + Only the names of named constraints can be swapped. Només es poden intercanviar els noms de les restriccions anomenades. @@ -3114,8 +3376,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insereix un radi - - + + Radius: Radi: @@ -3126,8 +3388,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insereix un diàmetre - - + + Diameter: Diàmetre: @@ -3155,24 +3417,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Longitud: - - + + Change radius Canvia els radis - - + + Change diameter Canvia el diàmetre - + Refractive index ratio Índex de refracció - + Ratio n2/n1: Relació n2/n1: @@ -4030,13 +4292,13 @@ However, no constraints linking to the endpoints were found. Informació ampliada - + Constraints Constraints - - + + Error Error @@ -4395,104 +4657,104 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l 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 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: - + Empty sketch L'esbós és buit - + Over-constrained sketch Esbós sobre-restringit - - - + + + (click to select) (feu clic per a seleccionar) - + Sketch contains conflicting constraints L'esbós conté restriccions amb conflictes - + Sketch contains redundant constraints L'esbós conté restriccions redundants - + Fully constrained sketch Esbós completament restringit - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Esbós sota restriccions amb<a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 grau</span></a> de llibertat - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Esbós sota restriccions amb<a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 graus</span></a> de llibertat - + Solved in %1 sec Solucionat en %1 s - + Unsolved (%1 sec) Sense solucionar (%1 s) @@ -4500,8 +4762,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Canvia entre mostrar i amagar la Pinta de curvatura per a tots els B-splines @@ -4509,8 +4771,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Redueix la multiplicitat del nus seleccionat d'un B-spline @@ -4518,8 +4780,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Canvia entre mostrar i amagar els graus per a totes les B-splines @@ -4527,8 +4789,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Augmenta la multiplicitat del nus seleccionat d'un B-spline @@ -4536,17 +4798,26 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Canvia entre mostrar i amagar la multiplicitat del nus per a totes les B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Canvia entre mostrar i amagar els polígons de control per a totes les B-splines @@ -4554,8 +4825,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat @@ -4563,17 +4834,17 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_CompCopy - + Clone Clona - + Copy Copia - + Move Mou @@ -4581,8 +4852,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -4590,8 +4861,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -4599,8 +4870,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat @@ -4844,8 +5115,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mou la geometria prenent com a referència l'últim punt seleccionat diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.qm index e8ea43ed1e..0af6371d81 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts index 67f12332f4..5a2bf28908 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_cs.ts @@ -55,6 +55,24 @@ Přepne mezi zobrazením a skrytím násobnosti uzlů pro všechny B-splajny + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Vytvoří klon geometrie, s naposledy vybraným bodem jako referenčním @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Zobrazit/skrýt informační vrstvu B-splajnu - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Vazba oblouku nebo kružnice - + Constrain an arc or a circle Vazba oblouku nebo kružnice - + Constrain radius Zadá poloměr - + Constrain diameter Vazba průměru @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Kopírovat - + Creates a clone of the geometry taking as reference the last selected point Vytvoří klon geometrie, s naposledy vybraným bodem jako referenčním @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifikovat násobnost uzlu - + Modifies the multiplicity of the selected knot of a B-spline Modifikuje násobnost vybraného uzlu B-splajnu - + Increase knot multiplicity Zvýšit násobnost uzlu - + Decrease knot multiplicity Snížit násobnost uzlu @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Vazba totožnosti - + Create a coincident constraint on the selected item Vytvoř vazbu totožnosti na vybranou položku @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Vazba průměru - + Fix the diameter of a circle or an arc Zadá průměr kružnice nebo oblouku @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Vazba vzdálenosti - + Fix a length of a line or the distance between a line and a vertex Fixuj délku úsečky nebo vzdálenost mezi úsečkou a bodem @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Zadá vodorovnou vzdálenost mezi dvěma body nebo konci čáry @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Zadá svislou vzdálenost mezi dvěma body nebo konci čáry @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Zadat jako shodné - + Create an equality constraint between two lines or between circles and arcs Vytvoří zadání rovnosti mezi dvěma čarami, kruhy nebo oblouky @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Vazba horizontálně - + Create a horizontal constraint on the selected item Vytvoř vodorovnou vazbu na vybranou položku @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Vytvoří vazbu elementu s vnitřní geometrií jiného elementu @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Vazba uzamknout - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Vazba rovnoběžnosti - + Create a parallel constraint between two lines Vytvoř vazbu rovnoběžnosti mezi dvěma úsečkami @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Zadání kolmosti - + Create a perpendicular constraint between two lines Vytvoří kolmou vazbu mezi dvěma čarami @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Zadá bod na objektu - + Fix a point onto an object Umístí bod na objekt @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Zadá poloměr - + Fix the radius of a circle or an arc Zadá poloměr kružnice nebo oblouku @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Vazba refrakce (Snellův zákon) - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Zadá jako symetrické - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Zadá tečnost - + Create a tangent constraint between two entities Zadá tečnost mezi dvěma objekty @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Vazba svisle - + Create a vertical constraint on the selected item Vytvoří vazbu svislosti na vybranou položku @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Kopírovat - + Creates a simple copy of the geometry taking as reference the last selected point Vytvoří jednoduchou kopii geometrie s naposledy vybraným bodem jako referenčním @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Snížit násobnost uzlu - + Decreases the multiplicity of the selected knot of a B-spline Snížit násobnost vybraného uzlu B-splajnu @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Zvýšit stupeň B-splajnu @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Zvýšit násobnost uzlu - + Increases the multiplicity of the selected knot of a B-spline Zvýší násobnost vybraného uzlu B-splajnu @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Přesun - + Moves the geometry taking as reference the last selected point Posune geometrii, s naposledy vybraným bodem jako referenčním @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Vytvoří obdélníkové pole se vzorem geometrie a referenčním bodem, který byl naposledy vybrán @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Zobrazit / skrýt vnitřní geometrii - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Symetrie - + Creates symmetric geometry with respect to the last selected line or point Vytvoří symterickou geometrii s ohledem na poslední vybranou čáru nebo bod @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Tato verze OCE/OCC nepodporuje operaci uzel. Potřebujete 6.9.0 nebo vyšší. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Vyberte hrany ze skicy. - - - - + + + + Dimensional constraint Vazba vzdálenosti - - - + + + Only sketch and its support is allowed to select Jen skicu a její podporu je dovoleno vybrat - + One of the selected has to be on the sketch 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á horizontální 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á blokovou vazbu! - + The selected item(s) can't accept a horizontal constraint! Vybrané položky nemohou přijmout vodorovnou vazbu! - + There are more than one fixed point selected. Select a maximum of one fixed point! Je vybráno více pevných bodů. Vyberte nejvýše jeden pevný bod! - + The selected item(s) can't accept a vertical constraint! Vybrané položky nemohou přijmout svislou vazbu! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Vyberte jednu hranu z náčrtu. - + Select only edges from the sketch. Vyberte pouze hrany z náčrtu. - - - - - - - - + + + + + + + + Error Chyba - + Select two or more points from the sketch. Vyberte dva nebo více bodů z náčrtu. - - + + Select two or more vertexes from the sketch. Vyberte dva nebo více vrcholů z náčrtu. - - + + Constraint Substitution Nahrazení vazby - + Endpoint to endpoint tangency was applied instead. Namísto toho byla aplikována tečnost v koncových bodech. - + Select vertexes from the sketch. Vyberte vrcholy ze skici. - - + + 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 ze skici. - + Cannot add a length constraint on an axis! Nelze přidat délkovou vazbu osy! - + This constraint does not make sense for non-linear curves Tato vazba nemá smysl pro nelineární křivky - - - - - - + + + + + + Select the right things from the sketch. Výberte správné věci z náčrtu. - - + + Point on B-spline edge currently unsupported. Bod na hraně B-splajnu momentálně není podporován. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Vyberte buď jeden bod a několik křivek nebo jednu křivku a několik bodů. Máte vybráno %1 křivek a %2 bodů. - - - - + + + + Select exactly one line or up to two points from the sketch. Vyberte právě jednu úsečku nebo až dva body ze skici. - + 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 ze skici. - - + + Select at least two lines from the sketch. Vyberte nejméně dvě úsečky ze skici. - + Select a valid line Vyberte platnou úsečku - - + + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Nesprávný počet vybraných objektů! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Mezi třemi objekty musí být 2 křivky a 1 bod. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nelze přidat kolmou vazbu na volný bod! - - - + + + Perpendicular to B-spline edge currently unsupported. Kolmost na hranu B-splajnu momentálně není podpofována. - - + + One of the selected edges should be a line. Jedna z vybraných hran by měla být úsečka. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Nesprávný počet vybraných objektů! - - - + + + Cannot add a tangency constraint at an unconnected point! Nelze přidat tangentní vazbu na volný bod! - - - + + + Tangency to B-spline edge currently unsupported. Tangentnost na hranu B-splajnu momentálně není podporována. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Byla aplikována tečnost v koncových bodech. Vazba shodnosti byla smazána. - - - - + + + + Select one or more arcs or circles from the sketch. Vyberte jeden nebo více oblouků nebo kružnic z náčrtu. - - + + Constrain equal Zadat jako shodné - + Do you want to share the same radius for all selected elements? Má být poloměr stejný pro všechny vybrané elementy? - - + + Constraint only applies to arcs or circles. Vazbu lze použít jen na oblouky nebo kružnice. - + Do you want to share the same diameter for all selected elements? Má být stejný stejný pro všechny vybrané elementy? - - + + 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. - - + + Parallel lines Rovnoběžné úsečky - - + + An angle constraint cannot be set for two parallel lines. Ú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 ze skici. - - + + Select two or more compatible edges Vyberte dvě nebo více kompatibilních hran - + Sketch axes cannot be used in equality constraints Osy skici nemohou být použity ve vazbě 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 stejné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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Vybrané objekty nejsou geometrií jednoho náčrtu. - + Number of selected objects is not 3 (is %1). Počet vybraných objektu není 3 (vybráno je %1). - - + + Select at least one ellipse and one edge from the sketch. Vyberte alespoň jednu elipsu a jednu hranu z náčrtu. - + Sketch axes cannot be used in internal alignment constraint Osy náčrtu nelze použít ve vazbách vnitřního uspořádání - - + + Maximum 2 points are supported. Jsou podporovány maximálně 2 body. - - + + Maximum 2 lines are supported. Jsou podporovány maximálně dvě čáry. - - + + Nothing to constrain Není co vazbit - - - - + + + + Extra elements Dodatečné elementy - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Bylo poskytnuto více elementů, než bylo pro danou elipsu možné. Tyto byly ignorovány. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Nemůžete vnitřně vazbit jeden oblouk elipsy k druhému. Vyberte pouze jeden oblouk elipsy. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Nemůžete vnitřně vazbit elipsu k oblouku elipsy. Vyberte pouze elipsu nebo oblouk elipsy. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Bylo poskytnuto více elementů, než bylo pro daný oblouk elipsy možné. Tyto byly ignorovány. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Momentálně je vnitřní geometrie podporována jen pro elipsu nebo oblouk elipsy. Naposledy vybraným elementem musí být elipsa nebo oblouk elipsy. @@ -2862,124 +3124,124 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; - + CAD Kernel Error Chyba jádra CADu - + None of the selected elements is an edge. Žádný z vybraných prvků není hrana. - - + + At least one of the selected objects was not a B-Spline and was ignored. Alespoň jeden z vybraných objektů nebyl B-splajn a byl vynechán. - - + + Wrong OCE/OCC version Špatná verze OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Tato verze OCE/OCC nepodporuje uzlové operace. Potřebujete 6.9.0 nebo vyšší - - + + The selection comprises more than one item. Please select just one knot. Výběr obsahuje více než jednu položku. Prosím vyberte právě jeden uzel. - + Input Error Chyba vstupu - - + + None of the selected elements is a knot of a B-spline Žádný z vybraných prvků není uzlem B-splajnu - - - - + + + + Select at least two edges from the sketch. Vyberte alespoň dvě hrany z náčrtu. - - + + One selected edge is not connectable Jedna vybraná hrana není připojitelná - + Closing a shape formed by exactly two lines makes no sense. Uzavření tvaru složeného právě ze dvou úseček nemá smysl. - - - - - - - - + + + + + + + + Select elements from a single sketch. Vyberte elementy z jednoho náčrtu. - + No constraint selected Nebyla vybrána vazba - + At least one constraint must be selected Musí být vybrána alespoň jedna vazba - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Symetrická konstrukce vyžaduje alespoň dva geometrické elementy, poslední geometrický element je referenční pro vytvoření symetrie. - + The last element must be a point or a line serving as reference for the symmetry construction. Posdní element musí být bod nebo čára sloužící jako reference pro symetrickou konstrukci. - - + + A copy requires at least one selected non-external geometric element Kopie vyžaduje alespoň jeden vybraný geometrický element, který není vnější - + Delete All Geometry Smazat veškerou geometrii - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Smazat všechny vazby - + Are you really sure you want to delete all the constraints? Jste si opravdu jisti, že chcete odstranit všechny vazby? @@ -3040,62 +3302,62 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; SketcherGui::ConstraintView - + Change value Změnit hodnotu - + Toggle to/from reference Přepnout referenčnost - + Deactivate Deaktivovat - + Activate Aktivovat - + Show constraints Zobrazit vaztby - + Hide constraints Skrýt vazby - + Rename Přejmenovat - + Center sketch Střed náčrtu - + Delete Odstranit - + Swap constraint names Prohodit názvy vazeb - + Unnamed constraint Nepojmenovaná vazba - + Only the names of named constraints can be swapped. Pouze názvy pojmenovaných vazeb mohou být vyměněny. @@ -3118,8 +3380,8 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Vložit rádius - - + + Radius: Poloměr: @@ -3130,8 +3392,8 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Vložit průměr - - + + Diameter: Průměr: @@ -3159,24 +3421,24 @@ Přijatelné kombinace: dvě křivky; koncový bod a křivka; dva koncové body; Délka: - - + + Change radius Změna poloměru - - + + Change diameter Změnit průměr - + Refractive index ratio Index lomu - + Ratio n2/n1: Poměr n2/n1: @@ -4044,13 +4306,13 @@ Nebyly nalezeny vazby připojené k těmto koncovým bodům. Rozšířené informace - + Constraints Constraints - - + + Error Chyba @@ -4409,104 +4671,104 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc SketcherGui::ViewProviderSketch - + Edit sketch Upravit skicu - + 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: - + Empty sketch Prázdný náčrt - + Over-constrained sketch Přeurčený náčrt - - - + + + (click to select) (klikněte pro vybrání) - + Sketch contains conflicting constraints Náčrt obsahuje konfliktní vazby - + Sketch contains redundant constraints Náčrt obsahuje nadbytečné vazby - + Fully constrained sketch Plně určený náčrt - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Nedovazbený náčrt s <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 stupněm</span></a> volnosti - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Nedovazbený náčrt s <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 stupni</span></a> volnosti - + Solved in %1 sec Vyřešeno behem %1 s - + Unsolved (%1 sec) Nevyřešeno (%1 s) @@ -4514,8 +4776,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Přepnout mezi zobrazením a skrytím křivosti všech B-splajnů @@ -4523,8 +4785,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Snížit násobnost vybraného uzlu B-splajnu @@ -4532,8 +4794,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Přepnout mezi zobrazením a skrytím stupně všech B-splajnů @@ -4541,8 +4803,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Zvýší násobnost vybraného uzlu B-splajnu @@ -4550,17 +4812,26 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Přepne mezi zobrazením a skrytím násobnosti uzlů pro všechny B-splajny + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Přepne mezi zobrazením a skrytím kontrolních polygonů všech B-splajnů @@ -4568,8 +4839,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Vytvoří klon geometrie, s naposledy vybraným bodem jako referenčním @@ -4577,17 +4848,17 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_CompCopy - + Clone Klon - + Copy Kopírovat - + Move Přesun @@ -4595,8 +4866,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Zadá průměr kružnice nebo oblouku @@ -4604,8 +4875,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Zadá poloměr kružnice nebo oblouku @@ -4613,8 +4884,8 @@ Body musejí být blíž než pětina velikosti mřížky, aby došlo k přichyc Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Vytvoří jednoduchou kopii geometrie s naposledy vybraným bodem jako referenčním @@ -4858,8 +5129,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Posune geometrii, s naposledy vybraným bodem jako referenčním diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.qm index 56a7f12431..26d9a8c75c 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts index ce5ab77315..fed06ee434 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_de.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + B-Spline-Krümmungskamm ein- / ausblenden @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + B-Spline-Grad ein- / ausblenden @@ -47,12 +47,30 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Vielfachheit der B-Spline-Knoten ein- / ausblenden Switches between showing and hiding the knot multiplicity for all B-splines - Wechselt zwischen dem Anzeigen und Ausblenden der Knoten-Multiplikation für alle B-Splines + Wechselt zwischen dem Anzeigen und Ausblenden der Knoten-Vielfachheit für alle B-Splines + + + + CmdSketcherBSplinePoleWeight + + + Sketcher + Skizze + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + B-Spline-Kontrollpolygon ein- / ausblenden @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Skizze - + Clone Klonen - + Creates a clone of the geometry taking as reference the last selected point Erstellt einen Klon der Geometrie mit dem zuletzt gewählten Punkt als Referenz @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Skizze - + Close shape - Close shape + Kontur schließen - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Erzeugt eine geschlossene Form durch Verbinden des Endpunktes eines Elements mit dem Startpunkt des nächsten Elements CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Skizze - - + Show/hide B-spline information layer B-Spline-Informationsschicht ein- / ausblenden - + Show/hide B-spline degree - Show/hide B-spline degree + B-Spline-Grad ein- / ausblenden - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + B-Spline-Kontrollpolygon ein- / ausblenden - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + B-Spline-Krümmungskamm ein- / ausblenden - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Vielfachheit der B-Spline-Knoten ein- / ausblenden + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Skizze - + Constrain arc or circle Bogen oder Kreis festlegen - + Constrain an arc or a circle Einen Bogen oder Kreis bemaßen - + Constrain radius Radius festlegen - + Constrain diameter Durchmesser festlegen @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Skizze - + Copy Kopieren - + Creates a clone of the geometry taking as reference the last selected point Erstellt einen Klon der Geometrie mit dem zuletzt gewählten Punkt als Referenz @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Ellipse durch Periapsis, Apoapsis (Endpunkte der Hauptachse), kleinem Radius @@ -380,63 +402,63 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Skizze - + Modify knot multiplicity - Knoten-Multiplikation ändern + Vielfachheit eines Spline-Knotens ändern - + Modifies the multiplicity of the selected knot of a B-spline - Modifiziert die Multiplikation eines ausgewählten Knoten einer B-Spline + Modifiziert die Vielfachheit eines ausgewählten B-Spline-Knotens - + Increase knot multiplicity - Knoten-Multiplikation erhöhen + Vielfachheit eines Spline-Knotens erhöhen - + Decrease knot multiplicity - Knoten-Multiplikation verringern + Vielfachheit eines Spline-Knotens verringern CmdSketcherConnect - + Sketcher Skizze - + Connect edges - Connect edges + Kanten verbinden - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Den Endpunkt des Elements mit dem Startpunkt des nächsten Elements verbinden CmdSketcherConstrainAngle - + Sketcher Skizze - + Constrain angle Winkel festlegen - + Fix the angle of a line or the angle between two lines Winkel einer Linie oder zweier Linien festlegen @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Skizze - + Constrain block - Constrain block + Fixieren - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Fixierung: Ausgewählte Kante unbeweglich machen CmdSketcherConstrainCoincident - + Sketcher Skizze - + Constrain coincident Koinzidenz erzwingen - + Create a coincident constraint on the selected item Eine Koinzidenzbeschränkung für das gewählte Element setzen @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Skizze - + Constrain diameter Durchmesser festlegen - + Fix the diameter of a circle or an arc Leget den Durchmesser eines Kreises oder Bogens fest @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Skizze - + Constrain distance Distanz festlegen - + Fix a length of a line or the distance between a line and a vertex Die Länge einer Linie oder den Abstand einer Linie und eines Vertex festlegen @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Skizze - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Skizze - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Skizze - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Skizze - + Constrain horizontally Horizontal einschränken - + Create a horizontal constraint on the selected item Eine horizontale Beschränkung für das gewählte Element setzen @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Skizze - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Schränkt die Ausrichtung eines Elements bezüglich der internen Geometrie eines anderen Elements ein @@ -606,37 +628,36 @@ CmdSketcherConstrainLock - + Sketcher Skizze - + Constrain lock Sperren - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Sperren: Gleichzeitig den horizontalen und den vertikalen Abstand eines ausgewählten Knotens zum Ursprung festlegen CmdSketcherConstrainParallel - + Sketcher Skizze - + Constrain parallel Parallelität erzwingen - + Create a parallel constraint between two lines Parallelität zwischen zwei Geraden erzwingen @@ -644,17 +665,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Skizze - + Constrain perpendicular Orthogonalität festlegen - + Create a perpendicular constraint between two lines Eine Orthogonalitätsbeschränkung zwischen zwei Linien erstellen @@ -662,17 +683,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Skizze - + Constrain point onto object Punkt auf Objekt festlegen - + Fix a point onto an object Punkt auf ein Objekt festlegen @@ -680,17 +701,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Skizze - + Constrain radius Radius festlegen - + Fix the radius of a circle or an arc Lege Radius eines Kreises oder Bogens fest @@ -698,17 +719,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Skizze - + Constrain refraction (Snell's law') Beschränkung: Lichtbrechung (Snellius-Gesetz) - + 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 @@ -718,37 +739,36 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Skizze - + Constrain symmetrical Symmetrie festlegen - + Create a symmetry constraint between two points with respect to a line or a third point - 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 CmdSketcherConstrainTangent - + Sketcher Skizze - + Constrain tangent Tangente setzen - + Create a tangent constraint between two entities Tangente zwischen zwei Elementen erzwingen @@ -756,17 +776,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Skizze - + Constrain vertically Vertikal einschränken - + Create a vertical constraint on the selected item Eine vertikale Beschränkung für das gewählte Element setzen @@ -774,35 +794,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Skizze - + Convert geometry to B-spline - Convert geometry to B-spline + Geometrie in B-Spline wandeln - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Wandelt die ausgewählte Geometrie in einen B-Spline CmdSketcherCopy - + Sketcher Skizze - + Copy Kopieren - + Creates a simple copy of the geometry taking as reference the last selected point Erstellt eine einfache Kopie der Geometrie von den zuletzt gewählten Punkt @@ -1278,73 +1298,73 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Skizze - + Decrease B-spline degree - Decrease B-spline degree + Grad des B-Splines verringern - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Verringert den Grad des B-Splines CmdSketcherDecreaseKnotMultiplicity - + Sketcher Skizze - + Decrease knot multiplicity - Knoten-Multiplikation verringern + Vielfachheit eines Spline-Knotens verringern - + Decreases the multiplicity of the selected knot of a B-spline - Verringert die Multiplikation eines ausgewählten Knoten einer B-Spline + Verringert die Vielfachheit eines ausgewählten B-Spline-Knotens CmdSketcherDeleteAllConstraints - + Sketcher Skizze - + Delete all constraints - Delete all constraints + Alle Einschränkungen löschen - + Delete all constraints in the sketch - Delete all constraints in the sketch + Alle Einschränkungen in der Skizze löschen CmdSketcherDeleteAllGeometry - + Sketcher Skizze - + Delete all geometry - Delete all geometry + Gesamte Geometrie löschen - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Sämtliche Geometrie und Einschränkungen in der aktuellen Skizze löschen, mit Ausnahme der externen Geometrie @@ -1362,7 +1382,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Ausgewählte Skizze bearbeiten. @@ -1404,17 +1424,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Skizze - + Increase B-spline degree - Increase B-spline degree + Grad des B-Splines erhöhen - + Increases the degree of the B-spline Erhöht den Grad des B-Splines @@ -1422,19 +1442,19 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Skizze - + Increase knot multiplicity - Knoten-Multiplikation erhöhen + Vielfachheit eines Spline-Knotens erhöhen - + Increases the multiplicity of the selected knot of a B-spline - Erhöht die Multiplikation eines ausgewählten Knoten einer B-Spline + Erhöht die Vielfachheit eines ausgewählten B-Spline-Knotens @@ -1452,7 +1472,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Bearbeitung der aktiven Skizze beenden. @@ -1497,7 +1517,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Eine neue Skizze durch das Zusammenführen von zwei oder mehr ausgewählten Skizzen erstellen. @@ -1507,7 +1527,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Mindestens zwei Skizzen auswählen. @@ -1539,23 +1559,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Eine oder mehrere Skizzen auswählen. CmdSketcherMove - + Sketcher Skizze - + Move Verschieben - + Moves the geometry taking as reference the last selected point Verschiebt die Geometrie und verwendet den zuletzt ausgewählten Punkt als Referenz @@ -1575,23 +1595,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Neue Skizze erstellen. CmdSketcherRectangularArray - + Sketcher Skizze - + Rectangular array - Rectangular array + Rechteckige Anordnung - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Erzeugt ein rechteckiges Array der Geometrie mit Bezug auf den zuletzt ausgewählten Punkt @@ -1619,155 +1639,155 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Skizze - + Show/hide internal geometry Anzeigen/Ausblenden der internen Geometrie - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Sämtliche interne Geometrie anzeigen oder ungenutzte interne Geometrie ausblenden CmdSketcherSelectConflictingConstraints - + Sketcher Skizze - - + + Select conflicting constraints - Select conflicting constraints + Wählen widersprüchlicher Einschränkungen CmdSketcherSelectConstraints - + Sketcher Skizze - + Select associated constraints - Select associated constraints + Zugehörige Einschränkungen auswählen - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Einschränkungen auswählen, die zu den ausgewählten geometrischen Elementen gehören CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Skizze - + Select associated geometry - Select associated geometry + Zugehörige Geometrie auswählen - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Die geometrischen Elemente auswählen, die den ausgewählten Einschränkungen zugeordnet sind CmdSketcherSelectElementsWithDoFs - + Sketcher Skizze - + Select unconstrained DoF - Select unconstrained DoF + Nicht eingeschränkte Freiheitsgrade Auswählen - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Geometrische Elemente auswählen, bei denen der Löser noch nicht eingeschränkte Freiheitsgrade erkennt. CmdSketcherSelectHorizontalAxis - + Sketcher Skizze - + Select horizontal axis - Select horizontal axis + Horizontale Achse auswählen - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Die lokale horizontale Achse der Skizze auswählen CmdSketcherSelectOrigin - + Sketcher Skizze - + Select origin - Select origin + Ursprung auswählen - + Select the local origin point of the sketch - Select the local origin point of the sketch + Den lokalen Ursprungspunkt der Skizze auswählen CmdSketcherSelectRedundantConstraints - + Sketcher Skizze - - + + Select redundant constraints - Select redundant constraints + Redundante Einschränkungen auswählen CmdSketcherSelectVerticalAxis - + Sketcher Skizze - + Select vertical axis - Select vertical axis + Vertikale Achse auswählen - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Die lokale vertikale Achse der Skizze auswählen @@ -1809,17 +1829,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Skizze - + Symmetry Symmetrie - + Creates symmetric geometry with respect to the last selected line or point Erstellt eine symmetrische Geometrie mit Bezug auf die zuletzt ausgewählte Linie oder Punkt @@ -1827,17 +1847,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Skizze - + Activate/deactivate constraint - Activate/deactivate constraint + Einschränkung aktivieren/deaktivieren - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1883,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Skizze - + Toggle driving/reference constraint - Toggle driving/reference constraint + Einschränkung zwischen festlegend und anzeigend umschalten - + Set the toolbar, or the selected constraints, into driving or reference mode Set the toolbar, or the selected constraints, @@ -1920,7 +1940,7 @@ invalid constraints, degenerated geometry, etc. Select only one sketch. - Select only one sketch. + Nur eine Skizze auswählen. @@ -1964,6 +1984,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2262,47 @@ invalid constraints, degenerated geometry, etc. Fehler automatische Beschränkungen: 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. Schnittpunkt von Kurven konnte nicht gefunden werden. Versuchen Sie eine Koinzidenz Beschränkung zwischen den Scheitelpunkten der Kurven hinzuzufügen, die Sie verrunden möchten. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Diese Version von OCE/OCC unterstützt keine Knoten-Operationen. Sie benötigen 6.9.0 oder höher. - + 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 Multiplizität kann nicht über den Grad des B-Splines hinaus erhöht werden. + Die Vielfachheit kann nicht über den Grad des B-Splines hinaus erhöht werden. - + The multiplicity cannot be decreased beyond zero. - Die Multiplizität kann nicht über Null hinaus verringert werden. + 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. @@ -2111,134 +2371,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2512,136 @@ invalid constraints, degenerated geometry, etc. Wählen Sie Kante(n) aus der Skizze. - - - - + + + + Dimensional constraint Maßliche Beschränkung - - - + + + Only sketch and its support is allowed to select Nur Skizze und ihre Auflage dürfen ausgewählt werden - + One of the selected has to be on the sketch Eine 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 gewählte Kante ist kein Linienabschnitt - - - - - - + + + + + + Double constraint Doppelbedingung - - - - + + + + The selected edge already has a horizontal constraint! Die ausgewählte Kante hat bereits eine horizontale Einschränkung! - - - - + + + + The selected edge already has a vertical constraint! Die ausgewählte Kante hat bereits eine vertikale Einschränkung! - - - - - - + + + + + + The selected edge already has a Block constraint! Die ausgewählte Kante hat bereits eine fixier Einschränkung! - + The selected item(s) can't accept a horizontal constraint! Die ausgewählten Elemente nehmen keine horizontale Nebenbedingung an! - + There are more than one fixed point selected. Select a maximum of one fixed point! Es ist mehr als ein Fixpunkt ausgewählt. Wähle maximal einen Fixpunkt! - + The selected item(s) can't accept a vertical constraint! Die ausgewählten Elemente nehmen keine vertikale Nebenbedingung an! - + 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. Wählen Sie einen Punkt der Skizze außer den Ursprung. - + Select only vertices from the sketch. The last selected vertex may be the origin. Wählen Sie nur Scheitelpunkte aus der Skizze. Die letzten ausgewählte Scheitelpunkt ist möglicherweise der Ursprung. - + Wrong solver status Falscher Solver Status @@ -2396,160 +2656,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Wähle eine Kante aus der Skizze aus. - + Select only edges from the sketch. Wähle nur Kanten aus der Skizze aus. - - - - - - - - + + + + + + + + Error Fehlermeldungen - + Select two or more points from the sketch. Wählen Sie aus der Skizze zwei oder mehr Punkte aus. - - + + Select two or more vertexes from the sketch. Wählen Sie zwei oder mehr Scheitelpunkte von der Skizze. - - + + Constraint Substitution Beschränkung Ersetzen - + Endpoint to endpoint tangency was applied instead. Die Endpunkt zu Endpunkt Tangente wurde stattdessen angewendet. - + Select vertexes from the sketch. Wählen Sie Vertexe aus der Skizze aus. - - + + 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! - + This constraint does not make sense for non-linear curves Diese Einschränkung ist für nichtlineare Kurven nicht sinnvoll - - - - - - + + + + + + Select the right things from the sketch. Wähle die richtigen Dinge aus der Skizze. - - + + Point on B-spline edge currently unsupported. Punkt auf B-Spline Rand wird derzeit nicht unterstützt. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Wählen Sie entweder einen Punkt und mehrere Kurven oder eine Kurve und mehrere Punkte. Sie haben %1 Kurven und %2 Punkte ausgewählt. - - - - + + + + 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 Einschränkung macht nur Sinn auf einem Liniensegment oder einem Paar von Punkten - + 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. - - + + Select at least two lines from the sketch. Wählen Sie mindestens zwei Linien aus der Skizze aus. - + Select a valid line Wählen Sie eine gültige Linie aus - - + + The selected edge is not a valid line Die gewä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. @@ -2559,45 +2819,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Falsche Anzahl von ausgewählten Objekten! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Bei 3 Objekten müssen diese aus 2 Kurven und 1 Punkt bestehen. - - + + Cannot add a perpendicularity constraint at an unconnected point! Eine Rechtwinkligkeitsbedingung kann nicht zu einem unverbundenen Punkt hinzugefügt werden! - - - + + + Perpendicular to B-spline edge currently unsupported. Senkrecht zur B-Spline-Kante wird derzeit nicht unterstützt. - - + + One of the selected edges should be a line. Eine der ausgewählten Kanten sollte eine Gerade sein. - + 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. @@ -2607,249 +2867,249 @@ 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. - + Wrong number of selected objects! tangent constraint Falsche Anzahl von ausgewählten Objekten! - - - + + + Cannot add a tangency constraint at an unconnected point! Eine Tangentialrandbedingung kann nicht zu einem unverbundenen Punkt hinzugefügt werden! - - - + + + Tangency to B-spline edge currently unsupported. Tangentiale zu B-Spline Rand wird derzeit nicht unterstützt. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Die Endpunkt zu Endpunkt Tangente wurde stattdessen angewendet. Die Koinzidenzbedingung wurde gelöscht. - - - - + + + + Select one or more arcs or circles from the sketch. Wählen Sie eine oder mehrere Bögen oder Kreise aus der Skizze. - - + + Constrain equal Gleichheit festlegen - + Do you want to share the same radius for all selected elements? Möchten Sie den gleichen Radius allen ausgewählten Elemente zuweisen? - - + + Constraint only applies to arcs or circles. Einschränkung gilt nur für Bögen oder Kreise. - + Do you want to share the same diameter for all selected elements? Möchten Sie für alle ausgewählten Elemente den gleichen Durchmesser verwenden? - - + + 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. - - + + Parallel lines Parallele Linien - - + + An angle constraint cannot be set for two parallel lines. Eine Winkel-Einschränkung kann für zwei parallele Linien nicht festgelegt werden. - + 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 - + Sketch axes cannot be used in equality constraints Skizzen-Achsen nicht in Gleichheitbeschränkungen einsetzbar - + 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 Wählen Sie mindestens zwei Kanten ähnlichen Typs - - - - - + + + + + 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. Cannot add a symmetry constraint between a line and its end points. - - + + Cannot add a symmetry constraint between a line and its end points! Kann keine Symmetrie zwischen einer Linie und deren Endpunkten definieren! - + 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Es kann keine Einschränkung erstellt werden, die nur auf externen Geometrien basiert. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Ausgewählte Objekte sind nicht nur Geometrie aus einer einzigen Skizze. - + Number of selected objects is not 3 (is %1). Die Anzahl der ausgewählten Objekte ist nicht 3 (ist %1). - - + + Select at least one ellipse and one edge from the sketch. Wählen Sie mindestens eine Ellipse und eine Kante aus der Skizze. - + Sketch axes cannot be used in internal alignment constraint Skizzen-Achsen können nicht in interner Ausrichtungs-Einschränkung eingesetzt werden - - + + Maximum 2 points are supported. Maximal 2 Punkte werden unterstützt. - - + + Maximum 2 lines are supported. Maximal 2 Punkte werden unterstützt. - - + + Nothing to constrain Nichts zu beschränken - - - - + + + + Extra elements Zusätzliche Elemente - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Mehr Elemente als möglich wurden für die angegebene Ellipse zur Verfügung gestellt. Diese wurden ignoriert. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Sie können nicht den Bogen einer Ellipse auf den anderen Bogen der gleichen Ellipse einschränken. Wählen Sie nur einen Bogen einer Ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Sie können nicht eine Ellipse auf einen anderen Bogen der gleichen Ellipse einschränken. Wählen Sie nur eine Ellipse oder einen Bogen einer Ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Mehr Elemente als möglich wurden für den angegebenen elliptischen Bogen zur Verfügung gestellt. Diese wurden ignoriert. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Interne Geometrie wird derzeit nur für Ellipsen und elliptische Bögen unterstützt. Das ausgewählte Element muss eine Ellipse oder ein elliptischer Bogen sein. @@ -2862,124 +3122,124 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun - + CAD Kernel Error CAD-Kernel-Fehler - + None of the selected elements is an edge. Keines der ausgewählten Elemente ist eine Kante. - - + + At least one of the selected objects was not a B-Spline and was ignored. Mindestens eines der ausgewählten Objekte war keine B-Spline und wurde ignoriert. - - + + Wrong OCE/OCC version Falsche Version von OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Diese Version von OCE/OCC unterstützt keine Knoten-Operationen. Sie benötigen 6.9.0 oder höher - - + + The selection comprises more than one item. Please select just one knot. Die Auswahl umfasst mehrere Elemente. Bitte wählen Sie nur einen Knoten. - + Input Error Eingabefehler - - + + None of the selected elements is a knot of a B-spline Keines der ausgewählten Elemente ist ein Knoten einer B-Spline - - - - + + + + Select at least two edges from the sketch. Wählen Sie mindestens zwei Kanten aus der Skizze. - - + + One selected edge is not connectable Eine ausgewählte Kante ist nicht anschließbar - + Closing a shape formed by exactly two lines makes no sense. Das schließen einer Form, bestehend aus exakt zwei Linien, ergibt keinen Sinn. - - - - - - - - + + + + + + + + Select elements from a single sketch. Wähle Elemente aus einer einzigen Skizze. - + No constraint selected Keine Einschränkung ausgewählt - + At least one constraint must be selected Mindestens eine Einschränkung muss ausgewählt sein - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Eine symmetrische Konstruktion erfordert mindestens zwei geometrische Elemente. Das letzte geometrische Element wird die Referenz für die Symmetrie. - + The last element must be a point or a line serving as reference for the symmetry construction. Das letzte Element muss ein Punkt oder eine Linie sein, die als Referenz für die Symmetrie dient. - - + + A copy requires at least one selected non-external geometric element Eine Kopie benötigt mindestens ein ausgewähltes nicht-externes geometrisches Element - + Delete All Geometry Gesamte Geometrie löschen - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Alle Einschränkungen löschen - + Are you really sure you want to delete all the constraints? Sind Sie wirklich sicher, dass Sie alle Beschränkungen löschen möchten? @@ -3040,62 +3300,62 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun SketcherGui::ConstraintView - + Change value Wert ändern - + Toggle to/from reference Umschalten zum/vom Bezug - + Deactivate Deaktivieren - + Activate Aktivieren - + Show constraints Einschränkungen einblenden - + Hide constraints Einschränkungen ausblenden - + Rename Umbenennen - + Center sketch Skizze zentrieren - + Delete Löschen - + Swap constraint names Namen der Beschränkungen tauschen - + Unnamed constraint Unbenannte Beschränkung - + Only the names of named constraints can be swapped. Nur die Namen von benannten Beschränkungen können vertauscht werden. @@ -3118,8 +3378,8 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Radius einfügen - - + + Radius: Radius: @@ -3130,8 +3390,8 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Durchmesser einfügen - - + + Diameter: Durchmesser: @@ -3159,24 +3419,24 @@ Akzeptierte Kombinationen: zwei Kurven; Ein Endpunkt und eine Kurve; Zwei Endpun Länge: - - + + Change radius Radius ändern - - + + Change diameter Durchmesser ändern - + Refractive index ratio Brechungsindex-Verhältnis - + Ratio n2/n1: Verhältnis n2/n1: @@ -3787,7 +4047,7 @@ Unterstützt alle Einheitensysteme außer 'US customary' und 'Gebäude US/Euro'. Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Hinweis: Dieses sind die Standardeinstellungen, die für neue Skizzen verwendet werden. Das Verhalten wird für jede Skizze separat als Eigenschaften auf der Registerkarte Ansicht gespeichert. @@ -4043,13 +4303,13 @@ Es wurden keine Beschränkungen zu diesen Punkten gefunden. Erweiterte Informationen - + Constraints Einschränkungen - - + + Error Fehlermeldungen @@ -4293,7 +4553,7 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Rendering order (global): - Rendering order (global): + Rendering-Reihenfolge (global): @@ -4408,104 +4668,104 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges 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? Möchten Sie das Werkzeug zum Überprüfen der Skizze öffnen? - + 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 Beschränkung entfernen: - + Please remove at least one of the following constraints: Bitte mindestens eine der folgenden Beschränkungen entfernen: - + Please remove the following redundant constraint: Bitte folgende redundante Beschränkung entfernen: - + Please remove the following redundant constraints: Bitte folgende, redundante Beschränkungen entfernen: - + Empty sketch Leere Skizze - + Over-constrained sketch Überbestimmte Skizze - - - + + + (click to select) (anklicken zum Auswählen) - + Sketch contains conflicting constraints Skizze enthält widersprüchliche Einschränkungen - + Sketch contains redundant constraints Skizze enthält redundante Einschränkungen - + Fully constrained sketch Vollständig eingeschränkte Skizze - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Unbeschränkte Skizze mit <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 Freiheitsgrad</span></a> - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Unbeschränkte Skizze mit <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 Freiheitsgraden</span></a> - + Solved in %1 sec Berechnet in %1 s - + Unsolved (%1 sec) Keine Lösung (%1 s) @@ -4513,8 +4773,8 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Wechselt zwischen dem Anzeigen und Ausblenden des Krümmungskammes für alle B-Splines @@ -4522,17 +4782,17 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline - Verringert die Multiplikation eines ausgewählten Knoten einer B-Spline + Verringert die Vielfachheit eines ausgewählten B-Spline-Knotens Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Wechselt zwischen dem Anzeigen und Ausblenden des Grades für alle B-Splines @@ -4540,26 +4800,35 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline - Erhöht die Multiplikation eines ausgewählten Knoten einer B-Spline + Erhöht die Vielfachheit eines ausgewählten B-Spline-Knotens Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines - Wechselt zwischen dem Anzeigen und Ausblenden der Knoten-Multiplikation für alle B-Splines + Wechselt zwischen dem Anzeigen und Ausblenden der Knoten-Vielfachheit für alle B-Splines + + + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Wechselt zwischen dem Anzeigen und Ausblenden der Kontroll-Polygone für alle B-Splines @@ -4567,8 +4836,8 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Erstellt einen Klon der Geometrie mit dem zuletzt gewählten Punkt als Referenz @@ -4576,17 +4845,17 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_CompCopy - + Clone Klonen - + Copy Kopieren - + Move Verschieben @@ -4594,8 +4863,8 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Leget den Durchmesser eines Kreises oder Bogens fest @@ -4603,8 +4872,8 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Lege Radius eines Kreises oder Bogens fest @@ -4612,8 +4881,8 @@ Punkte müssen näher als ein Fünftel der Rastergröße an eine Rasterlinie ges Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Erstellt eine einfache Kopie der Geometrie von den zuletzt gewählten Punkt @@ -4857,8 +5126,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Verschiebt die Geometrie und verwendet den zuletzt ausgewählten Punkt als Referenz diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.qm index 1e3b2f564e..3b1c9cc7e4 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts index e5ccf0ddbf..d7ed908f28 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_el.ts @@ -55,6 +55,24 @@ Πραγματοποιεί εναλλαγή μεταξύ εμφάνισης και απόκρυψης της πολλαπλότητας κόμβων όλων των καμπύλων B-spline + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Κλωνοποιήστε - + Creates a clone of the geometry taking as reference the last selected point Δημιουργεί έναν κλώνο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Εμφάνιση/Απόκρυψη του επιπέδου πληροφοριών καμπύλης B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Περιορισμός τόξου ή κύκλου - + Constrain an arc or a circle Περιόρισε ένα τόξο ή έναν κύκλο - + Constrain radius Περιορισμός ακτίνας - + Constrain diameter Περιορισμός διαμέτρου @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Αντιγραφή - + Creates a clone of the geometry taking as reference the last selected point Δημιουργεί έναν κλώνο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Τροποποίηση πολλαπλότητας κόμβου - + Modifies the multiplicity of the selected knot of a B-spline Τροποποιεί την πολλαπλότητα του επιλεγμένου κόμβου μιας καμπύλης B-spline - + Increase knot multiplicity Αύξηση της πολλαπλότητας κόμβου - + Decrease knot multiplicity Μείωση της πολλαπλότητας κόμβου @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Περιορισμός γωνίας - + Fix the angle of a line or the angle between two lines Καθορισμός της γωνίας μιας γραμμής ή της γωνίας μεταξύ δύο γραμμών @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Περιορισμός ταύτισης - + Create a coincident constraint on the selected item Δημιουργία ενός περιορισμού ταύτισης στο επιλεγμένο αντικείμενο @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Περιορισμός διαμέτρου - + Fix the diameter of a circle or an arc Όρισε τη σταθερή διάμετρο ενός κύκλου, ή ενός τόξου @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Περιορισμός απόστασης - + Fix a length of a line or the distance between a line and a vertex Καθορισμός του μήκους μιας γραμμής ή της απόστασης μεταξύ μιας γραμμής και μιας κορυφής @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Καθορισμός της οριζόντιας απόστασης μεταξύ δύο σημείων ή μεταξύ τελικών σημείων γραμμών @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Καθορισμός της κατακόρυφης απόστασης μεταξύ δύο σημείων ή μεταξύ τελικών σημείων γραμμών @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Περιορισμός ισότητας - + Create an equality constraint between two lines or between circles and arcs Δημιουργία ενός περιορισμού ισότητας μεταξύ δύο γραμμών ή μεταξύ κύκλων και τόξων @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Περιορισμός κατά την οριζόντια διεύθυνση - + Create a horizontal constraint on the selected item Δημιουργία ενός οριζόντιου περιορισμού για το επιλεγμένο αντικείμενο @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Δημιουργεί έναν περιορισμό στοίχισης ενός στοιχείου με βάση την εσωτερική γεωμετρία ενός άλλου στοιχείου @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Περιορισμός κλειδώματος - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Περιορισμός παραλληλίας - + Create a parallel constraint between two lines Δημιουργήστε έναν περιορισμό παραλληλίας μεταξύ δύο γραμμών @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Περιορισμός καθετότητας - + Create a perpendicular constraint between two lines Δημιουργία ενός περιορισμού καθετότητας μεταξύ δύο γραμμών @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Περιορισμός θέσης σημείου σε αντικείμενο - + Fix a point onto an object Καθορισμός της θέσης ενός σημείου σε ένα αντικείμενο @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Περιορισμός ακτίνας - + Fix the radius of a circle or an arc Καθορισμός της ακτίνας ενός κύκλου ή ενός τόξου @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Περιορισμός διάθλασης (Νόμος του 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Περιορισμός συμμετρίας - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Περιορισμός εφαπτομένης - + Create a tangent constraint between two entities Δημιουργία ενός περιορισμού επαφής μεταξύ δύο οντοτήτων @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Περιορισμός κατά την κατακόρυφη διεύθυνση - + Create a vertical constraint on the selected item Δημιουργία ενός κατακόρυφου περιορισμού στο επιλεγμένο αντικείμενο @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Αντιγραφή - + Creates a simple copy of the geometry taking as reference the last selected point Δημιουργεί ένα απλό αντίγραφο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Μείωση της πολλαπλότητας κόμβου - + Decreases the multiplicity of the selected knot of a B-spline Μειώνει την πολλαπλότητα του επιλεγμένου κόμβου μιας καμπύλης B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Αυξάνει τον βαθμό της καμπύλης B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Αύξηση της πολλαπλότητας κόμβου - + Increases the multiplicity of the selected knot of a B-spline Αυξάνει την πολλαπλότητα του επιλεγμένου κόμβου μιας καμπύλης B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Μετακινήστε - + Moves the geometry taking as reference the last selected point Μετακινεί το γεωμετρικό στοιχείο λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Εμφάνιση/απόκρυψη εσωτερικής γεωμετρίας - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Συμμετρία - + Creates symmetric geometry with respect to the last selected line or point Δημιουργεί συμμετρικό γεωμετρικό στοιχείο ως προς την τελευταία επιλεγμένη γραμμή ή το τελευταίο επιλεγμένο σημείο @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Αυτή η έκδοση του OCE/OCC δεν υποστηρίζει την λειτουργία κόμβων. Θα χρειαστείτε την έκδοση 6.9.0 ή κάποια μεταγενέστερη. - + 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 αδυνατεί να μειώσει την πολλαπλότητα εντός των ορίων μέγιστης ανοχής. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Επιλέξτε ακμή(ες) από το σκαρίφημα. - - - - + + + + Dimensional constraint Περιορισμός διαστάσεων - - - + + + Only sketch and its support is allowed to select Μπορείτε να επιλέξετε μόνο κάποιο σκαρίφημα και το αντικείμενο υποστήριξής του - + One of the selected has to be on the sketch Ένα από τα επιλεγμένα θα πρέπει να βρίσκεται στο σκαρίφημα - - + + 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 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! - + The selected item(s) can't accept a horizontal constraint! Το επιλεγμένο αντικείμενο(α) δεν μπορεί να δεχτεί οριζόντιο περιορισμό! - + There are more than one fixed point selected. Select a maximum of one fixed point! Υπάρχουν περισσότερα από ένα σταθερά σημεία. Επιλέξτε το πολύ ένα σταθερό σημείο! - + The selected item(s) can't accept a vertical 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 Λάθος κατάσταση επιλυτή @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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 only edges from the sketch. Επιλέξτε μόνο ακμές από το σκαρίφημα. - - - - - - - - + + + + + + + + Error Σφάλμα - + Select two or more points from the sketch. Επιλέξτε δύο ή περισσότερα σημεία από το σκαρίφημα. - - + + Select two or more vertexes from the sketch. Επιλέξτε δύο ή περισσότερες κορυφές από το σκαρίφημα. - - + + Constraint Substitution Αντικατάσταση Περιορισμού - + Endpoint to endpoint tangency was applied instead. Εφαρμόστηκε περιορισμός επαφής μεταξύ άκρων εναλλακτικά. - + Select vertexes from the sketch. Επιλέξτε κορυφές από το σκαρίφημα. - - + + Select exactly one line or one point and one line or two points from the sketch. Επιλέξτε ακριβώς μια γραμμή ή ένα σημείο και μια γραμμή ή δύο σημεία από το σκαρίφημα. - + Cannot add a length constraint on an axis! Αδύνατη η προσθήκη περιορισμού μήκους σε άξονα! - + This constraint does not make sense for non-linear curves Αυτός ο περιορισμός δεν έχει νόημα για μη γραμμικές καμπύλες - - - - - - + + + + + + Select the right things from the sketch. Επιλέξτε τα κατάλληλα στοιχεία από το σκαρίφημα. - - + + Point on B-spline edge currently unsupported. Δεν υποστηρίζονται σημεία σε ακμές καμπύλης B-spline επί του παρόντος. - - + + 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. Κανένα από τα επιλεγμένα σημεία δεν ήταν περιορισμένο πάνω στις αντίστοιχες καμπύλες, είτε επειδή είναι τμήματα του ίδιου στοιχείου, είτε επειδή ανήκουν και τα δύο στο ίδιο στοιχείο εξωτερικής γεωμετρίας. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Επιλέξτε είτε ένα σημείο και διάφορες καμπύλες, είτε μια καμπύλη και διάφορα σημεία. Έχετε επιλέξει %1 καμπύλες και %2 σημεία. - - - - + + + + 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! 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! Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. Επιλέξτε δύο ή περισσότερες γραμμές από το σκαρίφημα. - - + + Select at least two lines from the sketch. Επιλέξτε τουλάχιστον δύο γραμμές από το σκαρίφημα. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Αποδεκτοί συνδυασμοί: δύο καμπύλες· ένα αρχικό σημείο και μια καμπύλη· ένα αρχικό και ένα τελικό σημείο· δύο καμπύλες και ένα σημείο. - + Select some geometry from the sketch. perpendicular constraint Επιλέξτε γεωμετρικά στοιχεία από το σκαρίφημα. - + Wrong number of selected objects! perpendicular constraint Λάθος αριθμός επιλεγμένων αντικειμένων! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Με 3 αντικείμενα, πρέπει να υπάρχουν 2 καμπύλες και 1 σημείο. - - + + Cannot add a perpendicularity constraint at an unconnected point! Αδύνατη η προσθήκη περιορισμού καθετότητας σε ένα ασύνδετο σημείο! - - - + + + Perpendicular to B-spline edge currently unsupported. Δεν υποστηρίζονται περιορισμοί καθετότητας σε ακμές καμπύλης B-spline επί του παρόντος. - - + + One of the selected edges should be a line. Μια από τις επιλεγμένες ακμές θα πρέπει να είναι γραμμή. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Αποδεκτοί συνδυασμοί: δύο καμπύλες· ένα αρχικό σημείο και μια καμπύλη· ένα αρχικό και ένα τελικό σημείο· δύο καμπύλες και ένα σημείο. - + Select some geometry from the sketch. tangent constraint Επιλέξτε γεωμετρικά στοιχεία από το σκαρίφημα. - + Wrong number of selected objects! tangent constraint Λάθος αριθμός επιλεγμένων αντικειμένων! - - - + + + Cannot add a tangency constraint at an unconnected point! Αδύνατη η προσθήκη περιορισμού επαφής σε ένα ασύνδετο σημείο! - - - + + + Tangency to B-spline edge currently unsupported. Δεν υποστηρίζονται περιορισμοί επαφής σε ακμές καμπύλης B-spline επί του παρόντος. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Εφαρμόστηκε περιορισμός επαφής μεταξύ άκρων. Ο περιορισμός ταύτισης διαγράφηκε. - - - - + + + + Select one or more arcs or circles from the sketch. Επιλέξτε ένα ή περισσότερα τόξα ή κύκλους από το σκαρίφημα. - - + + Constrain equal Περιορισμός ισότητας - + Do you want to share the same radius for all selected elements? Θέλετε να χρησιμοποιήσετε την ίδια ακτίνα για όλα τα επιλεγμένα στοιχεία; - - + + Constraint only applies to arcs or circles. Ο περιορισμός εφαρμόζεται μόνο σε τόξα ή κύκλους. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Επιλέξτε μια ή δύο γραμμές από το σκαρίφημα. Ή επιλέξτε δύο ακμές και ένα σημείο. - - + + Parallel lines Παράλληλες γραμμές - - + + An angle constraint cannot be set for two parallel lines. Δεν δύναται να οριστεί γωνιακός περιορισμός για δύο παράλληλες γραμμές. - + 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-spline επί του παρόντος. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Τα επιλεγμένα στοιχεία δεν είναι μόνο γεωμετρικά στοιχεία από το ίδιο σκαρίφημα. - + Number of selected objects is not 3 (is %1). Ο αριθμός των επιλεγμένων αντικειμένων δεν είναι 3 (είναι %1). - - + + Select at least one ellipse and one edge from the sketch. Επιλέξτε τουλάχιστον μια έλλειψη και μια ακμή από το σκαρίφημα. - + Sketch axes cannot be used in internal alignment constraint Οι άξονες του σκαριφήματος δεν μπορούν να χρησιμοποιηθούν στον περιορισμό εσωτερικής στοίχισης - - + + Maximum 2 points are supported. Υποστηρίζονται το πολύ 2 σημεία. - - + + Maximum 2 lines are supported. Υποστηρίζονται το πολύ 2 γραμμές. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Επιπλέον στοιχεία - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Δόθηκαν περισσότερα στοιχεία από όσα είναι εφικτό να ληφθούν υπόψη για την δεδομένη έλλειψη. Τα περιττά στοιχεία αγνοήθηκαν. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Δόθηκαν περισσότερα στοιχεία από όσα είναι εφικτό να ληφθούν υπόψη για το δεδομένο τόξο έλλειψης. Τα περιττά στοιχεία αγνοήθηκαν. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Επί του παρόντος η εσωτερική γεωμετρία υποστηρίζεται μόνο για έλλειψη ή τόξο έλλειψης. Το τελευταίο επιλεγμένο στοιχείο θα πρέπει να είναι μια έλλειψη ή ένα τόξο έλλειψης. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Σφάλμα Πυρήνα CAD - + None of the selected elements is an edge. Κανένα από τα επιλεγμένα στοιχεία δεν είναι ακμή. - - + + At least one of the selected objects was not a B-Spline and was ignored. Τουλάχιστον ένα από τα επιλεγμένα αντικείμενα δεν ήταν καμπύλη B-spline και αγνοήθηκε. - - + + Wrong OCE/OCC version Λάθος έκδοση OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Αυτή η έκδοση του OCE/OCC δεν υποστηρίζει την λειτουργία κόμβων. Θα χρειαστείτε την έκδοση 6.9.0 ή κάποια μεταγενέστερη - - + + The selection comprises more than one item. Please select just one knot. Η επιλογή περιλαμβάνει πάνω από ένα αντικείμενα. Παρακαλώ επιλέξτε μόνο έναν κόμβο. - + Input Error Σφάλμα Εισαγωγής - - + + None of the selected elements is a knot of a B-spline Κανένα από τα επιλεγμένα στοιχεία δεν είναι κόμβος καμπύλης B-spline - - - - + + + + Select at least two edges from the sketch. Επιλέξτε τουλάχιστον δύο ακμές από το σκαρίφημα. - - + + One selected edge is not connectable Η μια επιλεγμένη ακμή δεν δύναται να συνδεθεί - + Closing a shape formed by exactly two lines makes no sense. Το κλείσιμο σχήματος που αποτελείται από ακριβώς δύο γραμμές δεν έχει νόημα. - - - - - - - - + + + + + + + + Select elements from a single sketch. Επιλέξτε στοιχεία από ένα σκαρίφημα. - + No constraint selected Δεν επιλέχθηκε κανένας περιορισμός - + At least one constraint must be selected Πρέπει να επιλεχθεί τουλάχιστον ένας περιορισμός - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Μια συμμετρική κατασκευή απαιτεί τουλάχιστον δύο γεωμετρικά στοιχεία, το τελευταίο εκ των οποίων θα είναι το στοιχείο αναφοράς για την κατασκευή της συμμετρίας. - + The last element must be a point or a line serving as reference for the symmetry construction. Το τελευταίο στοιχείο θα πρέπει να είναι ένα σημείο ή μια γραμμή αναφοράς για την κατασκευή της συμμετρίας. - - + + A copy requires at least one selected non-external geometric element Η δημιουργία αντιγράφου απαιτεί την ύπαρξη τουλάχιστον ενός επιλεγμένου στοιχείου μη εξωτερικής γεωμετρίας - + Delete All Geometry Διαγραφή Όλων των Γεωμετρικών Στοιχείων - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Διαγραφή Όλων των Περιορισμών - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Αλλαγή τιμής - + Toggle to/from reference Μετάβαση προς/από στοιχείο αναφοράς - + Deactivate Deactivate - + Activate Activate - + Show constraints Εμφάνιση περιορισμών - + Hide constraints Απόκρυψη περιορισμών - + Rename Μετονομασία - + Center sketch Κεντράρισμα σκαριφήματος - + Delete Διαγραφή - + Swap constraint names Ανταλλαγή ονομάτων περιορισμών - + Unnamed constraint Ανώνυμος περιορισμός - + Only the names of named constraints can be swapped. Μόνο τα ονόματα των ονομασμένων περιορισμών μπορούν να ανταλλαχθούν. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Εισαγωγή ακτίνας - - + + Radius: Ακτίνα: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Εισαγωγή διαμέτρου - - + + Diameter: Διάμετρος: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Μήκος: - - + + Change radius Αλλαγή ακτίνας - - + + Change diameter Αλλαγή της διαμέτρου - + Refractive index ratio Δείκτης διάθλασης - + Ratio n2/n1: Λόγος n2/n1: @@ -4045,13 +4307,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error Σφάλμα @@ -4410,104 +4672,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: Παρακαλώ αφαιρέστε τους παρακάτω πλεονάζοντες περιορισμούς: - + Empty sketch Κενό σκαρίφημα - + Over-constrained sketch Υπερπεριορισμένο σκαρίφημα - - - + + + (click to select) (κάντε κλικ για να επιλέξετε) - + Sketch contains conflicting constraints Το σκαρίφημα περιέχει αντιφατικούς περιορισμούς - + Sketch contains redundant constraints Το σκαρίφημα περιέχει πλεονάζοντες περιορισμούς - + Fully constrained sketch Πλήρως περιορισμένο σκαρίφημα - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Επιλύθηκε σε %1 δευτερόλεπτα - + Unsolved (%1 sec) Δεν επιλύθηκε (%1 δευτερόλεπτα) @@ -4515,8 +4777,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Πραγματοποιεί εναλλαγή μεταξύ εμφάνισης και απόκρυψης του οδηγού καμπυλότητας όλων των καμπύλων B-spline @@ -4524,8 +4786,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Μειώνει την πολλαπλότητα του επιλεγμένου κόμβου μιας καμπύλης B-spline @@ -4533,8 +4795,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Πραγματοποιεί εναλλαγή μεταξύ εμφάνισης και απόκρυψης του βαθμού όλων των καμπύλων B-spline @@ -4542,8 +4804,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Αυξάνει την πολλαπλότητα του επιλεγμένου κόμβου μιας καμπύλης B-spline @@ -4551,17 +4813,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Πραγματοποιεί εναλλαγή μεταξύ εμφάνισης και απόκρυψης της πολλαπλότητας κόμβων όλων των καμπύλων B-spline + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Πραγματοποιεί εναλλαγή μεταξύ εμφάνισης και απόκρυψης των πολυγώνων ελέγχου όλων των καμπύλων B-spline @@ -4569,8 +4840,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Δημιουργεί έναν κλώνο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -4578,17 +4849,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Κλωνοποιήστε - + Copy Αντιγραφή - + Move Μετακινήστε @@ -4596,8 +4867,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Όρισε τη σταθερή διάμετρο ενός κύκλου, ή ενός τόξου @@ -4605,8 +4876,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Καθορισμός της ακτίνας ενός κύκλου ή ενός τόξου @@ -4614,8 +4885,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Δημιουργεί ένα απλό αντίγραφο του γεωμετρικού στοιχείου λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο @@ -4859,8 +5130,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Μετακινεί το γεωμετρικό στοιχείο λαμβάνοντας ως σημείο αναφοράς το τελευταίο επιλεγμένο σημείο diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.qm index 05e41937c4..2f25b6fe5a 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.qm differ 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 edba8c5f04..7f1ae8896e 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_es-ES.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Mostrar/ocultar peine de curvatura B-spline @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + Mostrar/ocultar grado de B-spline @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Mostrar/ocultar multiplicidad de nudo de B-spline @@ -55,6 +55,24 @@ Cambia entre mostrar y ocultar la multiplicidad de nudo para todas las B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Croquizador + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + Mostrar/ocultar polígono de control de B-spline @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Croquizador - + Clone Clonar - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometría tomando como referencia el último punto seleccionado @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Croquizador - + Close shape - Close shape + Cerrar forma - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Croquizador - - + Show/hide B-spline information layer Mostrar/ocultar capa de información de B-spline - + Show/hide B-spline degree - Show/hide B-spline degree + Mostrar/ocultar grado de B-spline - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + Mostrar/ocultar polígono de control de B-spline - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Mostrar/ocultar peine de curvatura B-spline - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Mostrar/ocultar multiplicidad de nudo de B-spline + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Croquizador - + Constrain arc or circle Restringir el arco o círculo - + Constrain an arc or a circle Limitar un arco o un círculo - + Constrain radius Restringir radio - + Constrain diameter Restringir el diámetro @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Croquizador - + Copy Copiar - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometría tomando como referencia el último punto seleccionado @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Croquizador - + Modify knot multiplicity Modificar multiplicidad de nudo - + Modifies the multiplicity of the selected knot of a B-spline Modifica la multiplicidad del nudo seleccionado de una B-spline - + Increase knot multiplicity Aumentar la multiplicidad del nudo - + Decrease knot multiplicity Disminuir la multiplicidad de nudo @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Croquizador - + Connect edges - Connect edges + Conectar aristas - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Croquizador - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Croquizador - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Croquizador - + Constrain coincident Restricción de coincidencia - + Create a coincident constraint on the selected item Crear una restricción de coincidencia en el elemento seleccionado @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Croquizador - + Constrain diameter Restringir el diámetro - + Fix the diameter of a circle or an arc Fijar el diámetro de un círculo o un arco @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Croquizador - + Constrain distance Restricción de distancia - + Fix a length of a line or the distance between a line and a vertex Fijar una longitud de una línea o la distancia entre una línea y un vértice @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Croquizador - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fijar la distancia horizontal entre dos puntos o extremos de línea @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Croquizador - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fijar la distancia vertical entre dos puntos o extremos de línea @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Croquizador - + 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 círculos y arcos @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Croquizador - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Crear una restricción horizontal en el elemento seleccionado @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Croquizador - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Restringe un elemento para alinearse con la geometría interna de otro elemento @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Croquizador - + Constrain lock Restricción de bloqueo - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Croquizador - + Constrain parallel Restricción de paralelismo - + Create a parallel constraint between two lines Crear una restricción entre dos líneas paralelas @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Croquizador - + Constrain perpendicular Restricción perpendicular - + Create a perpendicular constraint between two lines Crear una restricción perpendicular entre dos líneas @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Croquizador - + Constrain point onto object Restringir punto en objeto - + Fix a point onto an object Fijar un punto sobre un objeto @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Croquizador - + Constrain radius Restringir radio - + Fix the radius of a circle or an arc Fijar el radio de un círculo o arco @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Croquizador - + 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. Create a refraction law (Snell's law) constraint between two endpoints of rays @@ -718,37 +740,37 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Croquizador - + Constrain symmetrical Restricción de 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 -with respect to a line or a third point + Crear una restricción de simetría entre dos puntos +con respecto a una línea o un tercer punto CmdSketcherConstrainTangent - + Sketcher Croquizador - + Constrain tangent Restricción tangencial - + Create a tangent constraint between two entities Crear una restricción tangencial entre dos entidades @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Croquizador - + Constrain vertically Restricción de verticalidad - + Create a vertical constraint on the selected item Crear una restricción vertical en el elemento seleccionado @@ -774,35 +796,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Croquizador - + Convert geometry to B-spline - Convert geometry to B-spline + Convertir geometría a B-spline - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Convierte la geometría seleccionada en una B-spline CmdSketcherCopy - + Sketcher Croquizador - + Copy Copiar - + Creates a simple copy of the geometry taking as reference the last selected point Crea una copia simple de la geometría tomando como referencia el último punto seleccionado @@ -1278,35 +1300,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Croquizador - + Decrease B-spline degree - Decrease B-spline degree + Reducir grado de B-spline - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Disminuye el grado de la B-spline CmdSketcherDecreaseKnotMultiplicity - + Sketcher Croquizador - + Decrease knot multiplicity Disminuir la multiplicidad de nudo - + Decreases the multiplicity of the selected knot of a B-spline Disminuye la multiplicidad del nudo seleccionado de una B-spline @@ -1314,37 +1336,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Croquizador - + Delete all constraints - Delete all constraints + Borrar todas las restricciones - + Delete all constraints in the sketch - Delete all constraints in the sketch + Eliminar todas las restricciones en el croquis CmdSketcherDeleteAllGeometry - + Sketcher Croquizador - + Delete all geometry - Delete all geometry + Eliminar toda la geometría - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Borrar todas las restricciones y geometría del croquis actual, con la excepción de la geometría externa @@ -1362,7 +1384,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Editar el croquis seleccionado. @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Croquizador - + Increase B-spline degree - Increase B-spline degree + Aumentar grado de B-spline - + Increases the degree of the B-spline Aumentar el grado de la B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Croquizador - + Increase knot multiplicity Aumentar la multiplicidad del nudo - + Increases the multiplicity of the selected knot of a B-spline Aumenta la multiplicidad del nudo seleccionado de una B-spline @@ -1452,7 +1474,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Terminar de editar el croquis activo. @@ -1479,7 +1501,7 @@ then call this command, then choose the desired sketch. Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Algunos de los objetos seleccionados dependen de que el croquis sea mapeado. Las dependencias circulares no están permitidas. @@ -1497,7 +1519,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Crear un nuevo croquis a partir de la fusión de dos o más croquis seleccionados. @@ -1507,7 +1529,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Seleccione al menos dos croquis. @@ -1539,23 +1561,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Seleccione uno o más croquis. CmdSketcherMove - + Sketcher Croquizador - + Move Mover - + Moves the geometry taking as reference the last selected point Mover la geometría tomando como referencia el último punto seleccionado @@ -1575,23 +1597,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Crear un nuevo croquis. CmdSketcherRectangularArray - + Sketcher Croquizador - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Crea un patrón de matriz rectangular de la geometría, tomando como referencia el último punto seleccionado @@ -1619,85 +1641,85 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Croquizador - + Show/hide internal geometry Mostrar/ocultar geometrías internas - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Mostrar toda la geometría interna u ocultar geometría interna no utilizada CmdSketcherSelectConflictingConstraints - + Sketcher Croquizador - - + + Select conflicting constraints - Select conflicting constraints + Seleccionar restricciones en conflicto CmdSketcherSelectConstraints - + Sketcher Croquizador - + Select associated constraints - Select associated constraints + Seleccionar restricciones asociadas - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Seleccione las restricciones asociadas con los elementos geometricos seleccionados CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Croquizador - + Select associated geometry - Select associated geometry + Seleccionar geometría asociada - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Seleccione los elementos geometricos asociados con las restricciones seleccionadas CmdSketcherSelectElementsWithDoFs - + Sketcher Croquizador - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,69 +1727,69 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Croquizador - + Select horizontal axis - Select horizontal axis + Seleccionar eje horizontal - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Seleccione el eje horizontal local del croquis CmdSketcherSelectOrigin - + Sketcher Croquizador - + Select origin - Select origin + Seleccionar origen - + Select the local origin point of the sketch - Select the local origin point of the sketch + Seleccione el punto de origen local del croquis CmdSketcherSelectRedundantConstraints - + Sketcher Croquizador - - + + Select redundant constraints - Select redundant constraints + Seleccionar restricciones redundantes CmdSketcherSelectVerticalAxis - + Sketcher Croquizador - + Select vertical axis - Select vertical axis + Seleccionar eje vertical - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Seleccione el eje vertical local del croquis @@ -1785,7 +1807,7 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + Cuando esté en modo edición, detener la operación activa (dibujar, restringir, etc.). @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Croquizador - + Symmetry Simetría - + Creates symmetric geometry with respect to the last selected line or point Crea una geometría simétrica con respecto a la última línea o punto seleccionados @@ -1827,19 +1849,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Croquizador - + Activate/deactivate constraint - Activate/deactivate constraint + Activar/desactivar restricción - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Activa o desactiva las restricciones seleccionadas @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Croquizador - + 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, @@ -1914,13 +1936,13 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Validar un croquis mirando las coincidencias que faltan, +restricciones inválidas, geometrías degeneradas, etc. Select only one sketch. - Select only one sketch. + Seleccione sólo un croquis. @@ -1943,7 +1965,7 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + Cuando esté en modo edición, cambie entre la vista de sección y la vista completa. @@ -1961,7 +1983,247 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + Cuando esté en modo edición, ajuste la orientación de la cámara perpendicular al plano de croquis. + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. Error de autorestricción: boceto 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 rellenar. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Esta versión de OCE/OCC no permite operación de nudo. Necesita 6.9.0 o superior. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2514,304 @@ invalid constraints, degenerated geometry, etc. Seleccione arista(s) del croquis. - - - - + + + + Dimensional constraint Restricción dimensional - - - + + + Only sketch and its support is allowed to select Sólo se permite selecionar el croquis y su soporte - + One of the selected has to be on the sketch Uno de los seleccionados debe ser 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 La arista seleccionada 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! - + The selected item(s) can't accept a horizontal constraint! ¡El(los) elemento(s) seleccionado(s) no pueden aceptar una restricción horizontal! - + There are more than one fixed point selected. Select a maximum of one fixed point! Hay mas de un punto fijo seleccionado.! Debe seleccionar solamente un punto Fijo! - + The selected item(s) can't accept a vertical constraint! ¡El(los) elemento(s) seleccionado(s) no admiten una restricción vertical! - + 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 Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + No se puede añadir una restricción entre dos geometrias externas. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + No se puede añadir una restricción entre dos geometrias fijas. Las geometrias fijas involucran geometria externa, geometría bloqueada o puntos especiales como puntos de nudo de B-spline. - + 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. Seleccione una arista del croquis. - + Select only edges from the sketch. Seleccione únicamente aristas de el Croquis. - - - - - - - - + + + + + + + + Error Error - + Select two or more points from the sketch. Seleccione dos o más puntos del croquis. - - + + Select two or more vertexes from the sketch. Seleccione dos o más vértices en el croquis. - - + + Constraint Substitution Subsititución de Restricción - + Endpoint to endpoint tangency was applied instead. Una Tangente de Puntos de Extremo se aplicó en su lugar. - + Select vertexes from the sketch. Seleccione los vértices del croquis. - - + + 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! - + This constraint does not make sense for non-linear curves Esta restricción no tiene sentido para curvas no lineales - - - - - - + + + + + + Select the right things from the sketch. Seleccione las cosas correctas desde el croquis. - - + + Point on B-spline edge currently unsupported. Punto sobre arista de B-spline no compatible por el momento. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Seleccione un punto y varias curvas, o una curva y varios puntos. Ha seleccionado las %1 curvas y %2 puntos. - - - - + + + + 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. - - + + Select at least two lines from the sketch. Seleccione al menos dos líneas del croquis. - + Select a valid line Seleccione una línea válida - - + + The selected edge is not a valid line La arista seleccionada 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. @@ -2558,45 +2820,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint ¡Número incorrecto de objetos seleccionados! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Con 3 objetos, debe haber 2 curvas y 1 punto. - - + + Cannot add a perpendicularity constraint at an unconnected point! ¡No se puede añadir una restricción de perpendicularidad en un punto no conectado! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular a arista de B-spline no compatible por el momento. - - + + One of the selected edges should be a line. ¡Una de las aristas seleccionadas debe ser una línea. - + 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. @@ -2606,249 +2868,249 @@ 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. - + Wrong number of selected objects! tangent constraint ¡Número incorrecto de objetos seleccionados! - - - + + + Cannot add a tangency constraint at an unconnected point! ¡No se puede añadir una restricción de tangencia en un punto no conectado! - - - + + + Tangency to B-spline edge currently unsupported. Tangencia sobre arista de B-spline no compatible por el momento. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Seleccione uno o más arcos o círculos del croquis. - - + + Constrain equal Restringir igualdad - + Do you want to share the same radius for all selected elements? ¿Quieres compartir el mismo radio para todos los elementos seleccionados? - - + + Constraint only applies to arcs or circles. La restricción sólo se aplica a los arcos o círculos. - + Do you want to share the same diameter for all selected elements? ¿Quieres compartir el mismo diámetro para todos los elementos seleccionados? - - + + 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. - - + + Parallel lines Líneas paralelas - - + + An angle constraint cannot be set for two parallel lines. 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 aristas compatibles - + Sketch axes cannot be used in equality constraints Los ejes del croquis no pueden utilizarse en las 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 aristas de similar clase - - - - - + + + + + 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. - 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. - - + + 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 - 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. + 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + No se puede crear restricción sólo con geometría externa. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Se ha seleccionado geometría incompatible. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + No puede restringir internamente una elipse a otra elipse. Seleccione sólo una elipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Actualmente todos los elementos geométricos internos de la elípse ya están expuestos. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Seleccione restricciones del croquis. - + Selected objects are not just geometry from one sketch. Los objetos seleccionados no son sólo la geometría de un croquis. - + Number of selected objects is not 3 (is %1). El número de objetos seleccionados no es 3 (es %1). - - + + Select at least one ellipse and one edge from the sketch. Seleccione al menos una elipse y una curva del croquis. - + Sketch axes cannot be used in internal alignment constraint Ejes del croquis no pueden ser usados en el alineamiento interno de restricciones - - + + Maximum 2 points are supported. Son admitidos un máximo de 2 puntos. - - + + Maximum 2 lines are supported. Son admitidos un máximo de 2 líneas. - - + + Nothing to constrain Nada que restringir - - - - + + + + Extra elements Elementos adicionales - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Se han proporcionado más elementos de los necesarios para la elipse dada. Se han ignorado. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. No puedes restringir internamente un arco de elipse con otro arco de elipse. Selecciona un solo arco de elipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. No puedes restringir internamente una elipse con un arco de elipse. Selecciona una sola elipse o un arco de elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Fueron proporcionado más elementos de los necesarios para el arco de la elipse. Estas fueron ignoradas. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actualmente sólo es soportada la geometría interna de elipse o arco de elipse. El último elemento seleccionado debe ser una elipse o un arco de elipse. @@ -2861,124 +3123,124 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c - + CAD Kernel Error Error del Kernel CAD - + None of the selected elements is an edge. Ninguno de los elementos seleccionados es una arista. - - + + At least one of the selected objects was not a B-Spline and was ignored. Al menos uno de los objetos seleccionados no era un B-Spline y fue ignorado. - - + + Wrong OCE/OCC version Versión incorrecta de OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Esta versión de OCE/OCC no permite una operación de nudo. Se necesita 6.9.0 o superior - - + + The selection comprises more than one item. Please select just one knot. La selección incluye más de un elemento. Por favor seleccione solo un nudo. - + Input Error Error de Entrada - - + + None of the selected elements is a knot of a B-spline Ninguno de los elementos seleccionados es un nudo de una B-spline - - - - + + + + Select at least two edges from the sketch. Seleccione al menos dos aristas del croquis. - - + + One selected edge is not connectable Una arista seleccionada no es conectable - + Closing a shape formed by exactly two lines makes no sense. Cerrar un cuerpo formada por exactamente dos líneas carece de sentido. - - - - - - - - + + + + + + + + Select elements from a single sketch. Seleccione los elementos de un único croquis. - + No constraint selected Ninguna restricción seleccionada - + At least one constraint must be selected Se debe seleccionar al menos una restricción - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Una construcción simétrica requiere al menos dos elementos geométricos, el último elemento geométrico siendo la referencia para la construcción de la simetría. - + The last element must be a point or a line serving as reference for the symmetry construction. El último elemento debe ser un punto o una línea que sirva como referencia para la construcción de la simetría. - - + + A copy requires at least one selected non-external geometric element Una copia requiere al menos seleccionar un elemento geométrico no externo - + Delete All Geometry Borrar Toda Geometría - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + ¿Está seguro de que desea eliminar todas las geometrías y restricciones? - + Delete All Constraints Eliminar todas las restricciones - + Are you really sure you want to delete all the constraints? ¿Es realmente seguro que desea eliminar todas las restricciones? @@ -3039,62 +3301,62 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c SketcherGui::ConstraintView - + Change value Cambiar valor - + Toggle to/from reference Cambiar referencia a/desde - + Deactivate Desactivar - + Activate Activar - + Show constraints Mostrar las restricciones - + Hide constraints Ocultar las restricciones - + Rename Renombrar - + Center sketch Centrar croquis - + Delete Borrar - + Swap constraint names Intercambiar los nombres de restricción - + Unnamed constraint Restricción sin nombre - + Only the names of named constraints can be swapped. Sólo los nombres de las restricciones nombradas pueden ser cambiados. @@ -3117,8 +3379,8 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Insertar radio - - + + Radius: Radio: @@ -3129,8 +3391,8 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Introduzca el diámetro - - + + Diameter: Diámetro: @@ -3158,24 +3420,24 @@ Combinaciones aceptadas: dos curvas; un extremo y una curva; dos extremos; dos c Longitud: - - + + Change radius Cambiar radio - - + + Change diameter Cambiar Diámetro - + Refractive index ratio Índice refracción - + Ratio n2/n1: Razón n2/n1: @@ -3782,12 +4044,12 @@ Soporta todos los sistemas de unidades excepto 'USA' y 'Building US/Euro'. Show objects that the sketch is attached to - Show objects that the sketch is attached to + Muestra los objetos a los que está conectado el croquis Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Nota: estos valores son aplicados por defecto a nuevos croquis. El comportamiento se recuerda para cada croquis individualmente como propiedades en el menú Ver. @@ -4043,13 +4305,13 @@ Sin embargo, no se encontraron restricciones a los extremos. Información extendida - + Constraints Restricciones - - + + Error Error @@ -4408,104 +4670,104 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc SketcherGui::ViewProviderSketch - + Edit sketch Editar boceto - + 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? ¿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: - + Empty sketch Croquis vacío - + Over-constrained sketch Croquis sobre-restringido - - - + + + (click to select) (Clic para seleccionar) - + Sketch contains conflicting constraints Croquis contiene restricciones conflictivas - + Sketch contains redundant constraints Croquis contiene restricciones redundantes - + Fully constrained sketch Croquis completamente restringido - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Croquis bajo-restringido con <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 grado</span></a> de libertad - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Croquis bajo-restringido con <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 grados</span></a> de libertad - + Solved in %1 sec Resuelto en %1 seg - + Unsolved (%1 sec) Sin resolver (%1 seg) @@ -4513,8 +4775,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Cambiar entre mostrar y ocultar el peine de curvatura para todas las B-splines @@ -4522,8 +4784,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Disminuye la multiplicidad del nudo seleccionado de una B-spline @@ -4531,8 +4793,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Cambiar entre mostrar y ocultar el grado de ltodas las B-splines @@ -4540,8 +4802,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Aumenta la multiplicidad del nudo seleccionado de una B-spline @@ -4549,17 +4811,26 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Cambia entre mostrar y ocultar la multiplicidad de nudo para todas las B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Cambiar entre mostrar y ocultar los polígonos de control para todas las B-splines @@ -4567,8 +4838,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometría tomando como referencia el último punto seleccionado @@ -4576,17 +4847,17 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_CompCopy - + Clone Clonar - + Copy Copiar - + Move Mover @@ -4594,8 +4865,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fijar el diámetro de un círculo o un arco @@ -4603,8 +4874,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fijar el radio de un círculo o arco @@ -4612,8 +4883,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Crea una copia simple de la geometría tomando como referencia el último punto seleccionado @@ -4651,7 +4922,7 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints + Crear un arco de elipse por su centro, radio mayor y extremos @@ -4660,7 +4931,7 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Create an arc of hyperbola by its center, major radius, and endpoints - 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 @@ -4669,7 +4940,7 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints + Crea un arco de parábola por su foco, vértice y extremos @@ -4833,8 +5104,8 @@ Los puntos deben estar más cerca de una quinta parte del tamaño de la cuadríc Current attachment mode is incompatible with the new selection. Select the method to attach this sketch to selected objects. - Current attachment mode is incompatible with the new selection. -Select the method to attach this sketch to selected objects. + El modo adjunto actual es incompatible con la nueva selección. +Seleccione el método para adjuntar este croquis a los objetos seleccionados. @@ -4856,8 +5127,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mover la geometría tomando como referencia el último punto seleccionado diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.qm index e27c7af019..7798cdd05b 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts index 713313b216..ba8bfd075c 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_eu.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Erakutsi/ezkutatu B-spline elementuen kurbadura-orrazia @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + Erakutsi/ezkutatu B-spline funtzioaren gradua @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Erakutsi/ezkutatu B-spline adabegi-aniztasuna @@ -55,6 +55,24 @@ B-spline guztien adabegi-aniztasuna erakusten/ezkutatzen ditu + + CmdSketcherBSplinePoleWeight + + + Sketcher + Krokisgilea + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + Erakutsi/ezkutatu B-spline kontrol-poligonoa @@ -83,7 +101,7 @@ Carbon copy - Carbon copy + Kalkoa @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Krokisgilea - + Clone Klonatu - + Creates a clone of the geometry taking as reference the last selected point Geometriaren klon bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuta @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Krokisgilea - + Close shape - Close shape + Itxi forma - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Sortu forma itxia elementu baten amaiera-puntua alboko elementuaren hasiera-puntuarekin estekatuz CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Krokisgilea - - + Show/hide B-spline information layer Erakutsi/ezkutatu B-spline funtzioaren informazio-geruza - + Show/hide B-spline degree - Show/hide B-spline degree + Erakutsi/ezkutatu B-spline funtzioaren gradua - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + Erakutsi/ezkutatu B-spline kontrol-poligonoa - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Erakutsi/ezkutatu B-spline elementuen kurbadura-orrazia - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Erakutsi/ezkutatu B-spline adabegi-aniztasuna + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Krokisgilea - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Krokisgilea - + Copy Kopiatu - + Creates a clone of the geometry taking as reference the last selected point Geometriaren klon bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuta @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Elipsea periapsi, apoapsi eta erradio txikiaren bidez @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Krokisgilea - + Modify knot multiplicity Aldatu adabegi-aniztasuna - + Modifies the multiplicity of the selected knot of a B-spline B-spline batean hautatutako adabegi baten aniztasuna aldatzen du - + Increase knot multiplicity Handitu adabegi-aniztasuna - + Decrease knot multiplicity Txikitu adabegi-aniztasuna @@ -408,35 +430,35 @@ CmdSketcherConnect - + Sketcher Krokisgilea - + Connect edges - Connect edges + Konektatu ertzak - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Lotu elementuen amaiera-puntua hurrengo elementuaren hasiera-puntuarekin CmdSketcherConstrainAngle - + Sketcher Krokisgilea - + 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 @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Krokisgilea - + Constrain block - Constrain block + Murriztu blokea - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Bloke-murrizketa: blokeatu ertza hautatua, mugitu ez dadin CmdSketcherConstrainCoincident - + Sketcher Krokisgilea - + Constrain coincident Murriztu bat datozenak - + Create a coincident constraint on the selected item Sortu bat-etortzeen murrizketa hautatutako elementuan @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Krokisgilea - + Constrain diameter Murriztu diametroa - + Fix the diameter of a circle or an arc Finkatu zirkulu baten edo arku baten diametroa @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Krokisgilea - + Constrain distance Murriztu distantzia - + Fix a length of a line or the distance between a line and a vertex Finkatu lerro baten luzera edo lerro baten eta erpin baten arteko distantzia @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Krokisgilea - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Krokisgilea - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Krokisgilea - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Krokisgilea - + Constrain horizontally Murriztu horizontalean - + Create a horizontal constraint on the selected item Sortu murrizketa horizontala hautatutako elementuan @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Krokisgilea - + Constrain internal alignment - Constrain internal alignment + Murriztu barne-lerrokatzea - + Constrains an element to be aligned with the internal geometry of another element Elementu bat beste baten barne-geometriarekin lerroka dadin murrizten du @@ -606,37 +628,37 @@ CmdSketcherConstrainLock - + Sketcher Krokisgilea - + Constrain lock Blokeo-murrizketa - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Bloke-murrizketa: sortu distantzia-murrizketa horizontala eta bertikala +hautatutako erpinean CmdSketcherConstrainParallel - + Sketcher Krokisgilea - + Constrain parallel Murriztu paraleloa - + Create a parallel constraint between two lines Sortu murrizketa paraleloa bi lerroren artean @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Krokisgilea - + Constrain perpendicular Murriztu perpendikularra - + Create a perpendicular constraint between two lines Sortu murrizketa perpendikularra bi lerroren artean @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Krokisgilea - + Constrain point onto object Murriztu puntua objektuan - + Fix a point onto an object Finkatu puntu bat objektu batean @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Krokisgilea - + Constrain radius Murriztu erradioa - + Fix the radius of a circle or an arc Finkatu zirkulu baten edo arku baten erradioa @@ -698,57 +720,57 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Krokisgilea - + 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. - 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 +artean eta ertz bat interfaze modura erabilita. CmdSketcherConstrainSymmetric - + Sketcher Krokisgilea - + Constrain symmetrical Murriztu simetrikoki - + Create a symmetry constraint between two points with respect to a line or a third point - Create a symmetry constraint between two points -with respect to a line or a third point + Sortu simetria-murrizketa bat bi punturen artean, +lerro batekiko edo hirugarren puntu batekiko CmdSketcherConstrainTangent - + Sketcher Krokisgilea - + Constrain tangent Murriztu tangentea - + Create a tangent constraint between two entities Sortu murrizketa tangentea bi lerroren artean @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Krokisgilea - + Constrain vertically Murriztu bertikalean - + Create a vertical constraint on the selected item Sortu murrizketa bertikala hautatutako elementuan @@ -774,35 +796,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Krokisgilea - + Convert geometry to B-spline - Convert geometry to B-spline + Bihurtu geometria B-spline - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Hautatutako geometria B-spline bihurtzen du CmdSketcherCopy - + Sketcher Krokisgilea - + Copy Kopiatu - + Creates a simple copy of the geometry taking as reference the last selected point Geometriaren kopia sinple bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuz @@ -1278,35 +1300,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Krokisgilea - + Decrease B-spline degree - Decrease B-spline degree + Txikitu B-spline elementuaren gradua - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + B-spline elementuaren gradua txikitzen du CmdSketcherDecreaseKnotMultiplicity - + Sketcher Krokisgilea - + Decrease knot multiplicity Txikitu adabegi-aniztasuna - + Decreases the multiplicity of the selected knot of a B-spline B-spline batean hautatutako adabegi baten aniztasuna txikitzen du @@ -1314,37 +1336,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Krokisgilea - + Delete all constraints - Delete all constraints + Ezabatu murrizketa guztiak - + Delete all constraints in the sketch - Delete all constraints in the sketch + Ezabatu krokiseko murrizketa guztiak CmdSketcherDeleteAllGeometry - + Sketcher Krokisgilea - + Delete all geometry - Delete all geometry + Ezabatu geometria osoa - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Ezabatu uneko krokiseko geometria eta murrizketa guztiak, kanpoko geometria salbu @@ -1362,7 +1384,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Editatu hautatutako krokisa. @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Krokisgilea - + Increase B-spline degree - Increase B-spline degree + Handitu B-spline elementuaren gradua - + Increases the degree of the B-spline B-spline elementuaren gradua handitzen du @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Krokisgilea - + Increase knot multiplicity Handitu adabegi-aniztasuna - + Increases the multiplicity of the selected knot of a B-spline B-spline batean hautatutako adabegi baten aniztasuna handitzen du @@ -1452,7 +1474,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Amaitu krokis aktiboaren edizioa. @@ -1472,14 +1494,14 @@ with respect to a line or a third point Set the 'Support' of a sketch. First select the supporting geometry, for example, a face or an edge of a solid object, then call this command, then choose the desired sketch. - Set the 'Support' of a sketch. -First select the supporting geometry, for example, a face or an edge of a solid object, -then call this command, then choose the desired sketch. + Ezarri krokis baten 'Euskarria'. +Lehenengo, hautatu euskarri izango den geometria, adibidez objektu solido baten +aurpegi edo ertz bat, ondoren deitu komando hau eta aukeratu nahi den krokisa. Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Hautatutako zenbait objektuk krokisa mapeatua izan dadin behar dute. Mendekotasun zirkularrak ez dira onartzen. @@ -1497,7 +1519,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Sortu krokis berria hautatutako krokis bi edo gehiago fusionatuta. @@ -1507,7 +1529,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Hautatu gutxienez bi krokis. @@ -1527,9 +1549,9 @@ then call this command, then choose the desired sketch. Create a new mirrored sketch for each selected sketch by using the X or Y axes, or the origin point, as mirroring reference. - Create a new mirrored sketch for each selected sketch -by using the X or Y axes, or the origin point, -as mirroring reference. + Sortu ispilatutako krokis berria hautatutako krokis bakoitzerako +X edo Y ardatza erabilita, edo jatorrizko puntua erabilita, +ispilatzerako erreferentzia gisa. @@ -1539,23 +1561,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Hautatu krokis bat edo gehiago. CmdSketcherMove - + Sketcher Krokisgilea - + Move Mugitu - + Moves the geometry taking as reference the last selected point Geometria mugitzen du, hautatutako azken puntua erreferentzia gisa hartuta @@ -1575,23 +1597,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Sortu krokis berria. CmdSketcherRectangularArray - + Sketcher Krokisgilea - + Rectangular array - Rectangular array + Matrize laukizuzena - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Geometriaren matrize-eredu laukizuzena sortzen du, erreferentzia modura hautatutako azken puntua hartuta @@ -1612,162 +1634,162 @@ as mirroring reference. Place the selected sketch on one of the global coordinate planes. This will clear the 'Support' property, if any. - Place the selected sketch on one of the global coordinate planes. -This will clear the 'Support' property, if any. + Kokatu krokis hautatua koordenatu globalen planoetako batean. +Horrela 'Euskarria' propietatea garbituko da, halakorik badago. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Krokisgilea - + Show/hide internal geometry Erakutsi/ezkutatu barne-geometria - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Erakutsi barne-geometria guztia edo ezkutatu erabili gabeko barne-geometria CmdSketcherSelectConflictingConstraints - + Sketcher Krokisgilea - - + + Select conflicting constraints - Select conflicting constraints + Hautatu gatazkan dauden murrizketak CmdSketcherSelectConstraints - + Sketcher Krokisgilea - + Select associated constraints - Select associated constraints + Hautatu elkartuta dauden murrizketak - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Hautatu elementu geometriko hautatuei lotutako murrizketak CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Krokisgilea - + Select associated geometry - Select associated geometry + Hautatu elkartutako geometria - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Hautatu murrizketa hautatuei lotutako elementu geometrikoak CmdSketcherSelectElementsWithDoFs - + Sketcher Krokisgilea - + Select unconstrained DoF - Select unconstrained DoF + Hautatu murrizketarik gabeko askatasun-gradua - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Hautatu elementu geometrikoak ebazleak elementu horietan murriztu gabeko askatasun-graduak detektatzen dituenean. CmdSketcherSelectHorizontalAxis - + Sketcher Krokisgilea - + Select horizontal axis - Select horizontal axis + Hautatu ardatz horizontala - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Hautatu krokisaren ardatz horizontal lokala CmdSketcherSelectOrigin - + Sketcher Krokisgilea - + Select origin - Select origin + Hautatu jatorria - + Select the local origin point of the sketch - Select the local origin point of the sketch + Hautatu krokisaren jatorrizko puntu lokala CmdSketcherSelectRedundantConstraints - + Sketcher Krokisgilea - - + + Select redundant constraints - Select redundant constraints + Hautatu murrizketa erredundanteak CmdSketcherSelectVerticalAxis - + Sketcher Krokisgilea - + Select vertical axis - Select vertical axis + Hautatu ardatz bertikala - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Hautatu krokisaren ardatz bertikal lokala @@ -1785,7 +1807,7 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + Edizio moduan, gelditu eragiketa aktiboa (marraztea, murriztea, etab.). @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Krokisgilea - + Symmetry Simetria - + Creates symmetric geometry with respect to the last selected line or point Geometria simetrikoa sortzen du hautatutako azken lerro edo puntuekiko @@ -1827,19 +1849,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Krokisgilea - + Activate/deactivate constraint - Activate/deactivate constraint + Aktibatu/desaktibatu murrizketa - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Hautatutako murrizketak aktibatzen edo desaktibatzen ditu @@ -1863,21 +1885,21 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Krokisgilea - + Toggle driving/reference constraint - Toggle driving/reference constraint + Aktibatu/desaktibatu gidatze/erreferentziako murrizketa - + Set the toolbar, or the selected constraints, into driving or reference mode - Set the toolbar, or the selected constraints, -into driving or reference mode + Ezarri tresna-barra, edo hautatutako murrizketak, +gidatze edo erreferentziako moduan @@ -1914,13 +1936,13 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Balioztatu krokis bat falta diren bat etortzeak, baliogabeko +murrizketak, geometria degeneratuak, etab. aztertuta. Select only one sketch. - Select only one sketch. + Hautatu krokis bakar bat. @@ -1943,7 +1965,7 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + Edizio moduan, txandakatu sekzio-bista eta bista osoa. @@ -1961,7 +1983,247 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + Edizio moduan, ezarri kameraren orientazioa krokis-planoarekiko perpendikularrean. + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. OCE/OCC bertsio honek ez du onartzen adabegien gaineko eragiketarik. 6.9.0 bertsioa edo berriagoa behar duzu. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2514,304 @@ invalid constraints, degenerated geometry, etc. Hautatu krokiseko ertza(k). - - - - + + + + Dimensional constraint Kota-murrizketa - - - + + + Only sketch and its support is allowed to select Krokisa eta bere euskarria soilik hauta daitezke - + One of the selected has to be on the sketch 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! - + The selected item(s) can't accept a horizontal constraint! Hautatutako elementua(e)k ez du(te) murrizketa horizontal bat onartzen! - + There are more than one fixed point selected. Select a maximum of one fixed point! Puntu finko bat baino gehiago dago hautatuta. Gehienez puntu finko bakarra hautatu behar duzu! - + The selected item(s) can't accept a vertical constraint! Hautatutako elementua(e)k ez du(te) murrizketa bertikal bat onartzen! - + 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 Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + Ezin da murrizketa bat gehitu bi kanpo-geometriaren artean. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + Ezin da murrizketa bat gehitu bi geometria finkoren artean. Geometria finkoek kanpo-geometriak, blokeatutako geometriak edo puntu espezialak (esaterako, B-spline adabegi-puntuak) dituzte. - + 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. + 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. - - - - - - - - + + + + + + + + Error Errorea - + Select two or more points from the sketch. Hautatu krokiseko bi puntu edo gehiago. - - + + Select two or more vertexes from the sketch. Hautatu krokiseko bi erpin edo gehiago. - - + + Constraint Substitution Murrizketen ordezkapena - + Endpoint to endpoint tangency was applied instead. Amaiera-puntutik amaiera-punturako tangentzia aplikatu da horren ordez. - + Select vertexes from the sketch. Hautatu krokiseko erpinak. - - + + 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! - + This constraint does not make sense for non-linear curves Murrizketa honek ez du zentzurik linealak ez diren kurbekin - - - - - - + + + + + + Select the right things from the sketch. Hautatu krokiseko elementu egokiak. - - + + Point on B-spline edge currently unsupported. Oraindik ez da onartzen puntua B-spline ertzean. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Hautatu puntu bat eta zenbait kurba, edo kurba bat eta zenbait puntu. %1 kurba eta %2 puntu hautatu dituzu. - - - - + + + + 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. - - + + Select at least two lines from the sketch. Hautatu krokiseko bi lerro, gutxienez. - + Select a valid line Hautatu baliozko lerro bat - - + + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Hautatutako objektu kopuru okerra! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3 objektu badira, 2 kurba eta puntu1 egon behar dute. - - + + Cannot add a perpendicularity constraint at an unconnected point! Ezin zaio perpendikulartasun-murrizketa bat gehitu konektatu gabeko puntu bati! - - - + + + Perpendicular to B-spline edge currently unsupported. Oraindik ez da onartzen perpendikularra B-spline ertzean. - - + + One of the selected edges should be a line. Hautatutako ertzetako batek lerroa izan behar du. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Hautatutako objektu kopuru okerra! - - - + + + Cannot add a tangency constraint at an unconnected point! Ezin zaio tangentzia-murrizketa gehitu konektatu gabeko puntu bati! - - - + + + Tangency to B-spline edge currently unsupported. Oraindik ez da onartzen tangentea B-Spline ertzean. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Amaiera-puntutik amaiera-punturako tangentzia aplikatu da. Bat datorren murrizketa ezabatu egin da. - - - - + + + + Select one or more arcs or circles from the sketch. Hautatu krokiseko arku edo zirkulu bat edo gehiago. - - + + Constrain equal Murriztu berdin - + Do you want to share the same radius for all selected elements? Hautatutako elementu guztiek erradio bera parteka dezaten nahi duzu? - - + + Constraint only applies to arcs or circles. Murrizketa arkuei edo zirkuluei soilik aplikatzen zaie. - + Do you want to share the same diameter for all selected elements? Hautatutako elementu guztiek diametro bera parteka dezaten nahi duzu? - - + + 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. - - + + Parallel lines Lerro paraleloak - - + + An angle constraint cannot be set for two parallel lines. 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. - 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 - 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. + 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Ezin da murrizketa sortu kanpo-geometria soilik erabiliz. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Bateragarria ez den geometria hautatu da. - + SnellsLaw on B-spline edge is currently unsupported. - SnellsLaw on B-spline edge is currently unsupported. + Oraindik ez da onartzen Snell-en legea B-spline ertzean. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + Ezin duzu elipse bat barnetik beste elipse batekin murriztu. Hautatu elipse bakar bat. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Une honetan elipsearen barneko elementu geometriko guztiak agerian daude jadanik. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Hautatu krokiseko murrizketak. - + Selected objects are not just geometry from one sketch. Hautatutako elementuak ez dira soilik krokis bateko geometria. - + Number of selected objects is not 3 (is %1). Hautatutako objektuen kopurua ez da 3 (%1 da). - - + + Select at least one ellipse and one edge from the sketch. Hautatu elipse bat eta ertz bat, gutxienez, krokisean. - + Sketch axes cannot be used in internal alignment constraint Krokis-ardatzak ezin dira erabili barne-lerrokatzeko murrizketan - - + + Maximum 2 points are supported. Gehienez 2 puntu onartzen dira. - - + + Maximum 2 lines are supported. Gehienez 2 lerro onartzen dira. - - + + Nothing to constrain Ez dago murrizteko ezer - - - - + + + + Extra elements Elementu gehigarriak - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Behar direnak baino elementu gehiago hornitu dira emandako elipserako. Horiek ez ikusi egingo dira. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Ezin duzu elipse-arku bat barnetik beste elipse-arku batekin murriztu. Hautatu elipse-arku bakar bat. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Ezin duzu elipse bat barnetik elipse-arku batekin murriztu. Hautatu elipse edo elipse-arku bakar bat. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Behar direnak baino elementu gehiago hornitu dira emandako elipserako. Horiek ez ikusi egingo dira. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Une honetan barne-geometria elipseekin edo elipseen arkuekin soilik onartzen da. Hautatutako azken elementuak elipsea edo elipse baten arkua izan behar du. @@ -2862,124 +3124,124 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p - + CAD Kernel Error CAD kernel-errorea - + None of the selected elements is an edge. Hautatutako elementuetako bat ere ez da ertza. - - + + At least one of the selected objects was not a B-Spline and was ignored. Hautatutako objektuetako bat, gutxienez, ez da B-spline motakoa, eta ezikusi egin da. - - + + Wrong OCE/OCC version OCE/OCC bertsio okerra - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher OCE/OCC bertsio honek ez du onartzen adabegien gaineko eragiketak. 6.9.0 bertsioa edo berriagoa behar duzu - - + + The selection comprises more than one item. Please select just one knot. Hautapenak elementu bat baino gehiago du. Hautatu adabegi bakar bat. - + Input Error Sarrera-errorea - - + + None of the selected elements is a knot of a B-spline Hautatutako elementuetan ez dago B-spline baten adabegirik - - - - + + + + Select at least two edges from the sketch. Hautatu krokiseko bi ertz, gutxienez. - - + + One selected edge is not connectable Hautatutako ertzetako bat ezin da konektatu - + Closing a shape formed by exactly two lines makes no sense. Ez du zentzurik bi lerrok soilik osatzen duten forma bat ixteak. - - - - - - - - + + + + + + + + Select elements from a single sketch. Hautatu krokis bakar bateko elementuak. - + No constraint selected Ez da murrizketarik hautatu - + At least one constraint must be selected Gutxienez murrizketa bat hautatu behar da - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Eraikuntza simetrikoak gutxienez bi elementu geometriko behar ditu, eta azken elementu geometrikoa simetria-eraikuntzaren erreferentzia izango da. - + The last element must be a point or a line serving as reference for the symmetry construction. Azken elementuak simetria-eraikuntzarentzat erreferentzia gisa balioko duen puntu edo lerro bat izan behar du. - - + + A copy requires at least one selected non-external geometric element Kopia batek behar du kanpokoa ez den elementu geometriko bat, gutxienez, hautatua egon dadin - + Delete All Geometry Ezabatu geometria guztia - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Ziur zaude geometria eta murrizketa guztiak ezabatu nahi dituzula? - + Delete All Constraints Ezabatu murrizketa guztiak - + Are you really sure you want to delete all the constraints? Ziur zaude murrizketa guztiak ezabatu nahi dituzula? @@ -3040,62 +3302,62 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p SketcherGui::ConstraintView - + Change value Aldatu balioa - + Toggle to/from reference Txandakatu nondik/nora erreferentzia - + Deactivate Desaktibatu - + Activate Aktibatu - + Show constraints Erakutsi murrizketak - + Hide constraints Ezkutatu murrizketak - + Rename Aldatu izena - + Center sketch Zentratu krokisa - + Delete Ezabatu - + Swap constraint names Trukatu murrizketen izenak - + Unnamed constraint Izenik gabeko murrizketa - + Only the names of named constraints can be swapped. Izendun murrizketen izenak soilik truka daitezke. @@ -3118,8 +3380,8 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Txertatu erradioa - - + + Radius: Erradioa: @@ -3130,8 +3392,8 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Txertatu diametroa - - + + Diameter: Diametroa: @@ -3159,24 +3421,24 @@ Onartutako konbinazioak: bi kurba; amaiera-puntu bat eta kurba bat; bi amaiera-p Luzera: - - + + Change radius Aldatu erradioa - - + + Change diameter Aldatu diametroa - + Refractive index ratio Errefrakzio-indizea - + Ratio n2/n1: n2/n1 erlazioa: @@ -3445,7 +3707,7 @@ aldaketak zuzenean islatuko dira kopietan Show section 'Advanced solver control' in task dialog - Erakutsi 'Ebazle-kontrol aurreratua' atala zereginaren elkarrizketa-koadroan + Erakutsi 'Ebazle-kontrol aurreratua' atala atazaren elkarrizketa-koadroan @@ -3786,12 +4048,12 @@ Unitate-sistema guztiak onartzen ditu, 'US customary' eta 'Building US/Euro' sal Show objects that the sketch is attached to - Show objects that the sketch is attached to + Erakutsi krokisa erantsita duten objektuak Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Oharra: ezarpen hauek krokis berriei aplikatutako balio lehenetsiak dira. Portaera 'Ikusi' fitxan gogoratuko dira, propietate gisa eta krokis bakoitzerako bereak. @@ -4047,13 +4309,13 @@ Hala ere, ez da aurkitu amaiera-puntuei estekatutako murrizketarik.Informazio gehiago - + Constraints Murrizketak - - + + Error Errorea @@ -4297,7 +4559,7 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Rendering order (global): - Rendering order (global): + Errendatze-ordena (globala): @@ -4412,104 +4674,104 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar 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: - + Empty sketch Krokis hutsa - + Over-constrained sketch Gehiegi murriztutako krokisa - - - + + + (click to select) (klik hautatzeko) - + Sketch contains conflicting constraints Krokisak gatazkan dauden murrizketak ditu - + Sketch contains redundant constraints Krokisak murrizketa erredundanteak ditu - + Fully constrained sketch Osorik murriztutako krokisa - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Erabat mugatu gabeko krokisa <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 graduko</span></a> askatasunarekin - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Erabat mugatu gabeko krokisa <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 graduko</span></a> askatasunarekin - + Solved in %1 sec %1 segundotan ebatzi da - + Unsolved (%1 sec) Ebatzi gabea (%1 seg) @@ -4517,8 +4779,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines B-spline guztien kurbadura-orrazia erakusten/ezkutatzen ditu @@ -4526,8 +4788,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline B-spline batean hautatutako adabegi baten aniztasuna txikitzen du @@ -4535,8 +4797,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines B-spline guztien gradua erakusten/ezkutatzen ditu @@ -4544,8 +4806,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline B-spline batean hautatutako adabegi baten aniztasuna handitzen du @@ -4553,17 +4815,26 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines B-spline guztien adabegi-aniztasuna erakusten/ezkutatzen ditu + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines B-spline guztien kontrol-poligonoak erakusten/ezkutatzen ditu @@ -4571,8 +4842,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Geometriaren klon bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuta @@ -4580,17 +4851,17 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_CompCopy - + Clone Klonatu - + Copy Kopiatu - + Move Mugitu @@ -4598,8 +4869,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Finkatu zirkulu baten edo arku baten diametroa @@ -4607,8 +4878,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Finkatu zirkulu baten edo arku baten erradioa @@ -4616,8 +4887,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Geometriaren kopia sinple bat sortzen du, erreferentzia gisa hautatutako azken puntua hartuz @@ -4655,7 +4926,7 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints + Sortu elipse-arku bat erdiko puntua, erradio handia eta amaiera-puntuak erabiliz @@ -4664,7 +4935,7 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints + Sortu hiperbola-arku bat erdiko puntua, erradio handia eta amaiera-puntuak erabiliz @@ -4673,7 +4944,7 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints + Sortu parabola-arku bat fokua, erpina eta amaiera-puntuak erabiliz @@ -4837,8 +5108,8 @@ Puntuak lerro batetik sareta-tamainaren bosten bat baino hurbilago ezarri behar Current attachment mode is incompatible with the new selection. Select the method to attach this sketch to selected objects. - Current attachment mode is incompatible with the new selection. -Select the method to attach this sketch to selected objects. + Uneko eranste modua ez da bateragarria hautapen berriarekin. +Hautatu krokis hau hautatutako objektuei eransteko erabiliko den metodoa. @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Geometria mugitzen du, hautatutako azken puntua erreferentzia gisa hartuta diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.qm index f90600549d..8073ae1a66 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts index 63024a1cf6..db60a264a8 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fi.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Lunnostelija + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Lunnostelija - + Clone Kloonaa - + Creates a clone of the geometry taking as reference the last selected point Luo kloonin geometriasta käyttäen viimeistä valittua pistettä viittauksena @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Lunnostelija - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Lunnostelija - - + Show/hide B-spline information layer Näytä/piilota B-käyrän informaatiokerros - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Lunnostelija - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Lunnostelija - + Copy Kopio - + Creates a clone of the geometry taking as reference the last selected point Luo kloonin geometriasta käyttäen viimeistä valittua pistettä viittauksena @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Lunnostelija - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Lunnostelija - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Lunnostelija - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Lunnostelija - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Lunnostelija - + Constrain coincident Samanlaisuus rajoite - + Create a coincident constraint on the selected item Luo samanlainen rajoite valituille kohteille @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Lunnostelija - + Constrain diameter Rajoita halkaisija - + Fix the diameter of a circle or an arc Kiinnitä ympyrän tai kaaren halkaisija @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Lunnostelija - + Constrain distance Etäisyys rajoitus - + Fix a length of a line or the distance between a line and a vertex Korjaa viivan pituutta tai etäisyyttä viivan ja pisteen välillä @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Lunnostelija - + 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ä @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Lunnostelija - + 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ä @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Lunnostelija - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Lunnostelija - + Constrain horizontally Vaakasuora rajoite - + Create a horizontal constraint on the selected item Luo vaakasuora rajoite valittujen osien välille @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Lunnostelija - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Rajoitus: kohde tasataan toisen kohteen sisäisen geometrian kanssa @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Lunnostelija - + Constrain lock Rajoite lukko - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Lunnostelija - + Constrain parallel Rajoita yhdensuuntaiseksi - + Create a parallel constraint between two lines Luo rinnakkaisuus rajoite kahden viivan välille @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Lunnostelija - + Constrain perpendicular Rajoita kohtisuorasti - + Create a perpendicular constraint between two lines Luo kohtisuora rajoitus kahden viivan väliin @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Lunnostelija - + Constrain point onto object Rajoita piste objektiin - + Fix a point onto an object Korjaa piste objektin paalle @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Lunnostelija - + Constrain radius Rajoita säde - + Fix the radius of a circle or an arc Korjaa ympyrän tai kaaren sädettä @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Lunnostelija - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Lunnostelija - + Constrain symmetrical Rajoita symmetrisesti - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Lunnostelija - + Constrain tangent Rajoita tangentti - + Create a tangent constraint between two entities Luo tangenttirajoite kahden yksikön välillä @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Lunnostelija - + Constrain vertically Rajoita pystysuuntaisesti - + Create a vertical constraint on the selected item Luo pystysuora rajoite valitulle kohteelle @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Lunnostelija - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Lunnostelija - + Copy Kopio - + Creates a simple copy of the geometry taking as reference the last selected point Luo yksinkertaisen kopion geometriasta käyttäen viimeistä valittua pistettä viittauksena @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Lunnostelija - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Lunnostelija - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Lunnostelija - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Lunnostelija - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Lunnostelija - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Kasvattaa B-käyrän astetta @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Lunnostelija - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Lunnostelija - + Move Siirrä - + Moves the geometry taking as reference the last selected point Siirtää geometriaa käyttäen viimeistä valittua pistettä viittauksena @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Lunnostelija - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Lunnostelija - + Show/hide internal geometry Näytä/Piilota sisäinen geometria - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Lunnostelija - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Lunnostelija - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Lunnostelija - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Lunnostelija - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Lunnostelija - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Lunnostelija - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Lunnostelija - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Lunnostelija - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Lunnostelija - + Symmetry Symmetria - + Creates symmetric geometry with respect to the last selected line or point Peilaa geometriaa suhteessa viimeisenä valittuun viivaan tai pisteeseen @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Lunnostelija - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Lunnostelija - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Valitse reuna(t) sketsistä. - - - - + + + + Dimensional constraint Mittarajoite - - - + + + Only sketch and its support is allowed to select Vain sketsi ja sen tuki on sallittu valinta - + One of the selected has to be on the sketch Yksi valituista on oltava sketsi - - + + Select an edge from the sketch. Valitse luonnoksen reuna. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Mahdoton rajoite - - - - + + + + The selected edge is not a line segment Valittu reuna ei ole viivasegmentillä - - - - - - + + + + + + Double constraint Kaksinkertainen rajoite - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Valitut kohteet eivät voi hyväksyä vaakasuoraa rajoitetta! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! Valitut kohteet eivät voi hyväksyä pystysuoraa rajoitetta! - + 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Virhe - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Valitse vähintään kaksi kärkipistettä luonnoksesta. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Valitse pisteet luonnoksesta. - - + + 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! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + 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! 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! Akselille ei voida lisätä vaakapituusrajoitetta! - + 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. Valitse kaksi tai useampi viiva sketsistä. - - + + Select at least two lines from the sketch. Valitse vähintään kaksi viivaa sketsistä. - + Select a valid line Valitse kelvollinen viiva - - + + The selected edge is not a valid line Valittu reuna ei ole kelvollinen viiva - + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Väärä lukumäärä valittuja kohteita! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3 kohteella on oltava 2 käyrää ja 1 piste. - - + + Cannot add a perpendicularity constraint at an unconnected point! Yhdistämättömille pisteille ei voida lisätä samansuuntausuusrajoitetta! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. Yhden valituista reunoista pitäisi olla viiva. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Valitse jokin geometria luonnoksesta. - + Wrong number of selected objects! tangent constraint Väärä lukumäärä valittuja kohteita! - - - + + + Cannot add a tangency constraint at an unconnected point! Yhdistämättömään pisteeseen ei voi lisätä samansuuntaisuusrajoitetta! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Valitse yksi tai userampia kaaria tai ympyröitä luonnoksesta. - - + + Constrain equal Yhtäsuuruus rajoite - + Do you want to share the same radius for all selected elements? Haluat jakaa saman säteen kaikissa valituissa osissa? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + 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. - - + + Parallel lines Samansuuntaiset viivat - - + + An angle constraint cannot be set for two parallel lines. 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 Valitse yksi tai useampi yhteensopiva reuna - + Sketch axes cannot be used in equality constraints Luonnoksen akseleita ei voida käyttää yhtäsuuruusrajoitteina - + Equality for B-spline edge currently unsupported. Equality for B-spline edge currently unsupported. - - + + Select two or more edges of similar type Valitse yksi tai useampi samantyyppinen reuna - - - - - + + + + + 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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Valitut kohteet eivät ole vain yhden luonnoksen geometriaa. - + Number of selected objects is not 3 (is %1). Valittuja kohteita ei ole 3 (on %1). - - + + Select at least one ellipse and one edge from the sketch. Valitse vähintään yksi ellipsi ja yksi reuna luonnoksesta. - + Sketch axes cannot be used in internal alignment constraint Luonnoksen akseleita ei voi käyttää sisäisen tasauksen rajoitteessa - - + + Maximum 2 points are supported. Enintään 2 pistettä ovat tuettuja. - - + + Maximum 2 lines are supported. Enintään 2 viivaa ovat tuettuja. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Ylimääräisiä osia - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Enemmän osia kuin on mahdollista annettuun määriteltyyn ellipsiin. Nämä jätettiin huomiotta. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Enemmän osia kuin on mahdollista annettuun määriteltyyn ellipsin kaareen. Nämä jätettiin huomiotta. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Tällä hetkellä sisäinen geometria tuetaan vain ellipsille tai ellipsin kaarelle. Viimeksi valitun osan on oltava ellipsi tai ellipsin kaari. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Valitse vähintään kaksi reunaa luonnoksesta. - - + + One selected edge is not connectable Yksi valittu reuna ei ole liitettävissä - + Closing a shape formed by exactly two lines makes no sense. Muodon sulkeminen tehtynä täsmälleen kahdella viivalla on järjetöntä. - - - - - - - - + + + + + + + + Select elements from a single sketch. Valitse osat yhdestä luonnkoksesta. - + No constraint selected Ei rajoitetta valittuna - + At least one constraint must be selected Vähintään yksi rajoite on valittava - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry Poista kaikki geometria - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Poista kaikki rajoitteet - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Muuta arvoa - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Nimeä uudelleen - + Center sketch Center sketch - + Delete Poista - + Swap constraint names Swap constraint names - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Aseta säde - - + + Radius: Säde: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Halkaisija: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Pituus: - - + + Change radius Vaihda sädettä - - + + Change diameter Change diameter - + Refractive index ratio Taitekerroin suhdeluku - + Ratio n2/n1: Suhde n2/n1: @@ -4047,13 +4309,13 @@ Kuitenkaan ei ole löytynyt rajoitteita, jotka liittyisivät päätepisteisiin.< Extended information - + Constraints Rajoitteet - - + + Error Virhe @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. The sketch is invalid and cannot be edited. - + 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: - + Empty sketch Tyhjä luonnos - + Over-constrained sketch Liian rajoitettu luonnos - - - + + + (click to select) (Valitse napsauttamalla) - + Sketch contains conflicting constraints Luonnos sisältää ristiriitaisia rajoituksIa - + Sketch contains redundant constraints Luonnos sisältää tarpeettomia rajoituksia - + Fully constrained sketch Täysin rajoitettu luonnos - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Ratkaistu %1 sekunnissa - + Unsolved (%1 sec) Ratkaisematta (%1 sekuntia) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Vaihtaa B-käyrän kaarevuuden näkyvyyden päälle tai pois @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Vaihtaa B-käyrän asteen näkyvyyden päälle tai pois @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Vaihtaa B-käyrän hallintamonikulmion näkyvyyden päälle tai pois @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Luo kloonin geometriasta käyttäen viimeistä valittua pistettä viittauksena @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Kloonaa - + Copy Kopio - + Move Siirrä @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Kiinnitä ympyrän tai kaaren halkaisija @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Korjaa ympyrän tai kaaren sädettä @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Luo yksinkertaisen kopion geometriasta käyttäen viimeistä valittua pistettä viittauksena @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Siirtää geometriaa käyttäen viimeistä valittua pistettä viittauksena diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.qm index b393b2d911..3edfafdc6b 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.ts index cda73718fd..f6d27cee4d 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fil.ts @@ -55,6 +55,24 @@ Lilipat sa pagitan ng pagpapakita at pagtatago ng pagkarami-rami ng knot para sa lahat ng B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Gayahin - + Creates a clone of the geometry taking as reference the last selected point Gumawa ng isang clone ng pagkuha ng geometry bilang sanggunian sa huling piniling punto @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Ipakita/itago ang latag ng impormasyon ng B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Constrain Guhit na mulâ sa gitnâ hanggang sa gilid ng bilog - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Kopya - + Creates a clone of the geometry taking as reference the last selected point Gumawa ng isang clone ng pagkuha ng geometry bilang sanggunian sa huling piniling punto @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Baguhin ang multiplicity ng knot - + Modifies the multiplicity of the selected knot of a B-spline Binabago ang napakaraming mga napiling buhol ng isang B-spline - + Increase knot multiplicity Pataasin ang multiplicity ng umpukan - + Decrease knot multiplicity Pababain ang multiplicity ng umpukan @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Constrain angle - + Fix the angle of a line or the angle between two lines I-ayos ang anggulo ng isang guhit o anggulo sa pagitan ng dalawang linya @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Constrain coincidents - + Create a coincident constraint on the selected item Gumawa ng magkakatulad na pagpilit sa piniling item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Limitahan ang layo - + Fix a length of a line or the distance between a line and a vertex Ayusin ang isang haba ng isang guhit o ang distansya sa pagitan ng isang linya at isang vertex @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Ayusin ang pahalang distansya sa pagitan ng dalawang puntos o guhit ay nagtatapos @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Ayusin ang patindig na distansya sa pagitan ng dalawang puntos o linya ay nagtatapos @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Limitahan ang pagkakapareho - + Create an equality constraint between two lines or between circles and arcs Gumawa ng isang pagpigil sa pagkakapantay-pantay sa pagitan ng dalawang linya o sa pagitan ng mga lupon at mga arko @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Constrain horizontally - + Create a horizontal constraint on the selected item Gumawa ng pahalang na pagpilit sa piniling item @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Ang isang elemento ay nakahanay sa panloob na geometry ng isa pang elemento @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Constrain lock - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Constrain parallel - + Create a parallel constraint between two lines Lumikha ng parallel pagpilit sa pagitan ng dalawang linya @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Constrain perpendicular - + Create a perpendicular constraint between two lines Gumawa ng perpendikular na pagpilit sa pagitan ng dalawang linya @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Constrain point papunta sa object - + Fix a point onto an object Ayusin ang isang punto papunta sa isang bagay @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Constrain Guhit na mulâ sa gitnâ hanggang sa gilid ng bilog - + Fix the radius of a circle or an arc Ayusin ang radius ng isang bilog o isang arko @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Constrain paglilihid o pag lilisya (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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Pagpigil ng simetrikal - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Umampat ng nahahawakan - + Create a tangent constraint between two entities Gumawa ng tangen na pagpilit sa pagitan ng dalawang entidad @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Patayo nang patayo - + Create a vertical constraint on the selected item Lumikha ng patindig na pagpilit sa piniling item @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Kopya - + Creates a simple copy of the geometry taking as reference the last selected point Lumilikha ng isang simpleng kopya ng pagkuha ng Heometría bilang sanggunian sa huling piniling punto @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Pababain ang multiplicity ng umpukan - + Decreases the multiplicity of the selected knot of a B-spline Binabawasan ang napakaraming mga napiling buhol ng isang B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Pinapataas ang antas ng B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Pataasin ang multiplicity ng umpukan - + Increases the multiplicity of the selected knot of a B-spline Pinapataas ang maraming iba't ibang mga napiling buhol ng isang B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Galawin - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Ipakita/Itago ang panloob na geometry - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Symmetry - + Creates symmetric geometry with respect to the last selected line or point Gumawa ng simetriko Heometría na may paggalang sa huling piniling linya o punto @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. Humihiling ka ng walang pagbabago sa pagkarami-rami ng pinagdahunan. - + 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. Ang index ng natuklod ay wala sa hangganan. Tandaan na alinsunod sa notasyon ng OCC, ang unang buhol ay may index 1 at hindi zero. - + 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. Ang pagkarami-rami ay hindi maaaring mabawasan ng lampas sa zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. Ang OCC ay hindi maaaring bawasan ang maraming iba't ibang uri sa loob ng maximum na tolerasyon. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Pumili ng mga gilid(s) mula sa sketch. - - - - + + + + Dimensional constraint Sukat na pagpilit - - - + + + Only sketch and its support is allowed to select Ang disenyo lamang at ang suporta nito ay pinapayagang pumili - + One of the selected has to be on the sketch Ang isa sa mga napili ay kailangang nasa disenyo - - + + Select an edge from the sketch. Pumili ng isang gilid mula sa sketch. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Imposibleng pagpilit - - - - + + + + The selected edge is not a line segment Ang piniling hangganan ay hindi isang line segment - - - - - - + + + + + + Double constraint Dobleng pagpilit - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Ang (mga) napiling item ay hindi maaaring tumanggap ng pahalang na pagpilit! - + There are more than one fixed point selected. Select a maximum of one fixed point! Mayroong higit sa isang nakapirming punto na napili. Pumili ng isang pinakamataas sa isang nakapirming punto! - + The selected item(s) can't accept a vertical constraint! Ang (mga) napiling item ay hindi maaaring tumanggap ng vertical na pagpilit! - + 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. Pumili ng mga vertex mula sa disenyo. - + Select one vertex from the sketch other than the origin. Pumili ng isang vertex mula sa disenyo maliban sa pinanggalingan. - + Select only vertices from the sketch. The last selected vertex may be the origin. Pumili lamang ng mga vertex mula sa plano. Ang huling napiling vertex ay maaaring ang pinagmulan. - + Wrong solver status Maling katayuan ng tagalutas @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Pumili ng isang gilid batay sa disenyo. - + Select only edges from the sketch. Pumili lamang ng mga gilid batay sa disenyo. - - - - - - - - + + + + + + + + Error Kamalian - + Select two or more points from the sketch. Pumili ng dalawa o higit pang mga puntos mula sa disenyo. - - + + Select two or more vertexes from the sketch. Pumili ng dalawa o higit pang mga vertex mula sa disenyo. - - + + Constraint Substitution Pagpapalit sa Harang - + Endpoint to endpoint tangency was applied instead. Ang Endpoint sa Endpoint na ugnayan ang nailapat. - + Select vertexes from the sketch. Pumili ng mga vertex mula sa disenyo. - - + + Select exactly one line or one point and one line or two points from the sketch. Piliin ang eksaktong isang guhit o isang punto at isang guhit o dalawang puntos mula sa disenyo. - + Cannot add a length constraint on an axis! Hindi maaaring magdagdag ng isang haba pagpilit sa isang axis! - + This constraint does not make sense for non-linear curves Ang pagpigil na ito ay walang kahulugan para sa mga di-linear curves - - - - - - + + + + + + Select the right things from the sketch. Piliin ang mga tamang bagay mula sa disenyo. - - + + Point on B-spline edge currently unsupported. Ituro ang hangganan ng B-spline na kasalukuyang hindi sinusuportahan. - - + + 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. Wala sa mga piniling dulo ang nilimitahan sa kani-kanilang mga kurba, alinman dahil ang mga ito ay mga bahagi ng parehong elemento, o dahil sila ay parehong panlabas na Heometría. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Piliin ang alinman sa isang punto at ilang mga curve, o isang curve at ilang mga puntos. Pinili mo ang %1 curves at %2 puntos. - - - - + + + + Select exactly one line or up to two points from the sketch. Piliin ang eksaktong isang linya o hanggang sa dalawang puntos mula sa disenyo. - + Cannot add a horizontal length constraint on an axis! Hindi maaaring magdagdag ng pahalang na haba ng pagpilit sa isang aksis! - + 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 Ang pagpigil lamang ay may katuturan sa isang line segment o isang pares ng mga puntos - + Cannot add a vertical length constraint on an axis! Hindi maaaring magdagdag ng patindig na haba constraint sa isang 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. Pumili ng dalawa o higit pang mga guhit mula sa disenyo. - - + + Select at least two lines from the sketch. Pumili ng hindi bababa sa dalawang linya mula sa disenyo. - + Select a valid line Pumili ng isang valid na linya - - + + The selected edge is not a valid line Ang piniling gilid ay hindi wastong guhit - + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Mga tinanggap na kumbinasyon: dalawang kurva; isang pangwakas na dulo at isang kurba; dalawang dulo; dalawang kurva at isang punto. - + Select some geometry from the sketch. perpendicular constraint Pumili ng ilang Heometría mula sa plano. - + Wrong number of selected objects! perpendicular constraint Maling bilang ng mga napiling anyo! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint May 3 bagay, kailangang mayroong 2 kurba at 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Hindi maidaragdag ang pagpilit ng perpendicularity sa isang hindi nakakaalam na punto! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendikular sa B-spline hangganan na kasalukuyang hindi sinusuportahan. - - + + One of the selected edges should be a line. Ang isa sa mga napiling dulo ay dapat na isang guhit. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dalawang dulo; dalawang kurva at isang punto. - + Select some geometry from the sketch. tangent constraint Pumili ng ilang Heometría mula sa plano. - + Wrong number of selected objects! tangent constraint Maling bilang ng mga napiling anyo! - - - + + + Cannot add a tangency constraint at an unconnected point! Hindi mangyayaring magdagdag ng isang pagpilit tangency sa isang hindi nakakaalam na punto! - - - + + + Tangency to B-spline edge currently unsupported. Tangency sa B-spline hangganan ng kasalukuyang hindi suportadong. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Ang Endpoint sa Endpoint na ugnayan ay inilapat na. Ang hindi inaasahang harang ay natanggal na. - - - - + + + + Select one or more arcs or circles from the sketch. Pumili ng isa o higit pang mga arko o mga lupon mula sa disenyo. - - + + Constrain equal Limitahan ang pagkakapareho - + Do you want to share the same radius for all selected elements? Gusto mo bang ibahagi ang parehong radius para sa lahat ng napiling elemento? - - + + Constraint only applies to arcs or circles. Nalalapat lamang ang pagpipigil sa mga arko o lupon. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Pumili ng isa o dalawang guhit mula sa plano. O pumili ng dalawang gilid at punto. - - + + Parallel lines Mga parallel na linya - - + + An angle constraint cannot be set for two parallel lines. Ang isang pagpilit ng anggulo ay hindi maaaring itakda para sa dalawang parallel na linya. - + Cannot add an angle constraint on an axis! Hindi mangyayaring magdagdag ng anggulo sa pagpilit sa isang axis! - + Select two edges from the sketch. Pumili ng dalawang hangganan mula sa disenyo. - - + + Select two or more compatible edges Pumili ng dalawa o higit pang mga katugmang mga hangganan - + Sketch axes cannot be used in equality constraints Ang mga disenyo axes ay hindi maaaring gamitin sa mga limitasyon ng pagkakapantay-pantay - + Equality for B-spline edge currently unsupported. Ang pagkakapantay-pantay para sa B-spline baybayin kasalukuyang ay hindi sinusuportahan. - - + + Select two or more edges of similar type Pumili ng dalawa o higit pang mga baybayin ng magkatulad na uri - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Pumili ng dalawang puntos at isang mahusay na proporsyon linya, dalawang puntos at isang mahusay na proporsyon point o isang linya at isang mahusay na proporsyon point mula sa 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! Hindi maaaring magdagdag ng isang magaling na pagpapasiya sa pagitan ng isang guhit at mga punto ng pagtatapos nito! - + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Ang mga napiling bagay ay hindi lamang Heometría mula sa isang disenyo. - + Number of selected objects is not 3 (is %1). Ang bilang ng mga hinirang na bagay ay hindi 3 (ay %1). - - + + Select at least one ellipse and one edge from the sketch. Pumili ng hindi bababa sa isang ellipse at isang gilid mula sa sketch. - + Sketch axes cannot be used in internal alignment constraint Hindi maaaring magamit ang disenyong axes sa pagpilit ng panloob na pagkakahanay - - + + Maximum 2 points are supported. Ang pinakamataas na 2 puntos ay sinusuportahan. - - + + Maximum 2 lines are supported. Ang pinakamataas na 2 linya ay suportado. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Mga dagdag na pasimulang aral - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Ang mas maraming elemento kaysa posible para sa ibinigay na tambilugan ay ibinigay. Ang mga ito ay hindi pinansin. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Higit pang mga elemento kaysa posible para sa ibinigay na arko ng tambilugan ay ibinigay. Ang mga ito ay hindi pinansin. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Ang kasalukuyang panloob na Heometría ay sinusuportahan lamang para sa ellipse o arko ng ellipse. Ang huling piniling elemento ay dapat na isang tambilugan o isang arko ng tambilugan. @@ -2862,124 +3124,124 @@ Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dal - + CAD Kernel Error Kamalian sa CAD Kernel - + None of the selected elements is an edge. Wala sa mga napiling elemento ay isang gilid. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Maling bersyon ng OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ang bersyon na ito ng OCE/OCC ay hindi sumusuporta sa operasyon ng pag-ikot. Kailangan mo ng 6.9.0 o mas mataas - - + + The selection comprises more than one item. Please select just one knot. Binubuo ang seleksyon ng higit sa isang item. Mangyaring pumili lamang ng isang magkabuhul-buhol. - + Input Error Kamalian sa Input - - + + None of the selected elements is a knot of a B-spline Wala sa mga piniling kasangkapan ay isang buhol ng isang B-spline - - - - + + + + Select at least two edges from the sketch. Pumili ng hindi bababa sa dalawang gilid mula sa plano. - - + + One selected edge is not connectable Ang isang napiling hangganan ay hindi maaaring maikabit - + Closing a shape formed by exactly two lines makes no sense. Ang pagsasara ng isang hugis na nabuo sa pamamagitan ng eksaktong dalawang guhit ay walang kahulugan. - - - - - - - - + + + + + + + + Select elements from a single sketch. Pumili ng mga elemento mula sa isang solong disenyo. - + No constraint selected Walang pinipili ang pagpigil - + At least one constraint must be selected Hindi bababa sa isang hadlang ang dapat piliin - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Ang isang simetriko konstruksiyon ay nangangailangan ng hindi bababa sa dalawang mga geometriko kasangkapan, ang huling geometric elemento na ang reference para sa mahusay na konstruksiyon. - + The last element must be a point or a line serving as reference for the symmetry construction. Ang huling elemento ay dapat na isang punto o isang linya na nagsisilbing reference para sa mahusay na konstruksiyon. - - + + A copy requires at least one selected non-external geometric element Ang isang kopya ay nangangailangan ng hindi bababa sa isang napiling non-panlabas na geometric na elemento - + Delete All Geometry Burahin ang lahat ng Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dal SketcherGui::ConstraintView - + Change value Baguhin ang halaga - + Toggle to/from reference I-toggle sa/mula sanggunian - + Deactivate Deactivate - + Activate Activate - + Show constraints Ipakita ang mga harang - + Hide constraints Itago ang mga harang - + Rename Baguhin ang pangalan - + Center sketch Gitnang skecth - + Delete Burahin - + Swap constraint names Ipagpalit ang mga pangalan ng pagpilit - + Unnamed constraint Hindi pinangalanang pagpilit - + Only the names of named constraints can be swapped. Ang mga pangalan lamang ng mga hadlang na pinangalanang maaaring ma-pagpalit. @@ -3118,8 +3380,8 @@ Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dal Magpasok ng radius - - + + Radius: Radius: @@ -3130,8 +3392,8 @@ Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dal Insert diameter - - + + Diameter: Diyametro: @@ -3159,24 +3421,24 @@ Mga tinanggap na kumbinasyon: dalawang kurva; isang endpoint at isang curve; dal Length: - - + + Change radius Palitan ang radius - - + + Change diameter Change diameter - + Refractive index ratio Ratio ng repraktibong index - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ Gayunpaman, natagpuan ang walang hadlang na nag-uugnay sa mga endpoint.Extended information - + Constraints Constraints - - + + Error Kamalian @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 Hindi valid ang sketch - + Do you want to open the sketch validation tool? Gusto mo bang buksan ang kasangkapan sa pag validate ng sketch? - + The sketch is invalid and cannot be edited. Ang sketch ay hindi valid at hindi pwdeng i-edit. - + Please remove the following constraint: Mangyaring alisin ang sumusunod na pagpilit: - + Please remove at least one of the following constraints: Mangyaring alisin ang hindi bababa sa isa sa mga sumusunod na mga pagpilit: - + Please remove the following redundant constraint: Mangyaring alisin ang sumusunod na paulit ulit na pagpilit: - + Please remove the following redundant constraints: Mangyaring alisin ang sumusunod na paulit ulit na mga pagpilit: - + Empty sketch Walang laman na sketch - + Over-constrained sketch Sobrang-constrained na sketch - - - + + + (click to select) (Mag-klik para pumili) - + Sketch contains conflicting constraints Ang sketch ay naglalaman ng magkakasalungat na mga pagpilit - + Sketch contains redundant constraints Ang sketch ay naglalaman ng paulit ulit na mga pagpilit - + Fully constrained sketch Kabuuang-constrained na sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Lutasin sa loob ng %1 sec - + Unsolved (%1 sec) Hindi naresolba (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Lilipat sa pagitan ng pagpapakita at pagtatago ng curvature comb para sa lahat ng B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Binabawasan ang napakaraming mga napiling buhol ng isang B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Lilipat sa pagitan ng pagpapakita at pagtatago ng grado para sa lahat ng B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Pinapataas ang maraming iba't ibang mga napiling buhol ng isang B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Lilipat sa pagitan ng pagpapakita at pagtatago ng pagkarami-rami ng knot para sa lahat ng B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Lilipat sa pagitan ng pagpapakita at maglihim ng mga polygons ng kontrol para sa lahat ng B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Gumawa ng isang clone ng pagkuha ng geometry bilang sanggunian sa huling piniling punto @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Gayahin - + Copy Kopya - + Move Galawin @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Ayusin ang radius ng isang bilog o isang arko @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Lumilikha ng isang simpleng kopya ng pagkuha ng Heometría bilang sanggunian sa huling piniling punto @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.qm index 783fad8d82..74c2c31941 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts index a31333d069..83d7bf5a40 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_fr.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Afficher/Masquer le peigne de courbure B-spline @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + Afficher/Masquer le degré de la B-spline @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Afficher/masquer la multiplicité du nœud B-spline @@ -55,6 +55,24 @@ Basculer entre afficher et masquer la multiplicité de nœuds pour toutes les B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Esquisseur + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + Afficher/Masquer le polygone de contrôle de la B-spline @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Esquisseur - + Clone Clone - + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Esquisseur - + Close shape - Close shape + Fermer la forme - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Produit une forme fermée en attachant le point final d'un élément au point de départ de l'élément suivant CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Esquisseur - - + Show/hide B-spline information layer Afficher/Masquer le calque d’information B-spline - + Show/hide B-spline degree - Show/hide B-spline degree + Afficher/Masquer le degré de la B-spline - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + Afficher/Masquer le polygone de contrôle de la B-spline - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Afficher/Masquer le peigne de courbure B-spline - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Afficher/masquer la multiplicité du nœud B-spline + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Esquisseur - + Constrain arc or circle Contraindre l’arc ou le cercle - + Constrain an arc or a circle Contraindre un arc ou un cercle - + Constrain radius Contrainte radiale - + Constrain diameter Contraindre le diamètre @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Esquisseur - + Copy Copie - + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Ellipse par périapse, apoapse, petit axe @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Esquisseur - + Modify knot multiplicity Modifier la multiplicité de nœud - + Modifies the multiplicity of the selected knot of a B-spline Modifie la multiplicité du nœud sélectionné d’une B-spline - + Increase knot multiplicity Augmenter la multiplicité de nœud - + Decrease knot multiplicity Diminuer la multiplicité de nœud @@ -408,35 +430,35 @@ CmdSketcherConnect - + Sketcher Esquisseur - + Connect edges - Connect edges + Raccorder les arêtes - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Lier le point d'arrivé de l'élément avec le point de départ de l'élément suivant CmdSketcherConstrainAngle - + Sketcher Esquisseur - + 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 @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Esquisseur - + Constrain block - Constrain block + Bloque les contraintes - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Contrainte de bloc: fige le déplacement de l'arête sélectionnée CmdSketcherConstrainCoincident - + Sketcher Esquisseur - + Constrain coincident Contrainte coïncidente - + Create a coincident constraint on the selected item Créer une contrainte coïncidente sur les éléments sélectionnés @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Esquisseur - + Constrain diameter Contraindre le diamètre - + Fix the diameter of a circle or an arc Fixer le diamètre d'un cercle ou d'un arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Esquisseur - + Constrain distance Contrainte dimensionnelle - + Fix a length of a line or the distance between a line and a vertex Fixer la longueur d'une ligne ou la distance entre une ligne et un point @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Esquisseur - + Constrain horizontal distance Contrainte 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Esquisseur - + Constrain vertical distance Contraindre 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Esquisseur - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Esquisseur - + Constrain horizontally Contrainte horizontale - + Create a horizontal constraint on the selected item Créer une contrainte horizontale sur l'élément sélectionné @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Esquisseur - + Constrain internal alignment - Constrain internal alignment + Contraindre l'alignement interne - + Constrains an element to be aligned with the internal geometry of another element Contraint un élément pour qu'il soit aligné avec la géométrie interne d'un autre élément @@ -606,37 +628,36 @@ CmdSketcherConstrainLock - + Sketcher Esquisseur - + Constrain lock Contrainte fixe - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Contrainte de verrouillage : créer deux contrainte de distance, une horizontale et une verticale, sur le sommet sélectionné CmdSketcherConstrainParallel - + Sketcher Esquisseur - + Constrain parallel Contrainte parallèle - + Create a parallel constraint between two lines Créer une contrainte parallèle entre deux lignes @@ -644,17 +665,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Esquisseur - + Constrain perpendicular Contrainte perpendiculaire - + Create a perpendicular constraint between two lines Créer une contrainte de perpendicularité entre deux lignes @@ -662,17 +683,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Esquisseur - + Constrain point onto object Contrainte point sur objet - + Fix a point onto an object Fixer un point sur un objet @@ -680,17 +701,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Esquisseur - + Constrain radius Contrainte radiale - + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -698,57 +719,55 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Esquisseur - + Constrain refraction (Snell's law') Contraint la réfraction (loi 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 -and an edge as an interface. + Créer une contrainte de réfraction (loi de Snell) entre deux extrémités des rayons et une arête en tant qu'interface. CmdSketcherConstrainSymmetric - + Sketcher Esquisseur - + Constrain symmetrical Contrainte symétrique - + Create a symmetry constraint between two points with respect to a line or a third point - 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 CmdSketcherConstrainTangent - + Sketcher Esquisseur - + Constrain tangent Contrainte tangente - + Create a tangent constraint between two entities Créer une contrainte tangente entre deux entités @@ -756,17 +775,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Esquisseur - + Constrain vertically Contrainte verticale - + Create a vertical constraint on the selected item Créer une contrainte verticale sur l'élément sélectionné @@ -774,35 +793,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Esquisseur - + Convert geometry to B-spline - Convert geometry to B-spline + Convertir la géométrie en B-spline - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Convertit la géométrie sélectionnée en B-spline CmdSketcherCopy - + Sketcher Esquisseur - + Copy Copie - + Creates a simple copy of the geometry taking as reference the last selected point Créer une copie simple de la géométrie en prenant comme référence le dernier point sélectionné @@ -1278,35 +1297,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Esquisseur - + Decrease B-spline degree - Decrease B-spline degree + Diminuer le degré de la B-spline - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Diminue le degré de la B-spline CmdSketcherDecreaseKnotMultiplicity - + Sketcher Esquisseur - + Decrease knot multiplicity Diminuer la multiplicité de nœud - + Decreases the multiplicity of the selected knot of a B-spline Diminue la multiplicité du nœud sélectionné d’une B-spline @@ -1314,37 +1333,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Esquisseur - + Delete all constraints - Delete all constraints + Supprimer toutes les contraintes - + Delete all constraints in the sketch - Delete all constraints in the sketch + Supprimer toutes les contraintes de l'esquisse CmdSketcherDeleteAllGeometry - + Sketcher Esquisseur - + Delete all geometry - Delete all geometry + Supprimer tous les éléments de géométrie - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Supprimer toute la géométrie et toutes les contraintes de l'esquisse actuelle, à l'exception de la géométrie externe @@ -1362,7 +1381,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Modifier l'esquisse sélectionnée. @@ -1404,17 +1423,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Esquisseur - + Increase B-spline degree - Increase B-spline degree + Augmenter le degré de la B-spline - + Increases the degree of the B-spline Augmenter le degré de la B-spline @@ -1422,17 +1441,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Esquisseur - + Increase knot multiplicity Augmenter la multiplicité de nœud - + Increases the multiplicity of the selected knot of a B-spline Augmente la multiplicité du nœud sélectionné d’une B-spline @@ -1452,7 +1471,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Sortir de l'esquisse. @@ -1472,14 +1491,13 @@ with respect to a line or a third point Set the 'Support' of a sketch. First select the supporting geometry, for example, a face or an edge of a solid object, then call this command, then choose the desired sketch. - Set the 'Support' of a sketch. -First select the supporting geometry, for example, a face or an edge of a solid object, -then call this command, then choose the desired sketch. + Définit le 'Support' d'une esquisse. +Sélectionnez d'abord la géométrie de soutien, par exemple, une face ou une arête d'un solide, sélectionnez cette commande, puis choisissez l'esquisse souhaitée. Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Certains des objets sélectionnés dépendent de l’esquisse à tracer. Les dépendances circulaires ne sont pas autorisés . @@ -1497,7 +1515,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Créer une nouvelle esquisse en fusionnant deux ou plusieurs esquisses sélectionnées. @@ -1507,7 +1525,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Sélectionner au moins deux esquisses. @@ -1527,9 +1545,7 @@ then call this command, then choose the desired sketch. Create a new mirrored sketch for each selected sketch by using the X or Y axes, or the origin point, as mirroring reference. - Create a new mirrored sketch for each selected sketch -by using the X or Y axes, or the origin point, -as mirroring reference. + Créer une nouvelle esquisse en miroir pour chaque esquisse sélectionnée en utilisant les axes X ou Y, ou le point d'origine, comme référence de symétrie. @@ -1539,23 +1555,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Sélectionnez une ou plusieurs esquisses. CmdSketcherMove - + Sketcher Esquisseur - + Move Déplacer - + Moves the geometry taking as reference the last selected point Déplace la géométrie en prenant comme référence le dernier point sélectionné @@ -1575,23 +1591,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Créer une ou plusieurs esquisses. CmdSketcherRectangularArray - + Sketcher Esquisseur - + Rectangular array - Rectangular array + Réseau rectangulaire - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Créer une répétition linéaire de la géométrie en prenant comme référence le dernier point sélectionné @@ -1612,162 +1628,162 @@ as mirroring reference. Place the selected sketch on one of the global coordinate planes. This will clear the 'Support' property, if any. - Place the selected sketch on one of the global coordinate planes. -This will clear the 'Support' property, if any. + Placez l'esquisse sélectionnée sur l'un des plans d'origine. +Cela effacera la propriété 'Support', le cas échéant. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Esquisseur - + Show/hide internal geometry Afficher/masquer la géométrie interne - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Afficher toute la géométrie interne ou masquer la géométrie interne inutilisée CmdSketcherSelectConflictingConstraints - + Sketcher Esquisseur - - + + Select conflicting constraints - Select conflicting constraints + Sélectionnez les contraintes en conflit CmdSketcherSelectConstraints - + Sketcher Esquisseur - + Select associated constraints - Select associated constraints + Sélectionner les contraintes associées - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Sélectionnez les contraintes associées aux éléments géométriques sélectionnés CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Esquisseur - + Select associated geometry - Select associated geometry + Sélectionner la géométrie associée - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Sélectionner les éléments géométriques associés aux contraintes sélectionnées CmdSketcherSelectElementsWithDoFs - + Sketcher Esquisseur - + Select unconstrained DoF - Select unconstrained DoF + Sélectionner un DdL (Degré de Liberté) non contraint - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Sélectionnez des éléments géométriques pour lesquels le solveur détecte toujours des degrés de liberté non contraints. CmdSketcherSelectHorizontalAxis - + Sketcher Esquisseur - + Select horizontal axis - Select horizontal axis + Sélectionner l'axe horizontal - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Sélectionnez l'axe horizontal local de l'esquisse CmdSketcherSelectOrigin - + Sketcher Esquisseur - + Select origin - Select origin + Sélectionner l'origine - + Select the local origin point of the sketch - Select the local origin point of the sketch + Sélectionnez le point d'origine local de l'esquisse CmdSketcherSelectRedundantConstraints - + Sketcher Esquisseur - - + + Select redundant constraints - Select redundant constraints + Sélectionner les contraintes redondantes CmdSketcherSelectVerticalAxis - + Sketcher Esquisseur - + Select vertical axis - Select vertical axis + Sélectionner l'axe vertical - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Sélectionner l'axe vertical local de l'esquisse @@ -1785,7 +1801,7 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + En mode édition, arrêter l'opération active (dessin, contrainte, etc.). @@ -1809,17 +1825,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Esquisseur - + Symmetry Symétrie - + Creates symmetric geometry with respect to the last selected line or point Crée une géométrie symétrique par rapport à la dernière ligne ou point sélectionné @@ -1827,19 +1843,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Esquisseur - + Activate/deactivate constraint - Activate/deactivate constraint + Activer/désactiver la contrainte - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Active ou désactive les contraintes sélectionnées @@ -1863,21 +1879,21 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Esquisseur - + Toggle driving/reference constraint - Toggle driving/reference constraint + Basculer la contrainte de pilotante / référence - + Set the toolbar, or the selected constraints, into driving or reference mode - Set the toolbar, or the selected constraints, -into driving or reference mode + Définir la barre d'outils, ou les contraintes sélectionnées, +en mode pilotante ou référence @@ -1914,13 +1930,13 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Validez une esquisse en analysant les coïncidences manquantes, +les contraintes invalides, la géométrie dégénérée, etc. Select only one sketch. - Select only one sketch. + Sélectionnez une seule esquisse. @@ -1943,7 +1959,7 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + En mode édition, basculer entre la vue de section et la vue complète. @@ -1961,7 +1977,247 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + En mode édition, définir l'orientation de la caméra perpendiculaire au plan d'esquisse. + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2258,47 @@ invalid constraints, degenerated geometry, 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é. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Cette version de OCE/OCC ne supporte pas l’opération de noeud. Vous avez besoin de la version 6.9.0 ou supérieure. - + BSpline Geometry Index (GeoID) is out of bounds. L'Index de la géométrie de la B-spline (GeoID) est hors 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. @@ -2111,134 +2367,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2508,304 @@ invalid constraints, degenerated geometry, etc. Sélectionnez une ou des arêtes de l'esquisse. - - - - + + + + Dimensional constraint Contrainte dimensionnelle - - - + + + Only sketch and its support is allowed to select Seule la sélection d'une esquisse et de sa face de support est permise - + One of the selected has to be on the sketch Un des éléments sélectionnés doit être dans 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 horizontale ! - - - - - - + + + + + + The selected edge already has a Block constraint! L’arête sélectionnée possède déjà une contrainte de bloc ! - + The selected item(s) can't accept a horizontal constraint! Le(s) élément(s) sélectionné(s) ne peu(ven)t pas accepter de contrainte horizontale! - + There are more than one fixed point selected. Select a maximum of one fixed point! Plus qu'un point fixe sélectionné. Sélectionnez au plus un point fixe ! - + The selected item(s) can't accept a vertical constraint! Le(s) élément(s) sélectionné(s) ne peu(ven)t pas accepter de contrainte verticale! - + There are more than one fixed points selected. Select a maximum of one fixed point! Plus d'un point fixe est sélectionné. Sélectionnez 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 autre que l'origine dans l'esquisse. - + Select only vertices from the sketch. The last selected vertex may be the origin. Sélectionner uniquement les points de l’esquisse. Le dernier point sélectionné peut être l’origine. - + Wrong solver status Erreur de statut du solveur Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + Impossible d'ajouter une contrainte entre deux géométries externes. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + Impossible d’ajouter une contrainte entre deux géométries fixes ! Les géométries fixes comprennent les géométries externes, les géométries bloquées ou les points spéciaux comme les nœuds de B-splines. - + 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. + Un contrainte de type 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. - - - - - - - - + + + + + + + + Error Erreur - + Select two or more points from the sketch. Sélectionnez deux ou plusieurs points de l’esquisse. - - + + Select two or more vertexes from the sketch. Sélectionnez deux sommets de l'esquisse ou plus. - - + + Constraint Substitution Substitution de contrainte - + Endpoint to endpoint tangency was applied instead. Une contrainte de tangence entre points d'extrémité a été créée à la place. - + Select vertexes from the sketch. Sélectionnez les sommets de l'esquisse. - - + + 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 ! - + This constraint does not make sense for non-linear curves Cette contrainte n’a aucun sens pour les courbes non linéaires - - - - - - + + + + + + Select the right things from the sketch. Sélectionner les bons éléments de l'esquisse. - - + + Point on B-spline edge currently unsupported. Point sur arête B-spline actuellement non pris en charge. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Sélectionnez soit un point et plusieurs courbes, soit une courbe et plusieurs points. Vous avez sélectionné %1 courbes et %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Sélectionnez soit une seule ligne ou 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. - - + + Select at least two lines from the sketch. Sélectionner au moins deux lignes de l'esquisse. - + Select a valid line Sélectionnez une ligne valide - - + + 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. @@ -2559,45 +2815,45 @@ 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électionnez une géométrie de l'esquisse. - + Wrong number of selected objects! perpendicular constraint Nombre d'objets sélectionnés erroné ! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Pour une sélection de 3 objets, il doit y avoir 2 courbes et 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Impossible d'ajouter une contrainte de perpendicularité sur un point non connecté ! - - - + + + Perpendicular to B-spline edge currently unsupported. Contrainte perpendiculaire à arête B-spline actuellement non prise en charge. - - + + One of the selected edges should be a line. Une des arêtes sélectionnées doit être une ligne. - + 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. @@ -2607,249 +2863,249 @@ 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électionnez une géométrie de l'esquisse. - + Wrong number of selected objects! tangent constraint Nombre d'objets sélectionnés erroné ! - - - + + + Cannot add a tangency constraint at an unconnected point! Impossible d'ajouter une contrainte de tangence à un point non connecté ! - - - + + + Tangency to B-spline edge currently unsupported. Tangence à arrête B-spline actuellement non prise en charge. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Sélectionnez un ou plusieurs arcs ou cercles dans l'esquisse. - - + + Constrain equal Contrainte d'égalité - + Do you want to share the same radius for all selected elements? Voulez-vous que tous les éléments sélectionnés aient le même rayon? - - + + Constraint only applies to arcs or circles. Contrainte applicable qu’aux arcs ou cercles. - + Do you want to share the same diameter for all selected elements? Voulez-vous que tous les éléments sélectionnés aient le même diamètre ? - - + + 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. - - + + Parallel lines Lignes parallèles - - + + An angle constraint cannot be set for two parallel lines. 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électionnez au moins deux arêtes compatibles. - + Sketch axes cannot be used in equality constraints Les axes d'esquisse ne peuvent être utilisés dans une contrainte d'égalité. - + Equality for B-spline edge currently unsupported. Égalité pour arête B-Spline actuellement non prise en charge. - - + + Select two or more edges of similar type Sélectionnez au moins deux arêtes de même type. - - - - - + + + + + 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. - 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 terminaux. - - + + 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 - 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. + Sélectionnez 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Impossible de créer une contrainte avec uniquement une géométrie externe. - + Incompatible geometry is selected. - Incompatible geometry is selected. + La géométrie sélectionnée est incompatible. - + SnellsLaw on B-spline edge is currently unsupported. - SnellsLaw on B-spline edge is currently unsupported. + La loi de Snells sur les arêtes B-spline n'est actuellement pas prise en charge. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + Vous ne pouvez pas contraindre en interne une ellipse sur une autre ellipse. Sélectionnez une seule ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Actuellement, tous les éléments géométriques internes de l'ellipse sont déjà exposés. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Sélectionner les contraintes de l'esquisse. - + 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. - + Number of selected objects is not 3 (is %1). Le nombre d'objets sélectionnés n'est pas égal à 3 (est %1). - - + + Select at least one ellipse and one edge from the sketch. Sélectionnez au moins une ellipse et une arête dans l'esquisse. - + Sketch axes cannot be used in internal alignment constraint Les axes de l'esquisse ne peuvent être utilisés comme contrainte d'alignement interne - - + + Maximum 2 points are supported. 2 points sont supportés au maximum. - - + + Maximum 2 lines are supported. 2 lignes sont supportées au maximum. - - + + Nothing to constrain Rien à contraindre - - - - + + + + Extra elements Éléments supplémentaires - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Trop d'éléments ont été fournis pour l'ellipse donnée. Ils ont été ignorés. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Vous ne pouvez pas contraindre un arc d'ellipse à la géométrie interne d'un autre arc d'ellipse. Sélectionnez un seul arc d'ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Vous ne pouvez pas contraindre un arc d'ellipse à la géométrie interne d'un autre arc d'ellipse. Sélectionnez un seul arc d'ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Trop d'éléments ont été fournis pour l'arc d'ellipse donné. Ils ont été ignorées. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actuellement la géométrie interne est uniquement prise en charge pour les ellipses et les arcs d'ellipse. Le dernier élément sélectionné doit être une ellipse ou un arc d'ellipse. @@ -2862,124 +3118,124 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d - + CAD Kernel Error Erreur de noyau CAO - + None of the selected elements is an edge. Aucun des éléments sélectionnés n'est une arête. - - + + At least one of the selected objects was not a B-Spline and was ignored. Au moins l’un des objets sélectionnés n’était pas une B-Spline et a été ignoré. - - + + Wrong OCE/OCC version Mauvaise version OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Cette version de OCE/OCC ne supporte pas l’opération de nœud. Vous avez besoin de la version 6.9.0 ou supérieure - - + + The selection comprises more than one item. Please select just one knot. La sélection comprend plus d'un élément. Veuillez sélectionner un seul nœud. - + Input Error Erreur de saisie - - + + None of the selected elements is a knot of a B-spline Aucun des éléments sélectionnés n'est un nœud d’une B-spline - - - - + + + + Select at least two edges from the sketch. Sélectionnez au moins deux arêtes de l'esquisse. - - + + One selected edge is not connectable Une arête sélectionnée n'est pas raccordable - + Closing a shape formed by exactly two lines makes no sense. Il est impossible de fermer une forme constituée de deux lignes. - - - - - - - - + + + + + + + + Select elements from a single sketch. Sélectionner des éléments d'une seule esquisse. - + No constraint selected Aucune contrainte sélectionnée - + At least one constraint must be selected Au moins une contrainte doit être sélectionnée - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Une construction symétrique nécessite au moins deux éléments géométriques, le dernier élément géométrique étant la référence pour la construction de la symétrie. - + The last element must be a point or a line serving as reference for the symmetry construction. Le dernier élément doit être un point ou une ligne servant de référence pour la construction de la symétrie. - - + + A copy requires at least one selected non-external geometric element Une copie nécessite la sélection d'au moins un élément géométrique non externe - + Delete All Geometry Supprimer tous les éléments de géométrie - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Êtes-vous vraiment sûr de vouloir supprimer tous les éléments de géométrie et toutes les contraintes ? - + Delete All Constraints Supprimer toutes les contraintes - + Are you really sure you want to delete all the constraints? Êtes-vous vraiment sûr de vouloir supprimer toutes les contraintes ? @@ -3040,62 +3296,62 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d SketcherGui::ConstraintView - + Change value Changer la valeur - + Toggle to/from reference Basculer vers ou à partir d'une référence - + Deactivate Désactiver - + Activate Activer - + Show constraints Montrer les contraintes - + Hide constraints Masquer les contraintes - + Rename Renommer - + Center sketch Centrer l'esquisse - + Delete Supprimer - + Swap constraint names Intervertir les noms de contrainte - + Unnamed constraint Contrainte non nommée - + Only the names of named constraints can be swapped. Seuls les noms des contraintes nommées peuvent être permutés. @@ -3118,8 +3374,8 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d insérer un rayon - - + + Radius: Rayon : @@ -3130,8 +3386,8 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d Insérer un diamètre - - + + Diameter: Diamètre : @@ -3159,24 +3415,24 @@ Combinaisons acceptés : deux courbes ; un point d'extrémité et une courbe ; d Longueur : - - + + Change radius Changer le rayon - - + + Change diameter Modifier le diamètre - + Refractive index ratio Ratio de l'indice de réfraction - + Ratio n2/n1: Ratio n2/n1 : @@ -3782,12 +4038,12 @@ Supporte tous les systèmes d'unité sauf 'US customary' et 'Building US/Euro'.< Show objects that the sketch is attached to - Show objects that the sketch is attached to + Afficher les objets auxquels l'esquisse est attachée Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Remarque: ces paramètres sont des valeurs par défaut appliquées aux nouvelles esquisses. Chaque esquisse se comporte individuellement en fonction des propriétés définies dans l’onglet Vue. @@ -4043,13 +4299,13 @@ Toutefois, aucune contrainte liée aux extrémités n'a été trouvée.Informations étendues - + Constraints Contraintes - - + + Error Erreur @@ -4293,7 +4549,7 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Rendering order (global): - Rendering order (global): + Ordre de rendu (global) : @@ -4408,104 +4664,104 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% SketcherGui::ViewProviderSketch - + Edit sketch Modifier 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? - + 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 : - + Empty sketch Esquisse vide - + Over-constrained sketch Esquisse sur-contrainte - - - + + + (click to select) (cliquez pour sélectionner) - + Sketch contains conflicting constraints L'esquisse contient des contraintes contradictoires - + Sketch contains redundant constraints L'esquisse contient des contraintes redondantes - + Fully constrained sketch Esquisse entièrement contrainte - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Esquisse sous-contrainte avec <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degré</span></a> de liberté - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Esquisse sous-contrainte avec <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrés</span></a> de liberté - + Solved in %1 sec Résolu en %1 secondes - + Unsolved (%1 sec) Non résolu (%1 sec) @@ -4513,8 +4769,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Bascule entre afficher et masquer le peigne de courbure pour toutes les B-splines @@ -4522,8 +4778,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Diminue la multiplicité du nœud sélectionné d’une B-spline @@ -4531,8 +4787,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Bascule entre afficher et masquer le degré pour tous les B-splines @@ -4540,8 +4796,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Augmente la multiplicité du nœud sélectionné d’une B-spline @@ -4549,17 +4805,26 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Basculer entre afficher et masquer la multiplicité de nœuds pour toutes les B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Bascule entre afficher et masquer les polygones de contrôle pour toutes les B-splines @@ -4567,8 +4832,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -4576,17 +4841,17 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_CompCopy - + Clone Clone - + Copy Copie - + Move Déplacer @@ -4594,8 +4859,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixer le diamètre d'un cercle ou d'un arc @@ -4603,8 +4868,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -4612,8 +4877,8 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Créer une copie simple de la géométrie en prenant comme référence le dernier point sélectionné @@ -4651,7 +4916,7 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints + Créer un arc d'ellipse par son centre, le rayon majeur, les extrémités @@ -4660,7 +4925,7 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints + Créer un arc d’hyperbole par son centre, son grand rayon, ses points d'extrémités @@ -4669,7 +4934,7 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Create an arc of parabola by its focus, vertex, and endpoints - 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 @@ -4833,8 +5098,7 @@ Les points doivent être placés à une distance de la ligne inférieure à 20% Current attachment mode is incompatible with the new selection. Select the method to attach this sketch to selected objects. - Current attachment mode is incompatible with the new selection. -Select the method to attach this sketch to selected objects. + Le mode d'attachement courant n’est pas compatible avec la nouvelle sélection. Sélectionner la méthode pour attacher cette esquisse aux objets sélectionnés. @@ -4857,8 +5121,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Déplace la géométrie en prenant comme référence le dernier point sélectionné diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.qm index 26367b4dca..c3234a4988 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts index cce47df0e3..3b3eefe0f9 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_gl.ts @@ -55,6 +55,24 @@ Troca entre amosar e agochar o polígono de control para tódalas B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clonar - + Creates a clone of the geometry taking as reference the last selected point Fai un clon da xeometría collendo como referencia o último punto escolmado @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Amosar/Agochar información de capa B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copiar - + Creates a clone of the geometry taking as reference the last selected point Fai un clon da xeometría collendo como referencia o último punto escolmado @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modificar multiplicidade de nodo - + Modifies the multiplicity of the selected knot of a B-spline Modifica a multiplicidade do nodo escolmado dunha B-spline - + Increase knot multiplicity Aumenta a multiplicidade do nodo - + Decrease knot multiplicity Diminuir a multiplicidade de nodo @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Constrinxir coincidentes - + Create a coincident constraint on the selected item Fai unha constrición de coincidencia nos elementos escolmados @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrixir diámetro - + Fix the diameter of a circle or an arc Fixa o diámetro dun círculo ou arco @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Constrinxir a distancia - + Fix a length of a line or the distance between a line and a vertex Fixar a lonxitude dunha liña ou a distancia entre unha liña mais un vértice @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Constrinxir horizontalmente - + Create a horizontal constraint on the selected item Fai unha constrición horizontal nos elementos escolmados @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrinxe un elemento para se aliñar coa xeometría interna doutro elemento @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Constrición fixa - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Constrinxir o paralelismo - + Create a parallel constraint between two lines Fai unha constrición de paralelismo entre dúas liñas @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Constrinxir a perpendicularidade - + Create a perpendicular constraint between two lines Fai unha constrición de perpendicularidade entre dúas liñas @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Constrinxir un punto a un obxecto - + Fix a point onto an object Fixa un punto a un obxecto @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Constrinxir raio - + Fix the radius of a circle or an arc Fixa o raio dun círculo ou arco @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Constrinxir a refracción (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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + 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 @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Constrinxir a tanxencia - + Create a tangent constraint between two entities Fai unha constrición de tanxencia entre dúas entidades @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Constrinxir verticalmente - + Create a vertical constraint on the selected item Fai unha constrición vertical nos elementos escolmados @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copiar - + Creates a simple copy of the geometry taking as reference the last selected point Fai unha simple copia da xeometría collendo como referencia o último punto escolmado @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Diminuir a multiplicidade de nodo - + Decreases the multiplicity of the selected knot of a B-spline Diminuir a multiplicidade do nodo escolmado dunha B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Incrementa o grao da B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Aumenta a multiplicidade do nodo - + Increases the multiplicity of the selected knot of a B-spline Modifica a multiplicidade do nodo escolmado dunha B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Mover - + Moves the geometry taking as reference the last selected point Mover a xeometría tomando coma referencia o último punto escolmado @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Fai un patrón de matriz rectangular da xeometría collendo as referencias do último punto escolmado @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Amosar/agochar xeometrías internas - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetría - + Creates symmetric geometry with respect to the last selected line or point Fai unha xeometría simétrica respecto da última liña ou punto escolmado @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Esta versión de OCE/OCC non soporta operacións de nó. Ti necesitas 6.9.0 ou superior. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Escolmar aresta(s) do esbozo. - - - - + + + + Dimensional constraint Constrinxir dimensión - - - + + + Only sketch and its support is allowed to select Só se permite escolmar o esbozo mais o seu soporte - + One of the selected has to be on the sketch Un dos escolmados ten que estar no esbozo - - + + Select an edge from the sketch. Escolme unha aresta do esbozo. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Imposible constrinxir - - - - + + + + The selected edge is not a line segment A aresta escolmada non é un segmento de liña - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! O/s elemento/s escolmado/s non pode/n aceptar unha constrición horizontal! - + There are more than one fixed point selected. Select a maximum of one fixed point! Hai máis dun punto fixo escolmado. Escolma un máximo dun punto fixo! - + The selected item(s) can't accept a vertical constraint! O/s elemento/s escolmado/s non pode/n aceptar unha constrición vertical! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Erro - + Select two or more points from the sketch. Escolmar dous ou máis vértices do esbozo. - - + + Select two or more vertexes from the sketch. Escolmar dous ou máis vértices do esbozo. - - + + Constraint Substitution Substitución de Constrición - + Endpoint to endpoint tangency was applied instead. No seu lugar aplicouse a tanxencia de punto final ao punto final. - + Select vertexes from the sketch. Escolmar vértice(s) do esbozo. - - + + 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! - + This constraint does not make sense for non-linear curves Esta constrición non ten sentido para curvas non lineais - - - - - - + + + + + + Select the right things from the sketch. Escolmar as cousas correctas do esbozo. - - + + Point on B-spline edge currently unsupported. Punto sobre arista de B-spline non compatible polo momento. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Escolme entre un punto e varias curvas, ou unha curva e varios puntos. Escolmou %1 curvas e %2 puntos. - - - - + + + + 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 Esta constrición só ten sentido nun segmento de liña ou nun par de puntos - + 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. - - + + Select at least two lines from the sketch. Escolmar polo menos dúas liñas do esbozo. - + Select a valid line Escolme unha liña válida - - + + The selected edge is not a valid line A aresta escolmada non é unha liña 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. @@ -2558,45 +2820,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Cantidade incorrecta de obxectos escolmados! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Con 3 obxectos, debe de haber 2 curvas e 1 punto. - - + + Cannot add a perpendicularity constraint at an unconnected point! Non se pode engadir unha constrición de perpendicularidade nun punto non conectado! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular a arista de B-spline non compatible polo momento. - - + + One of the selected edges should be a line. Unha das arestas escolmadas debe de ser unha liña. - + 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. @@ -2605,249 +2867,249 @@ 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. - + Wrong number of selected objects! tangent constraint Cantidade incorrecta de obxectos escolmados! - - - + + + Cannot add a tangency constraint at an unconnected point! Non se pode engadir unha constrición de tanxencia nun punto non conectado! - - - + + + Tangency to B-spline edge currently unsupported. Tanxencia sobre arista de B-spline non compatible polo momento. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Escolme un ou máis arcos ou círculos no esbozo. - - + + Constrain equal Constrinxir a igualdade - + Do you want to share the same radius for all selected elements? Quere compartir o mesmo raio para tódolos elementos escolmados? - - + + Constraint only applies to arcs or circles. Esta constrición só aplica a arcos ou círculos. - + Do you want to share the same diameter for all selected elements? Queres compartir o mesmo diámetro para tódolos elementos escolmados? - - + + 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. - - + + Parallel lines Liñas paralelas - - + + An angle constraint cannot be set for two parallel lines. 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 Escolme dúas ou máis arestas compatibles - + Sketch axes cannot be used in equality constraints Os eixos do esbozo non se poden usar para unha constrición de igualdade - + 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 Escolme dúas ou máis arestas de tipo semellante - - - - - + + + + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Os obxectos escolmados non son a xeometría dun esbozo unicamente. - + Number of selected objects is not 3 (is %1). A cantidade de obxectos escolmados non é 3 (é %1). - - + + Select at least one ellipse and one edge from the sketch. Escolme polo menos unha elipse e unha curva do esbozo. - + Sketch axes cannot be used in internal alignment constraint Os eixos do esbozo non se poden usar para unha constrición de aliñamento interno - - + + Maximum 2 points are supported. Son admitidos 2 puntos como máximo. - - + + Maximum 2 lines are supported. Son admitidas 2 liñas como máximo. - - + + Nothing to constrain Non hai nada para constrinxir - - - - + + + + Extra elements Elementos adicionais - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Foron fornecidos máis elementos dos precisados para a elipse dada. Estes foron ignorados. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Non podes constrinxir internamente un arco de elipse noutro arco de elipse. Escolma só un arco de elipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Non podes constrinxir internamente unha elipse noutro arco de elipse. Escolma só unha elipse ou arco de elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Foron fornecidos máis elementos dos precisados para o arco de elipse dado. Estes foron ignorados. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actualmente a xeometría interna só é soportada para elipses ou arcos de elipse. O último elemento escolmado debe de ser unha elipse ou un arco de elipse. @@ -2860,124 +3122,124 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu - + CAD Kernel Error Erro do Kernel CAD - + None of the selected elements is an edge. Ningún dos elementos escolmados é unha aresta. - - + + At least one of the selected objects was not a B-Spline and was ignored. Canda menos un dos obxectos escolmados non é unha BSpline e foi ignorado. - - + + Wrong OCE/OCC version Versión incorrecta de OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Esta versión de OCE/OCC non permite unha operación de nodo. Necesitas 6.9.0 ou superior - - + + The selection comprises more than one item. Please select just one knot. A selección inclúe máis dun elemento. Por favor escolme só un nodo. - + Input Error Erro de Entrada - - + + None of the selected elements is a knot of a B-spline Ningún dos elementos escolmados é un nodo dunha B-spline - - - - + + + + Select at least two edges from the sketch. Escolmar polo menos dúas arestas do esbozo. - - + + One selected edge is not connectable Unha aresta escolmada non é conectábel - + Closing a shape formed by exactly two lines makes no sense. Pechar unha forma constituída por dúas liñas non ten sentido. - - - - - - - - + + + + + + + + Select elements from a single sketch. Escolme elementos dun esbozo só. - + No constraint selected Ningunha constrición escolmada - + At least one constraint must be selected Débese escolmar polo menos unha constrición - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Unha construción simétrica require polo menos dous elementos xeométricos, sendo o último elemento xeométrico a referencia para construír a simetría. - + The last element must be a point or a line serving as reference for the symmetry construction. O último elemento debe de ser un punto ou unha liña, servindo como referencia para construír a simetría. - - + + A copy requires at least one selected non-external geometric element Unha copia require polo menos escolmar un elemento xeométrico non externo - + Delete All Geometry Borrar toda xeometría - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Borrar Tódalas Constricións - + Are you really sure you want to delete all the constraints? Estás certo de eliminar tódalas constricións? @@ -3038,62 +3300,62 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu SketcherGui::ConstraintView - + Change value Cambiar valor - + Toggle to/from reference Alternar para/de referencia - + Deactivate Deactivate - + Activate Activate - + Show constraints Amosar constricións - + Hide constraints Agochar constricións - + Rename Renomear - + Center sketch Centrar o esbozo - + Delete Desbotar - + Swap constraint names Trocar os nomes das constricións entre si - + Unnamed constraint Constrición sen nome - + Only the names of named constraints can be swapped. Só se poden permutar os nomes das constricións xa nomeadas. @@ -3116,8 +3378,8 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Inserir un raio - - + + Radius: Radio: @@ -3128,8 +3390,8 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Insire diámetro - - + + Diameter: Diámetro: @@ -3157,24 +3419,24 @@ As combinacións aceptadas son: dúas curvas; cabo e curva; dous cabos; dúas cu Lonxitude: - - + + Change radius Trocar o raio - - + + Change diameter Trocar diámetro - + Refractive index ratio Índice de refracción - + Ratio n2/n1: Razón n2/n1: @@ -4045,13 +4307,13 @@ Pola contra, non se atoparon constricións ligadas os cabos. Extended information - + Constraints Constraints - - + + Error Erro @@ -4410,104 +4672,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Esbozo baleiro - + Over-constrained sketch Esbozo constrinxido en exceso - - - + + + (click to select) (prema para escolmar) - + Sketch contains conflicting constraints O esbozo ten constricións en conflito - + Sketch contains redundant constraints O esbozo ten constricións redundantes - + Fully constrained sketch Esbozo totalmente constrinxido - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Resolvido en %1 segundos - + Unsolved (%1 sec) Non resolvido (%1 s.) @@ -4515,8 +4777,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Cambia entre amosar e agochar o peite de curvatura para tódalas B-splines @@ -4524,8 +4786,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Diminuir a multiplicidade do nodo escolmado dunha B-spline @@ -4533,8 +4795,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Cambia entre amosar e agochar o grao para tódalas B-splines @@ -4542,8 +4804,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Modifica a multiplicidade do nodo escolmado dunha B-spline @@ -4551,17 +4813,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Troca entre amosar e agochar o polígono de control para tódalas B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Cambia entre amosar e agochar o polígono de control para tódalas B-splines @@ -4569,8 +4840,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Fai un clon da xeometría collendo como referencia o último punto escolmado @@ -4578,17 +4849,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Clonar - + Copy Copiar - + Move Mover @@ -4596,8 +4867,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa o diámetro dun círculo ou arco @@ -4605,8 +4876,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa o raio dun círculo ou arco @@ -4614,8 +4885,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Fai unha simple copia da xeometría collendo como referencia o último punto escolmado @@ -4859,8 +5130,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mover a xeometría tomando coma referencia o último punto escolmado diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.qm index df2e04711f..41497e9daa 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts index e64876c2bb..8093e2c48b 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hr.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Pokaži/Sakrij češalj zakrivljenosti B-spline krive @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + Pokaži/Sakrij B-spline stupnjevi @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Pokaži/Sakrij B-spline uvišestručenje čvora @@ -55,6 +55,24 @@ Prijelaz između pokazivanja i skrivanja za višestrukost čvora (B-splines) zakrivljene linije + + CmdSketcherBSplinePoleWeight + + + Sketcher + Skica + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + Pokaži/Sakrij kontrolni poligon B-spline @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Skica - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Stvara klon geometrije uzimajući kao referencu zadnje odabranu točku @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Skica - + Close shape - Close shape + Zatvorite Oblik - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Proizvodi zatvoreni oblik sa povezivanjem krajnje točke elementa sa polazišnom točkom sljedećeg elementa CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Skica - - + Show/hide B-spline information layer Pokaži/Sakrij B-spline Sloj Informacije - + Show/hide B-spline degree - Show/hide B-spline degree + Pokaži/Sakrij B-spline stupnjevi - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + Pokaži/Sakrij kontrolni poligon B-spline - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Pokaži/Sakrij češalj zakrivljenosti B-spline krive - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Pokaži/Sakrij B-spline uvišestručenje čvora + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Skica - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Skica - + Copy Kopiraj - + Creates a clone of the geometry taking as reference the last selected point Stvara klon geometrije uzimajući kao referencu zadnje odabranu točku @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Elipsa od periapsis, apoapsis, manjeg polumjera @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Skica - + Modify knot multiplicity Izmijeniti višestrukost čvora - + Modifies the multiplicity of the selected knot of a B-spline Mijenja umnožak odabranoga čvora B-spline krive - + Increase knot multiplicity Povećanje višestrukosti čvora - + Decrease knot multiplicity Smanjenje višestrukosti čvora @@ -408,35 +430,35 @@ CmdSketcherConnect - + Sketcher Skica - + Connect edges - Connect edges + Povezivanje rubova - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Povezivanje krajnje točke elementa sa polazišnom točkom sljedećeg elementa CmdSketcherConstrainAngle - + Sketcher Skica - + 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 @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Skica - + Constrain block - Constrain block + Blok ograničenja - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Blokiranje ograničenja: blokiraj odabrani rub od pomjeranja CmdSketcherConstrainCoincident - + Sketcher Skica - + Constrain coincident Ograničiti zajedničko - + Create a coincident constraint on the selected item Napravi zajedničko ograničenje na odabranim jedinicama @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Skica - + Constrain diameter Ograniči promjer - + Fix the diameter of a circle or an arc Popravi promjer kruga ili luka @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Skica - + Constrain distance Ograniči udaljenost - + Fix a length of a line or the distance between a line and a vertex Ograniči dužinu linije ili udaljenost između linije i vrha @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Skica - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Skica - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Ograniči vertikalnu udaljenost između dvije točke ili krajeva linije @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Skica - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Skica - + Constrain horizontally Ograniči vodoravno - + Create a horizontal constraint on the selected item Napravi vodoravno ograničenje na odabranoj jedinici @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Skica - + Constrain internal alignment - Constrain internal alignment + Ograničavanje unutrašnjeg poravnavanja - + Constrains an element to be aligned with the internal geometry of another element Ograničava element da bude poravnat s unutarnjom geometrijom drugog elementa @@ -606,37 +628,37 @@ CmdSketcherConstrainLock - + Sketcher Skica - + Constrain lock Ograniči pomicanje - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Zaključaj ograničenje: stvorite i vodoravno i okomito ograničenje udaljenosti +na odabranoj tjemenoj točki CmdSketcherConstrainParallel - + Sketcher Skica - + Constrain parallel Ograniči paralelno - + Create a parallel constraint between two lines Napravi paralelno ograničenje između dvije linije @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Skica - + Constrain perpendicular Ograniči okomito - + Create a perpendicular constraint between two lines Stvara okomito ograničenje između dvije linije @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Skica - + Constrain point onto object Ograniči točku na objekt - + Fix a point onto an object Fiksiraj točku na objekt @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Skica - + Constrain radius Ograniči radijus - + Fix the radius of a circle or an arc Fiksiraj radijus kruga ili luka @@ -698,57 +720,55 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Skica - + 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. - 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. CmdSketcherConstrainSymmetric - + Sketcher Skica - + Constrain symmetrical Ograniči simetrijski - + Create a symmetry constraint between two points with respect to a line or a third point - 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 CmdSketcherConstrainTangent - + Sketcher Skica - + Constrain tangent Ograniči tangentno - + Create a tangent constraint between two entities Napravi tangentno ograničenje između dva entiteta @@ -756,17 +776,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Skica - + Constrain vertically Ograniči okomito - + Create a vertical constraint on the selected item Napravi okomito ograničenje na odabranoj jedinici @@ -774,35 +794,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Skica - + Convert geometry to B-spline - Convert geometry to B-spline + Pretvoriti geometriju u B-spline krivu - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Pretvara zadane geometrije u B-spline krive CmdSketcherCopy - + Sketcher Skica - + Copy Kopiraj - + Creates a simple copy of the geometry taking as reference the last selected point Stvara jednostavnu kopiju geometrije uzimajući kao referencu zadnje odabranu točku @@ -1278,35 +1298,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Skica - + Decrease B-spline degree - Decrease B-spline degree + Smanjuje stupnjeve B-spline - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Smanjuje stupnjeve B-spline krive CmdSketcherDecreaseKnotMultiplicity - + Sketcher Skica - + Decrease knot multiplicity Smanjenje višestrukosti čvora - + Decreases the multiplicity of the selected knot of a B-spline Smanjuje umnožak odabranoga čvora B-spline krive @@ -1314,37 +1334,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Skica - + Delete all constraints - Delete all constraints + Brisanje svih ograničenja - + Delete all constraints in the sketch - Delete all constraints in the sketch + Brisanje svih ograničenja u skici CmdSketcherDeleteAllGeometry - + Sketcher Skica - + Delete all geometry - Delete all geometry + Izbrisati sve geometrije - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Izbrisati sve geometrije i sva ograničenja u trenutnoj skici sa iznimkom vanjskih geometrija @@ -1362,7 +1382,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Uređivanje odabrane skice. @@ -1404,17 +1424,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Skica - + Increase B-spline degree - Increase B-spline degree + Povećava stupnjeve B-spline - + Increases the degree of the B-spline Povećava stupnjeve B-spline krive @@ -1422,17 +1442,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Skica - + Increase knot multiplicity Povećanje višestrukosti čvora - + Increases the multiplicity of the selected knot of a B-spline Povećati mnoštvo odabranoga čvora B-spline krive @@ -1452,7 +1472,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Završi obradu aktivne skice. @@ -1472,14 +1492,16 @@ with respect to a line or a third point Set the 'Support' of a sketch. First select the supporting geometry, for example, a face or an edge of a solid object, then call this command, then choose the desired sketch. - Set the 'Support' of a sketch. -First select the supporting geometry, for example, a face or an edge of a solid object, -then call this command, then choose the desired sketch. + Postavite 'Podršku' skice. +Prvo odaberite potpornu geometriju, na primjer, lice ili rub čvrstog predmeta, +zatim pokrenite ovu naredbu, a zatim odaberite željenu skicu. + + Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Neke od odabranih objekata ovise o skici koja je mapirana. Kružne zavisnosti nisu dopuštene. @@ -1497,7 +1519,9 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Stvorite novu skicu spajanjem dviju ili više odabranih skica. + + @@ -1507,7 +1531,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Odaberite najmanje dvije skice. @@ -1527,9 +1551,11 @@ then call this command, then choose the desired sketch. Create a new mirrored sketch for each selected sketch by using the X or Y axes, or the origin point, as mirroring reference. - Create a new mirrored sketch for each selected sketch -by using the X or Y axes, or the origin point, -as mirroring reference. + Izradite novu zrcalnu skicu za svaku odabranu skicu +pomoću osi X ili Y ili početne točke, +kao zrcalna referenca. + + @@ -1539,23 +1565,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Odaberite jednu ili više skica. CmdSketcherMove - + Sketcher Skica - + Move Pomicanje - + Moves the geometry taking as reference the last selected point Pomakni geometriju uzimajući kao referencu zadnje odabranu točku @@ -1575,23 +1601,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Stvoriti novu skicu. CmdSketcherRectangularArray - + Sketcher Skica - + Rectangular array - Rectangular array + Pravokutna matrica. - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Stvara pravokutnu matricu uzorka geometrije uzimajući kao referencu zadnje odabranu točku @@ -1612,162 +1638,166 @@ as mirroring reference. Place the selected sketch on one of the global coordinate planes. This will clear the 'Support' property, if any. - Place the selected sketch on one of the global coordinate planes. -This will clear the 'Support' property, if any. + Postavite odabranu skicu na jednu od globalnih koordinatnih ravnina. +Ovo će očistiti svojstvo "Podrška", ako postoji. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Skica - + Show/hide internal geometry Pokaži/Sakrij unutarnju geometriju - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Pokaži sve unutarnje geometrije ili sakrij nekorištene unutarnje geometrije CmdSketcherSelectConflictingConstraints - + Sketcher Skica - - + + Select conflicting constraints - Select conflicting constraints + Odaberite sukobljena ograničenja CmdSketcherSelectConstraints - + Sketcher Skica - + Select associated constraints - Select associated constraints + Odaberite povezana ograničenja - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Odaberite ograničenja povezana sa odabranim geometrijskim elementima CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Skica - + Select associated geometry - Select associated geometry + Odaberite povezane geometrije - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Odaberite geometrijske elemente povezane sa odabranim ograničenjima CmdSketcherSelectElementsWithDoFs - + Sketcher Skica - + Select unconstrained DoF - Select unconstrained DoF + Odaberite neograničene stupnjeve slobode - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Odabir geometrijskih elemenata gdje alat za rješavanje (solver) još uvijek otkriva neograničene stupnjeve slobode. CmdSketcherSelectHorizontalAxis - + Sketcher Skica - + Select horizontal axis - Select horizontal axis + Odaberite vodoravnu os - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Odaberite lokalnu vodoravnu os skice + + CmdSketcherSelectOrigin - + Sketcher Skica - + Select origin - Select origin + Odaberite izvor - + Select the local origin point of the sketch - Select the local origin point of the sketch + Odaberite lokalnu početnu točku skice + + CmdSketcherSelectRedundantConstraints - + Sketcher Skica - - + + Select redundant constraints - Select redundant constraints + Odaberite suvišna ograničenja CmdSketcherSelectVerticalAxis - + Sketcher Skica - + Select vertical axis - Select vertical axis + Odaberite okomitu os - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Odaberite lokalnu okomitu os skice @@ -1785,7 +1815,9 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + U načinu uređivanja zaustavite aktivnu operaciju (crtanje, ograničavanje itd.). + + @@ -1809,17 +1841,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Skica - + Symmetry Simetrija - + Creates symmetric geometry with respect to the last selected line or point Stvara simetrične geometrije u odnosu na zadnju odabranu liniju ili točku @@ -1827,19 +1859,21 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Skica - + Activate/deactivate constraint - Activate/deactivate constraint + Prebaci aktivirati / isključiti ograničenje + + - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Uključuje ili isključuje odabrana ograničenja @@ -1863,21 +1897,25 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Skica - + Toggle driving/reference constraint - Toggle driving/reference constraint + Prebacuj vožnje / reference ograničenje + + - + Set the toolbar, or the selected constraints, into driving or reference mode - Set the toolbar, or the selected constraints, -into driving or reference mode + Postavite alatnu traku ili odabrana ograničenja, +u režim vožnje ili referentni + + @@ -1914,13 +1952,15 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Potvrdite skicu gledajući nedostajuće slučajnosti, +nevaljana ograničenja, degenerirana geometrija itd. + + Select only one sketch. - Select only one sketch. + Odaberite samo jednu skicu. @@ -1943,7 +1983,9 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + Kada ste u načinu uređivanja, prebacujte se između prikaza odjeljka i punog prikaza. + + @@ -1961,7 +2003,249 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + U načinu uređivanja postavite orijentaciju kamere okomito na ravninu skice. + + + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2286,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Ova verzija ocean i/OCC ne podržava operacije čvora. Trebaš 6.9.0 ili noviju. - + 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. @@ -2111,134 +2395,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2536,304 @@ invalid constraints, degenerated geometry, etc. Odaberite rub(ove) iz skice. - - - - + + + + Dimensional constraint Dimenzijonalno ograničenje - - - + + + Only sketch and its support is allowed to select Dopušteno je odabrati samo skicu i njenu podršku - + One of the selected has to be on the sketch 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 linija - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Odabrani objekt(i) ne mogu prihvatiti horizontalno ograničenje! - + There are more than one fixed point selected. Select a maximum of one fixed point! Odabrano više od jedne fiksne točke. Odaberite najviše jednu fiksnu točku! - + The selected item(s) can't accept a vertical constraint! Odabrani objekt(i) ne mogu prihvatiti vertikalno 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) Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + Nije moguće dodati ograničenja između dvije vanjske geometrije. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + Nije moguće dodati ograničenje između dvije fiksne geometrije. Fiksne geometrije uključuju vanjske geometrije, blokiranu geometriju ili posebne točke kao B-spline točke čvorova. - + 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. + 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. - - - - - - - - + + + + + + + + Error Pogreška - + Select two or more points from the sketch. Odaberite dvije ili više točaka na skici. - - + + Select two or more vertexes from the sketch. Odaberite dva ili više tjemenih točaka na skici. - - + + Constraint Substitution Zamjena ograničenja - + Endpoint to endpoint tangency was applied instead. Tangenta od krajnje točka do krajnje točke je primijenjena umjesto toga. - + Select vertexes from the sketch. Odaberite vrhove sa skice. - - + + 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! - + This constraint does not make sense for non-linear curves Ovo ograničenje nema smisla za nelinearne krivulje - - - - - - + + + + + + Select the right things from the sketch. Odaberite prave stvari sa skice. - - + + Point on B-spline edge currently unsupported. Točka na rubu B-spline krive trenutno nije podržana. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Odaberite ili jednu točku i nekoliko krivulja, ili jednu krivulju i nekoliko točaka. Odabrali ste %1 krivulja i %2 točaka. - - - - + + + + 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. - - + + Select at least two lines from the sketch. Odaberite barem dvije linije iz skice. - + Select a valid line Odaberite valjanu liniju - - + + 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. @@ -2559,45 +2843,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Pogrešan broj odabranih objekata! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Sa 3 objekta, ondje mora biti 2 krivulje i 1 točka. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nemoguće je postaviti okomicu na nepovezanoj točki! - - - + + + Perpendicular to B-spline edge currently unsupported. Okomito na rub B-spline krive trenutno nije podržano. - - + + One of the selected edges should be a line. Jedan od doabranih rubova bi trebala biti linija. - + 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. @@ -2607,249 +2891,251 @@ 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. - + Wrong number of selected objects! tangent constraint Pogrešan broj odabranih objekata! - - - + + + Cannot add a tangency constraint at an unconnected point! Nemoguće je postaviti tangentu u nepovezanoj točki! - - - + + + Tangency to B-spline edge currently unsupported. Tangencijalno na rub B-Spline krive trenutno nije podržano. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Odaberite jedan ili više lukova ili krugovima iz skice. - - + + Constrain equal Ograniči jednaku duljinu - + Do you want to share the same radius for all selected elements? Želite li staviti isti polumjer za sve odabrane elemente? - - + + Constraint only applies to arcs or circles. Ograničenje se odnosi samo na lukove i krugove. - + Do you want to share the same diameter for all selected elements? Želite li dijeliti isti promjer za sve odabrane elemente? - - + + 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. - - + + Parallel lines Paralelne linije - - + + An angle constraint cannot be set for two parallel lines. 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 kompatibilna ruba - + Sketch axes cannot be used in equality constraints Koordinatne osi skice se ne mogu koristiti sa ograničenjem izjednačenja duljine - + 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 ruba 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. - 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 - 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. + 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Ne možete stvoriti ograničenja samo s vanjskom geometrijom. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Nespojiva geometrije je odabrana. - + SnellsLaw on B-spline edge is currently unsupported. - SnellsLaw on B-spline edge is currently unsupported. + SnellsLaw na B-spline trenutno nije podržano. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + Ne možete interno ograničiti elipsu na drugu elipsu. Odaberite samo jednu elipsu. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Trenutno svi unutarnji geometrijski elementi od elipse su već izloženi. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Odaberite ograničenja sa skice. - + Selected objects are not just geometry from one sketch. Odabrani objekti nisu samo geometrije iz jedne skice. - + Number of selected objects is not 3 (is %1). Broj odabranih objekata nije 3 (nego %1). - - + + Select at least one ellipse and one edge from the sketch. Odaberite barem jednu elipsu i jedan rub od skice. - + Sketch axes cannot be used in internal alignment constraint Skica osi ne može se koristiti za unutarnje ograničenje poravnavanja - - + + Maximum 2 points are supported. Maksimalno 2 točke su podržane. - - + + Maximum 2 lines are supported. Maksimalno 2 linije su podržane. - - + + Nothing to constrain Nema ništa za ograničiti - - - - + + + + Extra elements Dodatni elementi - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Dostavljeno je više elemenata nego je moguće za danu elipsu. Oni će biti zanemareni. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Ne možete interno ograničiti luk elipse na drugi luk elipse. Odaberite samo jedan luk elipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Ne možete interno ograničiti elipsu na luk elipse. Odaberite samo jedno, elipsu ili luk elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Dostavljeno je više elemenata nego je moguće za dani luk elipse. Oni će biti zanemareni. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Trenutno interna geometrija je podržana samo za elipsu i luk elipse. Posljednji odabrani element mora biti elipsa ili luk elipse. @@ -2862,124 +3148,124 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije - + CAD Kernel Error CAD Kernel greška - + None of the selected elements is an edge. Nijedan odabrani element nije jedan rub. - - + + At least one of the selected objects was not a B-Spline and was ignored. Barem jedan od odabranih objekata nije bio B-Spline, i bio je zanemaren. - - + + Wrong OCE/OCC version Pogrešna ocean i/OCC verzija - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ova verzija ocean i/OCC ne podržava čvor operacije. Trebaš verziju 6.9.0 ili više - - + + The selection comprises more than one item. Please select just one knot. Izbor se sastoji od više od jedne stavke. Odaberite samo jedan čvor. - + Input Error Ulazna greška - - + + None of the selected elements is a knot of a B-spline Nijedan od odabranih elemenata nije čvor od B-spline krive - - - - + + + + Select at least two edges from the sketch. Odaberite najmanje dva ruba iz skice. - - + + One selected edge is not connectable Jedan odabrani rub nije poveziv - + Closing a shape formed by exactly two lines makes no sense. Zatvaranje oblika stvorenoga od točno dvije linije nema nikakvog smisla. - - - - - - - - + + + + + + + + Select elements from a single sketch. Odaberite elemente iz jedne skice. - + No constraint selected Nema odabranoga ograničenja - + At least one constraint must be selected Morate odabrati barem jedno ograničenje - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Simetrična konstrukcija zahtijeva najmanje dva geometrijska elemenata, posljednji geometrijski element je referenca za simetriju konstrukcije. - + The last element must be a point or a line serving as reference for the symmetry construction. Posljednji element mora biti točka ili crta koja služi kao referenca za simetriju konstrukcije. - - + + A copy requires at least one selected non-external geometric element Kopija zahtijeva barem jedan odabrani ne-vanjski geometrijski element - + Delete All Geometry Izbrisati sve geometrije - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Jesi li zaista sigurni da želite izbrisati sve geometrije i ograničenja? - + Delete All Constraints Brisanje svih ograničenja - + Are you really sure you want to delete all the constraints? Jesi li zaista sigurni da želite izbrisati sva ograničenja? @@ -3040,62 +3326,62 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije SketcherGui::ConstraintView - + Change value Promjena vrijednosti - + Toggle to/from reference Prebaci u/iz referencu/e - + Deactivate Dezaktivirati - + Activate Aktivirati - + Show constraints Pokaži ograničenja - + Hide constraints Sakrij ograničenja - + Rename Preimenuj - + Center sketch Centriraj skicu - + Delete Izbriši - + Swap constraint names Zamjeni imena ograničenja - + Unnamed constraint Bezimeno ograničenje - + Only the names of named constraints can be swapped. Samo imena imenovanih ograničenja mogu biti zamijenjena. @@ -3118,8 +3404,8 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Umetni polumjer - - + + Radius: Polumjer: @@ -3130,8 +3416,8 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Umetanje promjera - - + + Diameter: Promjer: @@ -3159,24 +3445,24 @@ Prihvatljive kombinacije: dvije krivulje; jedna krajnja točka i krivulja; dvije Duljina: - - + + Change radius Promjeni polumjer - - + + Change diameter Promjena promjera - + Refractive index ratio Omjer indeksa loma - + Ratio n2/n1: Omjer n2/n1: @@ -3814,12 +4100,12 @@ Podržava sve jedinice jedinice, osim 'US customary' i "Izgradnja US / Euro". Show objects that the sketch is attached to - Show objects that the sketch is attached to + Prikaži objekt(e) kojima je skica pridružena Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Napomena: ove postavke su zadane postavke primijenjene na nove skice. Karakteristika se pamti za svaku skicu pojedinačno kao svojstva kartice Pogleda. @@ -4008,22 +4294,28 @@ Međutim, nema povezanih ograničenja na krajnje točake. No degenerated geometry - No degenerated geometry + Nema nevaljane geometrije + + No degenerated geometry found - No degenerated geometry found + Nije pronađena nevaljana geometrija + + Degenerated geometry - Degenerated geometry + Nevaljana geometrija + + %1 degenerated geometry found - %1 degenerated geometry found + %1 pronađenih nevaljanih geometrija @@ -4086,13 +4378,13 @@ Međutim, nema povezanih ograničenja na krajnje točake. Proširene informacije - + Constraints Ograničenja - - + + Error Pogreška @@ -4342,7 +4634,9 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Rendering order (global): - Rendering order (global): + Raspored iscrtavanja (globalno): + + @@ -4428,7 +4722,9 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Degenerated geometry - Degenerated geometry + Nevaljana geometrija + + @@ -4459,104 +4755,104 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p 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: - + Empty sketch Prazan skica - + Over-constrained sketch Iznad -Ograničena skica - - - + + + (click to select) (klikni za odabir) - + Sketch contains conflicting constraints Skica sadrži proturječna ograničenja - + Sketch contains redundant constraints Skica sadrži suvišna ograničenja - + Fully constrained sketch Potpuno ograničena skica - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Skica bez ograničenja <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 stupnjeva</span></a> slobode - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Skica bez ograničenja sa <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 stupnjeva</span></a> slobode - + Solved in %1 sec Riješeno za %1 sek - + Unsolved (%1 sec) Neriješen (%1 sek) @@ -4564,8 +4860,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Prijelaz između pokazivanja i skrivanja češlja zakrivljenosti za sve (B-splines) zakrivljene linije @@ -4573,8 +4869,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Smanjuje umnožak odabranoga čvora B-spline krive @@ -4582,8 +4878,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Prijelaz između pokazivanja i skrivanja intenziteta za sve (B-splines) zakrivljene linije @@ -4591,8 +4887,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Povećati mnoštvo odabranoga čvora B-spline krive @@ -4600,17 +4896,26 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Prijelaz između pokazivanja i skrivanja za višestrukost čvora (B-splines) zakrivljene linije + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Prijelaz između pokazivanja i skrivanja kontrolnog poligona (B-splines) zakrivljene linije @@ -4618,8 +4923,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Stvara klon geometrije uzimajući kao referencu zadnje odabranu točku @@ -4627,17 +4932,17 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_CompCopy - + Clone Klon - + Copy Kopiraj - + Move Pomicanje @@ -4645,8 +4950,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Popravi promjer kruga ili luka @@ -4654,8 +4959,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fiksiraj radijus kruga ili luka @@ -4663,8 +4968,8 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Stvara jednostavnu kopiju geometrije uzimajući kao referencu zadnje odabranu točku @@ -4702,7 +5007,7 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints + Stvaranje luka elipsa iz njegovog centra, velikog radijusa i krajnjih točaka @@ -4711,7 +5016,7 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints + Stvaranje luka hiperbole iz njegovog centra, velikog radijusa i krajnjih točaka @@ -4720,7 +5025,7 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints + Stvarane luka parabole iz fokusa, tjemene točke i krajnjih točaka @@ -4884,8 +5189,7 @@ Točke moraju biti postavljene bliže od petine razdaljine rešetke kako bi se p Current attachment mode is incompatible with the new selection. Select the method to attach this sketch to selected objects. - Current attachment mode is incompatible with the new selection. -Select the method to attach this sketch to selected objects. + Trenutni način dodavanja nije kompatibilan s novim odabirom. Odaberite način da dodate ovu skicu na odabrane objekte. @@ -4908,8 +5212,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Pomakni geometriju uzimajući kao referencu zadnje odabranu točku @@ -5124,7 +5428,9 @@ Eigen Sparse QR algoritam optimiziran je za rijetke matrice; obično brže Same as 'Maximum iterations', but for redundant solving - Same as 'Maximum iterations', but for redundant solving + Isto kao i 'Maksimalne iteracije', ali za rješavanje suvišnog + + @@ -5134,17 +5440,20 @@ Eigen Sparse QR algoritam optimiziran je za rijetke matrice; obično brže Same as 'Sketch size multiplier', but for redundant solving - Same as 'Sketch size multiplier', but for redundant solving + Isto kao i "Množitelj veličine skice", ali za rješavanje suvišnog + + Redundant convergence - Redundant convergence + Suvišna konvergencija Same as 'Convergence', but for redundant solving - Same as 'Convergence', but for redundant solving + Isto kao i "konvergencija", ali za rješavanje suvišnog + diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.qm index b6c678c482..528b5b94fa 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts index e7e0f9e0a2..f52beacaff 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_hu.ts @@ -55,6 +55,24 @@ Kapcsoló az összes B-görbéhez a sokszög megjelenítéséhez és elrejtéséhez + + CmdSketcherBSplinePoleWeight + + + Sketcher + Vázlatkészítő + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Vázlatkészítő - + Clone Klónozás - + Creates a clone of the geometry taking as reference the last selected point Létrehoz egy geometria klónt az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Vázlatkészítő - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Vázlatkészítő - - + Show/hide B-spline information layer B-görbe információs réteg megjelenítése/elrejtése - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Vázlatkészítő - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Vázlatkészítő - + Copy Másolás - + Creates a clone of the geometry taking as reference the last selected point Létrehoz egy geometria klónt az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Vázlatkészítő - + Modify knot multiplicity Sokszög módosítása - + Modifies the multiplicity of the selected knot of a B-spline A kiválasztott B-görbe sokszöge sokszorozásának módosítása - + Increase knot multiplicity Sokszög növelése - + Decrease knot multiplicity Sokszög csökkentése @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Vázlatkészítő - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Vázlatkészítő - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Vázlatkészítő - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Vázlatkészítő - + Constrain coincident Egymásra llesztés - + Create a coincident constraint on the selected item Kiválasztott elemeken létrehoz egy egymásra kényszerítést @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Vázlatkészítő - + 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 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Vázlatkészítő - + Constrain distance Távolság kényszer - + Fix a length of a line or the distance between a line and a vertex Vonal hosszának rögzítése vagy adott távolság tartása a vonal és végpont között @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Vázlatkészítő - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Vázlatkészítő - + Constrain vertical distance Constrain vertical distance - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Vázlatkészítő - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Vázlatkészítő - + 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 @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Vázlatkészítő - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Egy elemet illeszt egy másik elem belső geometriájához kényszerítéssel @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Vázlatkészítő - + Constrain lock Illesztés zárolása - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Vázlatkészítő - + 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 @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Vázlatkészítő - + 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 @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Vázlatkészítő - + 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 @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Vázlatkészítő - + Constrain radius Sugár illesztés - + Fix the radius of a circle or an arc Sugár illesztése körre vagy ívre @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Vázlatkészítő - + 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. Create a refraction law (Snell's law) constraint between two endpoints of rays @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Vázlatkészítő - + Constrain symmetrical Szimmetria illesztés - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Vázlatkészítő - + 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 @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Vázlatkészítő - + 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 @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Vázlatkészítő - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Vázlatkészítő - + Copy Másolás - + Creates a simple copy of the geometry taking as reference the last selected point Egyszerű geometria másolatot hoz létre, az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Vázlatkészítő - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Vázlatkészítő - + Decrease knot multiplicity Sokszög csökkentése - + Decreases the multiplicity of the selected knot of a B-spline A kiválasztott B-görbe sokszöge sokszorozásának csökkentése @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Vázlatkészítő - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Vázlatkészítő - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Vázlatkészítő - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Növeli a B-görbe fokát @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Vázlatkészítő - + Increase knot multiplicity Sokszög növelése - + Increases the multiplicity of the selected knot of a B-spline A kiválasztott B-görbe sokszöge sokszorozásának növelése @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Vázlatkészítő - + Move Mozgat - + Moves the geometry taking as reference the last selected point Mozgatja a geometriát az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Vázlatkészítő - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Létrehoz egy téglalap alakú tömb mintát a geometriáról, az utolsó kijelölt referenciapont figyelembe vételével @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Vázlatkészítő - + Show/hide internal geometry Belső geometria megjelenítése/elrejtése - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Vázlatkészítő - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Vázlatkészítő - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Vázlatkészítő - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Vázlatkészítő - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Vázlatkészítő - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Vázlatkészítő - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Vázlatkészítő - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Vázlatkészítő - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Vázlatkészítő - + Symmetry Szimmetria - + Creates symmetric geometry with respect to the last selected line or point Létrehozza az utolsó kijelölt vonal vagy pont geometriai szimmetriáját @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Vázlatkészítő - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Vázlatkészítő - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Ez az OCE/OCC verzió nem támogatja a szög műveletet. 6.9.0 vagy magasabb verzió szükséges. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. A kiválasztott él(ek) a vázlatból való. - - - - + + + + Dimensional constraint Méretezett illesztés - - - + + + Only sketch and its support is allowed to select Csak a vázlat és annak támogatása választható - + One of the selected has to be on the sketch Az egyik kiválasztottnak vázlaton kell lennie - - + + 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 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! - + The selected item(s) can't accept a horizontal constraint! A kiválasztott elem(ek) nem fogadják el a vízszintes illesztést! - + There are more than one fixed point 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! - + The selected item(s) can't accept a vertical constraint! A kiválasztott elem(ek) nem fogadják el a függőleges illesztést! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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álasszon egy élt a vázlaton. - + Select only edges from the sketch. Csak éleket válasszon a vázlaton. - - - - - - - - + + + + + + + + Error Hiba - + Select two or more points from the sketch. Jelöljön ki két vagy több pontot a vázlatból. - - + + Select two or more vertexes from the sketch. Jelöljön ki két vagy több csomópontok a vázlatból. - - + + Constraint Substitution Kényszerítés helyettesítés - + Endpoint to endpoint tangency was applied instead. Végpont-végpont érintőt alkalmazott helyette. - + Select vertexes from the sketch. Csomópont kiválasztása a vázlaton. - - + + 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! - + This constraint does not make sense for non-linear curves Ennek a kényszerítésnek nincs értelme a lineáris görbéknél - - - - - - + + + + + + Select the right things from the sketch. Válassza ki a megfelelő dolgokat a vázlatból. - - + + Point on B-spline edge currently unsupported. B-görbe él pontja jelenleg nem támogatott. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Válasszon ki egy pontot és több görbét, vagy egy görbét és több pontot. %1 görbéket és a %2 pontokat választotta. - - - - + + + + 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. - - + + Select at least two lines from the sketch. Válasszon ki legalább két vonalat a vázlatból. - + Select a valid line Válasszon ki egy érvényes vonalat - - + + The selected edge is not a valid line A kiválasztott él nem érvényes vonal - + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Kijelölt objektumok téves mennyisége! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3 tárggyal, két görbének és 1 pontnak kell lennie. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nem lehet hozzáadni a függőlegesség illesztést a független ponton! - - - + + + Perpendicular to B-spline edge currently unsupported. Merőleges a B-görbe élre, jelenleg nem támogatott. - - + + One of the selected edges should be a line. Az egyik kijelölt élnek egy vonalnak kell lennie. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Kijelölt objektumok téves mennyisége! - - - + + + Cannot add a tangency constraint at an unconnected point! Nem lehet hozzáadni egy érintő illesztést a független ponton! - - - + + + Tangency to B-spline edge currently unsupported. Érintő B-görbe élével jelenleg nem támogatott. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Válasszon egy vagy több ívet vagy kört a vázlatból. - - + + Constrain equal Illesztás megtartása - + Do you want to share the same radius for all selected elements? Az összes kijelölt elemre vonatkozólag ugyanolyan sugárt kívánt kiosztani? - - + + Constraint only applies to arcs or circles. Kényszerítés csak az ívekre és körökre vonatkozik. - + Do you want to share the same diameter for all selected elements? Az összes kijelölt elemre vonatkozólag ugyanolyan átmérőt kívánt kiosztani? - - + + 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. - - + + Parallel lines Párhuzamos vonalak - - + + An angle constraint cannot be set for two parallel lines. 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 Két vagy több kompatibilis élt válasszon - + Sketch axes cannot be used in equality constraints Vázlat tengelyek nem használhatók egyenlőségi illesztéshez - + 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ó é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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. A kijelölt tárgyak nem csak egy vázlat geometriái. - + Number of selected objects is not 3 (is %1). A kijelölt tárgyak száma nem 3 (az %1). - - + + Select at least one ellipse and one edge from the sketch. Válasszon legalább egy ellipszist és egy élt a vázlatból. - + Sketch axes cannot be used in internal alignment constraint Vázlat tengelyek nem használhatók belső kényszerítő igazításra - - + + Maximum 2 points are supported. Maximálisan 2 pontot támogatott. - - + + Maximum 2 lines are supported. Maximálisan 2 vonal támogatott. - - + + Nothing to constrain Nincs mit kényszaríteni - - - - + + + + Extra elements Extra elemek - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Lehetségesnél több elemet közölt a megadott ellipszisre. Ezek mellőzve lesznek. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Nem kényszeríthet belsőleg egy ellipszis ívet egy másik ellipszis ívhez. Csak egy ellipszis ívet jelöljön be. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Nem kényszeríthet egy ellipszis íven belsőleg egy ellipszist. Jelöljön csak egy ellipszist vagy ellipszis ívet. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Lehetségesnél több elemet közölt a megadott ellipszisre. Ezek mellőzve lesznek. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Jelenleg csak az ellipszis vagy ellipszis íve belső geometriája támogatott. Az utolsó kiválasztott elemnek egy ellipszis vagy ellipszis ívnek kell lennie. @@ -2862,124 +3124,124 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon - + CAD Kernel Error CAD rendszermag hiba - + None of the selected elements is an edge. A kiválasztott elemek közül egyik sem él. - - + + At least one of the selected objects was not a B-Spline and was ignored. A kijelölt objektumok legalább egyike nem volt egy B-görbe, és figyelmen kívül lett hagyva. - - + + Wrong OCE/OCC version Nem megfelelő OCE/OCC verzió - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ez az OCE/OCC verzió nem támogatja a szög műveletet. 6.9.0 vagy magasabb verzió szükséges - - + + The selection comprises more than one item. Please select just one knot. A kiválasztás magában foglal egynél több tételt. Kérem csak egy csomópontot válasszon. - + Input Error Beviteli hiba - - + + None of the selected elements is a knot of a B-spline Kiválasztott elemek közül egyik sem B-görbe csomópont - - - - + + + + Select at least two edges from the sketch. Jelöljön ki legalább két élet a vázlatból. - - + + One selected edge is not connectable Egy kiválasztott él nem csatlakoztatható - + Closing a shape formed by exactly two lines makes no sense. Pontosan két vonal kapcsolásával formált alakzatnak nincs értelme. - - - - - - - - + + + + + + + + Select elements from a single sketch. Válasszon ki elemeket egy egyedülálló vázlatból. - + No constraint selected Nincs kényszerítés kiválasztva - + At least one constraint must be selected Legalább egy kényszerítést ki kell kiválasztani - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A szimmetrikus építési legalább két geometriai elemet igényel, az utoljára kiválasztott geometriai elem lesz a referencia a szimmetria építéséhez. - + The last element must be a point or a line serving as reference for the symmetry construction. Az utolsó elemnek egy pontnak vagy egy vonalnak kell lennie, ami szimmetria építésére szolgáló hivatkozás szolgálja. - - + + A copy requires at least one selected non-external geometric element Egy másolás legalább egy nem-külső geometriai elem kiválasztást igényel - + Delete All Geometry Töröl minden geometriát - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Töröl minden kényszert - + Are you really sure you want to delete all the constraints? Biztos benne, hogy törli az összes kényszerítést? @@ -3040,62 +3302,62 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon SketcherGui::ConstraintView - + Change value Érték módosítása - + Toggle to/from reference Váltás a referenciához/-ról - + Deactivate Kikapcsolás - + Activate Bekapcsol - + Show constraints Kényszerítések mutatása - + Hide constraints Kényszerítés elrejtése - + Rename Átnevezés - + Center sketch Vázlat közép - + Delete Törlés - + Swap constraint names Kényszerítés nevek cseréje - + Unnamed constraint Névtelen illesztés - + Only the names of named constraints can be swapped. Névvel ellátott illesztéseknek csak a neveit lehet felcserélni. @@ -3118,8 +3380,8 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Sugár beillesztése - - + + Radius: Sugár: @@ -3130,8 +3392,8 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Átmérő beszúrása - - + + Diameter: Átmérő: @@ -3159,24 +3421,24 @@ Elfogadott kombinációk: két görbe; egy végpont és egy görbe; két végpon Hossz: - - + + Change radius Sugár módosítása - - + + Change diameter Átmérő változtatása - + Refractive index ratio Refraktív index arány - + Ratio n2/n1: Arány n2/n1: @@ -4045,13 +4307,13 @@ Azonban, nem találhatók a végpontokhoz kötött kényszerítések.Részletes információ - + Constraints Kényszerítések - - + + Error Hiba @@ -4410,104 +4672,104 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal 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: - + Empty sketch Üres vázlat - + Over-constrained sketch Túl sok illesztés tartalmazó vázlat - - - + + + (click to select) (kattintás a kijelöléshez) - + Sketch contains conflicting constraints Vázlat szabálytalan kényszerítéseket tartalmaz - + Sketch contains redundant constraints A vázlat felesleges kényszerítéseket tartalmaz - + Fully constrained sketch Teljesen zárolt vázlat - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Kevésbé zárolt vázlaton ezzel <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 fokú</span></a> a szabad kapcsolat - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Kevésbé zárolt vázlaton ezzel <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 fok</span></a> a szabad kapcsolat - + Solved in %1 sec Megoldva %1 másodperc alatt - + Unsolved (%1 sec) Megoldatlan (%1 mp) @@ -4515,8 +4777,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Kapcsoló az összes B-görbéhez a görbület fésű megjelenítéséhez és elrejtéséhez @@ -4524,8 +4786,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline A kiválasztott B-görbe sokszöge sokszorozásának csökkentése @@ -4533,8 +4795,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Kapcsoló az összes B-görbéhez a görbület fokok megjelenítéséhez és elrejtéséhez @@ -4542,8 +4804,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline A kiválasztott B-görbe sokszöge sokszorozásának növelése @@ -4551,17 +4813,26 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Kapcsoló az összes B-görbéhez a sokszög megjelenítéséhez és elrejtéséhez + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Kapcsoló az összes B-görbéhez a vezérlő sokszög megjelenítéséhez és elrejtéséhez @@ -4569,8 +4840,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Létrehoz egy geometria klónt az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -4578,17 +4849,17 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_CompCopy - + Clone Klónozás - + Copy Másolás - + Move Mozgat @@ -4596,8 +4867,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Rögzíteni egy kör vagy egy ív átmérőjét @@ -4605,8 +4876,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Sugár illesztése körre vagy ívre @@ -4614,8 +4885,8 @@ A pontokat a rácsméret ötödénél közelebb kell beállítani egy rácsvonal Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Egyszerű geometria másolatot hoz létre, az utolsó kiválasztott pont, mint referencia pont, figyelembevételével @@ -4858,8 +5129,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mozgatja a geometriát az utolsó kiválasztott pont, mint referencia pont, figyelembevételével diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.qm index af69708878..5b348baef9 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts index 8f70c57972..1db285eb67 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_id.ts @@ -55,6 +55,24 @@ Beralih antara menunjukkan dan menyembunyikan keseragaman simpul untuk semua B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Menciptakan tiruan dari geometri mengambil sebagai referensi titik dipilih terakhir @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Tampilkan / sembunyikan lapisan informasi B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Salinan - + Creates a clone of the geometry taking as reference the last selected point Menciptakan tiruan dari geometri mengambil sebagai referensi titik dipilih terakhir @@ -382,27 +404,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifikasi keseragaman simpul - + Modifies the multiplicity of the selected knot of a B-spline Memodifikasi banyaknya simpul terpilih dari B-spline - + Increase knot multiplicity Meningkatkan keseragaman simpul - + Decrease knot multiplicity Turunkan keseragaman simpul @@ -410,17 +432,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -428,17 +450,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Kendalikan sudut - + Fix the angle of a line or the angle between two lines Perbaiki sudut garis atau sudut antara dua garis @@ -446,17 +468,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -464,17 +486,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Kendala bertepatan - + Create a coincident constraint on the selected item Buat kendala bertepatan pada item yang dipilih @@ -482,17 +504,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -500,17 +522,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Kendalikan jarak - + Fix a length of a line or the distance between a line and a vertex Perbaiki panjang garis atau jarak antara garis dan simpul @@ -518,17 +540,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -536,17 +558,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -554,17 +576,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -572,17 +594,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Kendalikan secara horisontal - + Create a horizontal constraint on the selected item Buat kendala horizontal pada item yang dipilih @@ -590,17 +612,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Kendalikan elemen yang harus disesuaikan dengan geometri internal elemen lain @@ -608,17 +630,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Kendalikan kunci - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -628,17 +650,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Kendalikan sejajar - + Create a parallel constraint between two lines Buat batasan paralel antara dua baris @@ -646,17 +668,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Kendalikan tegak lurus - + Create a perpendicular constraint between two lines Buat kendala tegak lurus antara dua garis @@ -664,17 +686,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Konstruksikan titik ke objek - + Fix a point onto an object Perbaiki sebuah titik pada sebuah objek @@ -682,17 +704,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Kendalikan radius - + Fix the radius of a circle or an arc Perbaiki jari-jari lingkaran atau busur @@ -700,17 +722,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Membekukan refraksi (hukum 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 @@ -720,17 +742,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + 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 @@ -740,17 +762,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Kendalikan singgung - + Create a tangent constraint between two entities Buat kendala singgung antara dua entitas @@ -758,17 +780,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Kendalikan secara vertikal - + Create a vertical constraint on the selected item Buat kendala vertikal pada item yang dipilih @@ -776,17 +798,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -794,17 +816,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Salinan - + Creates a simple copy of the geometry taking as reference the last selected point Membuat salinan geometri sederhana sebagai referensi titik terakhir yang dipilih @@ -1280,17 +1302,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1298,17 +1320,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Turunkan keseragaman simpul - + Decreases the multiplicity of the selected knot of a B-spline Turunkan multiplisitas dari simpul yang dipilih dari B-spline @@ -1316,17 +1338,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1334,17 +1356,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1406,17 +1428,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Meningkatkan derajat B-spline @@ -1424,17 +1446,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Meningkatkan keseragaman simpul - + Increases the multiplicity of the selected knot of a B-spline Meningkatkan multiplisitas dari simpul yang dipilih dari B-spline @@ -1547,17 +1569,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Pindah - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1583,17 +1605,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1621,17 +1643,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Tampilkan / sembunyikan geometri internal - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1639,13 +1661,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1653,17 +1675,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1671,17 +1693,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1689,17 +1711,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1707,17 +1729,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1725,17 +1747,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1743,13 +1765,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1757,17 +1779,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1811,17 +1833,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetri - + Creates symmetric geometry with respect to the last selected line or point Membuat geometri simetris berkenaan dengan garis atau titik yang terakhir dipilih @@ -1829,17 +1851,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1865,17 +1887,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1966,6 +1988,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2004,47 +2266,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + 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. @@ -2113,134 +2375,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2254,136 +2516,136 @@ invalid constraints, degenerated geometry, etc. Pilih tepi dari sketsa. - - - - + + + + Dimensional constraint Batasan dimensi - - - + + + Only sketch and its support is allowed to select Hanya sketsa dan dukungannya yang diperbolehkan untuk dipilih - + One of the selected has to be on the sketch Salah satu yang terpilih harus ada di sketsa - - + + Select an edge from the sketch. Pilih tepi dari sketsa. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Kendala yang tidak mungkin - - - - + + + + The selected edge is not a line segment Salah satu yang terpilih harus ada di sketsa - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! The dipilih item (s) tidak dapat menerima horisontal kendala ! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! Dipilih item (s) tidak dapat menerima vertikal kendala! - + 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 @@ -2398,160 +2660,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Kesalahan - + Select two or more points from the sketch. Pilih dua atau lebih poin dari para sketsa . - - + + Select two or more vertexes from the sketch. Pilih dua atau lebih vertexes dari para sketsa . - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Pilih vertexes dari para sketsa . - - + + 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! - + This constraint does not make sense for non-linear curves Ini kendala tidak masuk akal untuk kurva non-linear - - - - - - + + + + + + Select the right things from the sketch. Pilih hal yang benar dari yang sketsa . - - + + Point on B-spline edge currently unsupported. Arahkan ke tepi B-spline yang saat ini tidak didukung. - - + + 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 . - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Pilih salah satu titik dan beberapa kurva, atau satu kurva dan beberapa titik. Anda telah memilih kurva % 1 dan % 2 poin. - - - - + + + + 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 Kendala ini hanya masuk akal pada segmen garis atau sepasang titik - + 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 . - - + + Select at least two lines from the sketch. Pilih setidaknya dua baris dari para sketsa . - + Select a valid line Pilih baris yang valid - - + + The selected edge is not a valid line dipilih tepi bukan valid baris - + 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. @@ -2559,45 +2821,45 @@ 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 . - + Wrong number of selected objects! perpendicular constraint Salah jumlah objek terpilih ! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Dengan 3 objek, harus ada 2 kurva dan 1 titik . - - + + Cannot add a perpendicularity constraint at an unconnected point! Tidak dapat menambahkan batasan tegak lurus pada titik yang tidak terhubung ! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular ke tepi B-spline saat ini tidak didukung. - - + + One of the selected edges should be a line. Salah satu tepi yang dipilih harus berupa garis . - + 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. @@ -2605,249 +2867,249 @@ 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 . - + Wrong number of selected objects! tangent constraint Salah jumlah objek terpilih ! - - - + + + Cannot add a tangency constraint at an unconnected point! Tidak dapat menambahkan kendala singgung pada titik yang tidak terhubung ! - - - + + + Tangency to B-spline edge currently unsupported. Tangensi ke tepi B-spline saat ini tidak didukung. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Pilih satu atau lebih busur atau lingkaran dari para sketsa . - - + + Constrain equal Kendalikan sama - + Do you want to share the same radius for all selected elements? Apakah Anda ingin berbagi radius yang sama untuk semua elemen yang dipilih ? - - + + Constraint only applies to arcs or circles. Kendala hanya berlaku untuk busur atau lingkaran. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + 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 . - - + + Parallel lines Garis sejajar - - + + An angle constraint cannot be set for two parallel lines. 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 Pilih dua atau lebih tepi yang kompatibel - + Sketch axes cannot be used in equality constraints Sumbu sketsa tidak dapat digunakan dalam batasan kesetaraan - + Equality for B-spline edge currently unsupported. Kesetaraan untuk tepi B-spline saat ini tidak didukung. - - + + Select two or more edges of similar type Pilih dua atau lebih tepi tipe yang serupa - - - - - + + + + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Objek yang dipilih bukan hanya geometri dari satu sketsa . - + Number of selected objects is not 3 (is %1). Jumlah objek yang dipilih tidak 3 (adalah % 1 ). - - + + Select at least one ellipse and one edge from the sketch. Pilih setidaknya satu elips dan satu ujung dari satu sketsa . - + Sketch axes cannot be used in internal alignment constraint Sumbu sketsa tidak dapat digunakan dalam batasan pelurusan internal - - + + Maximum 2 points are supported. Maksimal 2 poin didukung. - - + + Maximum 2 lines are supported. Maksimum 2 baris didukung. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Elemen ekstra - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Lebih banyak elemen daripada yang mungkin diberikan pada elips yang diberikan. Ini diabaikan. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Elemen lebih dari mungkin untuk diberikan busur elips disediakan. Ini diabaikan. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Saat ini geometri internal hanya didukung elips atau busur elips. Elemen pilihan terakhir harus berupa elips atau busur elips. @@ -2860,124 +3122,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Kernel CAD Error - + None of the selected elements is an edge. Tak satu pun dari elemen yang dipilih adalah keunggulan . - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Salah versi OCE / OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Versi OCE / OCC ini tidak mendukung operasi simpul . Anda membutuhkan 6.9.0 atau lebih tinggi - - + + The selection comprises more than one item. Please select just one knot. Pemilihan terdiri dari lebih dari satu item. Silahkan pilih hanya satu simpul . - + Input Error Kesalahan Masukan - - + + None of the selected elements is a knot of a B-spline Tak satu pun dari yang dipilih elemen adalah simpul dari B-spline - - - - + + + + Select at least two edges from the sketch. Pilih setidaknya dua sisi dari satu sketsa . - - + + One selected edge is not connectable Satu tepi yang dipilih tidak dapat dihubungkan - + Closing a shape formed by exactly two lines makes no sense. Menutup bentuk yang dibentuk oleh tepat dua garis tidak masuk akal. - - - - - - - - + + + + + + + + Select elements from a single sketch. Pilih elemen dari satu sketsa . - + No constraint selected Tidak ada batasan yang dipilih - + At least one constraint must be selected Setidaknya satu kendala harus dipilih - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Konstruksi simetris membutuhkan setidaknya dua elemen geometris, elemen geometris terakhir menjadi referensi untuk konstruksi simetri . - + The last element must be a point or a line serving as reference for the symmetry construction. Unsur terakhir harus menjadi titik atau garis yang berfungsi sebagai acuan untuk konstruksi simetri . - - + + A copy requires at least one selected non-external geometric element Salinan memerlukan setidaknya satu elemen geometrik non-eksternal yang dipilih - + Delete All Geometry Menghapus semua geometri - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3038,62 +3300,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Ubah nilai - + Toggle to/from reference Beralih ke / dari referensi - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Ganti nama - + Center sketch Pusat sketsa - + Delete Menghapus - + Swap constraint names Tukarlah nama kendala - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Hanya nama- nama kendala yang bisa ditukar. @@ -3116,8 +3378,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Sisipkan radius - - + + Radius: Radius: @@ -3128,8 +3390,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3157,24 +3419,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Length: - - + + Change radius Ubah radius - - + + Change diameter Change diameter - + Refractive index ratio Rasio indeks bias - + Ratio n2/n1: Rasio n2 / n1: @@ -4043,13 +4305,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error Kesalahan @@ -4408,104 +4670,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 : - + Empty sketch Sketsa kosong - + Over-constrained sketch Sketsa terlalu terbatas - - - + + + (click to select) (klik untuk memilih) - + Sketch contains conflicting constraints Sketsa berisi batasan yang saling bertentangan - + Sketch contains redundant constraints Sketsa berisi batasan yang berlebihan - + Fully constrained sketch Sketsa terbatas - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Dipecahkan dalam % 1 detik - + Unsolved (%1 sec) Tidak terpecahkan ( % 1 dtk) @@ -4513,8 +4775,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Beralih antara menampilkan dan menyembunyikan kelengkungan sisir untuk B-splines semua @@ -4522,8 +4784,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Turunkan multiplisitas dari simpul yang dipilih dari B-spline @@ -4531,8 +4793,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Beralih antara menunjukkan dan menyembunyikan derajat untuk semua B-splines @@ -4540,8 +4802,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Meningkatkan multiplisitas dari simpul yang dipilih dari B-spline @@ -4549,17 +4811,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Beralih antara menunjukkan dan menyembunyikan keseragaman simpul untuk semua B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Beralih antara menampilkan dan menyembunyikan poligon kontrol untuk semua B-splines @@ -4567,8 +4838,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Menciptakan tiruan dari geometri mengambil sebagai referensi titik dipilih terakhir @@ -4576,17 +4847,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klon - + Copy Salinan - + Move Pindah @@ -4594,8 +4865,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4603,8 +4874,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Perbaiki jari-jari lingkaran atau busur @@ -4612,8 +4883,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Membuat salinan geometri sederhana sebagai referensi titik terakhir yang dipilih @@ -4857,8 +5128,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.qm index 012827f3cb..93a332557d 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts index 59bb573375..df04dd810c 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_it.ts @@ -55,6 +55,24 @@ Commuta tra mostrare e nascondere le molteplicità di nodo per tutte le B-spline + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clona - + Creates a clone of the geometry taking as reference the last selected point Crea un clone della geometria prendendo come riferimento l'ultimo punto selezionato @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Mostra/Nascondi il layer dati della B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copia - + Creates a clone of the geometry taking as reference the last selected point Crea un clone della geometria prendendo come riferimento l'ultimo punto selezionato @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifica le molteplicità di nodo - + Modifies the multiplicity of the selected knot of a B-spline Modifica la molteplicità del nodo selezionato di una B-spline - + Increase knot multiplicity Aumenta la molteplicità di nodo - + Decrease knot multiplicity Diminuisci la molteplicità di nodo @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Coincidenza - + Create a coincident constraint on the selected item Crea un vincolo di coincidenza sull'elemento selezionato @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Vincola il diametro - + Fix the diameter of a circle or an arc Vincola il diametro di un cerchio o di un arco @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Distanza - + Fix a length of a line or the distance between a line and a vertex Fissa la lunghezza di una linea o la distanza tra una linea e un vertice @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Orizzontale - + Create a horizontal constraint on the selected item Crea un vincolo orizzontale sull'elemento selezionato @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Vincola un elemento a stare allineato con la geometria interna di un altro elemento @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Blocca - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Parallelo - + Create a parallel constraint between two lines Crea un vincolo di parallelismo tra due linee @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Perpendicolare - + Create a perpendicular constraint between two lines Crea un vincolo di perpendicolarità tra due linee @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Punto su oggetto - + Fix a point onto an object Fissa un punto su un oggetto @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Raggio - + Fix the radius of a circle or an arc Fissa il raggio di un cerchio o di un arco @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Rifrazione (legge di 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Simmetria - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Tangente - + Create a tangent constraint between two entities Crea un vincolo di tangenza tra due entità @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Verticale - + Create a vertical constraint on the selected item Crea un vincolo verticale sull'elemento selezionato @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copia - + Creates a simple copy of the geometry taking as reference the last selected point Crea una copia semplice della geometria prendendo come riferimento l'ultimo punto selezionato @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Diminuisci la molteplicità di nodo - + Decreases the multiplicity of the selected knot of a B-spline Diminuisce la molteplicità del nodo selezionato di una B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Aumenta il grado della B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Aumenta la molteplicità di nodo - + Increases the multiplicity of the selected knot of a B-spline Aumenta la molteplicità del nodo selezionato di una B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher - Sketcher + Schizzo - + Move Sposta - + Moves the geometry taking as reference the last selected point Sposta la geometria prendendo come riferimento l'ultimo punto selezionato @@ -1565,7 +1587,7 @@ as mirroring reference. Sketcher - Schizzo + Sketcher @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Crea una serie rettangolare della geometria usando come riferimento l'ultimo punto selezionato @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Mostra/Nascondi la geometria interna - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simmetria - + Creates symmetric geometry with respect to the last selected line or point Crea una geometria simmetrica rispetto all'ultima linea o punto selezionato @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Questa versione di OCE/OCC non supporta l'operazione di nodo. Serve la versione 6.9.0 o superiore. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Seleziona bordo/i dello schizzo. - - - - + + + + Dimensional constraint Lunghezza - - - + + + Only sketch and its support is allowed to select E' consentito selezionare solo lo schizzo e il suo supporto - + One of the selected has to be on the sketch Una delle entità selezionate deve essere nello 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! - + The selected item(s) can't accept a horizontal constraint! Gli elementi selezionati non possono accettare un vincolo orizzontale! - + There are more than one fixed point selected. Select a maximum of one fixed point! Sono stati selezionati più punti bloccati. Selezionare al massimo un punto bloccato! - + The selected item(s) can't accept a vertical constraint! Gli elementi selezionati non possono accettare un vincolo verticale! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Seleziona un bordo dello schizzo. - + Select only edges from the sketch. Selezionare solo i bordi dallo schizzo. - - - - - - - - + + + + + + + + Error Errore - + Select two or more points from the sketch. Selezionare due o più punti dallo schizzo. - - + + Select two or more vertexes from the sketch. Selezionare due o più vertici nello schizzo. - - + + Constraint Substitution Sostituzione Vincoli - + Endpoint to endpoint tangency was applied instead. È stata invece applicata la tangenza punto finale su punto finale. - + Select vertexes from the sketch. Selezionare vertici dello schizzo. - - + + 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! - + This constraint does not make sense for non-linear curves Questo vincolo non ha senso per le curve non lineari - - - - - - + + + + + + Select the right things from the sketch. Selezionare le cose giuste dallo schizzo. - - + + Point on B-spline edge currently unsupported. Punto sul bordo di una B-spline attualmente non è supportato. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Selezionare un punto e diverse curve, o una curva e diversi punti. Attualmente sono selezionati %1 curve e %2 punti. - - - - + + + + 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 due 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. - - + + Select at least two lines from the sketch. Selezionare almeno due linee dello schizzo. - + Select a valid line Selezionare una linea valida - - + + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Numero di oggetti selezionati errato! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Con 3 oggetti, ci devono essere 2 curve e 1 punto. - - + + Cannot add a perpendicularity constraint at an unconnected point! Non è possibile aggiungere un vincolo di perpendicolarità in un punto non connesso! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicolare al bordo di una B-spline attualmente non è supportato. - - + + One of the selected edges should be a line. Uno degli spigoli selezionati deve essere una linea. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Numero di oggetti selezionati errato! - - - + + + Cannot add a tangency constraint at an unconnected point! Non è possibile aggiungere un vincolo di tangenza in un punto non connesso! - - - + + + Tangency to B-spline edge currently unsupported. Tangente al bordo di una B-spline attualmente non è supportato. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Selezionare uno o più archi o cerchi nello schizzo. - - + + Constrain equal Uguale - + Do you want to share the same radius for all selected elements? Si desidera condividere lo stesso raggio per tutti gli elementi selezionati? - - + + Constraint only applies to arcs or circles. Vincolo applicato solo ad archi o cerchi. - + Do you want to share the same diameter for all selected elements? Si desidera condividere lo stesso diametro per tutti gli elementi selezionati? - - + + 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. - - + + Parallel lines Linee parallele - - + + An angle constraint cannot be set for two parallel lines. 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 utilizzati 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 Selezionare due o più spigoli 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. 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 è 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Gli oggetti selezionati non sono delle geometrie dello stesso schizzo. - + Number of selected objects is not 3 (is %1). Il numero di oggetti selezionati non è 3 (è %1). - - + + Select at least one ellipse and one edge from the sketch. Selezionare almeno un'ellisse e un bordo dello schizzo. - + Sketch axes cannot be used in internal alignment constraint Gli assi dello schizzo non possono essere utilizzati nel vincolo di allineamento interno - - + + Maximum 2 points are supported. Sono supportati al massimo 2 punti. - - + + Maximum 2 lines are supported. Sono supportate al massimo 2 linee. - - + + Nothing to constrain Nulla da vincolare - - - - + + + + Extra elements Elementi aggiuntivi - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Per l'ellisse sono stati forniti più elementi di quanti sono possibili. Questi sono stati ignorati. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Non è possibile applicare il vincolo allineamento interno di un arco di ellisse su altri archi di ellisse. Selezionare un solo arco di ellisse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Non è possibile applicare il vincolo allineamento interno di un ellisse su un arco di ellisse. Selezionare un solo ellisse o un solo arco di ellisse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Per l'arco di ellisse sono stati forniti più elementi di quanti sono possibili. Questi sono stati ignorati. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Attualmente la geometria interna è supportata solo per ellisse e arco di ellisse. L'ultimo elemento selezionato deve essere un ellisse o un arco di ellisse. @@ -2862,124 +3124,124 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; - + CAD Kernel Error Errore Kernel CAD - + None of the selected elements is an edge. Nessuno degli elementi selezionati è un bordo. - - + + At least one of the selected objects was not a B-Spline and was ignored. Almeno uno degli oggetti selezionati non è una B-Spline ed è stato ignorato. - - + + Wrong OCE/OCC version Versione errata di OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Questa versione di OCE/OCC non supporta l'operazione di nodo. Serve la versione 6.9.0 o superiore - - + + The selection comprises more than one item. Please select just one knot. La selezione comprende più di un elemento. Si prega di selezionare un solo nodo. - + Input Error Errore di input - - + + None of the selected elements is a knot of a B-spline Nessuno degli elementi selezionati è un nodo di una B-spline - - - - + + + + Select at least two edges from the sketch. Selezionare almeno due spigoli nello schizzo. - - + + One selected edge is not connectable Un bordo selezionato non è collegabile - + Closing a shape formed by exactly two lines makes no sense. Chiudere una forma costituita solo da due linee non ha senso. - - - - - - - - + + + + + + + + Select elements from a single sketch. Selezionare gli elementi da un solo schizzo. - + No constraint selected Nessun vincolo selezionato - + At least one constraint must be selected È necessario selezionare almeno un vincolo - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Una costruzione simmetrica richiede almeno due elementi geometrici, l'ultimo elemento è il riferimento per la costruzione della simmetria. - + The last element must be a point or a line serving as reference for the symmetry construction. L'ultimo elemento deve essere un punto o una linea perchè serve come riferimento per la costruzione della simmetria. - - + + A copy requires at least one selected non-external geometric element Una copia richiede che sia selezionato almeno un elemento geometrico non-esterno - + Delete All Geometry Cancella tutta la geometria - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Elimina tutti i vincoli - + Are you really sure you want to delete all the constraints? Sicuro di voler eliminare tutti i vincoli? @@ -3040,62 +3302,62 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; SketcherGui::ConstraintView - + Change value Cambia valore - + Toggle to/from reference Attiva o disattiva da/in riferimento - + Deactivate Disattiva - + Activate Attiva - + Show constraints Visualizza i vincoli - + Hide constraints Nascondi i vincoli - + Rename Rinomina - + Center sketch Centra lo schizzo - + Delete Elimina - + Swap constraint names Scambia i nomi dei vincoli - + Unnamed constraint Vincolo senza nome - + Only the names of named constraints can be swapped. Si possono scambiare solo i nomi dei vincoli denominati. @@ -3118,8 +3380,8 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Inserire il raggio - - + + Radius: Raggio: @@ -3130,8 +3392,8 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Inserire diametro - - + + Diameter: Diametro: @@ -3159,24 +3421,24 @@ Combinazioni ammesse: due curve; un punto finale e una curva; due punti finali; Lunghezza: - - + + Change radius Cambia il raggio - - + + Change diameter Cambia diametro - + Refractive index ratio Indice di rifrazione - + Ratio n2/n1: Rapporto n2/n1: @@ -4043,13 +4305,13 @@ Tuttavia, non sono stati trovati i vincoli che riguardano i punti finali.Informazioni estese - + Constraints Vincoli - - + + Error Errore @@ -4408,104 +4670,104 @@ I punti devono essere impostati più vicino di un quinto della dimensione della 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: - + Empty sketch Schizzo vuoto - + Over-constrained sketch Schizzo sovravincolato - - - + + + (click to select) (cliccare quì per selezionarli) - + Sketch contains conflicting constraints Lo schizzo contiene dei vincoli in conflitto - + Sketch contains redundant constraints Lo schizzo contiene dei vincoli ridondanti - + Fully constrained sketch Schizzo completamente vincolato - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Schizzo sottovincolato con <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 grado</span></a> di libertà - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Scizzo sottovincolato con <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 gradi</span></a> di libertà - + Solved in %1 sec Risolto in %1 sec - + Unsolved (%1 sec) Non risolto (%1 sec) @@ -4513,8 +4775,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Cambia modalità tra mostra o nascondi lo strumento curvatura di tutte le B-spline @@ -4522,8 +4784,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Diminuisce la molteplicità del nodo selezionato di una B-spline @@ -4531,8 +4793,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Cambia modalità tra mostra o nascondi i gradi di tutte le B-spline @@ -4540,8 +4802,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Aumenta la molteplicità del nodo selezionato di una B-spline @@ -4549,17 +4811,26 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Commuta tra mostrare e nascondere le molteplicità di nodo per tutte le B-spline + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Cambia modalità tra mostra o nascondi i poligoni di controllo di tutte le B-spline @@ -4567,8 +4838,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Crea un clone della geometria prendendo come riferimento l'ultimo punto selezionato @@ -4576,17 +4847,17 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_CompCopy - + Clone Clona - + Copy Copia - + Move Sposta @@ -4594,8 +4865,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Vincola il diametro di un cerchio o di un arco @@ -4603,8 +4874,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fissa il raggio di un cerchio o di un arco @@ -4612,8 +4883,8 @@ I punti devono essere impostati più vicino di un quinto della dimensione della Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Crea una copia semplice della geometria prendendo come riferimento l'ultimo punto selezionato @@ -4856,8 +5127,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Sposta la geometria prendendo come riferimento l'ultimo punto selezionato diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.qm index f56983b739..5b48635865 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts index 226c8712a1..3e41efad2d 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ja.ts @@ -55,6 +55,24 @@ すべてのB-スプラインのノット多重度の非表示と表示を切り替えます。 + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone クローン - + Creates a clone of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーのクローンを作成 @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer B-スプラインの情報レイヤーの表示/非表示 - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle 円弧や円を拘束する - + Constrain an arc or a circle 円弧や円を拘束する - + Constrain radius 半径拘束 - + Constrain diameter 直径拘束 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy コピー - + Creates a clone of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーのクローンを作成 @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity ノット多重度を変更 - + Modifies the multiplicity of the selected knot of a B-spline 選択されたB-スプラインのノットの多重度を変更 - + Increase knot multiplicity ノット多重度を増やす - + Decrease knot multiplicity ノット多重度を減らす @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle 角度を拘束 - + Fix the angle of a line or the angle between two lines 直線の角度または2直線間の角度を拘束 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident 一致拘束 - + Create a coincident constraint on the selected item 選択されているアイテムに対して一致拘束を作成 @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter 直径拘束 - + Fix the diameter of a circle or an arc 円または円弧の直径を固定 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance 距離拘束 - + Fix a length of a line or the distance between a line and a vertex 直線の長さまたは直線と節点の間の距離を拘束 @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance 水平距離拘束 - + Fix the horizontal distance between two points or line ends 2点間または直線端点間の水平距離を拘束 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends 2点間または直線端点間の垂直距離を拘束 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal 等値拘束 - + Create an equality constraint between two lines or between circles and arcs 2直線間または円と円弧間の等値拘束を作成 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally 水平拘束 - + Create a horizontal constraint on the selected item 選択されているアイテムに対して水平拘束を作成 @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element 要素が他の要素の内部ジオメトリーと並ぶように拘束 @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock ロック拘束 - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel 平行拘束 - + Create a parallel constraint between two lines 2直線間の平行拘束を作成 @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular 直角拘束 - + Create a perpendicular constraint between two lines 2直線間の垂直拘束を作成 @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object オブジェクト上の点拘束 - + Fix a point onto an object 点をオブジェクト上に拘束 @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius 半径拘束 - + Fix the radius of a circle or an arc 円または円弧の半径を固定 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical 対称拘束 - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent 正接拘束 - + Create a tangent constraint between two entities 2 つのエンティティ間に正接拘束を作成 @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically 垂直拘束 - + Create a vertical constraint on the selected item 選択されているアイテムに対して垂直拘束を作成 @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy コピー - + Creates a simple copy of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーの単純コピーを作成 @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity ノット多重度を減らす - + Decreases the multiplicity of the selected knot of a B-spline 選択されたB-スプラインのノットの多重度を減らす @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline B-スプラインの次数を増加 @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity ノット多重度を増やす - + Increases the multiplicity of the selected knot of a B-spline 選択されたB-スプラインのノットの多重度を増やす @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move 移動 - + Moves the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーを移動 @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーの格子状配列パターンを作成 @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry 内部ジオメトリの表示/非表示 - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher - Sketcher + スケッチャー - + Symmetry 対称 - + Creates symmetric geometry with respect to the last selected line or point 最後に選択した線分や点に対して対称ジオメトリーを作成 @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher - スケッチャー + Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. 曲線の交点を推定できません。フィレット対象の曲線の頂点の間に一致拘束を追加してみてください。 - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. このバージョンの OCE/OCC はノット操作をサポートしていません。バージョン 6.9.0 以上が必要です。 - + 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は最大許容範囲内で多重度を減らすことができまぜん。 @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. スケッチからエッジを選択(複数可) - - - - + + + + Dimensional constraint 寸法拘束 - - - + + + Only sketch and its support is allowed to select スケッチとそのサポートのみが選択可能です - + One of the selected has to be on the sketch 選択されているアイテムの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! 選択されたエッジにはすでにブロック拘束が設定されています! - + The selected item(s) can't accept a horizontal constraint! 選択されているアイテムは水平拘束出来ません! - + There are more than one fixed point selected. Select a maximum of one fixed point! 複数の固定点が選択されています。固定点を1つだけ選択してください! - + The selected item(s) can't accept a vertical 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 不適切なソルバー状態 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. スケッチから1本のエッジを選択 - + Select only edges from the sketch. スケッチからエッジのみを選択 - - - - - - - - + + + + + + + + Error エラー - + Select two or more points from the sketch. スケッチから2点以上の節点を選択 - - + + Select two or more vertexes from the sketch. スケッチから2点以上の節点を選択してください。 - - + + Constraint Substitution 拘束代入 - + Endpoint to endpoint tangency was applied instead. 代わりに端点間の正接拘束が適用されました。 - + Select vertexes from the sketch. スケッチから節点を選択してください - - + + 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! 軸に対して長さ拘束を追加することはできません! - + This constraint does not make sense for non-linear curves この拘束は非線形な曲線に対して無効です - - - - - - + + + + + + Select the right things from the sketch. スケッチから正しい対象を選択してください。 - - + + Point on B-spline edge currently unsupported. B-スプラインエッジの点拘束は現在サポートされていません。 - - + + 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. 選択した点をそれぞれの曲線上に拘束することができません。同じ要素のパーツであるか、両方とも外部ジオメトリーであることが原因です。 - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. 1点と複数の曲線、または1つの曲線と複数の点を選択してください。 %1 個の曲線と %2 個の点が選択されています。 - - - - + + + + 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本以上の直線を選択してください - - + + Select at least two lines from the sketch. スケッチから2本以上の直線を選択してください - + Select 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. @@ -2559,45 +2821,45 @@ 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 スケッチから幾つかのジオメトリを選択してください。 - + Wrong number of selected objects! perpendicular constraint 選択したオブジェクトの数が正しくありません ! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 使用される3オブジェクトは2つの曲線と1つの点である必要があります。 - - + + Cannot add a perpendicularity constraint at an unconnected point! 接続していない点に対して垂直拘束を追加することはできません! - - - + + + Perpendicular to B-spline edge currently unsupported. B-スプラインエッジの直角拘束は現在サポートされていません。 - - + + One of the selected edges should be a line. 選択されているエッジの1つが直線である必要があります - + 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. @@ -2607,249 +2869,249 @@ 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 スケッチから幾つかのジオメトリを選択してください。 - + Wrong number of selected objects! tangent constraint 選択したオブジェクトの数が正しくありません ! - - - + + + Cannot add a tangency constraint at an unconnected point! 接続されていない点に対して正接拘束を追加することはできません! - - - + + + Tangency to B-spline edge currently unsupported. B-スプラインエッジの正接拘束は現在サポートされていません。 - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 端点間の正接拘束が適用されました。一致拘束は削除されました。 - - - - + + + + Select one or more arcs or circles from the sketch. スケッチから 1 つ以上の円弧または円を選択してください。 - - + + Constrain equal 等値拘束 - + Do you want to share the same radius for all selected elements? すべての選択された要素で同じ半径を使用しますか? - - + + Constraint only applies to arcs or circles. 円弧または円のみに適用される拘束です。 - + Do you want to share the same diameter for all selected elements? すべての選択された要素で同じ直径を使用しますか? - - + + Select one or two lines from the sketch. Or select two edges and a point. スケッチから1本か2本の線分を選択してください。あるいは2つのエッジと頂点を選択します。 - - + + Parallel lines 平行線 - - + + An angle constraint cannot be set for two parallel lines. 2つの平行線に角度拘束を設定できません。 - + Cannot add an angle constraint on an axis! 軸に対して角度拘束を追加することはできません! - + Select two edges from the sketch. スケッチから2本のエッジを選択してください - - + + Select two or more compatible edges 2本以上の交換可能なエッジを選択してください - + Sketch axes cannot be used in equality constraints スケッチの軸を等値拘束に使用することはできません - + Equality for B-spline edge currently unsupported. B-スプラインエッジの等値拘束は現在サポートされていません。 - - + + Select two or more edges of similar type 同じタイプのエッジを2本以上選択してください - - - - - + + + + + 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. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. 選択されたオブジェクトは1つのスケッチから成るジオメトリーではありません。 - + Number of selected objects is not 3 (is %1). 選択したオブジェクトの数が 3 ではなく(%1 です)。 - - + + Select at least one ellipse and one edge from the sketch. スケッチから少なくとも1つの楕円と1つのエッジを選択してください。 - + Sketch axes cannot be used in internal alignment constraint スケッチ軸を内部整列拘束で使用することはできません。 - - + + Maximum 2 points are supported. 最大 2 点がサポートされています。 - - + + Maximum 2 lines are supported. 最大 2線がサポートされています。 - - + + Nothing to constrain 拘束はありません - - - - + + + + Extra elements 余分な要素 - - - + + + More elements than possible for the given ellipse were provided. These were ignored. 指定された楕円に対して可能な数を超えた要素が設定されました。これらは無視されました。 - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. 楕円弧を他の楕円弧に対して内部拘束することはできません。 - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. 楕円を他の楕円弧に対して内部拘束することはできません。楕円弧または楕円を一つだけ選択してください。 - + More elements than possible for the given arc of ellipse were provided. These were ignored. 指定された楕円の弧に対して可能な数を超えた要素が設定されました。これらは無視されました。 - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. 現在の内部ジオメトリにおいては、楕円または楕円弧のサポートのみサポートされてます。最後に選択した要素は、楕円または楕円弧である必要があります。 @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CADカーネルエラー - + None of the selected elements is an edge. 選択した要素の中にエッジがありません。 - - + + At least one of the selected objects was not a B-Spline and was ignored. 選択したオブジェクトの少なくとも 1 つは B-スプラインではなかったため無視されました。 - - + + Wrong OCE/OCC version 不適切なOCE/OCCバージョン - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher このバージョンのOCE/OCCはノット操作をサポートしていません。バージョン6.9.0以上が必要です。 - - + + The selection comprises more than one item. Please select just one knot. 複数のアイテムが選択されています。ノットをひとつだけ選択してください。 - + Input Error 入力エラー - - + + None of the selected elements is a knot of a B-spline 選択要素のなかにB-スプラインのノットがありません。 - - - - + + + + Select at least two edges from the sketch. スケッチから2本以上の直線を選択してください - - + + One selected edge is not connectable 選択されたエッジの1つが接続できません - + Closing a shape formed by exactly two lines makes no sense. 2直線だけからできたシェイプを閉じることはできません。 - - - - - - - - + + + + + + + + Select elements from a single sketch. 1つのスケッチから要素を選択してください。 - + No constraint selected 拘束が選択されていません - + At least one constraint must be selected 拘束には1つ以上を選択する必要があります - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. 対称構造では、少なくとも 2 つの幾何学的要素、および対称構造で参照されている最後の幾何学的要素を必要とします。 - + The last element must be a point or a line serving as reference for the symmetry construction. 対称構造のための参照として使用される最後の要素は点または線である必要があります。 - - + + A copy requires at least one selected non-external geometric element コピーをするには、非外部ジオメトリー要素を1 つ以上選択することが必要です。 - + Delete All Geometry 全てのジオメトリーを削除 - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints 拘束を削除する - + Are you really sure you want to delete all the constraints? 全ての拘束を削除します。よろしいですか? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value 値を変更 - + Toggle to/from reference 参照への切り替え - + Deactivate 非アクティブ化 - + Activate アクティブ化 - + Show constraints 拘束を表示 - + Hide constraints 拘束を非表示 - + Rename 名前の変更 - + Center sketch スケッチを中央に配置 - + Delete 削除 - + Swap constraint names 拘束名を交換 - + Unnamed constraint 名前のない拘束 - + Only the names of named constraints can be swapped. スワップできるのは名前のついた拘束だけです。 @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 半径を挿入 - - + + Radius: 半径: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 直径を挿入 - - + + Diameter: 直径: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 長さ: - - + + Change radius 半径を変更 - - + + Change diameter 直径を変更 - + Refractive index ratio 屈折率 - + Ratio n2/n1: 比 n2/n1: @@ -4042,13 +4304,13 @@ However, no constraints linking to the endpoints were found. 拡張情報 - + Constraints Constraints - - + + Error エラー @@ -4407,104 +4669,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: 以下の不要な拘束を削除してください: - + Empty sketch スケッチが空です - + Over-constrained sketch スケッチが過剰拘束です - - - + + + (click to select) (クリックすると選択) - + Sketch contains conflicting constraints スケッチには、競合する拘束が含まれています - + Sketch contains redundant constraints スケッチには冗長な拘束が含まれています - + Fully constrained sketch スケッチが完全拘束になりました - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1</span></a> 自由度の拘束下のスケッチ - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1</span></a> 自由度の拘束下のスケッチ - + Solved in %1 sec %1 秒で求解しました - + Unsolved (%1 sec) 求解できません(%1 秒) @@ -4512,8 +4774,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines すべてのB-スプラインの曲率コームの非表示と表示を切り替えます。 @@ -4521,8 +4783,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline 選択されたB-スプラインのノットの多重度を減らす @@ -4530,8 +4792,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines すべてのB-スプラインの次数の非表示と表示を切り替えます。 @@ -4539,8 +4801,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline 選択されたB-スプラインのノットの多重度を増やす @@ -4548,17 +4810,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines すべてのB-スプラインのノット多重度の非表示と表示を切り替えます。 + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines すべてのB-スプラインの制御ポリゴンの非表示と表示を切り替えます。 @@ -4566,8 +4837,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーのクローンを作成 @@ -4575,17 +4846,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone クローン - + Copy コピー - + Move 移動 @@ -4593,8 +4864,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 円または円弧の直径を固定 @@ -4602,8 +4873,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 円または円弧の半径を固定 @@ -4611,8 +4882,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーの単純コピーを作成 @@ -4856,8 +5127,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point 最後に選択された点を参照位置としてジオメトリーを移動 diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.qm index c588ec9795..ac25fe7a65 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.ts index ffef9696d0..f78528f638 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_kab.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clone - + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Contrainte radiale - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copie - + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Contrainte coïncidente - + Create a coincident constraint on the selected item Créer une contrainte coïncidente sur les éléments sélectionnés @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Contrainte dimensionnelle - + Fix a length of a line or the distance between a line and a vertex Fixer la longueur d'une ligne ou la distance entre une ligne et un point @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fixer la distance horizontale entre deux points ou extrémités de ligne @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fixer la distance verticale entre deux points ou extrémités de ligne @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Contrainte horizontale - + Create a horizontal constraint on the selected item Créer une contrainte horizontale sur l'élément sélectionné @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Contraint un élément pour qu'il soit aligné avec la géométrie interne d'un autre élément @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Contrainte fixe - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Contrainte parallèle - + Create a parallel constraint between two lines Créer une contrainte parallèle entre deux lignes @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Contrainte perpendiculaire - + Create a perpendicular constraint between two lines Créer une contrainte de perpendicularité entre deux lignes @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Contrainte point sur objet - + Fix a point onto an object Fixer un point sur un objet @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Contrainte radiale - + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Contraint la réfraction (Loi 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Contrainte symétrique - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Contrainte tangente - + Create a tangent constraint between two entities Créer une contrainte tangente entre deux entités @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Contrainte verticale - + Create a vertical constraint on the selected item Créer une contrainte verticale sur l'élément sélectionné @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copie - + Creates a simple copy of the geometry taking as reference the last selected point Crée une copie de la géométrie en prenant comme référence le dernier point sélectionné @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Déplacer - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Afficher/masquer la géométrie interne - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Symétrie - + Creates symmetric geometry with respect to the last selected line or point Crée une géométrie symétrique par rapport à la dernière ligne ou point sélectionné @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Sélectionnez une ou des arêtes de l'esquisse. - - - - + + + + Dimensional constraint Contrainte dimensionnelle - - - + + + Only sketch and its support is allowed to select Seule la sélection d'une esquisse et de sa face de support est permise - + One of the selected has to be on the sketch Un des éléments sélectionnés doit être dans 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! 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! - + The selected item(s) can't accept a horizontal constraint! Le(s) élément(s) sélectionné(s) ne peu(ven)t pas accepter de contrainte horizontale! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! Le(s) élément(s) sélectionné(s) ne peu(ven)t pas accepter de contrainte verticale! - + 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Sélectionne un sommet autre que l'origine dans l'esquisse. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Error - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Sélectionnez deux sommets de l'esquisse ou plus. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Sélectionnez les sommets de l'esquisse. - - + + 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 ! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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 ne passe par les courbes respectives, soit parce qu'elles font partie du même élément, soit parce qu'elles sont toutes deux géométriquement extérieures. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Sélectionne soit un point et plusieurs courbes, soit une courbe et plusieurs points. Vous avez sélectionné %1 courbes et %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Sélectionnez soit une seule ligne ou 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! 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! Impossible d'ajouter une contrainte de longueur verticale sur un axe ! - + 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. Sélectionnez au moins deux lignes de l'esquisse. - - + + Select at least two lines from the sketch. Sélectionner au moins deux lignes de l'esquisse. - + Select a valid line Sélectionnez une ligne valide - - + + 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. @@ -2559,45 +2821,45 @@ 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électionne une géométrie de l'esquisse. - + Wrong number of selected objects! perpendicular constraint Mauvais nombre d'objets sélectionnés! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Avec 3 objets, il doit y avoir 2 courbes et 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Impossible d'ajouter une contrainte de perpendicularité sur un point non connecté ! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. Une des arêtes sélectionnées doit être une ligne. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Sélectionne une géométrie de l'esquisse. - + Wrong number of selected objects! tangent constraint Mauvais nombre d'objets sélectionnés! - - - + + + Cannot add a tangency constraint at an unconnected point! Impossible d'ajouter une contrainte de tangence à un point non connecté ! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Sélectionne un ou plusieurs arcs ou cercles dans l'esquisse. - - + + Constrain equal Contrainte d'égalité - + Do you want to share the same radius for all selected elements? Voulez-vous que tous les éléments sélectionnés aient le même rayon? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Sélectionne une ou deux lignes dans l'esquisse. Ou sélectionne deux arêtes et un point. - - + + Parallel lines Lignes parallèles - - + + An angle constraint cannot be set for two parallel lines. Une contrainte angulaire ne peut pas être appliquée à deux 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électionnez au moins deux arêtes compatibles. - + Sketch axes cannot be used in equality constraints Les axes d'esquisse ne peuvent être utilisés dans une contrainte d'égalité. - + Equality for B-spline edge currently unsupported. Equality for B-spline edge currently unsupported. - - + + Select two or more edges of similar type Sélectionnez au moins deux arêtes de même type. - - - - - + + + + + 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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + 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. - + Number of selected objects is not 3 (is %1). Le nombre d'objets sélectionnés n'est pas égale à 3 (est %1). - - + + Select at least one ellipse and one edge from the sketch. Sélectionne au moins une ellipse et une arête dans l'esquisse. - + Sketch axes cannot be used in internal alignment constraint Les axes de l'esquisse ne peuvent être utilisés pour une contrainte d'alignement interne - - + + Maximum 2 points are supported. 2 points sont supportés au maximum. - - + + Maximum 2 lines are supported. 2 lignes sont supportées au maximum. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Éléments supplémentaires - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Vous avez fournis plus d'éléments que possible pour l'ellipse donnée. Ils ont été ignorées. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Trop d'éléments ont été fournis pour l'ellipse donnée. Ils ont été ignorées. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actuellement la géométrie interne est uniquement prise en charge pour les ellipses et les arcs d'ellipse. Le dernier élément sélectionné doit être une ellipse ou un arc d'ellipse. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Sélectionnez au moins deux arêtes de l'esquisse. - - + + One selected edge is not connectable Une arête sélectionnée n'est pas raccordable - + Closing a shape formed by exactly two lines makes no sense. Fermer une forme constituée de deux lignes n'a aucun sens. - - - - - - - - + + + + + + + + Select elements from a single sketch. Sélectionne des éléments d'une seule esquisse. - + No constraint selected Aucune contrainte sélectionnée - + At least one constraint must be selected Au moins une contrainte doit être sélectionnée - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Une construction symétrique nécessite au moins deux éléments géométriques, le dernier élément géométrique étant la référence pour la construction de la symétrie. - + The last element must be a point or a line serving as reference for the symmetry construction. Le dernier élément doit être un point ou une ligne servant de référence pour la construction de la symétrie. - - + + A copy requires at least one selected non-external geometric element Une copie nécessite la sélection d'au moins un élément géométrique non externe - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Changer la valeur - + Toggle to/from reference Bascule vers ou à partir d'une référence - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Renommer - + Center sketch Centre l'esquisse - + Delete Supprimer - + Swap constraint names Intervertir les noms de contrainte - + Unnamed constraint Contrainte non nommée - + Only the names of named constraints can be swapped. Seuls les noms des contraintes nommées peuvent être permutés. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insére un rayon - - + + Radius: Rayon : @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Longueur : - - + + Change radius Change le rayon - - + + Change diameter Change diameter - + Refractive index ratio Ratio de l'indice de réfraction - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ Toutefois, aucune contrainte liée aux extrémités n'a été trouvée.Extended information - + Constraints Constraints - - + + Error Error @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 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 : - + Empty sketch Esquisse vide - + Over-constrained sketch Esquisse surcontrainte - - - + + + (click to select) (cliquez pour sélectionner) - + Sketch contains conflicting constraints L'esquisse contient des contraintes contradictoires - + Sketch contains redundant constraints L'esquisse contient des contraintes redondantes - + Fully constrained sketch Esquisse entièrement contrainte - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Résolu en %1 secondes - + Unsolved (%1 sec) Non résolu (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Créer un clone de la géométrie en prenant comme référence le dernier point sélectionné @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Clone - + Copy Copie - + Move Déplacer @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixer le rayon d'un cercle ou d'un arc @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Crée une copie de la géométrie en prenant comme référence le dernier point sélectionné @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.qm index 019d522f00..01c6f39e18 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts index 6f0ee371fb..7affc68c7b 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ko.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone 복제 - + Creates a clone of the geometry taking as reference the last selected point 마지막에 선택한 점을 기준으로 geometry 복제합니다. @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer B-spline 정보 창 보기/숨기기 - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius 제약조건: 반지름 - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy 복사하기 - + Creates a clone of the geometry taking as reference the last selected point 마지막에 선택한 점을 기준으로 geometry 복제합니다. @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity 매듭 반복횟수(Knot multiplicity) 수정 - + Modifies the multiplicity of the selected knot of a B-spline B-spline에서 선택된 매듭의 반복횟수 수정 - + Increase knot multiplicity 매듭 반복횟수(Knot multiplicity) 증가 - + Decrease knot multiplicity 매듭 반복횟수(Knot multiplicity) 감소 @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle 제약조건: 각도 - + Fix the angle of a line or the angle between two lines 단일 선의 각도(수평축 기준) 또는 두선 사이의 각도 고정 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident 제약조건: 점 일치 - + Create a coincident constraint on the selected item 선택한 요소(최소 두개의 점)를 일치 @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance 제약조건: 거리 - + Fix a length of a line or the distance between a line and a vertex 선의 길이 또는 선과 점 사이의 수직거리 고정 @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends 두 점 또는 선의 수평거리 고정 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends 두 점 또는 선의 수직거리 고정 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal 제약조건: 동일 - + Create an equality constraint between two lines or between circles and arcs 두 선 또는 원과 원/호와 호/원과 호에 동일한 치수 부가 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally 제약조건: 수평 - + Create a horizontal constraint on the selected item 선택한 요소를 수평하게 고정 @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock 제약조건: 고정 - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel 제약조건: 평행 - + Create a parallel constraint between two lines 선택한 요소(두 선)를 평행하게 고정 @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular 제약조건: 수직 - + Create a perpendicular constraint between two lines 선택한 요소(두 선)를 수직하게 고정 @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object 제약조건: 점을 선에 일치 - + Fix a point onto an object 점을 선에 일치 @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius 제약조건: 반지름 - + Fix the radius of a circle or an arc 원 또는 호의 반지름을 고정 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical 제약조건: 대칭 - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent 제약조건: 탄젠트 - + Create a tangent constraint between two entities 두 엔티티가 서로 접하도록 고정 @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically 제약조건: 수직 - + Create a vertical constraint on the selected item 선택한 요소를 수직하게 고정 @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy 복사하기 - + Creates a simple copy of the geometry taking as reference the last selected point 마지막에 선택한 점을 기준으로 geometry 복사합니다. @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity 매듭 반복횟수(Knot multiplicity) 감소 - + Decreases the multiplicity of the selected knot of a B-spline B-spline의 선택된 매듭의 반복횟수 감소 @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity 매듭 반복횟수(Knot multiplicity) 증가 - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move 이동 - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry 내부 geometry 보기/숨기기 - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry 대칭 - + Creates symmetric geometry with respect to the last selected line or point 마지막으로 선택된 선이나 점을 기준으로 대칭 geometry를 생성합니다. @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. 스케치에서 여러 선을 선택하세요. - - - - + + + + Dimensional constraint 치수 제약조건 - - - + + + Only sketch and its support is allowed to select 스케치만 선택할 수 있습니다. - + One of the selected has to be on the sketch 스케치에 있는 것만 선택할 수 있습니다. - - + + Select an edge from the sketch. 스케치에서 하나의 모서리를 선택하세요. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint 불가능한 제약조건입니다. - - - - + + + + The selected edge is not a line segment 선택된 선은 직선(line)이 아닙니다. - - - - - - + + + + + + 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! The selected edge already has a Block constraint! - + The selected item(s) can't accept a horizontal constraint! 선택된 요소(들)은 수평 제약조건을 적용할 수 없습니다. - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error 에러 - + Select two or more points from the sketch. 두개 이상의 점을 선택하세요. - - + + Select two or more vertexes from the sketch. 2개 이상의 점을 선택하세요. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. 스케치에서 여러 점을 선택하세요. - - + + Select exactly one line or one point and one line or two points from the sketch. 한 직선 또는 한 점, 한 직선 또는 두 점을 선택하세요. - + Cannot add a length constraint on an axis! 축에는 길이 제약조건을 적용할 수 없습니다! - + This constraint does not make sense for non-linear curves 이 제약조건은 비선형 곡선에는 사용할 수 없습니다. - - - - - - + + + + + + Select the right things from the sketch. 적절한 것을 선택하세요. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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이므로 해당 곡선에 제약조건이 적용되지 않았습니다. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. 하나의 점과 선들 또는 하나의 선과 점들을 선택하세요. %1개의 선과 %2개의 점을 선택하였습니다. - - - - + + + + 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 이 제약조건은 선 또는 한 쌍의 점에서만 사용할 수 있습니다. - + 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. 두개 이상의 직선을 선택하세요. - - + + Select at least two lines from the sketch. 최소한 두개 이상의 직선을 선택하세요. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 사용가능한 조합: 두개의 곡선, 끝점과 곡선, 두개의 끝점, 두개의 곡선과 한 점. - + Select some geometry from the sketch. perpendicular constraint 스케치에서 geometry를 선택하세요. - + Wrong number of selected objects! perpendicular constraint 선택한 객체의 갯수가 잘못되었습니다! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3개의 객체(2개의 곡선과 1개의 점)가 있어야합니다. - - + + Cannot add a perpendicularity constraint at an unconnected point! 연결되지 않은 점에 대하여 수직 제약조건을 적용할 수 없습니다! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. 선택된 선중 하나는 직선이어야 합니다. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 사용가능한 조합: 두개의 곡선, 끝점과 곡선, 두개의 끝점, 두개의 곡선과 한 점. - + Select some geometry from the sketch. tangent constraint 스케치에서 geometry를 선택하세요. - + Wrong number of selected objects! tangent constraint 선택한 객체의 갯수가 잘못되었습니다! - - - + + + Cannot add a tangency constraint at an unconnected point! 연결되지 않은 점에 대하여 탄젠트 제약조건을 적용할 수 없습니다! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. 하나 이상의 호나 원을 선택하세요. - - + + Constrain equal 제약조건: 동일 - + Do you want to share the same radius for all selected elements? 선택된 모든 element가 동일한 반지름으로 설정하시겠습니까? - - + + Constraint only applies to arcs or circles. 호 또는 원에만 적용 가능한 제약조건입니다. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. 하나 이상의 직선을 선택하세요. 또는, 두개의 선과 하나의 점을 선택하세요. - - + + Parallel lines 평행 직선 - - + + An angle constraint cannot be set for two parallel lines. 각도 제약조건은 평행한 두 직선에는 적용할 수 없습니다. - + Cannot add an angle constraint on an axis! 축에는 각도 제약조건을 적용할 수 없습니다! - + Select two edges from the sketch. 두개의 선을 선택하세요. - - + + Select two or more compatible edges 2개 이상의 호환가능한 선을 선택하세요. - + 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 동일한 타입의 모서리를 2개 이상 선택하세요. - - - - - + + + + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. 선택된 객체는 스케치의 geometry가 아닙니다. - + Number of selected objects is not 3 (is %1). 3개의 객체가 필요합니다.(선택된 객체: %1). - - + + Select at least one ellipse and one edge from the sketch. 최소한 하나의 타원과 선을 선택하세요. - + Sketch axes cannot be used in internal alignment constraint 스케치 축은 internal alignment 제약조건에 사용할 수 없습니다. - - + + Maximum 2 points are supported. 최대 2개의 점을 선택할 수 있습니다. - - + + Maximum 2 lines are supported. 최대 2개의 직선을 선택할 수 있습니다. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements 추가 요소들 - - - + + + More elements than possible for the given ellipse were provided. These were ignored. 선택된 타원에서 모든 요소가 이미 선택되었습니다. 따라서, 해당 요소들은 무시됩니다. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. 선택된 타원의 호에서 모든 요소가 선택되었습니다. 따라서, 해당 요소들은 무시됩니다. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. 현재 내부 geometry는 타원이나 타원의 호에서만 지원됩니다. 마지막으로 선택한 요소는 반드시 타원이나 타원의 호이어야 합니다. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD 커널 에러 - + None of the selected elements is an edge. 선택된 요소에서 선이 없습니다. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version 잘못된 OCE/OCC 버전입니다. - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher 현재 사용하고 있는 OCE/OCC버전에서는 knot 작업을 지원하지 않습니다. 6.9.0 이상의 버전이 필요합니다. - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error 입력 에러 - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. 최소 2개의 선을 선택하세요. - - + + One selected edge is not connectable 선택된 선을 연결할 수 없습니다. - + Closing a shape formed by exactly two lines makes no sense. 두 개의 선을 이용하여 닫힌 형상을 생성할 수 없습니다. - - - - - - - - + + + + + + + + Select elements from a single sketch. 하나의 스케치에서 요소를 선택하세요. - + No constraint selected 선택된 제약조건이 없습니다. - + At least one constraint must be selected 최소한 하나 이상의 제약조건을 선택하세요. - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. 대칭은 최소한 두 개의 geometric 요소가 필요하며, 마지막 geometric 요소는 대칭의 기준이 됩니다. - + The last element must be a point or a line serving as reference for the symmetry construction. 대칭의 기준이 되는 마지막 요소는 반드시 점이나 선이어야 합니다. - - + + A copy requires at least one selected non-external geometric element 복사는 최소한 하나의 선택된 외부 geometric 요소가 필요합니다. - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value 값 변경 - + Toggle to/from reference 생성/레퍼런스 모드로 변경 - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename 이름 바꾸기 - + Center sketch 중심 스케치 - + Delete 삭제 - + Swap constraint names 제약조건 이름 변경 - + Unnamed constraint 이름없는 제약조건 - + Only the names of named constraints can be swapped. 이름을 가지고 있는 제약조건의 이름만 바꿀 수 있습니다. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 반지름 삽입 - - + + Radius: 반경: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: 직경: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 길이: - - + + Change radius 반지름 제약조건 - - + + Change diameter Change diameter - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error 에러 @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: 중복 제약조건을 제거하세요: - + Empty sketch 빈 스케치 - + Over-constrained sketch Over-constrained 스케치 - - - + + + (click to select) (클릭하여 선택하세요) - + Sketch contains conflicting constraints 스케치에 충돌하는 제약조건이 있습니다 - + Sketch contains redundant constraints 스케치에 중복되는 제약조건이 있습니다 - + Fully constrained sketch 완전히 구속된 스케치 - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Solved in %1 sec - + Unsolved (%1 sec) Unsolved (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline B-spline의 선택된 매듭의 반복횟수 감소 @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point 마지막에 선택한 점을 기준으로 geometry 복제합니다. @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone 복제 - + Copy 복사하기 - + Move 이동 @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 원 또는 호의 반지름을 고정 @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point 마지막에 선택한 점을 기준으로 geometry 복사합니다. @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.qm index 4f6be3f380..8736b25465 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.ts index 3850e40b6a..2df1c2c1aa 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_lt.ts @@ -55,6 +55,24 @@ Parodo arba paslepia B-splaino mazgus + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Klonuoti - + Creates a clone of the geometry taking as reference the last selected point Klonuoja geometriją, atskaitos pradžiai priskirdamas paskutinio pažymėto taško vietą @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Rodyti/slėpti B-splainų informacijos sluoksnį - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Spindulio apribojimas - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Kopijuoti - + Creates a clone of the geometry taking as reference the last selected point Klonuoja geometriją, atskaitos pradžiai priskirdamas paskutinio pažymėto taško vietą @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Keisti mazgo sudėtingumo laipsnį - + Modifies the multiplicity of the selected knot of a B-spline Keičia B-splaininės kreivės mazgo sudėtingumo laipsnį - + Increase knot multiplicity Padidinti mazgo sudėtingumo laipsnį - + Decrease knot multiplicity Sumažinti mazgo sudėtingumo laipsnį @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Apriboti kampą - + Fix the angle of a line or the angle between two lines Įtvirtinti tiesės kampą, arba kampą tarp dviejų tiesių @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Sutapimo apribojimas - + Create a coincident constraint on the selected item Sutapdinti ir surišti taškus @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Apriboti atstumą - + Fix a length of a line or the distance between a line and a vertex Įtvirtinti tiesės atkarpos ilgį, arba atstumą tarp taškų, arba atstumą tarp tiesės ir taško @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Įtvirtinti gulsčiąjį atstumą tarp dviejų taškų arba tarp atkarpos galų @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Įtvirtinti statmenąjį atstumą tarp dviejų taškų arba tarp atkarpos galų @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Tapatumo apribojimas - + Create an equality constraint between two lines or between circles and arcs Sukurti tapatumo sąryšį dviem atkarpoms, apskritimams, arba lankams @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Apriboti gulščiai - + Create a horizontal constraint on the selected item Padaryti narį visuomet gulsčiu @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Pritvirtina elementą prie kito elemento vidinės geometrijos @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Padėties apribojimas - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Apriboti lygiagretumą - + Create a parallel constraint between two lines Padaryti dvi tiesės atkarpas tarpusavyje lygiagrečiomis @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Apriboti statmenai - + Create a perpendicular constraint between two lines Padaryti dvi tiesės atkarpas tarpusavyje statmenomis @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Įtvirtinti tašką objekte - + Fix a point onto an object Įtvirtinti tašką objekte @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Spindulio apribojimas - + Fix the radius of a circle or an arc Nustatyti pastovų apskritimo ar lanko spindulį @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Lūžio apribojimas (Pagal šviesos lūžio dėsnį) - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Apriboti simetriškai - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Liestinės apribojimas - + Create a tangent constraint between two entities Padaryti du objektus tarpusavyje lygiagrečius @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Apriboti statmenai - + Create a vertical constraint on the selected item Padaryti pasirinktą narį visuomet statmenu @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Kopijuoti - + Creates a simple copy of the geometry taking as reference the last selected point Sukuria paprastą geometrijos kopiją, atskaitos pradžiai priskirdamas paskutinio pažymėto taško vietą @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Sumažinti mazgo sudėtingumo laipsnį - + Decreases the multiplicity of the selected knot of a B-spline Sumažinti pasirinkto B-splaino mazgo sudėtingumo laipsnį @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Padidinti B-splaino kampą @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Padidinti mazgo sudėtingumo laipsnį - + Increases the multiplicity of the selected knot of a B-spline Padidinti pasirinkto B-splaino mazgo sudėtingumo laipsnį @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Perkelti - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Perjungti vidinės geometrijos rodymą - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetrija - + Creates symmetric geometry with respect to the last selected line or point Sukuria simetrišką geometriją, paskutinės pasirinktos tiesės ar taško atžvilgiu @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. Jūs prašote nekeisti mazgo sudėtingumo laipsnio. - + 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. Mazgo indeksas išėjo iš ribų. Atkreipkite dėmesį, kad pagal OCC žymėjimą, pirmojo mazgo indeksas yra lygus 1, o ne 0. - + 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. Mazgo sudėtingumas negali būti mažesnis, nei nulis. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC negali sumažinti sudėtingumo didžiausio leistino nuokrypio ribose. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Pasirinkite kraštinę(-es), esančią(-as) brėžinyje. - - - - + + + + Dimensional constraint Matmens sąryšis (apribojimas) - - - + + + Only sketch and its support is allowed to select Galima pasirinkti tik brėžinį ir jo pagrindą - + One of the selected has to be on the sketch Vienas iš pažymėtųjų turi būti brėžinyje - - + + Select an edge from the sketch. Pasirinkite kraštinę, esančią brėžinyje. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Neįmanomas apribojimas (ryšys) - - - - + + + + The selected edge is not a line segment Pasirinkta kraštinė nėra tiesės atkarpa - - - - - - + + + + + + Double constraint Perteklinis apribojimas (ryšys) - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Pasirinktų narių negalima padaryti gulsčiais! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! Pasirinktų narių negalima padaryti statmenais! - + 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. Pasirinkite viršūnes, esančias brėžinyje. - + Select one vertex from the sketch other than the origin. Pasirinkite viršūnę, esančią brėžinyje (išskyrus koordinačių pradžios tašką). - + Select only vertices from the sketch. The last selected vertex may be the origin. Pasirinkite tik viršūnes, esančias brėžinyje. Paskutinė pasirinkta viršūnė gali sutapti su koordinačių pradžia. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Klaida - + Select two or more points from the sketch. Pasirinkite bent du taškus, esančius brėžinyje. - - + + Select two or more vertexes from the sketch. Pasirinkite bent dvi viršūnes, esančias brėžinyje. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Pasirinkite viršūnes, esančias brėžinyje. - - + + Select exactly one line or one point and one line or two points from the sketch. Pasirinkite arba tiesinę atkarpą, arba tašką ir tiesinę atkarpą, arba du taškus, esančius brėžinyje. - + Cannot add a length constraint on an axis! Negalima nurodyti ilgio ašiai! - + This constraint does not make sense for non-linear curves Šiuo apribojimu nesurišamos kreivės - - - - - - + + + + + + Select the right things from the sketch. Pasirinkti atitinkamos rūšies objektus, esančius brėžinyje. - - + + Point on B-spline edge currently unsupported. Šiuo metu taškas B-splaininėje kraštinėje yra nepalaikomas. - - + + 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. Nė vienas iš pasirinktų taškų nebuvo surišti su atitinkamomis kreivėmis, nes arba jie priklauso toms kreivėms, arba abu yra išorinės geometrijos taškai. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Pasirinkite vieną tašką ir keletą kreivių, arba vieną kreivę ir kelis taškus. Pasirinkta %1 kreivės(-ių) ir %2 taškai(-ų). - - - - + + + + Select exactly one line or up to two points from the sketch. Pasirinkite arba tiesinę atkarpą, arba du taškus, esančius brėžinyje. - + Cannot add a horizontal length constraint on an axis! Negalima nurodyti gulščiojo ilgio ašiai! - + 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 Šis ryšys (apribojimas) galimas tik tiesės atkarpai arba taškų porai - + Cannot add a vertical length constraint on an axis! Negalima nurodyti statmenojo ilgio ašiai! - + 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. Pasirinkite bent dvi tiesines atkarpas, esančias brėžinyje. - - + + Select at least two lines from the sketch. Pasirinkite bent dvi tiesines atkarpas, esančias brėžinyje. - + Select a valid line Pasirinkti elementai turi būti tik tiesinės atkarpos - - + + The selected edge is not a valid line Pasirinkta kraštinė nėra tiesinė atkarpa - + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Galimi šie deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taškai; dvi kreivės ir taškas. - + Select some geometry from the sketch. perpendicular constraint Pažymėkite geometrinius elementus, esančius brėžinyje. - + Wrong number of selected objects! perpendicular constraint Netinkamas pasirinktų elementų kiekis! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Kai yra pasirinkti 3 objektai, turi būti 2 kreivės ir 1 taškas. - - + + Cannot add a perpendicularity constraint at an unconnected point! Neįmanoma taško apriboti statmenuoju sąryšiu, nes taškas nėra kreivės galinis taškas! - - - + + + Perpendicular to B-spline edge currently unsupported. Statmenumo B-splaino kraštinės atžvilgiu padarymas nepalaikomas. - - + + One of the selected edges should be a line. Viena iš pasirinktų kraštinių turi būti tiesinė atkarpa. - + 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. @@ -2606,249 +2868,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taškai; dvi kreivės ir taškas. - + Select some geometry from the sketch. tangent constraint Pažymėkite geometrinius elementus, esančius brėžinyje. - + Wrong number of selected objects! tangent constraint Netinkamas pasirinktų elementų kiekis! - - - + + + Cannot add a tangency constraint at an unconnected point! Neįmanoma taško apriboti liestinės sąryšiu, nes taškas nėra kreivės galinis taškas! - - - + + + Tangency to B-spline edge currently unsupported. Lygiagretumo B-splaino kraštinės atžvilgiu padarymas nepalaikomas. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Pasirinkite bent vieną lanką ar apskritimą, esantį brėžinyje. - - + + Constrain equal Tapatumo apribojimas - + Do you want to share the same radius for all selected elements? Ar norite, kad visų pasirinktų elementų spindulys būtų vienodas? - - + + Constraint only applies to arcs or circles. Apribojimas taikomas tik lankams arba apskritimams. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Pasirinkite brėžinyje esančias dvi tieses, arba dvi kraštines ir tašką. - - + + Parallel lines Lygiagrečios tiesės - - + + An angle constraint cannot be set for two parallel lines. Negalima surišti per kampą dviejų lygiagrečių tiesių. - + Cannot add an angle constraint on an axis! Negalima nurodyti pokrypio kampo ašiai! - + Select two edges from the sketch. Pasirinkite dvi kraštines, esančias brėžinyje. - - + + Select two or more compatible edges Pasirinkite bent dvi tos pačios rūšies kraštines. Galima pasirinkti arba tieses, arba apskritimus ir jų lankus, arba elipses ir jų lankus. - + Sketch axes cannot be used in equality constraints Brėžinio ašys negali būti surištos tapatumo sąryšiu (apribojimu) - + Equality for B-spline edge currently unsupported. B-splaino kraštinių tapatumo surišimas nepalaikomas. - - + + Select two or more edges of similar type Pasirinkite bent dvi tos pačios rūšies kraštines - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Pasirinkite du taškus ir atkarpą, kaip simetrijos ašį, arba du taškus ir simetrijos tašką, arba tiesinę atkarpą ir simetrijos tašką, esančius brėžinyje. - - + + 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! Neįmanoma taškų surišti simetriškai, nes jie priklauso atkarpai – simetrijos ašiai! - + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Pasirinkti objektai nėra vien tik brėžiniui priklausanti geometrija. - + Number of selected objects is not 3 (is %1). Pasirinktų objektų skaičių nėra lygus 3 (pasirinkta %1). - - + + Select at least one ellipse and one edge from the sketch. Pasirinkite bent vieną elipsę ir vieną kraštinę, esančias brėžinyje. - + Sketch axes cannot be used in internal alignment constraint Brėžinio ašys negali būti panaudotos apriboti vidinį lygiavimą - - + + Maximum 2 points are supported. Leidžiami daugiausia 2 taškai. - - + + Maximum 2 lines are supported. Leidžiamos daugiausia 2 tiesės. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Papildomi elementai - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Elipsei elementų nurodyta daugiau, nei galima. Perteklinių elementų nepaisoma. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Elipsės lankui elementų nurodyta daugiau, nei galima. Perteklinių elementų nepaisoma. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Vidinė geometrija yra naudojama tik elipsėms ir elipsių lankams. Elipsė ar elipsės lankas turi būti pasirinkti žymėjimo pabaigoje. @@ -2862,124 +3124,124 @@ Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taška - + CAD Kernel Error CAD branduolio klaida - + None of the selected elements is an edge. Nė vienas iš pasirinktų elementų nėra kraštinė. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Netinkama OCE/OCC laida - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ši OCE/OCC laida nepalaiko veiksmų su mazgais. Reikalinga 6.9.0 ar naujesnė laida - - + + The selection comprises more than one item. Please select just one knot. Pasirinkta daugiau, nei vienas mazgas. Prašom pasirinkti tik vieną mazgą. - + Input Error Įvesties klaida - - + + None of the selected elements is a knot of a B-spline Nė vienas iš pasirinktųjų elementų nėra B-splaino mazgas - - - - + + + + Select at least two edges from the sketch. Pasirinkite bent dvi kraštines, esančias brėžinyje. - - + + One selected edge is not connectable Viena iš pasirinktų kraštinių neturi galinių taškų - + Closing a shape formed by exactly two lines makes no sense. Bandoma padaryti dvikampį. - - - - - - - - + + + + + + + + Select elements from a single sketch. Pasirinkite elementus, esančius viename brėžinyje. - + No constraint selected Nepasirinkti sąryšiai ar apribojimai - + At least one constraint must be selected Turi būti pasirinktas bent vienas sąryšis - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Simetriniam braižymui reikalingi bent du elementai, iš kurių paskutinysis yra atskaita. - + The last element must be a point or a line serving as reference for the symmetry construction. Paskutinysis elementas turi būti taškas arba tiesinė atkarpa, būsianti simetrijos linija. - - + + A copy requires at least one selected non-external geometric element Kopija turi turėti bent vieną pasirinktą ne išorinės geometrijos elementą - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taška SketcherGui::ConstraintView - + Change value Pakeiskite vertę - + Toggle to/from reference Persijungti iš/į pagrindą - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Pervardyti - + Center sketch Centruoti brėžinį - + Delete Naikinti - + Swap constraint names Sukeisti sąryšių pavadinimus - + Unnamed constraint Sąryšis be pavadinimo - + Only the names of named constraints can be swapped. Tik pavadintų sąryšių vardai gali būti sukeisti vietomis. @@ -3118,8 +3380,8 @@ Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taška Įveskite spindulio vertę - - + + Radius: Radius: @@ -3130,8 +3392,8 @@ Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taška Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Priimtini deriniai: dvi kreivės; galinis taškas ir kreivė; du galiniai taška Length: - - + + Change radius Keisti spindulio vertę - - + + Change diameter Change diameter - + Refractive index ratio Lūžio rodiklių santykis - + Ratio n2/n1: Santykis n2/n1: @@ -4047,13 +4309,13 @@ Visgi, nei vienas sąryšis ar apribojimas nėra susietas su galiniais šių lan Extended information - + Constraints Constraints - - + + Error Klaida @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 Sugadintas brėžinys - + Do you want to open the sketch validation tool? Ar norite atverti brėžinio tikrinimo priemonę? - + The sketch is invalid and cannot be edited. Brėžinys yra sugadintas ir negali būti taisomas. - + Please remove the following constraint: Prašom, pašalinkite šiuos sąryšius: - + Please remove at least one of the following constraints: Prašome pašalinti bent vieną šių sąryšių: - + Please remove the following redundant constraint: Prašome pašalinti šiuos perteklinius sąryšius: - + Please remove the following redundant constraints: Prašome pašalinti šiuos perteklinius sąryšius: - + Empty sketch Tuščias brėžinys - + Over-constrained sketch Brėžinys pernelyg suvaržytas pertekliniais suvaržymais - - - + + + (click to select) (spauskite ir pažymėkite) - + Sketch contains conflicting constraints Brėžinyje yra nesuderinamų sąryšių - + Sketch contains redundant constraints Brėžinyje yra perteklinių sąryšių - + Fully constrained sketch Visiškai suvaržytas (vienareikšmiškai apibrėžtas) brėžinys - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Išspręsta per %1 s - + Unsolved (%1 sec) Neišspręsta (%1 s) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Perjungia B-splainų kreivio taisymo gardelę @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Sumažinti pasirinkto B-splaino mazgo sudėtingumo laipsnį @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Parodo arba paslepia B-splaino eilę @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Padidinti pasirinkto B-splaino mazgo sudėtingumo laipsnį @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Parodo arba paslepia B-splaino mazgus + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Parodo arba paslepia B-splaino valdantįjį daugiakampį @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Klonuoja geometriją, atskaitos pradžiai priskirdamas paskutinio pažymėto taško vietą @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klonuoti - + Copy Kopijuoti - + Move Perkelti @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Nustatyti pastovų apskritimo ar lanko spindulį @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Sukuria paprastą geometrijos kopiją, atskaitos pradžiai priskirdamas paskutinio pažymėto taško vietą @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.qm index e8642b62cf..392708061b 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts index 41adc0fabb..50b6c93a62 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_nl.ts @@ -55,6 +55,24 @@ Hiermee schakelt u tussen het weergeven en verbergen van de knoop multipliciteit voor alle B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Schetsen + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Schetsen - + Clone Kopieer - + Creates a clone of the geometry taking as reference the last selected point Maakt een kloon van de geometrie en neemt als referentie het laatst geselecteerde punt @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Schetsen - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Schetsen - - + Show/hide B-spline information layer Toon/Verberg B-spline informatielaag - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Schetsen - + Constrain arc or circle Beperk de boog of de cirkel - + Constrain an arc or a circle Beperk een boog of een cirkel - + Constrain radius Straal vastzetten - + Constrain diameter Beperk de diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Schetsen - + Copy Kopie - + Creates a clone of the geometry taking as reference the last selected point Maakt een kloon van de geometrie en neemt als referentie het laatst geselecteerde punt @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Schetsen - + Modify knot multiplicity Knoop multipliciteit wijzigen - + Modifies the multiplicity of the selected knot of a B-spline Hiermee wijzigt u de multipliciteit van het geselecteerde knooppunt in een B-spline - + Increase knot multiplicity Verhogen van de multipliciteit van de knoop - + Decrease knot multiplicity Verlagen van de multipliciteit van de knoop @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Schetsen - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Schetsen - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Schetsen - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Schetsen - + Constrain coincident Samenvallende beperking - + Create a coincident constraint on the selected item Maak een samenvallende beperking op het geselecteerde item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Schetsen - + Constrain diameter Beperk de diameter - + Fix the diameter of a circle or an arc Zet de diameter van een cirkel of een boog vast @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Schetsen - + Constrain distance Afstand beperking - + Fix a length of a line or the distance between a line and a vertex Vergrendel de lengte van een lijn of de afstand tussen een lijn en een punt @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Schetsen - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Schetsen - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Schetsen - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Schetsen - + Constrain horizontally Horizontale beperking - + Create a horizontal constraint on the selected item Maak een horizontale beperking op het geselecteerde item @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Schetsen - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Beperkt een element dat uitgelijnd moet worden met de interne geometrie van een ander element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Schetsen - + Constrain lock Vastzet beperking - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Schetsen - + Constrain parallel Parallelle-beperking - + Create a parallel constraint between two lines Maak een parallelle beperking tussen twee lijnen @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Schetsen - + Constrain perpendicular Beperk loodrecht - + Create a perpendicular constraint between two lines Maak een loodrechte beperking tussen twee lijnen @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Schetsen - + Constrain point onto object Zet punt vast op object - + Fix a point onto an object Een punt op een object vastleggen @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Schetsen - + Constrain radius Straal vastzetten - + Fix the radius of a circle or an arc De straal van een cirkel of boog vastzetten @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Schetsen - + Constrain refraction (Snell's law') Beperk de refractie (wet van Snellius) - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Schetsen - + Constrain symmetrical Symmetrische-beperken - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Schetsen - + Constrain tangent Tangent beperken - + Create a tangent constraint between two entities Tangentiële beperkingen tussen twee entiteiten maken @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Schetsen - + Constrain vertically Verticale beperking - + Create a vertical constraint on the selected item Maak een verticale beperking op het geselecteerde item @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Schetsen - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Schetsen - + Copy Kopie - + Creates a simple copy of the geometry taking as reference the last selected point Maakt een eenvoudige kopie van de geometrie met als referentie het laatst geselecteerde punt @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Schetsen - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Schetsen - + Decrease knot multiplicity Verlagen van de multipliciteit van de knoop - + Decreases the multiplicity of the selected knot of a B-spline Vermindert de multipliciteit van het geselecteerde knooppunt van een B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Schetsen - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Schetsen - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Schetsen - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Vergroot de hoek van de B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Schetsen - + Increase knot multiplicity Verhogen van de multipliciteit van de knoop - + Increases the multiplicity of the selected knot of a B-spline Verhoogt de multipliciteit van de geselecteerde knoop van een B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Schetsen - + Move Verplaatsen - + Moves the geometry taking as reference the last selected point Verplaatst de geometrie met als referentie het laatst gekozen punt @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Schetsen - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Maakt een rechthoekig reekspatroon van de geometrie met als referentie het laatst geselecteerde punt @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Schetsen - + Show/hide internal geometry Toon/Verberg interne geometrie - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Schetsen - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Schetsen - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Schetsen - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Schetsen - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Schetsen - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Schetsen - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Schetsen - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Schetsen - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Schetsen - + Symmetry Symmetrie - + Creates symmetric geometry with respect to the last selected line or point Maakt een symmetrische geometrie ten opzichte van de laatst gekozen lijn of punt @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Schetsen - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Schetsen - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Deze versie van OCE/OCC ondersteunt de knoopbewerking niet. U hebt 6.9.0 of hoger nodig. - + 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 knobbelmultipliciteit. - + 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 veelvouds-getal 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Selecteer rand(en) uit de schets. - - - - + + + + Dimensional constraint Dimensionale beperking - - - + + + Only sketch and its support is allowed to select Alleen schets en haar steun is toegestaan ​​om te selecteren - + One of the selected has to be on the sketch Eén van de geselecteerde moet deel uitmaken van de schets - - + + 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 niet een lijnstuk - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! De geselecteerde voorwerp(en) kunnen geen horizontale beperking aannemen! - + There are more than one fixed point selected. Select a maximum of one fixed point! Er zijn meer dan één vaste punt geselecteerd. Selecteer een maximum van één vast punt! - + The selected item(s) can't accept a vertical constraint! De geselcteerde voorwerp(en) kunnen geen verticale beperking aannemen! - + 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. Kies een andere vertex uit de schets 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Selecteer een rand uit de schets. - + Select only edges from the sketch. Selecteer enkel randen uit de schets. - - - - - - - - + + + + + + + + Error Fout - + Select two or more points from the sketch. Selecteer twee of meer punten uit de schets. - - + + Select two or more vertexes from the sketch. Selecteer twee of meer hoekpunten van de schets. - - + + Constraint Substitution Beperk vervanging - + Endpoint to endpoint tangency was applied instead. Eindpunt tot eindpunttangens werd in plaats daarvan toegepast. - + Select vertexes from the sketch. Selecteer (hoek)punten van de schets. - - + + 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! - + This constraint does not make sense for non-linear curves Deze beperking heeft geen zin voor niet-lineaire curven - - - - - - + + + + + + Select the right things from the sketch. Selecteer de juiste elementen uit de schets. - - + + Point on B-spline edge currently unsupported. Punt op B-splinerand momenteel niet ondersteund. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Selecteer een punt en meerdere curven of een curve en meerdere punten. U hebt %1 curves en %2 punten geselecteerd. - - - - + + + + Select exactly one line or up to two points from the sketch. Selecteer precies een lijn of tot 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 paar 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. - - + + Select at least two lines from the sketch. Kies tenminste twee lijnen van de schets. - + Select a valid line Selecteer een geldige lijn - - + + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Verkeerd aantal geselecteerde objecten! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Met 3 objecten moeten er 2 curven en 1 punt zijn. - - + + Cannot add a perpendicularity constraint at an unconnected point! Kan geen loodrechtheidsbeperking toevoegen op een niet-verbonden punt! - - - + + + Perpendicular to B-spline edge currently unsupported. Loodrecht op B-splinerand wordt momenteel niet ondersteund. - - + + One of the selected edges should be a line. Eén van de geselecteerde randen moet een lijn zijn. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Verkeerd aantal geselecteerde objecten! - - - + + + Cannot add a tangency constraint at an unconnected point! Een raakbeperking kan niet worden toegevoegd aan een los punt! - - - + + + Tangency to B-spline edge currently unsupported. Tanges op B-splinerand momenteel niet ondersteund. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint op endpointtangens werd toegepast. De toevallige beperking werd verwijderd. - - - - + + + + Select one or more arcs or circles from the sketch. Selecteer een of meer bogen of cirkels uit de schets. - - + + Constrain equal Gelijke beperken - + Do you want to share the same radius for all selected elements? Wil je dezelfde straal voor alle geselecteerde elementen? - - + + Constraint only applies to arcs or circles. Beperkingen gelden alleen voor bogen en cirkels. - + Do you want to share the same diameter for all selected elements? Wilt u dezelfde diameter voor alle geselecteerde elementen delen? - - + + 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. - - + + Parallel lines Parallellen lijnen - - + + An angle constraint cannot be set for two parallel lines. 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 compatibele randen - + Sketch axes cannot be used in equality constraints Schetsassen kunnen niet worden gebruikt bij gelijkheidsbeperkingen - + 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 hetzelfde 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. 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 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Geselecteerde objecten zijn niet slechts geometrie uit één schets. - + Number of selected objects is not 3 (is %1). Aantal geselecteerde objecten is niet 3 (is %1). - - + + Select at least one ellipse and one edge from the sketch. Selecteer ten minste één ellips en één rand van de schets. - + Sketch axes cannot be used in internal alignment constraint Schetsassen kunnen niet worden gebruikt bij interne uitlijningsbeperkingen - - + + Maximum 2 points are supported. Maximaal 2 punten worden ondersteund. - - + + Maximum 2 lines are supported. Maximaal 2 lijnen worden ondersteund. - - + + Nothing to constrain Niets vast te leggen - - - - + + + + Extra elements Extra element - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Er zijn meer elementen dan mogelijk is voor de gegeven ellips. Deze werden genegeerd. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. U kunt een ellipsboog niet van binnenuit inperken op een andere ellipsboog. Selecteer slechts één ellipsboog. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Geen interne constraint aan elips aan andere elipsboog. Selecteer één elips Of elipsboog. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Er zijn meer elementen dan mogelijk is voor de gegeven ellipsboog. Deze werden genegeerd. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Momenteel wordt de interne geometrie alleen ondersteund voor ellips of ellipsboog. Het laatst geselecteerde element moet een ellips of een ellipsboog zijn. @@ -2862,124 +3124,124 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt - + CAD Kernel Error CAD-kernelfout - + None of the selected elements is an edge. Geen van de geselecteerde elementen is een rand. - - + + At least one of the selected objects was not a B-Spline and was ignored. Ten minste één van de geselecteerde objecten was geen B-Spline en werd genegeerd. - - + + Wrong OCE/OCC version Verkeerde OCE/OCC-versie - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Deze versie van OCE/OCC ondersteunt de knoopbewerking niet. U hebt 6.9.0 of hoger nodig - - + + The selection comprises more than one item. Please select just one knot. De selectie bestaat uit meer dan één item. Gelieve slechts één knoop te selecteren. - + Input Error Invoerfout - - + + None of the selected elements is a knot of a B-spline Geen van de geselecteerde elementen is een knoop van een B-spline - - - - + + + + Select at least two edges from the sketch. Selecteer minstens twee randen van de schets. - - + + One selected edge is not connectable Een geselecteerde rand is niet koppelbaar - + Closing a shape formed by exactly two lines makes no sense. Een vorm sluiten die gevormd wordt door precies twee lijnen heeft geen zin. - - - - - - - - + + + + + + + + Select elements from a single sketch. Selecteer elementen uit één schets. - + No constraint selected Geen beperking geselecteerd - + At least one constraint must be selected U dient minstens één beperking te selecteren - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Een symmetrische constructie vereist minstens twee geometrische elementen. Het laatste geometrische element is de referentie voor de symmetrieconstructie. - + The last element must be a point or a line serving as reference for the symmetry construction. Het laatste element moet een punt of een lijn zijn die als referentie dient voor de symmetrieopbouw. - - + + A copy requires at least one selected non-external geometric element Een kopie vereist minstens één geselecteerd niet-extern geometrisch element - + Delete All Geometry Verwijder alle geometrie - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Verwijder alle beperkingen - + Are you really sure you want to delete all the constraints? Weet u zeker dat u alle beperkingen wilt verwijderen? @@ -3040,62 +3302,62 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt SketcherGui::ConstraintView - + Change value Waarde wijzigen - + Toggle to/from reference Schakel naar/van referentie om - + Deactivate Deactiveren - + Activate Activeren - + Show constraints Toon beperkingen - + Hide constraints Verberg beperkingen - + Rename Hernoemen - + Center sketch Middelste schets - + Delete Verwijderen - + Swap constraint names Wissel de beperkingsnamen om - + Unnamed constraint Onbenoemde beperking - + Only the names of named constraints can be swapped. Alleen de namen van de genoemde beperkingen kunnen omgewisseld worden. @@ -3118,8 +3380,8 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Voeg straal in - - + + Radius: Straal: @@ -3130,8 +3392,8 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Diameter invoeren - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Geaccepteerde combinaties: twee curven; een eindpunt en een curve; twee eindpunt Lengte: - - + + Change radius Straal wijzigen - - + + Change diameter Diameter wijzigen - + Refractive index ratio Brekingsindexverhouding - + Ratio n2/n1: Verhouding n2/n1: @@ -4047,13 +4309,13 @@ Er zijn echter geen beperkingen gevonden die verband houden met de eindpunten.Uitgebreide informatie - + Constraints Beperkingen - - + + Error Fout @@ -4412,104 +4674,104 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn 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: - + Empty sketch Lege schets - + Over-constrained sketch Overbeperkte schets - - - + + + (click to select) (Klik om te selecteren) - + Sketch contains conflicting constraints Schets bevat conflicterende beperkingen - + Sketch contains redundant constraints Schets bevat overbodige beperkingen - + Fully constrained sketch Volledig beperkte schets - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Onderbeperkte schets met <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 graad</span></a> van vrijheid - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Onderbeperkte schets met <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 graad</span></a> van vrijheid - + Solved in %1 sec Opgelost in %1 s - + Unsolved (%1 sec) Onopgelost (%1 s) @@ -4517,8 +4779,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Schakelt tussen het tonen en verbergen van de krommingskam voor alle B-splines @@ -4526,8 +4788,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Vermindert de multipliciteit van het geselecteerde knooppunt van een B-spline @@ -4535,8 +4797,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Hiermee schakelt u tussen tonen en verbergen de mate voor alle B-splines @@ -4544,8 +4806,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Verhoogt de multipliciteit van de geselecteerde knoop van een B-spline @@ -4553,17 +4815,26 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Hiermee schakelt u tussen het weergeven en verbergen van de knoop multipliciteit voor alle B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + 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 @@ -4571,8 +4842,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Maakt een kloon van de geometrie en neemt als referentie het laatst geselecteerde punt @@ -4580,17 +4851,17 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_CompCopy - + Clone Kopieer - + Copy Kopie - + Move Verplaatsen @@ -4598,8 +4869,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Zet de diameter van een cirkel of een boog vast @@ -4607,8 +4878,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc De straal van een cirkel of boog vastzetten @@ -4616,8 +4887,8 @@ De punten moeten dichter dan een vijfde van de rastergrootte bij een rasterlijn Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Maakt een eenvoudige kopie van de geometrie met als referentie het laatst geselecteerde punt @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Verplaatst de geometrie met als referentie het laatst gekozen punt diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.qm index 42bac0dd00..b1ce1b6346 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.ts index 261ebf1a2b..1854ea7a9a 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_no.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Skisse + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Skisse - + Clone Klone - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Skisse - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Skisse - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Skisse - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Constrain radius - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Skisse - + Copy Kopier - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Skisse - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Skisse - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Skisse - + Constrain angle Constrain angle - + Fix the angle of a line or the angle between two lines Fix the angle of a line or the angle between two lines @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Skisse - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Skisse - + Constrain coincident Lås forhold - + Create a coincident constraint on the selected item Lag en lås i forhold til valgte objekt @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Skisse - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Skisse - + Constrain distance Lås avstand - + Fix a length of a line or the distance between a line and a vertex Fikser lengde på en linje eller avstanden mellom en linje og en node @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Skisse - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Fix the horizontal distance between two points or line ends @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Skisse - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fix the vertical distance between two points or line ends @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Skisse - + Constrain equal Constrain equal - + Create an equality constraint between two lines or between circles and arcs Create an equality constraint between two lines or between circles and arcs @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Skisse - + Constrain horizontally Lås horisontalt - + Create a horizontal constraint on the selected item Lag en horisontal lås på det merkede elementet @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Skisse - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Skisse - + Constrain lock Lås - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Skisse - + Constrain parallel Lås parallell - + Create a parallel constraint between two lines Lag en parallell lås mellom to linjer @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Skisse - + Constrain perpendicular Constrain perpendicular - + Create a perpendicular constraint between two lines Create a perpendicular constraint between two lines @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Skisse - + Constrain point onto object Constrain point onto object - + Fix a point onto an object Fix a point onto an object @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Skisse - + Constrain radius Constrain radius - + Fix the radius of a circle or an arc Fix the radius of a circle or an arc @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Skisse - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Skisse - + Constrain symmetrical Constrain symmetrical - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Skisse - + Constrain tangent Constrain tangent - + Create a tangent constraint between two entities Create a tangent constraint between two entities @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Skisse - + Constrain vertically Lås vertikalt - + Create a vertical constraint on the selected item Lag en vertikal lås på valgt element @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Skisse - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Skisse - + Copy Kopier - + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Skisse - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Skisse - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Skisse - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Skisse - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Skisse - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Skisse - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Skisse - + Move Flytt - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Skisse - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Skisse - + Show/hide internal geometry Show/hide internal geometry - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Skisse - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Skisse - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Skisse - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Skisse - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Skisse - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Skisse - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Skisse - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Skisse - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Skisse - + Symmetry Symmetry - + Creates symmetric geometry with respect to the last selected line or point Creates symmetric geometry with respect to the last selected line or point @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Skisse - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Skisse - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Select edge(s) from the sketch. - - - - + + + + Dimensional constraint Dimensional constraint - - - + + + Only sketch and its support is allowed to select Only sketch and its support is allowed to select - + One of the selected has to be on the sketch One of the selected has to be on the sketch - - + + Select an edge from the sketch. Velg en kant i skissen. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Umulig lås - - - - + + + + The selected edge is not a line segment The selected edge is not a line segment - - - - - - + + + + + + Double constraint Dobbel lås - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! The selected item(s) can't accept a horizontal constraint! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! The selected item(s) can't accept a vertical 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Feil - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Select two or more vertexes from the sketch. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Velg node i skissen. - - + + Select exactly one line or one point and one line or two points from the sketch. Select exactly one line or one point and one line or two points from the sketch. - + Cannot add a length constraint on an axis! Cannot add a length constraint on an axis! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Select exactly one line or up to two points from the sketch. - + Cannot add a horizontal length constraint on an axis! 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 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. Select two or more lines from the sketch. - - + + Select at least two lines from the sketch. Select at least two lines from the sketch. - + Select a valid line Select a valid line - - + + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. perpendicular constraint Select some geometry from the sketch. - + Wrong number of selected objects! perpendicular constraint Wrong number of selected objects! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint With 3 objects, there must be 2 curves and 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. One of the selected edges should be a line. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Select some geometry from the sketch. - + Wrong number of selected objects! tangent constraint Wrong number of selected objects! - - - + + + Cannot add a tangency constraint at an unconnected point! Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Select one or more arcs or circles from the sketch. - - + + Constrain equal Constrain equal - + Do you want to share the same radius for all selected elements? Do you want to share the same radius for all selected elements? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Select one or two lines from the sketch. Or select two edges and a point. - - + + Parallel lines Parallel lines - - + + An angle constraint cannot be set for two parallel lines. En vinkel begrensning kan ikke angis for to parallelle linjer. - + Cannot add an angle constraint on an axis! Cannot add an angle constraint on an axis! - + Select two edges from the sketch. 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. 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! 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Selected objects are not just geometry from one sketch. - + Number of selected objects is not 3 (is %1). Number of selected objects is not 3 (is %1). - - + + Select at least one ellipse and one edge from the sketch. Select at least one ellipse and one edge from the sketch. - + Sketch axes cannot be used in internal alignment constraint Sketch axes cannot be used in internal alignment constraint - - + + Maximum 2 points are supported. Maximum 2 points are supported. - - + + Maximum 2 lines are supported. Maximum 2 lines are supported. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Extra elements - - - + + + More elements than possible for the given ellipse were provided. These were ignored. More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Select at least two edges from the sketch. - - + + One selected edge is not connectable One selected edge is not connectable - + Closing a shape formed by exactly two lines makes no sense. Closing a shape formed by exactly two lines makes no sense. - - - - - - - - + + + + + + + + Select elements from a single sketch. Select elements from a single sketch. - + No constraint selected No constraint selected - + At least one constraint must be selected At least one constraint must be selected - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Endre verdi - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Omdøp - + Center sketch Center sketch - + Delete Slett - + Swap constraint names Swap constraint names - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert radius - - + + Radius: Radius: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Lengde: - - + + Change radius Change radius - - + + Change diameter Change diameter - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Ratio n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Låser - - + + Error Feil @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< SketcherGui::ViewProviderSketch - + Edit sketch Rediger skisse - + A dialog is already open in the task panel En dialog er allerede åpent i oppgavepanelet - + Do you want to close this dialog? Ønsker du å lukke denne dialogen? - + Invalid sketch Invalid sketch - + Do you want to open the sketch validation tool? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. The sketch is invalid and cannot be edited. - + Please remove the following constraint: Please remove the following constraint: - + Please remove at least one of the following constraints: Please remove at least one of the following constraints: - + Please remove the following redundant constraint: Please remove the following redundant constraint: - + Please remove the following redundant constraints: Please remove the following redundant constraints: - + Empty sketch Empty sketch - + Over-constrained sketch Over-constrained sketch - - - + + + (click to select) (Klikk for å velge) - + Sketch contains conflicting constraints Sketch contains conflicting constraints - + Sketch contains redundant constraints Sketch contains redundant constraints - + Fully constrained sketch Fully constrained sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Solved in %1 sec - + Unsolved (%1 sec) Unsolved (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klone - + Copy Kopier - + Move Flytt @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fix the radius of a circle or an arc @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.qm index 47ce436a3b..21624e840e 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts index 1ab1292389..05fe936e52 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pl.ts @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Pokaż/ukryj ilość węzłów B-spline @@ -55,6 +55,24 @@ Przełączaj pomiędzy pokazywaniem a ukrywaniem wielkości węzłów dla wszystkich B-splajnów + + CmdSketcherBSplinePoleWeight + + + Sketcher + Szkicownik + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Szkicownik - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Szkicownik - + Close shape - Close shape + Zamknij kształt - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Wyprodukuj kształt zamknięty przez połączenie punktu końcowego pierwszego elementu, z punktem początkowym kolejnego elementu CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Szkicownik - - + Show/hide B-spline information layer Pokaż/ukryj warstwę informacyjną B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Pokaż/ukryj ilość węzłów B-spline + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Szkicownik - + 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 Zwiąż średnicę @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Szkicownik - + Copy Kopiuj - + Creates a clone of the geometry taking as reference the last selected point Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Szkicownik - + Modify knot multiplicity Zmodyfikuj wielokrotność węzłów - + Modifies the multiplicity of the selected knot of a B-spline Modyfikuje wielokrotność wybranego węzła B-spline - + Increase knot multiplicity Zwiększ liczebność węzłów - + Decrease knot multiplicity Zmniejsz liczebność węzłów @@ -408,35 +430,35 @@ CmdSketcherConnect - + Sketcher Szkicownik - + Connect edges - Connect edges + Połącz krawędzie - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Powiąż punkt końcowy elementu z punktem początkowym następnego elementu CmdSketcherConstrainAngle - + Sketcher Szkicownik - + 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 @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Szkicownik - + Constrain block - Constrain block + Wiązanie blokowania - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Wiązanie blokowania: blokowanie wybranej krawędzi przed przemieszczaniem CmdSketcherConstrainCoincident - + Sketcher Szkicownik - + Constrain coincident Wiązanie zbieżności - + Create a coincident constraint on the selected item Stwórz wiązanie zbieżne dla wybranego elementu @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Szkicownik - + Constrain diameter Zwiąż średnicę - + Fix the diameter of a circle or an arc Ustal średnicę okręgu lub łuku @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Szkicownik - + Constrain distance Wiązanie odległości - + Fix a length of a line or the distance between a line and a vertex Ustal długość linii lub odległość pomiędzy linią a wierzchołkiem @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Szkicownik - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Szkicownik - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Szkicownik - + Constrain equal Wiązanie równości - + Create an equality constraint between two lines or between circles and arcs Utworzyć ograniczenie równości między dwie linie, okręgi lub łuki @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Szkicownik - + Constrain horizontally Zwiąż w poziomie - + Create a horizontal constraint on the selected item Utwórz wiązanie poziome na wybranym elemencie @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Szkicownik - + Constrain internal alignment - Constrain internal alignment + Wiązanie wyrównania wewnętrznego - + Constrains an element to be aligned with the internal geometry of another element Wiąże element do wyrównania z wewnętrzną geometrią innego elementu @@ -606,37 +628,37 @@ CmdSketcherConstrainLock - + Sketcher Szkicownik - + Constrain lock Blokada wiązania - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Wiązanie blokady: utwórz zarówno poziome, jak i pionowe wiązanie odległości +na wybranym wierzchołku CmdSketcherConstrainParallel - + Sketcher Szkicownik - + Constrain parallel Wiązanie równoległości - + Create a parallel constraint between two lines Utwórz więz równoległości pomiędzy dwoma liniami @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Szkicownik - + Constrain perpendicular Wiązanie prostopadłości - + Create a perpendicular constraint between two lines Utwórz więż prostopadłości między dwiema liniami @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Szkicownik - + Constrain point onto object Wiązanie punkt na obiekcie - + Fix a point onto an object Ustaw punkt na obiekcie @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Szkicownik - + Constrain radius Wiązanie promienia - + Fix the radius of a circle or an arc Ustalenie promienia okręgu lub łuku @@ -698,57 +720,57 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Szkicownik - + Constrain refraction (Snell's law') - Zwiąż refrakcję (prawo Snell'a) + 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. - Create a refraction law (Snell's law) constraint between two endpoints of rays -and an edge as an interface. + Utwórz wiązanie prawa refrakcji (prawo Snell'a) pomiędzy dwoma punktami końcowymi promieni, +a krawędzią jako powierzchnią kontaktu. CmdSketcherConstrainSymmetric - + Sketcher Szkicownik - + Constrain symmetrical Wiązanie symetryczności - + Create a symmetry constraint between two points with respect to a line or a third point - 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 +w odniesieniu do linii lub trzeciego punktu CmdSketcherConstrainTangent - + Sketcher Szkicownik - + Constrain tangent Wiązanie styczności - + Create a tangent constraint between two entities Utwórz styczną pomiędzy dwoma elementami @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Szkicownik - + Constrain vertically Zwiąż w pionie - + Create a vertical constraint on the selected item Utwórz wiązanie pionowe na wybranym elemencie @@ -774,35 +796,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Szkicownik - + Convert geometry to B-spline - Convert geometry to B-spline + Konwertuj geometrię na B-spline - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Konwertuje wybraną geometrię do B-spline CmdSketcherCopy - + Sketcher Szkicownik - + Copy Kopiuj - + Creates a simple copy of the geometry taking as reference the last selected point Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt @@ -1278,35 +1300,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Szkicownik - + Decrease B-spline degree - Decrease B-spline degree + Zmniejsz stopień B-spline - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Zmniejsza stopień B-spline CmdSketcherDecreaseKnotMultiplicity - + Sketcher Szkicownik - + Decrease knot multiplicity Zmniejsz liczebność węzłów - + Decreases the multiplicity of the selected knot of a B-spline Zmniejsza wielokrotność wybranego węzła B-spline @@ -1314,37 +1336,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Szkicownik - + Delete all constraints - Delete all constraints + Usuń wszystkie wiązania - + Delete all constraints in the sketch - Delete all constraints in the sketch + Usuń wszystkie wiązania z rysunku CmdSketcherDeleteAllGeometry - + Sketcher Szkicownik - + Delete all geometry - Delete all geometry + Usuń całą geometrię - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Usuń całą geometrię i wiązania z bieżącego rysunku, z wyjątkiem geometrii zewnętrznej @@ -1362,7 +1384,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Edytuj wybrany szkic. @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Szkicownik - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Zwiększa stopień B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Szkicownik - + Increase knot multiplicity Zwiększ liczebność węzłów - + Increases the multiplicity of the selected knot of a B-spline Zwiększa wielokrotność wybranego węzła B-spline @@ -1452,7 +1474,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Zakończ edycję aktywnego szkicu. @@ -1479,7 +1501,7 @@ then call this command, then choose the desired sketch. Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Niektóre z wybranych obiektów zależą od szkicu do zmapowania. Powiązania cykliczne nie są dozwolone. @@ -1497,7 +1519,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Utwórz nowy szkic ze scalenia dwóch lub więcej wybranych szkiców. @@ -1507,7 +1529,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Wybierz co najmniej dwa szkice. @@ -1527,9 +1549,9 @@ then call this command, then choose the desired sketch. Create a new mirrored sketch for each selected sketch by using the X or Y axes, or the origin point, as mirroring reference. - Create a new mirrored sketch for each selected sketch -by using the X or Y axes, or the origin point, -as mirroring reference. + Utwórz nowy lustrzany szkic dla każdego wybranego szkicu +używając osi X lub Y lub punktu początkowego +jako odniesienia. @@ -1539,23 +1561,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Wybierz jeden lub więcej szkiców. CmdSketcherMove - + Sketcher Szkicownik - + Move Przesuń - + Moves the geometry taking as reference the last selected point Przenosi geometrię przyjmując jako odniesienie ostatni wybrany punkt @@ -1575,23 +1597,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Utwórz nowy szkic. CmdSketcherRectangularArray - + Sketcher Szkicownik - + Rectangular array - Rectangular array + Szyk prostokątny - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Tworzy prostokątny wzór geometrii, przyjmując jako odniesienie ostatni wybrany punkt @@ -1612,162 +1634,162 @@ as mirroring reference. Place the selected sketch on one of the global coordinate planes. This will clear the 'Support' property, if any. - Place the selected sketch on one of the global coordinate planes. -This will clear the 'Support' property, if any. + Umieść wybrany szkic na jednej z globalnych płaszczyzn współrzędnych. +To usunie właściwość "Support", jeśli istnieje. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Szkicownik - + Show/hide internal geometry Pokaż/ukryj wewnętrzną geometrię - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Pokaż całą geometrię wewnętrzną lub ukryj nieużywaną geometrię wewnętrzną CmdSketcherSelectConflictingConstraints - + Sketcher Szkicownik - - + + Select conflicting constraints - Select conflicting constraints + Wybierz wiązania konfliktowe CmdSketcherSelectConstraints - + Sketcher Szkicownik - + Select associated constraints - Select associated constraints + Wybierz powiązane wiązania - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Zaznacz wiązania skojarzone z wybranymi elementami CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Szkicownik - + Select associated geometry - Select associated geometry + Zaznacz powiązaną geometrię - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Zaznacz elementy geometryczne powiązane z wybranymi wiązaniami CmdSketcherSelectElementsWithDoFs - + Sketcher Szkicownik - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Zaznacz elementy geometryczne, w których solver nadal wykrywa niezwiązane stopnie swobody. CmdSketcherSelectHorizontalAxis - + Sketcher Szkicownik - + Select horizontal axis - Select horizontal axis + Wybierz oś poziomą - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Zaznacz lokalną oś poziomą szkicu CmdSketcherSelectOrigin - + Sketcher Szkicownik - + Select origin - Select origin + Wybierz odniesienie położenia - + Select the local origin point of the sketch - Select the local origin point of the sketch + Zaznacz lokalny punkt początkowy szkicu CmdSketcherSelectRedundantConstraints - + Sketcher Szkicownik - - + + Select redundant constraints - Select redundant constraints + Wybierz zbędne wiązania CmdSketcherSelectVerticalAxis - + Sketcher Szkicownik - + Select vertical axis - Select vertical axis + Wybierz oś pionową - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Zaznacz lokalną oś pionową szkicu @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Szkicownik - + Symmetry Symetria - + Creates symmetric geometry with respect to the last selected line or point Tworzy symetryczną geometrię w odniesieniu do ostatniej wybranej linii lub punktu @@ -1827,19 +1849,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Szkicownik - + Activate/deactivate constraint - Activate/deactivate constraint + Aktywuj / dezaktywuj wiązanie - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Aktywuje lub wyłącza zaznaczone wiązania @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Szkicownik - + 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, @@ -1920,7 +1942,7 @@ invalid constraints, degenerated geometry, etc. Select only one sketch. - Select only one sketch. + Wybierz tylko jeden szkic. @@ -1943,7 +1965,7 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + W trybie edycji można przełączyć się między widokiem przekroju a widokiem całości. @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. Błąd więzów automatycznych: Nierozwiązywalny szkic po zastosowaniu 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ć. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Ta wersja OCE/OCC nie obsługuje operacji węzła. Potrzebujesz wersji 6.9.0 lub wyższej. - + BSpline Geometry Index (GeoID) is out of bounds. Indeks geometrii B-Spline (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 B-Spline (GeoId) nie jest krzywą 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. 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ń B-spline. - + The multiplicity cannot be decreased beyond zero. Wielokrotność nie może być 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,143 +2514,143 @@ invalid constraints, degenerated geometry, etc. Wybierz krawędź(ie) na szkicu - - - - + + + + Dimensional constraint Wiązanie wymiaru - - - + + + Only sketch and its support is allowed to select Tylko szkic i jego baza są dozwolone do zaznaczenia - + One of the selected has to be on the sketch Jedno z zaznaczonych musi być na szkicu - - + + Select an edge from the sketch. Wybierz krawędź ze szkicu. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Niemożliwe ograniczenie - - - - + + + + The selected edge is not a line segment Zaznaczona krawędź nie jest segmentem 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 blokowe! - + The selected item(s) can't accept a horizontal constraint! Wybrane detale nie mogą zaakceptować ograniczenia poziomego! - + There are more than one fixed point selected. Select a maximum of one fixed point! Wybrano więcej niż jeden stały punkt. Wybierz maksymalnie jeden stały punkt! - + The selected item(s) can't accept a vertical constraint! Wybrane detale nie mogą zaakceptować ograniczenia pionowego! - + 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 Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + Nie można dodać wiązania pomiędzy dwoma geometriami zewnętrznymi. @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Zaznacz jedną krawędź ze szkicu. - + Select only edges from the sketch. Zaznacz tylko krawędzie ze szkicu. - - - - - - - - + + + + + + + + Error Błąd - + Select two or more points from the sketch. Zaznacz dwa lub więcej punktów ze szkicu. - - + + Select two or more vertexes from the sketch. Wybierz dwa lub więcej wierzchołków ze szkicu. - - + + Constraint Substitution Zastąpienie Wiązania - + Endpoint to endpoint tangency was applied instead. Zamiast tego zastosowano styczność od punktu końcowego do punktu końcowego. - + Select vertexes from the sketch. Wybierz wierzchołki ze szkicu. - - + + 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! - + This constraint does not make sense for non-linear curves To ograniczenie nie ma sensu dla nieliniowych krzywych - - - - - - + + + + + + Select the right things from the sketch. Wybierz prawidłowe rzeczy ze szkicu. - - + + Point on B-spline edge currently unsupported. Punkt na krawędzi B-spline obecnie nie jest obsługiwany. - - + + 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ą. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Zaznacz jeden punkt do wielu krzywych lub jedną krzywą do kilku punktów. Zaznaczyłeś %1 krzywych i %2 punktów. - - - - + + + + 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 To wiązanie ma sens tylko na segmencie linii lub parze 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. - - + + Select at least two lines from the sketch. Wybierz co najmniej dwie linie ze szkicu. - + Select a valid line Wybierz prawidłową linię - - + + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Niewłaściwa liczba wybranych obiektów! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Z trzech (3) obiektów, dwa (2) muszą być krzywymi i jeden (1) musi być punktem. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nie można dodać wiązania prostopadłości w niepołączonym punkcie! - - - + + + Perpendicular to B-spline edge currently unsupported. Prostopadła do krawędzi B-spline obecnie nie jest obsługiwana. - - + + One of the selected edges should be a line. Jedna z zaznaczonych krawędzi powinna być linią. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Niewłaściwa liczba wybranych obiektów! - - - + + + Cannot add a tangency constraint at an unconnected point! Nie można dodać wiązanie styczności w niepołączonym punkcie! - - - + + + Tangency to B-spline edge currently unsupported. Styczna do krawędzi B-spline nie jest obecnie obsługiwana. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Zastosowano styczność punktu końcowego do punktu końcowego. Wiązanie zgodne zostało usunięte. - - - - + + + + Select one or more arcs or circles from the sketch. Wybierz jeden lub więcej łuków lub okręgów ze szkicu. - - + + Constrain equal Wiązanie równości - + Do you want to share the same radius for all selected elements? Czy chcesz zastosować ten sam promień dla wszystkich zaznaczonych elementów? - - + + Constraint only applies to arcs or circles. Ograniczenie dotyczy tylko łuków lub okręgów. - + Do you want to share the same diameter for all selected elements? Czy chcesz zastosować ten sam promień dla wszystkich zaznaczonych elementó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. - - + + Parallel lines Linie równoległe - - + + An angle constraint cannot be set for two parallel lines. Wiązania kąta nie można ustawić dla dwóch równoległych linii. - + 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 dwa lub więcej zgodnych brzegów - + Sketch axes cannot be used in equality constraints Szkic osi nie możne być użyty w warunku równości - + Equality for B-spline edge currently unsupported. Jednolitość dla krawędzi B-spline nie jest obecnie obsługiwana. - - + + Select two or more edges of similar type Zaznacz dwi 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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Nie można tworzyć wiązań tylko przy użyciu geometrii zewnętrznej. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Wybrano niekompatybilną geometrię. - + SnellsLaw on B-spline edge is currently unsupported. - SnellsLaw on B-spline edge is currently unsupported. + SnellsLaw na krawędzi B-spline jest obecnie nieobsługiwana. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Wybierz wiązania ze szkicu. - + Selected objects are not just geometry from one sketch. Wybrane obiekty są nie tylko geometrią z jednego szkicu. - + Number of selected objects is not 3 (is %1). Liczba wybranych obiektów nie jest 3 (jest %1). - - + + Select at least one ellipse and one edge from the sketch. Wybierz co najmniej jedną elipsę i jedną krawędź ze szkicu. - + Sketch axes cannot be used in internal alignment constraint Osie szkicu nie mogą być używane w wewnętrznym wiązaniu wyrównania - - + + Maximum 2 points are supported. Obsługiwane są maksymalnie 2 punkty. - - + + Maximum 2 lines are supported. Maksymalnie 2 linie są obsługiwane. - - + + Nothing to constrain Nie ma nic do związania - - - - + + + + Extra elements Dodatkowe elementy - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Zapewniono więcej elementów niż to możliwe dla danej elipsy. Zostały one pominięte. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Nie można wewnętrznie wiązać łuku elipsy na innym łuku elipsy. Wybierz tylko jeden łuk elipsy. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Nie można wewnętrznie wiązać elipsy na łuku elipsy. Wybierz tylko jedną elipsę lub łuk elipsy. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Zostało pokazane więcej elementów niż jest to możliwe na danym łuku elipsy dostarczone. Te były pominięte. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Aktualnie geometria wewnętrzna jest obsługiwana tylko dla elipsy i łuku elipsy. Ostatni wybrany element musi być elipsą lub łukiem elipsy. @@ -2862,124 +3124,124 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow - + CAD Kernel Error Błąd Trzonu CAD - + None of the selected elements is an edge. Żaden z wybranych elementów nie jest krawędzią. - - + + At least one of the selected objects was not a B-Spline and was ignored. Co najmniej jeden z wybranych obiektów nie był B-Spline i został zignorowany. - - + + Wrong OCE/OCC version Zła wersja OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ta wersja OCE/OCC nie obsługuje operacji węzła. Potrzebujesz wersji 6.9.0 lub bardziej aktualnej - - + + The selection comprises more than one item. Please select just one knot. Wybór obejmuje więcej niż jeden element. Proszę wybrać tylko jeden węzeł. - + Input Error Błąd danych wejściowych - - + + None of the selected elements is a knot of a B-spline Żaden z wybranych elementów nie jest węzłem B-spline - - - - + + + + Select at least two edges from the sketch. Wybierz co najmniej dwie krawędzie ze szkicu. - - + + One selected edge is not connectable Jedna wybrana krawędź nie jest do podłączenia - + Closing a shape formed by exactly two lines makes no sense. Nie ma powodu na zamykanie kształtu formowanego przez dokładnie dwie linie. - - - - - - - - + + + + + + + + Select elements from a single sketch. Wybierz elementy z pojedynczego szkicu. - + No constraint selected Brak wybranych wiązań - + At least one constraint must be selected Co najmniej jedno wiązanie musi zostać wybrane - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Symetryczna konstrukcja wymaga co najmniej dwóch elementów geometrycznych, ostatni element geometryczny jest odniesieniem do budowy symetrii konstrukcyjnej. - + The last element must be a point or a line serving as reference for the symmetry construction. Ostatni element musi być punktem lub linią, służącymi jako odniesienie do budowy symetrii konstrukcyjnej. - - + + A copy requires at least one selected non-external geometric element Kopia wymaga co najmniej jednego wybranego elementu nie zewnętrznie geometrycznego - + Delete All Geometry Usuń całą geometrie - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Czy na pewno chcesz usunąć całą geometrię i wiązania? - + Delete All Constraints Usuń wszystkie wiązania - + Are you really sure you want to delete all the constraints? Czy na pewno chcesz usunąć wszystkie wiązania? @@ -3040,62 +3302,62 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow SketcherGui::ConstraintView - + Change value Zmień wartość elementu - + Toggle to/from reference Przełączanie do/od odniesienia - + Deactivate Dezaktywuj - + Activate Aktywuj - + Show constraints Pokaż wiązania - + Hide constraints Ukryj wiązania - + Rename Zmień nazwę - + Center sketch Wyśrodkuj szkic - + Delete Usuń - + Swap constraint names Zamień nazwy wiązań - + Unnamed constraint Wiązanie bez przypisanej nazwy - + Only the names of named constraints can be swapped. Tylko nazwy wiązań z przypisaną nazwą mogą być zamienione. @@ -3118,8 +3380,8 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Wstaw promień - - + + Radius: Promień: @@ -3130,8 +3392,8 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Wprowadź średnicę - - + + Diameter: Średnica: @@ -3159,24 +3421,24 @@ Akceptowane kombinacje: dwie krzywe; punkt końcowy i krzywa; dwa punkty końcow Długość: - - + + Change radius Zmień promień - - + + Change diameter Zmień średnicę - + Refractive index ratio Współczynnik załamania światła - + Ratio n2/n1: Stosunek n2/n1: @@ -3784,7 +4046,7 @@ Supports all unit systems except 'US customary' and 'Building US/Euro'. Show objects that the sketch is attached to - Show objects that the sketch is attached to + Pokaż obiekty, do których szkic jest dołączony @@ -4045,13 +4307,13 @@ Nie znaleziono jednak żadnych wiązań z punktami końcowymi. Informacje rozszerzone - + Constraints Wiązania - - + + Error Błąd @@ -4295,7 +4557,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Rendering order (global): - Rendering order (global): + Kolejność renderowania (globalna): @@ -4410,104 +4672,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< SketcherGui::ViewProviderSketch - + Edit sketch Edycja 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 dialogowe? - + 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 zbędne wiązania: - + Empty sketch Pusty szkic - + Over-constrained sketch Szkic ze zbyt dużą liczbą wiązań - - - + + + (click to select) (kliknij, aby wybrać) - + Sketch contains conflicting constraints Szkic zawiera wiązania powodujące konflikt - + Sketch contains redundant constraints Szkic zawiera zbędne wiązania - + Fully constrained sketch W pełni związany szkic - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Niewiązany szkic z <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 stopniem</span></a> swobody - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Niezwiązany szkic z <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 stopniem</span></a> swobody - + Solved in %1 sec Rozwiązano w %1 sek - + Unsolved (%1 sec) Nie rozwiązano (%1 sek) @@ -4515,8 +4777,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Przełączaj pomiędzy pokazywaniem i chowaniem grzebienia krzywizny dla wszystich B-splajnów @@ -4524,8 +4786,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Zmniejsza wielokrotność wybranego węzła B-spline @@ -4533,8 +4795,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Przełączaj pomiędzy pokazywaniem a chowaniem stopnia dla wszystkich B-splajnów @@ -4542,8 +4804,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Zwiększa wielokrotność wybranego węzła B-spline @@ -4551,17 +4813,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Przełączaj pomiędzy pokazywaniem a ukrywaniem wielkości węzłów dla wszystkich B-splajnów + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Przełączaj pomiędzy pokazywaniem a ukrywaniem wielokątu kontroli dla wszystkich b-spline @@ -4569,8 +4840,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt @@ -4578,17 +4849,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klon - + Copy Kopiuj - + Move Przesuń @@ -4596,8 +4867,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Ustal średnicę okręgu lub łuku @@ -4605,8 +4876,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Ustalenie promienia okręgu lub łuku @@ -4614,8 +4885,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Tworzy prostą kopię geometrii przyjmującej jako odniesienie ostatni wybrany punkt @@ -4859,8 +5130,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Przenosi geometrię przyjmując jako odniesienie ostatni wybrany punkt @@ -5032,7 +5303,7 @@ BFGS solver uses the Broyden–Fletcher–Goldfarb–Shanno algorithm. QR algorithm: - QR algorithm: + Algorytm QR: diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.qm index 8bb7acc8c1..10971a8146 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.qm differ 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 809369137c..67f0bd266d 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-BR.ts @@ -55,6 +55,24 @@ Alterna entre mostrar e ocultar a multiplicidade de nós para todas as B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Esboço + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Esboço - + Clone Clonar - + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Esboço - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Esboço - - + Show/hide B-spline information layer Mostrar/ocultar a camada de informações da B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Esboço - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Esboço - + Copy Copiar - + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Esboço - + Modify knot multiplicity Modificar a multiplicidade de nós - + Modifies the multiplicity of the selected knot of a B-spline Modifica a multiplicidade do nós selecionados de uma B-spline - + Increase knot multiplicity Aumentar a multiplicidade de nós - + Decrease knot multiplicity Diminuir a multiplicidade de nós @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Esboço - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Esboço - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Esboço - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Esboço - + Constrain coincident Restrição de coincidência - + Create a coincident constraint on the selected item Criar uma restrição de coincidência sobre o item selecionado @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Esboço - + 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 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Esboço - + Constrain distance Restrição de distância - + Fix a length of a line or the distance between a line and a vertex Trancar o comprimento de uma linha ou a distância entre uma linha e um vértice @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Esboço - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Esboço - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Esboço - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Esboço - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Criar uma restrição horizontal sobre o item selecionado @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Esboço - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Restringe um elemento para ser alinhado com a geometria interna de um outro elemento @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Esboço - + Constrain lock Restrição de bloqueio - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Esboço - + Constrain parallel Restrição paralela - + Create a parallel constraint between two lines Criar uma restrição paralela entre duas linhas @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Esboço - + Constrain perpendicular Restrição perpendicular - + Create a perpendicular constraint between two lines Criar uma restrição perpendicular entre duas linhas @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Esboço - + Constrain point onto object Restringir um ponto sobre um objeto - + Fix a point onto an object Fixar um ponto sobre um objeto @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Esboço - + 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 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Esboço - + Constrain refraction (Snell's law') Restrição de 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Esboço - + Constrain symmetrical Restrição simétrica - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Esboço - + Constrain tangent Restrição tangente - + Create a tangent constraint between two entities Criar uma restrição tangente entre duas entidades @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Esboço - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Criar uma restrição vertical sobre o item selecionado @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Esboço - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Esboço - + Copy Copiar - + Creates a simple copy of the geometry taking as reference the last selected point Cria uma cópia simples da geometria tomando como referência o último ponto selecionado @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Esboço - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Esboço - + Decrease knot multiplicity Diminuir a multiplicidade de nós - + Decreases the multiplicity of the selected knot of a B-spline Diminui a multiplicidade do nó selecionado de uma B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Esboço - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Esboço - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Esboço - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Aumenta o grau da B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Esboço - + Increase knot multiplicity Aumentar a multiplicidade de nós - + Increases the multiplicity of the selected knot of a B-spline Aumenta a multiplicidade do nó selecionado de uma B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Esboço - + Move Mover - + Moves the geometry taking as reference the last selected point Move a geometria usando como referência o último ponto selecionado @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Esboço - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Cria um padrão retangular da geometria com referência ao último ponto selecionado @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Esboço - + Show/hide internal geometry Mostrar/ocultar geometria interna - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Esboço - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Esboço - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Esboço - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Esboço - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Esboço - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Esboço - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Esboço - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Esboço - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Esboço - + Symmetry Simetria - + Creates symmetric geometry with respect to the last selected line or point Cria uma geometria simétrica em relação ao último ponto ou linha selecionada @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Esboço - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Esboço - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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 adivinhar a intersecção das curvas. Tente adicionar uma restrição coincidente entre os vértices das curvas que você pretende filetar. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Esta versão do OCE / OCC não suporta operação de nó. Você precisa de 6.9.0 ou superior. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Selecione aresta(s) no esboço. - - - - + + + + Dimensional constraint Restrição de dimensão - - - + + + Only sketch and its support is allowed to select É permitido selecionar somente um esboço e seu suporte - + One of the selected has to be on the sketch Um dos selecionados tem que ser no esboço - - + + 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 A aresta selecionada não é um segmento de linha - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Os itens selecionados não podem aceitar uma restrição horizontal! - + There are more than one fixed point selected. Select a maximum of one fixed point! Mais de um ponto fixo selecionado. Selecione um único ponto fixo! - + The selected item(s) can't accept a vertical constraint! Os itens selecionados não podem aceitar uma restrição vertical! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Erro - + Select two or more points from the sketch. Selecione dois ou mais pontos no esboço. - - + + Select two or more vertexes from the sketch. Selecione dois ou mais vértices do esboço. - - + + Constraint Substitution Substituição de restrição - + Endpoint to endpoint tangency was applied instead. Uma tangência de ponto a ponto de extremidade foi aplicado em vez disso. - + Select vertexes from the sketch. Selecione vértices do esboço. - - + + 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! - + This constraint does not make sense for non-linear curves Essa restrição não faz sentido para curvas não-lineares - - - - - - + + + + + + Select the right things from the sketch. Selecione as coisas corretas no esboço. - - + + Point on B-spline edge currently unsupported. Ponto em aresta de Bspline ainda não está suportado. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Selecione um ponto e várias curvas, ou uma curva e vários pontos. Você selecionou %1 curvas e %2 pontos. - - - - + + + + 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 Esta restrição só faz sentido num segmento reto ou num par de pontos - + 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. - - + + Select at least two lines from the sketch. Selecione pelo menos duas linhas no esboço. - + Select a valid line Selecione uma linha válida - - + + The selected edge is not a valid line A aresta selecionada não é uma linha 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Número errado de objetos selecionados! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Com 3 objetos, deve haver 2 curvas e 1 ponto. - - + + 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! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular à aresta de Bspline ainda não está suportado. - - + + One of the selected edges should be a line. Uma das arestas selecionadas deve ser uma linha. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Número errado de objetos selecionados! - - - + + + 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! - - - + + + Tangency to B-spline edge currently unsupported. Tangência à aresta de Bspline ainda não está suportado. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Selecione um ou mais arcos ou círculos no esboço. - - + + Constrain equal Restrição igual - + Do you want to share the same radius for all selected elements? Deseja compartilhar o mesmo raio para todos os elementos selecionados? - - + + Constraint only applies to arcs or circles. Restrição aplicável somente em arcos ou círculos. - + Do you want to share the same diameter for all selected elements? Deseja compartilhar o mesmo diâmetro para todos os elementos selecionados? - - + + 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. - - + + Parallel lines Linhas paralelas - - + + An angle constraint cannot be set for two parallel lines. 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 Selecione duas ou mais arestas compatíveis - + Sketch axes cannot be used in equality constraints Os eixos do esboço não podem ser usados em restrições de igualdade - + 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 Selecione duas ou mais arestas do mesmo tipo - - - - - + + + + + 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. 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Objetos selecionados não são apenas geometria de um esboço só. - + Number of selected objects is not 3 (is %1). Número de objetos selecionados não é 3 (é %1). - - + + Select at least one ellipse and one edge from the sketch. Selecione pelo menos uma elipse e uma aresta do esboço. - + Sketch axes cannot be used in internal alignment constraint Eixos do esboço não podem ser usados para uma restrição de alinhamento interno - - + + Maximum 2 points are supported. Máximo 2 pontos são suportados. - - + + Maximum 2 lines are supported. Máximo 2 linhas são suportadas. - - + + Nothing to constrain Nada para restringir - - - - + + + + Extra elements Elementos extra - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Foram fornecidos mais elementos do que o possível para a elipse dada. Estes foram ignorados. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Você não pode restringir internamente um arco de elipse em outro arco de elipse. Selecione apenas um arco de elipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Não é possível restringir internamente uma elipse sobre um arco de elipse. Selecione apenas uma elipse ou um arco de elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Foram fornecidos mais elementos do que o possível para o arco de elipse dado. Estes foram ignorados. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Atualmente a geometria interna só é suportada para elipses ou arcos de elipse. O último elemento selecionado deve ser uma elipse ou um arco de elipse. @@ -2862,124 +3124,124 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois - + CAD Kernel Error Erro de Kernel CAD - + None of the selected elements is an edge. Nenhum dos elementos selecionados é uma aresta. - - + + At least one of the selected objects was not a B-Spline and was ignored. Pelo menos um dos objetos selecionados não era um B-Spline e foi ignorado. - - + + Wrong OCE/OCC version Versão errada do OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Esta versão do OCE/OCC não suporta operações com nós. Você precisa da versão 6.9.0 ou superior - - + + The selection comprises more than one item. Please select just one knot. A seleção engloba mais de um item. Por favor, selecione apenas um nó. - + Input Error Erro de entrada - - + + None of the selected elements is a knot of a B-spline Nenhum dos elementos selecionados é um nó de uma B-spline - - - - + + + + Select at least two edges from the sketch. Selecione pelo menos duas arestas do esboço. - - + + One selected edge is not connectable Uma aresta selecionada não é conectável - + Closing a shape formed by exactly two lines makes no sense. Fechar uma forma formada por exatamente duas linhas não faz sentido. - - - - - - - - + + + + + + + + Select elements from a single sketch. Selecione elementos de um esboço único. - + No constraint selected Nenhuma restrição selecionada - + At least one constraint must be selected Pelo menos uma restrição deve ser selecionada - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Uma construção simétrica requer pelo menos dois elementos geométricos, sendo o último elemento geométrico a referência para a construção da simetria. - + The last element must be a point or a line serving as reference for the symmetry construction. O último elemento deve ser um ponto ou uma linha, servindo como referência para a construção da simetria. - - + + A copy requires at least one selected non-external geometric element Uma cópia requer pelo menos um elemento geométrico não-externo selecionado - + Delete All Geometry Excluir toda a geometria - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Excluir todas as restrições - + Are you really sure you want to delete all the constraints? Tem certeza de que deseja excluir todas as restrições? @@ -3040,62 +3302,62 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois SketcherGui::ConstraintView - + Change value Mudar o valor - + Toggle to/from reference Alternar para/de referência - + Deactivate Desativar - + Activate Ativar - + Show constraints Mostrar as restrições - + Hide constraints Ocultar as restrições - + Rename Renomear - + Center sketch Croqui do centro - + Delete Excluir - + Swap constraint names Trocar nomes de restrição - + Unnamed constraint Restrição sem nome - + Only the names of named constraints can be swapped. Apenas os nomes das restrições nomeadas podem ser trocados. @@ -3118,8 +3380,8 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Insira o raio - - + + Radius: Raio: @@ -3130,8 +3392,8 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Inserir diâmetro - - + + Diameter: Diâmetro: @@ -3159,24 +3421,24 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Comprimento: - - + + Change radius Mudar raio - - + + Change diameter Alterar o diâmetro - + Refractive index ratio Relação de índice de refração - + Ratio n2/n1: Relação n2/n1: @@ -4047,13 +4309,13 @@ No entanto, nenhuma restrição foi encontrada nos pontos de extremidade.Extended information - + Constraints Restrições - - + + Error Erro @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Esboço vazio - + Over-constrained sketch Esboço superrestrito - - - + + + (click to select) (clique para selecionar) - + Sketch contains conflicting constraints Esboço contém restrições conflitantes - + Sketch contains redundant constraints Esboço contém restrições redundantes - + Fully constrained sketch Esboço totalmente restrito - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Resolvido em %1 seg - + Unsolved (%1 sec) Não resolvidos (%1 seg) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Alterna entre mostrar e ocultar o pente de curvatura para todas as B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Diminui a multiplicidade do nó selecionado de uma B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Alterna entre mostrar e ocultar o grau para todas os B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Aumenta a multiplicidade do nó selecionado de uma B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Alterna entre mostrar e ocultar a multiplicidade de nós para todas as B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Alterna entre mostrar e ocultar os polígonos de controle para todas as B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Clonar - + Copy Copiar - + Move Mover @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Corrigir o diâmetro de um círculo ou arco @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixar o raio de um círculo ou um arco @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Cria uma cópia simples da geometria tomando como referência o último ponto selecionado @@ -4860,8 +5131,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Move a geometria usando como referência o último ponto selecionado diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.qm index 202c7d057f..c61bb9265c 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.qm differ 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 71ba18ea8c..77b5f31efb 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_pt-PT.ts @@ -55,6 +55,24 @@ Alterna entre mostrar e ocultar a multiplicidade de nós para todas as B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clonar - + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Mostrar/ocultar a camada de informações da B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copiar - + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modificar a multiplicidade de nós - + Modifies the multiplicity of the selected knot of a B-spline Modifica a multiplicidade do nós selecionados de uma B-spline - + Increase knot multiplicity Aumentar a multiplicidade de nós - + Decrease knot multiplicity Diminuir a multiplicidade de nós @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Restringir coincidentes - + Create a coincident constraint on the selected item Criar uma restrição de coincidência no item selecionado @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + 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 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Restringir distância - + Fix a length of a line or the distance between a line and a vertex Corrigir um comprimento de uma linha ou a distância entre uma linha e um vértice @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Restringir horizontalmente - + Create a horizontal constraint on the selected item Criar uma restrição horizontal no item selecionado @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Restringir o alinhamento do elemento com a geometria interna de outro @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Restrição de bloqueio - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Restringir paralelo - + Create a parallel constraint between two lines Criar uma restrição paralela entre duas linhas @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Restringir perpendicular - + Create a perpendicular constraint between two lines Criar uma restrição perpendicular entre duas linhas @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Restringir um ponto sobre um objeto - + Fix a point onto an object Fixar um ponto num objeto @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Restringir o raio - + Fix the radius of a circle or an arc Corrigir o raio de um círculo ou arco @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Restrição refracçã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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + 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 @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Restringir a tangente - + Create a tangent constraint between two entities Criar uma restrição de tangência entre duas entidades @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Restringir verticalmente - + Create a vertical constraint on the selected item Criar uma restrição vertical no item selecionado @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copiar - + Creates a simple copy of the geometry taking as reference the last selected point Cria uma cópia simples da geometria tomando como referência o último ponto selecionado @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Diminuir a multiplicidade de nós - + Decreases the multiplicity of the selected knot of a B-spline Diminui a multiplicidade do nó selecionado de uma B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Aumenta o grau da B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Aumentar a multiplicidade de nós - + Increases the multiplicity of the selected knot of a B-spline Aumenta a multiplicidade do nó selecionado de uma B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Mover - + Moves the geometry taking as reference the last selected point Move a geometria tomando como referência o último ponto selecionado @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Mostrar/ocultar geometria interna - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetria - + Creates symmetric geometry with respect to the last selected line or point Cria uma geometria simétrica em relação ao ponto ou última linha selecionada @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Esta versão do OCE/OCC não suporta operações com nós. É necessária a versão 6.9.0 ou superior. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Selecionar aresta(s) a partir do esboço. - - - - + + + + Dimensional constraint Restrição dimensional - - - + + + Only sketch and its support is allowed to select É permitido selecionar somente um esboço e seu suporte - + One of the selected has to be on the sketch Um dos selecionados tem que estar no esboço - - + + 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 A aresta selecionada não é um segmento de linha - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Os items selecionados não podem aceitar uma restrição horizontal! - + There are more than one fixed point selected. Select a maximum of one fixed point! Mais de um ponto fixo selecionado. Selecione um único ponto fixo! - + The selected item(s) can't accept a vertical constraint! Os itens selecionados não podem aceitar uma restrição vertical! - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Erro - + Select two or more points from the sketch. Selecione dois ou mais pontos no esboço. - - + + Select two or more vertexes from the sketch. Selecione dois ou mais vértices do esboço (sketch). - - + + Constraint Substitution Substituição de restrição - + Endpoint to endpoint tangency was applied instead. Uma tangência de ponto a ponto de extremidade foi aplicada como alternativa. - + Select vertexes from the sketch. Selecionar vértices a partir do esboço. - - + + 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! - + This constraint does not make sense for non-linear curves Esta restrição não faz sentido para curvas não-lineares - - - - - - + + + + + + Select the right things from the sketch. Selecione as coisas corretas no esboço. - - + + Point on B-spline edge currently unsupported. Ponto na aresta da Bspline atualmente sem suporte. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Selecione um ponto e várias curvas, ou uma curva e vários pontos. Você selecionou curvas %1 e %2 pontos. - - - - + + + + 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 Esta restrição só faz sentido num segmento de reta ou num par de pontos - + 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. - - + + Select at least two lines from the sketch. Selecione pelo menos duas linhas do esboço. - + Select a valid line Selecione uma linha válida - - + + The selected edge is not a valid line A aresta selecionada não é uma linha 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. @@ -2559,45 +2821,45 @@ 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). - + Wrong number of selected objects! perpendicular constraint Número errado de objetos selecionados! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Com 3 objetos, deve haver 2 curvas e 1 ponto. - - + + Cannot add a perpendicularity constraint at an unconnected point! Não é possível adicionar uma restrição de perpendicularidade num ponto não conectado! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular à aresta da Bspline atualmente sem suporte. - - + + One of the selected edges should be a line. Uma das arestas selecionadas deve ser uma linha. - + 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. @@ -2607,249 +2869,249 @@ 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). - + Wrong number of selected objects! tangent constraint Número errado de objetos selecionados! - - - + + + 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! - - - + + + Tangency to B-spline edge currently unsupported. Tangência à aresta da Bspline atualmente sem suporte. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Selecione um ou mais arcos ou círculos no esboço. - - + + Constrain equal Restringir igualdade - + Do you want to share the same radius for all selected elements? Deseja usar o mesmo raio para todos os elementos selecionados? - - + + Constraint only applies to arcs or circles. Restrição só aplicável a arcos ou círculos. - + Do you want to share the same diameter for all selected elements? Quer partilhar o mesmo diâmetro para todos os elementos selecionados? - - + + 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. - - + + Parallel lines Linhas paralelas - - + + An angle constraint cannot be set for two parallel lines. 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 Selecione duas ou mais arestas compatíveis - + Sketch axes cannot be used in equality constraints Eixos do sketch não podem ser usados em restrições de igualdade - + Equality for B-spline edge currently unsupported. Igualdade para aresta da Bspline atualmente sem suporte. - - + + Select two or more edges of similar type Selecione duas ou mais arestas de tipo semelhante - - - - - + + + + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Objetos selecionados não são geometria de apenas um esboço (sketch). - + Number of selected objects is not 3 (is %1). Número de objetos selecionados não é 3 (é %1). - - + + Select at least one ellipse and one edge from the sketch. Selecione pelo menos uma elipse e uma aresta do esboço. - + Sketch axes cannot be used in internal alignment constraint Eixos do esboço não podem ser usados para uma restrição de alinhamento interno - - + + Maximum 2 points are supported. Máximos 2 pontos são suportados. - - + + Maximum 2 lines are supported. Máximos 2 linhas são suportadas. - - + + Nothing to constrain Nada para restringir - - - - + + + + Extra elements Elementos extras - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Foram fornecidos mais elementos do que o possível para a elipse dada. Estes foram ignorados. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Não é possível restringir internamente uma elipse sobre um arco de elipse. Selecione apenas uma elipse ou um arco de elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Foram fornecidos mais elementos do que o possível para o arco de elipse dado. Estes foram ignorados. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Atualmente a geometria interna só é suportada para elipses ou arcos de elipse. O último elemento selecionado deve ser uma elipse ou um arco de elipse. @@ -2862,124 +3124,124 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois - + CAD Kernel Error Erro de Kernel de CAD - + None of the selected elements is an edge. Nenhum dos elementos selecionados é uma aresta. - - + + At least one of the selected objects was not a B-Spline and was ignored. Pelo menos um dos objetos selecionados não era uma B-Spline e foi ignorado. - - + + Wrong OCE/OCC version Versão errada do OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Esta versão do OCE/OCC não suporta operações com nós. Você precisa da versão 6.9.0 ou superior - - + + The selection comprises more than one item. Please select just one knot. A seleção engloba mais de um item. Por favor, selecione apenas um nó. - + Input Error Erro de entrada - - + + None of the selected elements is a knot of a B-spline Nenhum dos elementos selecionados é um nó de uma B-spline - - - - + + + + Select at least two edges from the sketch. Selecione pelo menos duas arestas do esboço. - - + + One selected edge is not connectable Uma aresta selecionada não é conectável - + Closing a shape formed by exactly two lines makes no sense. Fechar uma forma constituída por apenas duas linhas não faz sentido. - - - - - - - - + + + + + + + + Select elements from a single sketch. Selecione elementos de um esboço único. - + No constraint selected Nenhuma restrição selecionada - + At least one constraint must be selected Pelo menos uma restrição deve ser selecionada - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Uma construção simétrica requer pelo menos dois elementos geométricos, sendo o último elemento geométrico a referência para a construção da simetria. - + The last element must be a point or a line serving as reference for the symmetry construction. O último elemento deve ser um ponto ou uma linha, servindo como referência para a construção da simetria. - - + + A copy requires at least one selected non-external geometric element Uma cópia requer pelo menos um elemento geométrico não-externo selecionado - + Delete All Geometry Apagar toda a geometria - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Apagar todas as restrições - + Are you really sure you want to delete all the constraints? Tem certeza de que pretende eliminar todas as restrições? @@ -3040,62 +3302,62 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois SketcherGui::ConstraintView - + Change value Alterar Valor - + Toggle to/from reference Alternar para/de referência - + Deactivate Deactivate - + Activate Activate - + Show constraints Mostrar restrições - + Hide constraints Ocultar restrições - + Rename Renomear - + Center sketch Centrar o esboço (sketch) - + Delete Apagar - + Swap constraint names Trocar nomes da restrição - + Unnamed constraint Restrição sem nome - + Only the names of named constraints can be swapped. Apenas os nomes das restrições nomeadas podem ser trocados. @@ -3118,8 +3380,8 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Inserir raio - - + + Radius: Raio: @@ -3130,8 +3392,8 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Inserir diâmetro - - + + Diameter: Diâmetro: @@ -3159,24 +3421,24 @@ Combinações possíveis: duas curvas; um ponto de extremidade e uma curva; dois Comprimento: - - + + Change radius Alterar raio - - + + Change diameter Alterar diâmetro - + Refractive index ratio Rácio do índice de refração - + Ratio n2/n1: Rácio n2/n1: @@ -4047,13 +4309,13 @@ No entanto, nenhuma restrição foi encontrada nos pontos de extremidade.Extended information - + Constraints Constraints - - + + Error Erro @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Esboço vazio - + Over-constrained sketch Esboço demasiado restrito (constrangido) - - - + + + (click to select) (clique para selecionar) - + Sketch contains conflicting constraints O esboço contém restrições em conflito - + Sketch contains redundant constraints O esboço contém restrições redundantes - + Fully constrained sketch Esboço totalmente restrito - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Resolvido em %1 segundo - + Unsolved (%1 sec) Não resolvido (%1 s) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Alterna entre mostrar e ocultar o pente de curvatura para todas as B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Diminui a multiplicidade do nó selecionado de uma B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Alterna entre mostrar e ocultar o grau para todas os B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Aumenta a multiplicidade do nó selecionado de uma B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Alterna entre mostrar e ocultar a multiplicidade de nós para todas as B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Alterna entre mostrar e ocultar os polígonos de controle para todas as B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Cria um clone da geometria tomando como referência o último ponto selecionado @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Clonar - + Copy Copiar - + Move Mover @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixar o diâmetro de um círculo ou arco @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Corrigir o raio de um círculo ou arco @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Cria uma cópia simples da geometria tomando como referência o último ponto selecionado @@ -4860,8 +5131,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Move a geometria tomando como referência o último ponto selecionado diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.qm index fbb1200bd7..c3a270438c 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts index dbf91a33c7..5fd6f73d93 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ro.ts @@ -55,6 +55,24 @@ Comută între afişarea şi ascunderea multiplicității de nod pentru toate B-spline-urile + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clonă - + Creates a clone of the geometry taking as reference the last selected point Creează o clona a geometriei luând ca referinţă ultimul punct selectat @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Afișare/Ascundere layer de informaţii B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copiere - + Creates a clone of the geometry taking as reference the last selected point Creează o clona a geometriei luând ca referinţă ultimul punct selectat @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifică multiplicitatea nodului - + Modifies the multiplicity of the selected knot of a B-spline Modifică multiplicitatea nodului selectat a unui B-spline - + Increase knot multiplicity Creşte multiplicitatea nodului - + Decrease knot multiplicity Reduce multiplicitatea nodului @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Constrângere coincidentă - + Create a coincident constraint on the selected item Crează o constrângere coincidentă pe obiectul selectat @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrângere diametru - + Fix the diameter of a circle or an arc Fixează diametrul unui cerc sau arc de cerc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Distanţă constrânsă - + Fix a length of a line or the distance between a line and a vertex Bate în cuie lungimea unei linii sau distanţa dintre o linie şi un vârf @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Bate în cuie distanţa orizontală dintre doua puncte sau capete de linii @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Bate în cuie distanţa verticală dintre două puncte sau capete de linie @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Constrângere orizontală - + Create a horizontal constraint on the selected item Crează o constrângere orizontală pentru obiectul selectat @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrânge un element să fie aliniat cu geometria internă a altui element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Constrângere fixă - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Constrângere paralelă - + Create a parallel constraint between two lines Crează o constrângere paralelă între două linii @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Constrângere perpendiculară - + Create a perpendicular constraint between two lines Crează o constrângere perpendiculară între două linii @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Constrânge punct pe obiect - + Fix a point onto an object Fixează un punct de un obiect @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Rază constrânsă - + Fix the radius of a circle or an arc Fixează raza unui cerc sau arc @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Constrângere de refracție (Legea lui 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Constrângere simetrică - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Constrângere tangentă - + Create a tangent constraint between two entities Crează o constrângere tangentă între două entităţi @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Constrângere verticală - + Create a vertical constraint on the selected item Crează o constrângere verticală pe obiectul selectat @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copiere - + Creates a simple copy of the geometry taking as reference the last selected point Creează o clona a geometriei luând ca referinţă ultimul punct selectat @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Reduce multiplicitatea nodului - + Decreases the multiplicity of the selected knot of a B-spline Descrește multiplicitatea nodului selectat a unui B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Măriâi gradul curbei Bezier B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Creşte multiplicitatea nodului - + Increases the multiplicity of the selected knot of a B-spline Creşte multitudinea de nodul selectat de un B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Mută - + Moves the geometry taking as reference the last selected point Mutați ultimul punct la geometria luată ca referință @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Afișează/Ascunde geometria internă - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetrie - + Creates symmetric geometry with respect to the last selected line or point Creează o geometrie simetrică în raport cu ultima linie selectată sau punct selectat @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Această versiune de OCE/OCC nu suportă operarea nodului. Ai nevoie de versiunea 6.9.0 sau mai recentă. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + 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. 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. 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. The multiplicity cannot be increased beyond the degree of the 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Selectati margini din schita. - - - - + + + + Dimensional constraint Constrângere dimensională - - - + + + Only sketch and its support is allowed to select Doar schita si elementele asociate poate selecta - + One of the selected has to be on the sketch Unul din elementele selectate trebuie sa fie in schita - - + + Select an edge from the sketch. Selectati o margine din schita. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Constrangere imposibila - - - - + + + + The selected edge is not a line segment Marginea selectata nu este un segment - - - - - - + + + + + + Double constraint Constrangere dubla - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Obiectele selectate nu accepta o constrangere orizontala! - + There are more than one fixed point selected. Select a maximum of one fixed point! Există mai mult de un punct fix selectat. Selectaţi maxim un punct fix! - + The selected item(s) can't accept a vertical constraint! Obiectele selectate nu accepta o constrangere verticala! - + 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. 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Selectaţi o margine din Schiță. - + Select only edges from the sketch. Selectaţi o margine din Schiță. - - - - - - - - + + + + + + + + Error Eroare - + Select two or more points from the sketch. Selectaţi două sau mai multe puncte din schita. - - + + Select two or more vertexes from the sketch. Selectaţi două sau mai multe noduri din schiță. - - + + Constraint Substitution Substituire de constrângere - + Endpoint to endpoint tangency was applied instead. Punct final la punctul final de tangenţă a fost aplicat în schimb. - + Select vertexes from the sketch. Selectati varfuri din schita. - - + + 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! - + This constraint does not make sense for non-linear curves Această restricţie nu are sens pentru curbe non-liniare - - - - - - + + + + + + Select the right things from the sketch. Selectaţi lucruri corecte din schiță. - - + + Point on B-spline edge currently unsupported. Punct pe muchia curbei B-spline care nu este suportat. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Selectaţi fie un punct şi mai multe curbe, sau o curba şi mai multe puncte. Aţi selectat %1 curbe şi %2 puncte. - - - - + + + + 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! 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 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! Cannot add a fixed y-coordinate constraint on the origin point! - + Select two or more lines from the sketch. Selectati doua sau mai multe linii din schita. - - + + Select at least two lines from the sketch. Selectati cel putin doua linii din schita. - + Select a valid line Selectaţi o linie valida - - + + 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. @@ -2558,45 +2820,45 @@ 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ță. - + Wrong number of selected objects! perpendicular constraint Număr greșit al obiectelor selectate! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Cu 3 obiecte, trebuie să existe 2 curbe și un punct. - - + + Cannot add a perpendicularity constraint at an unconnected point! Nu pot adauga o constrângere perpendiculară pentru un punct neconectat! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular pe marginea B-spline neacceptată în prezent. - - + + One of the selected edges should be a line. Una dintre marginile selectate trebuie sa fie o linie. - + 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. @@ -2604,249 +2866,249 @@ 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ță. - + Wrong number of selected objects! tangent constraint Număr greșit al obiectelor selectate! - - - + + + Cannot add a tangency constraint at an unconnected point! Nu pot adauga constrângere tangenţială pentru un punct neconectat! - - - + + + Tangency to B-spline edge currently unsupported. Tangenţă la marginea B-spline neacceptată în prezent. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Selectaţi doar un arc sau un cerc din schiţă. - - + + Constrain equal Egalitate constransă - + Do you want to share the same radius for all selected elements? Vreți să se folosească aceeaşi rază pentru toate elementele selectate? - - + + Constraint only applies to arcs or circles. Restricţia se aplică numai pentru arce de cerc sau cercuri. - + Do you want to share the same diameter for all selected elements? Vreți să se folosească același diametru pentru toate elementele selectate? - - + + 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. - - + + Parallel lines Linii paralele - - + + An angle constraint cannot be set for two parallel lines. 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ângeri 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 acelaşi tip - - - - - + + + + + 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. Cannot add a symmetry constraint between a line and its end points. - - + + 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Obiectele selectate nu sunt geometria doar unui sketch. - + Number of selected objects is not 3 (is %1). Numărul obiectelor selectate nu este egal cu 3 (este %1). - - + + Select at least one ellipse and one edge from the sketch. Selectaţi cel puţin o elipsă şi o margine din schiță. - + Sketch axes cannot be used in internal alignment constraint Axele schiţei nu pot fi folosite în constrângeri de aliniere internă - - + + Maximum 2 points are supported. Se acceptă maxim 2 puncte. - - + + Maximum 2 lines are supported. Se acceptă maxim 2 linii. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Elemente suplimentare - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Ați furnizat mai multe elemente decât necesare pentru elipsa dată. Ele au fost ignorate. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Ați furnizat mai multe elemente decât necesare pentru arcul de elipsa dat. Ele au fost ignorate. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. În prezent, geometria internă este acceptată numai pentru elipsă şi arc de elipsă. Ultimul element selectat trebuie să fie o elipsă sau un arc de elipsă. @@ -2859,124 +3121,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Eroare a nucleului CAD - + None of the selected elements is an edge. Nici unul dintre obiectele selectate nu este o muchie. - - + + At least one of the selected objects was not a B-Spline and was ignored. Cel puțin unul dintre obiectele selectate nu a fost o curbă Bezier (B-Spline) și a fost ignorat. - - + + Wrong OCE/OCC version Versiune greșită OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Această versiune OCE / OCC nu suportă funcționarea nodurilor. Utilizați versiunea 6.9.0 sau o versiune superioară - - + + The selection comprises more than one item. Please select just one knot. Selecția include mai mult de un element. Selectați numai un singur nod. - + Input Error Eroarea de introducere a datelor - - + + None of the selected elements is a knot of a B-spline Nici unul dintre elementele selectate este un nod de curbă B-spline - - - - + + + + Select at least two edges from the sketch. Selectaţi cel puţin două margini din schiță. - - + + One selected edge is not connectable O margine selectat nu se poate conecta la - + Closing a shape formed by exactly two lines makes no sense. Închiderea unei forme formate din doar 2 linii nu are nici un sens. - - - - - - - - + + + + + + + + Select elements from a single sketch. Selectaţi elemente dintr-o singură schiță. - + No constraint selected Nici o restricţie selectată - + At least one constraint must be selected Cel puţin o constrângere trebuie să fie selectată - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. O construcţie simetric necesită cel puţin două elemente geometrice, ultimul element geometric fiind referinţa pentru construirea simetriei. - + The last element must be a point or a line serving as reference for the symmetry construction. Ultimul element trebuie să fie un punct sau o linie care serveşte drept referinţă pentru construirea simetriei. - - + + A copy requires at least one selected non-external geometric element O copie necesită cel puţin un element selectat geometrice non-extern - + Delete All Geometry Ștergeți toate elementele de geometrie - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Șterge toate constrângerile - + Are you really sure you want to delete all the constraints? Sunteți foarte sigur că doriți să ștergeți toate constrângerile? @@ -3037,62 +3299,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Modificaţi valoarea - + Toggle to/from reference Activează/dezactivează o referință - + Deactivate Deactivate - + Activate Activate - + Show constraints Arătați constrângerile - + Hide constraints Ascunde constrângerile - + Rename Redenumire - + Center sketch Centrați schița - + Delete Ştergeţi - + Swap constraint names Inversați numele constrângerilor - + Unnamed constraint Cosntrângere fără denumire - + Only the names of named constraints can be swapped. Numai numele constrângerilor denumite pot fi permutate între ele. @@ -3115,8 +3377,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Introduceți raza - - + + Radius: Raza: @@ -3127,8 +3389,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Înserează diamtreul - - + + Diameter: Diametru: @@ -3156,24 +3418,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Lungime: - - + + Change radius Schimbați raza - - + + Change diameter Schimbă diamtrul - + Refractive index ratio Procentul indicelui de refracție - + Ratio n2/n1: Raportul n2/n1: @@ -4042,13 +4304,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error Eroare @@ -4407,104 +4669,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Schita goala - + Over-constrained sketch Schiță Supra-constrânsă - - - + + + (click to select) (apăsați pentru selectare) - + Sketch contains conflicting constraints Schiţa conţine constrângeri contradictorii - + Sketch contains redundant constraints Schiţă conţine constrângeri redundante - + Fully constrained sketch Schita constranse in totalitate - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Rezolvare in %1 secunde - + Unsolved (%1 sec) Nerezolvata (%1 sec) @@ -4512,8 +4774,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Comută între afişarea şi ascunderea gradului de curvatură pentru toate B-spline-urile @@ -4521,8 +4783,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Descrește multiplicitatea nodului selectat a unui B-spline @@ -4530,8 +4792,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Comută între afişarea şi ascunderea gradului de curbură pentru toate B-spline-urile @@ -4539,8 +4801,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Creşte multitudinea de nodul selectat de un B-spline @@ -4548,17 +4810,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Comută între afişarea şi ascunderea multiplicității de nod pentru toate B-spline-urile + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Comută între afişarea şi ascunderea poligoane de control pentru toate B-spline-urile @@ -4566,8 +4837,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creează o clona a geometriei luând ca referinţă ultimul punct selectat @@ -4575,17 +4846,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Clonă - + Copy Copiere - + Move Mută @@ -4593,8 +4864,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixează diametrul unui cerc sau arc de cerc @@ -4602,8 +4873,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixează raza unui cerc sau arc @@ -4611,8 +4882,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creează o clona a geometriei luând ca referinţă ultimul punct selectat @@ -4855,8 +5126,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mutați ultimul punct la geometria luată ca referință diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.qm index 95ce4343d7..784e0d17ce 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts index 254beb89f0..2316f1fa62 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_ru.ts @@ -55,6 +55,24 @@ Переключение между Показать/Скрыть узлы для всех B-сплайнов + + CmdSketcherBSplinePoleWeight + + + Sketcher + Эскизирование + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Эскизирование - + Clone Клонировать - + Creates a clone of the geometry taking as reference the last selected point Создает копию геометрии, взяв за основу последнюю выделенную точку @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Эскизирование - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Эскизирование - - + Show/hide B-spline information layer Показать/скрыть информационный уровень В-сплайн - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Эскизирование - + Constrain arc or circle Ограничить дугу или окружность - + Constrain an arc or a circle Ограничить дугу или окружность - + Constrain radius Ограничение радиуса - + Constrain diameter Ограничить диаметр @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Эскизирование - + Copy Копировать - + Creates a clone of the geometry taking as reference the last selected point Создает копию геометрии, взяв за основу последнюю выделенную точку @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Эскизирование - + Modify knot multiplicity Изменение кратности узлов - + Modifies the multiplicity of the selected knot of a B-spline Изменение кратности выбранного узла B-сплайна - + Increase knot multiplicity Увеличение кратности узлов - + Decrease knot multiplicity Уменьшение кратности узлов @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Эскизирование - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Эскизирование - + Constrain angle Ограничить угол - + Fix the angle of a line or the angle between two lines Фиксировать угол отрезка или угол между двумя отрезками @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Эскизирование - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Эскизирование - + Constrain coincident Ограничить совпадение - + Create a coincident constraint on the selected item Создать ограничение совпадения для выбранных элементов @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Эскизирование - + Constrain diameter Ограничить диаметр - + Fix the diameter of a circle or an arc Задать диаметр окружности или дуги @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Эскизирование - + Constrain distance Ограничить расстояние - + Fix a length of a line or the distance between a line and a vertex Зафиксировать длину линии, расстояние между точками, или расстояние между линией и точкой @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Эскизирование - + Constrain horizontal distance Ограничение расстояния по горизонтали - + Fix the horizontal distance between two points or line ends Фиксировать расстояние по горизонтали между двумя точками или концами отрезка @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Эскизирование - + Constrain vertical distance Ограничение расстояния по вертикали - + Fix the vertical distance between two points or line ends Фиксировать расстояние по вертикали между двумя точками или концами отрезка @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Эскизирование - + Constrain equal Ограничение равности - + Create an equality constraint between two lines or between circles and arcs Создать ограничение равенства между двумя отрезками или между окружностями и дугами @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Эскизирование - + Constrain horizontally Ограничить горизонтально - + Create a horizontal constraint on the selected item Создать ограничение горизонтальности для выбранных линий @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Эскизирование - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Привязать элемент к внутренней геометрии другого элемента @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Эскизирование - + Constrain lock Ограничение положения - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Эскизирование - + Constrain parallel Ограничение параллельности - + Create a parallel constraint between two lines Создать ограничение параллельности между двумя линиями @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Эскизирование - + Constrain perpendicular Ограничить перпендикулярность - + Create a perpendicular constraint between two lines Создать ограничение перпендикулярности между двумя линиями @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Эскизирование - + Constrain point onto object Зафиксировать точку на объекте - + Fix a point onto an object Привязать точку к объекту @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Эскизирование - + Constrain radius Ограничение радиуса - + Fix the radius of a circle or an arc Зафиксировать радиус окружности или дуги @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Эскизирование - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Эскизирование - + Constrain symmetrical Ограничение симметричности - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Эскизирование - + Constrain tangent Ограничение касательности - + Create a tangent constraint between two entities Создать ограничение касательности между двумя объектами @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Эскизирование - + Constrain vertically Ограничение вертикальности - + Create a vertical constraint on the selected item Создать ограничение вертикальности для выделенных линий @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Эскизирование - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Эскизирование - + Copy Копировать - + Creates a simple copy of the geometry taking as reference the last selected point Создает простую копию геометрии, взяв за основу последнюю выделенную точку @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Эскизирование - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Эскизирование - + Decrease knot multiplicity Уменьшение кратности узлов - + Decreases the multiplicity of the selected knot of a B-spline Уменьшение кратности выбранного узла B-сплайна @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Эскизирование - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Эскизирование - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Эскизирование - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Увеличить степень B-сплайна @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Эскизирование - + Increase knot multiplicity Увеличение кратности узлов - + Increases the multiplicity of the selected knot of a B-spline Увеличение кратности выбранного узла B-сплайна @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Эскизирование - + Move Переместить - + Moves the geometry taking as reference the last selected point Перемещает геометрии, принимая в качестве ориентира последнюю выбранную точку @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Эскизирование - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Создает прямоугольный массив из геометрии, взяв за основу последнюю выделенную точку @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Эскизирование - + Show/hide internal geometry Показать/скрыть внутреннюю геометрию - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Эскизирование - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Эскизирование - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Эскизирование - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Эскизирование - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Эскизирование - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Эскизирование - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Эскизирование - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Эскизирование - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Эскизирование - + Symmetry Симметрия - + Creates symmetric geometry with respect to the last selected line or point Создает симметричную геометрию относительно последней выбранной линии или точки @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Эскизирование - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Эскизирование - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. Не удалось рассчитать пересечение кривых. Попробуйте добавить ограничение совпадения между вершинами кривых, которые вы намерены скруглить. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Эта версия OCE / OCC не поддерживает операции с узлами. Требуется версия 6.9.0 или выше. - + 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 неспособен уменьшить кратность в пределах максимального допуска. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Выберите элементы из эскиза. - - - - + + + + Dimensional constraint Размерное ограничение - - - + + + Only sketch and its support is allowed to select Можно выбирать только элементы эскиза и его подоснову - + One of the selected has to be on the sketch Один из выбранных должен находиться на эскизе - - + + 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! Выбранная линия уже имеет Блочное ограничение! - + The selected item(s) can't accept a horizontal constraint! На выбранные элемент(ы) нельзя наложить ограничение горизонтальности! - + There are more than one fixed point selected. Select a maximum of one fixed point! Выбрано несколько фиксированных точек. Выберите максимум одну фиксированную точку! - + The selected item(s) can't accept a vertical 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 Неправильный статус решателя @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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 only edges from the sketch. Выберите линии из эскиза. - - - - - - - - + + + + + + + + Error Ошибки - + Select two or more points from the sketch. Выберите две или более точек на эскизе. - - + + Select two or more vertexes from the sketch. Выделите две или более точек на эскизе. - - + + Constraint Substitution Замена ограничения - + Endpoint to endpoint tangency was applied instead. Вместо конечной точки применена касательная. - + Select vertexes from the sketch. Выберите точки на эскизе. - - + + Select exactly one line or one point and one line or two points from the sketch. Выделите либо один отрезок, либо точку и отрезок, либо две точки. - + Cannot add a length constraint on an axis! Нельзя наложить ограничение длины на ось! - + This constraint does not make sense for non-linear curves Это ограничение не имеет смысла для нелинейных кривых - - - - - - + + + + + + Select the right things from the sketch. Выберите нужные объекты из эскиза. - - + + Point on B-spline edge currently unsupported. Точка на краю B-сплайна в настоящее время не поддерживается. - - + + 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. Ни одна из выбранных точек не была ограничена соответствующими кривыми либо потому, что они являются частями одного и того же элемента, либо потому, что они являются внешней геометрией. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Выберите одну точку и несколько кривых или одну кривую и несколько точек. Вы выбрали %1 кривых и %2 точек. - - - - + + + + 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. Выберите два или более отрезков эскиза. - - + + Select at least two lines from the sketch. Нужно выделить как минимум две линии. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Допустимы следующие комбинации: две кривые; концевая точка и кривая; две концевых точки; две кривых и точка. - + Select some geometry from the sketch. perpendicular constraint Выделите геометрические элементы на эскизе. - + Wrong number of selected objects! perpendicular constraint Неправильное количество выбранных объектов! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint С 3 объектами должно быть 2 кривых и 1 точка. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не удаётся наложить ограничение перпендикулярности на точку, так как выделенная точка не является концом кривой. - - - + + + Perpendicular to B-spline edge currently unsupported. Перпендикуляр к кромке B-сплайна в настоящее время не поддерживается. - - + + One of the selected edges should be a line. Один из выбранных элементов должен быть линией. - + 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. @@ -2605,249 +2867,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Существует несколько способов применения этого ограничения. Допустимые комбинации: две кривые; конечная точка и кривая; две конечные точки; две кривые и точка. - + Select some geometry from the sketch. tangent constraint Выделите геометрические элементы на эскизе. - + Wrong number of selected objects! tangent constraint Неправильное количество выбранных объектов! - - - + + + Cannot add a tangency constraint at an unconnected point! Не удаётся наложить ограничение касательности на точку, так как выделенная точка не является концом кривой. - - - + + + Tangency to B-spline edge currently unsupported. Касательность к краю B-сплайна в настоящее время не поддерживается. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Применена касательность конечной точки к конечной точке. Ограничение совпадения было удалено. - - - - + + + + Select one or more arcs or circles from the sketch. Сначала выделите одну или несколько окружностей или дуг окружности из эскиза. - - + + Constrain equal Ограничение равности - + Do you want to share the same radius for all selected elements? Сделать ли радиусы всех выбранных окружностей и дуг равными? - - + + Constraint only applies to arcs or circles. Ограничение применимо только к дугам или окружностям. - + Do you want to share the same diameter for all selected elements? Сделать ли диаметры всех выбранных окружностей и дуг равными? - - + + Select one or two lines from the sketch. Or select two edges and a point. Нужно выделить одну линию, или две линии, или две кривые и точку. - - + + Parallel lines Параллельные линии - - + + An angle constraint cannot be set for two parallel lines. Задать ограничение угла между параллельными линиями невозможно. - + 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. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Выбранные объекты не являются только геометрией из одного эскиза. - + Number of selected objects is not 3 (is %1). Нужно выделить три объекта, а выделено %1. - - + + Select at least one ellipse and one edge from the sketch. Выделите хотя бы один эллипс и одну линию из эскиза. - + Sketch axes cannot be used in internal alignment constraint Оси эскиза нельзя привязывать к внутренней геометрии - - + + Maximum 2 points are supported. К эллипсу можно привязать не более двух точек. - - + + Maximum 2 lines are supported. К эллипсу можно привязать не более двух линий. - - + + Nothing to constrain Нечего ограничивать - - - - + + + + Extra elements Слишком много элементов - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Предоставлено больше элементов, чем осталось свободной внутренней геометрии. Лишние элементы были проигнорированы. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Вы не можете внутренне ограничить дугу эллипса другой дугой эллипса. Выберите только одну дугу эллипса. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Нельзя ограничить эллипс дугой эллипса. В выделении может быть максимум один эллипс или максимум одна дуга эллипса. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Предоставлено больше элементов, чем осталось свободной внутренней геометрии. Лишние элементы были проигнорированы. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Внутренняя геометрия доступна только для эллипсов и дуг эллипса. Эллипс/дуга эллипса должна быть выделена в последнюю очередь. @@ -2860,124 +3122,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Ошибка ядра CAD - + None of the selected elements is an edge. Ни один из выбранных элементов не является ребром. - - + + At least one of the selected objects was not a B-Spline and was ignored. По крайней мере один из выбранных объектов не B-сплайн и был проигнорирован. - - + + Wrong OCE/OCC version Неверная версия OCE/OCC - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Эта версия OCE / OCC не поддерживает операции с узлами. Требуется версия 6.9.0 или выше - - + + The selection comprises more than one item. Please select just one knot. Выбор состоит из нескольких элементов. Пожалуйста, выберите только один узел. - + Input Error Ошибка ввода - - + + None of the selected elements is a knot of a B-spline Ни один из выбранных элементов не является узлом B-сплайна - - - - + + + + Select at least two edges from the sketch. Нужно выделить как минимум два элемента из эскиза. - - + + One selected edge is not connectable Какой-то из выделенных элементов не имеет концевых точек. - + Closing a shape formed by exactly two lines makes no sense. Вы пытаетесь сделать двухугольник! - - - - - - - - + + + + + + + + Select elements from a single sketch. Выделите элементы из одного эскиза. - + No constraint selected Не выделено ограничений - + At least one constraint must be selected Должно быть выделено хотя бы одно ограничение. - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Симметричная конструкция требует по крайней мере двух геометрических элементов, последний геометрический элемент является эталоном для построения симметрии - + The last element must be a point or a line serving as reference for the symmetry construction. Последний элемент должен быть точкой или линией, служащей в качестве ориентира для построения симметрии. - - + + A copy requires at least one selected non-external geometric element Для копирования требуется хотя бы один выбранный не внешний геометрический элемент - + Delete All Geometry Удалить всю геометрию - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Удалить все ограничения - + Are you really sure you want to delete all the constraints? Вы уверены, что хотите удалить все ограничения? @@ -3038,62 +3300,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Изменить значение - + Toggle to/from reference Ссылка На / от - + Deactivate Деактивировать - + Activate Aктивировать - + Show constraints Показать ограничения - + Hide constraints Скрыть ограничения - + Rename Переименовать - + Center sketch Центр эскиза - + Delete Удалить - + Swap constraint names Изменить имена ограничений - + Unnamed constraint Неименованные ограничения - + Only the names of named constraints can be swapped. Только имена именованных ограничений могут быть заменены. @@ -3116,8 +3378,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Введите радиус - - + + Radius: Радиус: @@ -3128,8 +3390,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Введите диаметр - - + + Diameter: Диаметр: @@ -3157,24 +3419,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Длина: - - + + Change radius Изменить радиус - - + + Change diameter Изменить диаметр - + Refractive index ratio Отношение показателей преломления - + Ratio n2/n1: Отношение n2/n1: @@ -4042,13 +4304,13 @@ However, no constraints linking to the endpoints were found. Расширенная информация - + Constraints Ограничения - - + + Error Ошибки @@ -4407,104 +4669,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: Пожалуйста, удалите следующие избыточные ограничения: - + Empty sketch Эскиз не содержащий элементов - + Over-constrained sketch Чрезмерно ограниченный эскиз - - - + + + (click to select) (выделить) - + Sketch contains conflicting constraints Эскиз с конфликтующими ограничениями - + Sketch contains redundant constraints Эскиз с избыточными ограничениями - + Fully constrained sketch Эскиз не содержит степеней свободы - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Недостаточно ограниченный эскиз с <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 оставшейся</span></a> степенью свободы - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Недостаточно ограниченный эскиз с <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 оставшимися</span></a> степенями свободы - + Solved in %1 sec Обсчитан за %1 сек - + Unsolved (%1 sec) Не решается (%1 сек) @@ -4512,8 +4774,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Показать/скрыть кривизну всех B-сплайнов @@ -4521,8 +4783,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Уменьшение кратности выбранного узла B-сплайна @@ -4530,8 +4792,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Переключение между показом и скрытием степени для всех B-сплайнов @@ -4539,8 +4801,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Увеличение кратности выбранного узла B-сплайна @@ -4548,17 +4810,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Переключение между Показать/Скрыть узлы для всех B-сплайнов + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Показать/скрыть управляющие полигоны всех B-сплайнов @@ -4566,8 +4837,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Создает копию геометрии, взяв за основу последнюю выделенную точку @@ -4575,17 +4846,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Клонировать - + Copy Копировать - + Move Переместить @@ -4593,8 +4864,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Задать диаметр окружности или дуги @@ -4602,8 +4873,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Зафиксировать радиус окружности или дуги @@ -4611,8 +4882,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Создает простую копию геометрии, взяв за основу последнюю выделенную точку @@ -4855,8 +5126,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Перемещает геометрии, принимая в качестве ориентира последнюю выбранную точку diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.qm index e8ee1f6db6..c0cdf92ec8 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.ts index 672486c5c4..ac6edae569 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sk.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Klonuj - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Uzamknúť priemer - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Kópia - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Väzobný uhol - + Fix the angle of a line or the angle between two lines Stanoviť uhol čiary alebo uhol medzi dvoma čiarami @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Obmedziť zhodnosť - + Create a coincident constraint on the selected item Vytvoriť zhodné obmedzenie pre vybrané položky @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Obmedziť vzdialenosť - + Fix a length of a line or the distance between a line and a vertex Stanoviť dĺžku čiary alebo vzdialenosť medzi čiarou a vrcholom @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Stanoviť horizontálnu vzdialenosť medzi dvoma bodmi alebo priamkami @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Stanoviť vertikálnu vzdialenosť medzi dvoma bodmi alebo priamkami @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Obmedziť rovnaké - + Create an equality constraint between two lines or between circles and arcs Vytvoriť obmedzenie rovnosti medzi dvoma čiarami alebo kružnicami a oblúkmi @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Obmedziť vodorovne - + Create a horizontal constraint on the selected item Vytvoriť horizontálne obmedzenie pre vybratú položku @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Zámok obmedzenia - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Obmedziť paralelné - + Create a parallel constraint between two lines Vytvoriť paralelné obmedzenie medzi dvoma čiarami @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Constrain perpendicular - + Create a perpendicular constraint between two lines Vytvoriť kolmé obmedzenie medzi dvoma čiarami @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Obmedziť bod na objekt - + Fix a point onto an object Stanoviť bod na objekt @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Uzamknúť priemer - + Fix the radius of a circle or an arc Stanoviť polomer kružnice alebo oblúka @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Constrain symmetrical - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Constrain tangent - + Create a tangent constraint between two entities Vytvoriť dotyčnicové obmedzenie medzi dvoma subjektami @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Obmedziť vertikálne - + Create a vertical constraint on the selected item Vytvoriť vertikálne obmedzenie pre vybratú položku @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Kópia - + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Presunúť - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Zobraziť / skryť vnútornú geometriu - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Symmetry - + Creates symmetric geometry with respect to the last selected line or point Creates symmetric geometry with respect to the last selected line or point @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Select edge(s) from the sketch. - - - - + + + + Dimensional constraint Dimensional constraint - - - + + + Only sketch and its support is allowed to select Vybrať si môžete len náčrt a jeho podporu - + One of the selected has to be on the sketch One of the selected has to be on the sketch - - + + Select an edge from the sketch. Z náčrtu vybrať hrany. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Obmedzenie nie je možné - - - - + + + + The selected edge is not a line segment The selected edge is not a line segment - - - - - - + + + + + + Double constraint Dvojité obmedzenie - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! The selected item(s) can't accept a horizontal constraint! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! The selected item(s) can't accept a vertical 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Chyba - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Select two or more vertexes from the sketch. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Z náčrtu vybrať vrcholy. - - + + Select exactly one line or one point and one line or two points from the sketch. Select exactly one line or one point and one line or two points from the sketch. - + Cannot add a length constraint on an axis! Cannot add a length constraint on an axis! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Select exactly one line or up to two points from the sketch. - + Cannot add a horizontal length constraint on an axis! 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 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. Select two or more lines from the sketch. - - + + Select at least two lines from the sketch. Select at least two lines from the sketch. - + Select a valid line Select a valid line - - + + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. perpendicular constraint Select some geometry from the sketch. - + Wrong number of selected objects! perpendicular constraint Wrong number of selected objects! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint With 3 objects, there must be 2 curves and 1 point. - - + + Cannot add a perpendicularity constraint at an unconnected point! Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. One of the selected edges should be a line. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Select some geometry from the sketch. - + Wrong number of selected objects! tangent constraint Wrong number of selected objects! - - - + + + Cannot add a tangency constraint at an unconnected point! Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Select one or more arcs or circles from the sketch. - - + + Constrain equal Obmedziť rovnaké - + Do you want to share the same radius for all selected elements? Do you want to share the same radius for all selected elements? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Select one or two lines from the sketch. Or select two edges and a point. - - + + Parallel lines Parallel lines - - + + An angle constraint cannot be set for two parallel lines. An angle constraint cannot be set for two parallel lines. - + Cannot add an angle constraint on an axis! Cannot add an angle constraint on an axis! - + Select two edges from the sketch. 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. 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! 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Selected objects are not just geometry from one sketch. - + Number of selected objects is not 3 (is %1). Number of selected objects is not 3 (is %1). - - + + Select at least one ellipse and one edge from the sketch. Select at least one ellipse and one edge from the sketch. - + Sketch axes cannot be used in internal alignment constraint Sketch axes cannot be used in internal alignment constraint - - + + Maximum 2 points are supported. Maximum 2 points are supported. - - + + Maximum 2 lines are supported. Maximum 2 lines are supported. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Extra elements - - - + + + More elements than possible for the given ellipse were provided. These were ignored. More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Select at least two edges from the sketch. - - + + One selected edge is not connectable One selected edge is not connectable - + Closing a shape formed by exactly two lines makes no sense. Closing a shape formed by exactly two lines makes no sense. - - - - - - - - + + + + + + + + Select elements from a single sketch. Select elements from a single sketch. - + No constraint selected No constraint selected - + At least one constraint must be selected At least one constraint must be selected - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Zmeňte hodnotu - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Premenovať - + Center sketch Center sketch - + Delete Odstrániť - + Swap constraint names Swap constraint names - + Unnamed constraint Unnamed constraint - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert radius - - + + Radius: Polomer: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Dĺžka: - - + + Change radius Change radius - - + + Change diameter Change diameter - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Pomer n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error Chyba @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< SketcherGui::ViewProviderSketch - + Edit sketch Upraviť náčrt - + A dialog is already open in the task panel Na paneli úloh je už dialóg otvorený - + Do you want to close this dialog? Chcete zatvoriť tento dialóg? - + Invalid sketch Neplatný náčrt - + Do you want to open the sketch validation tool? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. The sketch is invalid and cannot be edited. - + Please remove the following constraint: Please remove the following constraint: - + Please remove at least one of the following constraints: Please remove at least one of the following constraints: - + Please remove the following redundant constraint: Please remove the following redundant constraint: - + Please remove the following redundant constraints: Please remove the following redundant constraints: - + Empty sketch Prázdny náčrt - + Over-constrained sketch Nadmerne obmedzený náčrt - - - + + + (click to select) (kliknutím vyberte) - + Sketch contains conflicting constraints Sketch contains conflicting constraints - + Sketch contains redundant constraints Sketch contains redundant constraints - + Fully constrained sketch Fully constrained sketch - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Solved in %1 sec - + Unsolved (%1 sec) Unsolved (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klonuj - + Copy Kópia - + Move Presunúť @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Stanoviť polomer kružnice alebo oblúka @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.qm index 1adf28b979..a10d207b0b 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts index b57a21eea9..a1a630a338 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sl.ts @@ -11,7 +11,7 @@ Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Prikaži/skrij glavnikast prikaz ukrivljenosti B-zlepka @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + Prikaži/skrij stopnjo B-zlepka @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Prikaži/skrij večkratnost vozla B-zlepka @@ -55,6 +55,24 @@ Preklopi med prikazano in skrito večkratnostjo vozla za vse B-zlepke + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + Prikaži/skrij nadzorni mnogokotnik B-zlepka @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Kloniraj - + Creates a clone of the geometry taking as reference the last selected point Ustvari klon geometrije glede na zadnjo izbrano točko @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape - Close shape + Zapri obliko - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Ustvari zaprto obliko s povezavo končne točke prvine z začetno točko naslednje CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Prikaži/skrij podatkovni sloj B-zlepka - + Show/hide B-spline degree - Show/hide B-spline degree + Prikaži/skrij stopnjo B-zlepka - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + Prikaži/skrij nadzorni mnogokotnik B-zlepka - + Show/hide B-spline curvature comb - Show/hide B-spline curvature comb + Prikaži/skrij glavnikast prikaz ukrivljenosti B-zlepka - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + Prikaži/skrij večkratnost vozla B-zlepka + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Kopiraj - + Creates a clone of the geometry taking as reference the last selected point Ustvari klon geometrije glede na zadnjo izbrano točko @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Elipsa s periapsido, apoapsido in malim polmerom @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Spremeni večkratnost vozla - + Modifies the multiplicity of the selected knot of a B-spline Spremeni večkratnost izbranih vozlov B-zlepka - + Increase knot multiplicity Povečaj večkratnost vozla - + Decrease knot multiplicity Zmanjšaj večkratnost vozla @@ -408,35 +430,35 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges - Connect edges + Poveži robove - + Tie the end point of the element with next element's starting point - Tie the end point of the element with next element's starting point + Poveži končno točko prvine z začetno točko naslednje CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,35 +466,35 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block - Constrain block + Zaklep omejil - + Block constraint: block the selected edge from moving - Block constraint: block the selected edge from moving + Popolno omejilo: prepreči premikanje izbranih robov CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Omeji sovpadanje - + Create a coincident constraint on the selected item Ustvari omejitev sovpadanja na izbranem predmetu @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Omeji premer - + Fix the diameter of a circle or an arc Določi premer krožnice ali krožnega loka @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Omeji razdaljo - + Fix a length of a line or the distance between a line and a vertex Določi dolžino daljice ali razdaljo med daljico in ogliščem @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Določi vodoravno razdaljo med dvema točkama ali krajiščema @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Določi navpično razdaljo med dvema točkama ali krajiščema @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Omeji vodoravno - + Create a horizontal constraint on the selected item Ustvari vodoravno omejilo na izbranem predmetu @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment - Constrain internal alignment + Omejitev notranje poravnave - + Constrains an element to be aligned with the internal geometry of another element Omeji s poravnanostjo prvine na notranjo geometrijo drugega predmeta @@ -606,37 +628,36 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Zaklenjeno omejilo - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex - Lock constraint: create both a horizontal and a vertical distance constraint -on the selected vertex + Zaklepno omejilo: ustvari omejilo navpične in vodoravne razdalje izbranega oglišča CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Omeji z vzporednostjo - + Create a parallel constraint between two lines Ustvari omejilo vzporednosti med dvema črtama @@ -644,17 +665,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Omeji s pravokotnostjo - + Create a perpendicular constraint between two lines Ustvari pravokotno omejilo med dvema črtama @@ -662,17 +683,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Omeji točko na predmet - + Fix a point onto an object Pritrdi točko na predmet @@ -680,17 +701,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Omeji polmer - + Fix the radius of a circle or an arc Določi polmer kroga ali loka @@ -698,57 +719,57 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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. - 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 +in robom kot mejo. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Omeji s somernostjo - + Create a symmetry constraint between two points with respect to a line or a third point - Create a symmetry constraint between two points -with respect to a line or a third point + Ustvari omejitev somernosti med dvema točkama +glede na črto ali tretjo točko CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Omeji z dotikalnostjo - + Create a tangent constraint between two entities Ustvari dotikalno omejilo med dvema prvinama @@ -756,17 +777,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Omeji na navpičnost - + Create a vertical constraint on the selected item Ustvari navpično omejilo na izbranem predmetu @@ -774,35 +795,35 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline - Convert geometry to B-spline + Pretvori geometrijo v B-zlepek - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Pretvori izbrano geometrijo v B-zlepek CmdSketcherCopy - + Sketcher Sketcher - + Copy Kopiraj - + Creates a simple copy of the geometry taking as reference the last selected point Ustvari preprosto kopijo geometrije glede na zadnjo izbrano točko @@ -1278,35 +1299,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree - Decrease B-spline degree + Znižaj stopnjo B-zlepka - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + Zniža stopnjo B-zlepka CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Zmanjšaj večkratnost vozla - + Decreases the multiplicity of the selected knot of a B-spline Zmanjša večkratnost izbranih vozlov B-zlepka @@ -1314,37 +1335,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints - Delete all constraints + Izbriši vsa omejila - + Delete all constraints in the sketch - Delete all constraints in the sketch + Izbriši vsa omejila v očrtu CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry - Delete all geometry + Izbriši vso geometrijo - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Izbriši vso geometrijo in omejila trenutnega očrta razen zunanjih geometrij @@ -1362,7 +1383,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Uredi izbrani očrt. @@ -1404,17 +1425,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree - Increase B-spline degree + Povišaj stopnjo B-zlepka - + Increases the degree of the B-spline Poveča stopnjo B-zlepka @@ -1422,17 +1443,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Povečaj večkratnost vozla - + Increases the multiplicity of the selected knot of a B-spline Poveča večkratnost izbranih vozlov B-zlepka @@ -1452,7 +1473,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Končaj urejanje dejavnega očrta. @@ -1472,14 +1493,14 @@ with respect to a line or a third point Set the 'Support' of a sketch. First select the supporting geometry, for example, a face or an edge of a solid object, then call this command, then choose the desired sketch. - Set the 'Support' of a sketch. -First select the supporting geometry, for example, a face or an edge of a solid object, -then call this command, then choose the desired sketch. + Nastavi "Podporo" očrta. +Najprej izberite podporno geometrijo, npr. ploskev ali rob telesa, +nato prikličite ta ukaz in izberite željeni očrt. Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. - Some of the selected objects depend on the sketch to be mapped. Circular dependencies are not allowed. + Nekateri izbrani predmeti so odvisni od odslikave očrta. Krožne odvisnosti niso dopustne. @@ -1497,7 +1518,7 @@ then call this command, then choose the desired sketch. Create a new sketch from merging two or more selected sketches. - Create a new sketch from merging two or more selected sketches. + Z združevanjem dveh ali več izbranih očrtov ustvari nov očrt. @@ -1507,7 +1528,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Izberite najmanj dva očrta. @@ -1527,9 +1548,8 @@ then call this command, then choose the desired sketch. Create a new mirrored sketch for each selected sketch by using the X or Y axes, or the origin point, as mirroring reference. - Create a new mirrored sketch for each selected sketch -by using the X or Y axes, or the origin point, -as mirroring reference. + Iz vsakega izbranega očrta ustvari nov, prezrcaljen očrt +preko X ali Y osi, oz. preko izhodiščne točke. @@ -1539,23 +1559,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Izberite enega ali več očrtov. CmdSketcherMove - + Sketcher Sketcher - + Move Premakni - + Moves the geometry taking as reference the last selected point Premakne geometrijo glede na zadnjo izbrano točko @@ -1575,23 +1595,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Ustvari nov očrt. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array - Rectangular array + Pravokotna razpostavitev - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Ustvari pravokotni vzorec geometrije glede na zadnjo izbrano točko @@ -1612,162 +1632,162 @@ as mirroring reference. Place the selected sketch on one of the global coordinate planes. This will clear the 'Support' property, if any. - Place the selected sketch on one of the global coordinate planes. -This will clear the 'Support' property, if any. + Umestite izbrani očrt na eno izmed glavnih koordinatnih ravnin. +To bo izbrisalo lastnosti "Podpore", če sploh obstajajo. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Prikaži/Skrij notranjo geometrijo - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Prikaži vso notranjo geometrijo ali skrij neuporabljeno notranjo geometrijo CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints - Select conflicting constraints + Izberi omejila v sporu CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints - Select associated constraints + Izberi vezana omejila - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Izberi omejila, vezana na izbrane geometrijske prvine CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry - Select associated geometry + Izberi vezano geometrijo - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Izberi geometrijske prvine, vezane na izbrana omejila CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF - Select unconstrained DoF + Izberi neomejeno prostostno stopnjo - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Izberi geometrijske prvine, pri katerih reševalnik še vedno zazna neomejene prostostne stopnje. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis - Select horizontal axis + Izberite vodoravno os - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Izberite krajevno vodoravno os očrta CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin - Select origin + Izberite izhodišče - + Select the local origin point of the sketch - Select the local origin point of the sketch + Izberite krajevno izhodišče očrta CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints - Select redundant constraints + Izberi odvečna omejila CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis - Select vertical axis + Izberite navpično os - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Izberite krajevno navpično os očrta @@ -1785,7 +1805,7 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + V urejevalnem načinu prekini dejavno opravilo (risanje, omejevanje, ...). @@ -1809,17 +1829,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Somernost - + Creates symmetric geometry with respect to the last selected line or point Ustvari somerno geometrijo glede na zadnjo izbrano daljico ali točko @@ -1827,19 +1847,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint - Activate/deactivate constraint + Omogoči/onemogoči omejilo - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Omogoči ali onemogoči izbrana omejila @@ -1863,21 +1883,21 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + Toggle driving/reference constraint - Toggle driving/reference constraint + Preklopi med gonilnim in sklicnim omejilom - + Set the toolbar, or the selected constraints, into driving or reference mode - Set the toolbar, or the selected constraints, -into driving or reference mode + Nastavi orodno vrstico ali mejilo +na gnani oz. sklicni način @@ -1914,13 +1934,13 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Preveri, ali ima očrt manjkajoča sovpadanja, +neveljavna omejila, izrojene geometrije, ... Select only one sketch. - Select only one sketch. + Izberite le en očrt. @@ -1943,7 +1963,7 @@ invalid constraints, degenerated geometry, etc. When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + V urejevalnem načinu preklopi med pogledom odseka in celotnim pogledom. @@ -1961,7 +1981,247 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + V urejevalnem načinu nastavi kamero tako, da je usmerjena pravokotno na očrtno ravnino. + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2262,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Ta različica OCE/OCC ne podpira dela z vozli. Potrebuješ različico 6.9.0 ali višjo. - + 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. @@ -2111,134 +2371,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2512,304 @@ invalid constraints, degenerated geometry, etc. Izberite robove na očrtu. - - - - + + + + Dimensional constraint Merska omejitev - - - + + + Only sketch and its support is allowed to select Izberete lahko le očrt in njegovo podporo - + One of the selected has to be on the sketch 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 že ima vodoravno omejitev! - - - - + + + + The selected edge already has a vertical constraint! Izbran rob že ima navpično omejitev! - - - - - - + + + + + + The selected edge already has a Block constraint! Izbran rob že ima popolno omejitev! - + The selected item(s) can't accept a horizontal constraint! Izbranih predmetov ni mogoče vodoravno omejiti! - + There are more than one fixed point selected. Select a maximum of one fixed point! Izbrana je več kot ena nepremična točka. Izberite največ eno nepremično točko! - + The selected item(s) can't accept a vertical constraint! Izbranih predmetov ni mogoče navpično omejiti! - + 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 Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + Ni mogoče dodati omejila med dvema zunanjima geometrijama. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + Ni mogoče dodati omejila med dvema nespremenljivima geometrijama. Nespremenljive geometrije vključujejo zunanjo geometrijo, zamrznjeno geometrijo ali posebne točke, kot vozlišča B-zlepka. - + 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. + Popolnega 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. - - - - - - - - + + + + + + + + Error Napaka - + Select two or more points from the sketch. Izberite dve ali več točk na očrtu. - - + + Select two or more vertexes from the sketch. Izberite dve ali več oglišč z očrta. - - + + Constraint Substitution Zamenjava omejitve - + Endpoint to endpoint tangency was applied instead. Namesto tega je bila uporabljena tangentnost med končnima točkama. - + Select vertexes from the sketch. Izberite oglišča z očrta. - - + + 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! - + This constraint does not make sense for non-linear curves To omejilo ni smiselno za nepreme krivulje - - - - - - + + + + + + Select the right things from the sketch. Izberite prave stvari na skici. - - + + Point on B-spline edge currently unsupported. Točka na B-zlepek robu je trenutno nepodprta. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Izberite ali eno točko in več krivulj ali eno krivuljo in več točk. Izbrali ste %1 krivulj in %2 točk. - - - - + + + + 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 Ta omejitev je smiselna samo na črtnem odseku ali na paru 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č. - - + + Select at least two lines from the sketch. Izberite v očrtu vsaj dve daljici. - + Select a valid line Izberite veljavno črto - - + + 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. @@ -2559,45 +2819,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Napačno število izbranih objektov! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Pri 3-h objektih morata obstajati 2 krivulji in 1 točka. - - + + Cannot add a perpendicularity constraint at an unconnected point! Pravokotne omejitve ni mogoče dodati na nepovezano točko! - - - + + + Perpendicular to B-spline edge currently unsupported. Pravokotno na B-zlepek rob je trenutno nepodprto. - - + + One of the selected edges should be a line. En od izbranih robov mora biti črta. - + 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. @@ -2607,249 +2867,249 @@ 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. - + Wrong number of selected objects! tangent constraint Napačno število izbranih objektov! - - - + + + Cannot add a tangency constraint at an unconnected point! Tangentne omejitve ni mogoče dodati na nepovezano točko! - - - + + + Tangency to B-spline edge currently unsupported. Tangentnost na B-zlepek rob je trenutno nepodprta. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Uporabljena je bla dotikalnost med krajiščema. Omejilo sovpadanja je bilo izbrisano. - - - - + + + + Select one or more arcs or circles from the sketch. Izberite v očrtu enega ali več lokov oz. krogov. - - + + Constrain equal Omeji na enakost - + Do you want to share the same radius for all selected elements? Ali želite uporabiti enak polmer za vse izbrane elemente? - - + + Constraint only applies to arcs or circles. Omejitev velja samo za loke ali krožnice. - + Do you want to share the same diameter for all selected elements? Ali želite uporabiti enak premer za vse izbrane elemente? - - + + 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. - - + + Parallel lines Vzporedne črte - - + + An angle constraint cannot be set for two parallel lines. 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č združljivih robov - + Sketch axes cannot be used in equality constraints Osi očrta ni mogoče uporabiti za enakostno omejilo - + 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. - 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 - 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. + 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 vrednost osnovne mere nastavi razmerje n2/n1. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Omejila ni mogoče ustvariti le z zunanjimi geometrijami. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Izbrana je nezdružljiva geometrija. - + SnellsLaw on B-spline edge is currently unsupported. - SnellsLaw on B-spline edge is currently unsupported. + B-zlepkov rob trenutno ne podpira lomnega zakona. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + Elipse ni mogoče notranje omejiti na drugo elipso. Izberite le eno elipso. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Trenutno so vse notranje geometrije elipse že izpostavljene. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Izberite omejila v očrtu. - + Selected objects are not just geometry from one sketch. Izbrani predmeti niso le geometrija v očrtu. - + Number of selected objects is not 3 (is %1). Niso izbrani 3 predmeti (ampak %1). - - + + Select at least one ellipse and one edge from the sketch. Izberite vsaj eno elipso in en rob na skici. - + Sketch axes cannot be used in internal alignment constraint Osi očrta ni mogoče uporabiti pri omejilu notranje poravnave - - + + Maximum 2 points are supported. Podprti sta največ dve točki. - - + + Maximum 2 lines are supported. Podprti sta največ dve črti. - - + + Nothing to constrain Ničesar ni za omejiti - - - - + + + + Extra elements Dodatni elementi - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Dobavljenih je bilo več elementov za dano elipso, kot je mogoče. Ti so bili prezrti. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Loka elipse ni mogoče notranje omejiti z drugim lokom elipse. Izberi samo en lok elipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Elipse ni mogoče notranje omejiti na lok elipse. Izberite samo eno elipso ali en lok elipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Dobavljenih je bilo več elementov za dan lok elipse, kot je mogoče. Ti so bili prezrti. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Trenutno je notranja geometrija podprta samo za elipso in lok elipse. Zadnji izbrani element mora biti elipsa ali lok elipse. @@ -2862,124 +3122,124 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to - + CAD Kernel Error Napaka CAD Jedra - + None of the selected elements is an edge. Nobena izmed izbranih prvin ni rob. - - + + At least one of the selected objects was not a B-Spline and was ignored. Vsaj en izmed izbranih objektov ni bil B-zlepek in je bil prezrt. - - + + Wrong OCE/OCC version Napačna OCE/OCC različica - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Ta različica OCE/OCC ne podpira dela z vozli. Potrebuješ različico 6.9.0 ali višjo - - + + The selection comprises more than one item. Please select just one knot. Izbor vsebuje več kot en predmet. Prosimo izberite samo en vozel. - + Input Error Napaka Vnosa - - + + None of the selected elements is a knot of a B-spline Noben izmed izbranih elementov ni vozel B-zlepka - - - - + + + + Select at least two edges from the sketch. Izberite vsaj dva robova v očrtu. - - + + One selected edge is not connectable En od izbranih robov ni povezljiv - + Closing a shape formed by exactly two lines makes no sense. Zapiranje oblike, ki je sestavljena iz dveh črt, nima smisla. - - - - - - - - + + + + + + + + Select elements from a single sketch. Izberite prvine le iz enega očrta. - + No constraint selected Nobena omejitev ni izbrana - + At least one constraint must be selected Izbrati morate vsaj eno omejitev - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Vzpostavitev somernosti zahteva vsaj dve geometrijski prvini, pri čemer je zadnja geometrijskim prvina osnova za somerno konstrukcijo. - + The last element must be a point or a line serving as reference for the symmetry construction. Zadnja prvina mora biti točka ali daljica, ki služi kot osnova za vzpostavitev somernosti. - - + + A copy requires at least one selected non-external geometric element Kopija zahteva izbrano vsaj eno nezunanjo geometrijsko prvino - + Delete All Geometry Izbriši Vso Geometrijo - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Ali ste prepričani, da želite izbrisati celo geometrijo in omejila? - + Delete All Constraints Izbriši Vse Omejitve - + Are you really sure you want to delete all the constraints? Ali ste prepričani, da želite izbrisati vsa omejila? @@ -3040,62 +3300,62 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to SketcherGui::ConstraintView - + Change value Spremeni vrednost - + Toggle to/from reference Preklopi k/od sklica - + Deactivate Onemogoči - + Activate Omogoči - + Show constraints Prikaži omejila - + Hide constraints Skrij omejila - + Rename Preimenuj - + Center sketch Usredini očrt - + Delete Izbriši - + Swap constraint names Zamenjaj imeni omejil - + Unnamed constraint Neimenovana omejilo - + Only the names of named constraints can be swapped. Zamenjati je mogoče le imena poimenovanih omejil. @@ -3118,8 +3378,8 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Vstavi polmer - - + + Radius: Polmer: @@ -3130,8 +3390,8 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Vstavi premer - - + + Diameter: Premer: @@ -3159,24 +3419,24 @@ Dovoljene kombinacije: dve krivulji, končna točka in krivulja, dve končni to Dolžina: - - + + Change radius Spremeni polmer - - + + Change diameter Spremeni premer - + Refractive index ratio Lomni količnik - + Ratio n2/n1: Razmerje n2/n1: @@ -3785,12 +4045,12 @@ Podprti so vsi merski sistemi razen "Ameriškega merskega sistema" in "Gradbeni Show objects that the sketch is attached to - Show objects that the sketch is attached to + Prikaži predmete, na katere je očrt vezan Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. - Note: these settings are defaults applied to new sketches. The behavior is remembered for each sketch individually as properties on the View tab. + Opomba: te nastavitve so privzeto uporabljene pri novih očrtih. Ravnanje se hrani za vsak očrt posebej kot lastnosti v zavihku Pogled. @@ -4044,13 +4304,13 @@ However, no constraints linking to the endpoints were found. Podrobnejši podatki - + Constraints Constraints - - + + Error Napaka @@ -4294,7 +4554,7 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Rendering order (global): - Rendering order (global): + Zaporedje izrisovanja (obče): @@ -4409,104 +4669,104 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre 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 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: - + Empty sketch Prazen očrt - + Over-constrained sketch Očrt s preveč omejili - - - + + + (click to select) (kliknite za izbiro) - + Sketch contains conflicting constraints Očrt vsebuje omejila v sporu - + Sketch contains redundant constraints Očrt vsebuje čezmerna omejila - + Fully constrained sketch Popolnoma omejen očrt - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Podomejen očrt z <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 </span></a> prostostno stopnjo - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Podomejen očrt z<a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 prostostnimi stopnjami</span></a> - + Solved in %1 sec Rešeno v %1 s - + Unsolved (%1 sec) Ni rešeno (%1 s) @@ -4514,8 +4774,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Preklopi med prikazanim in skritim glavnikastim prikazom ukrivljenosti za vse B-zlepke @@ -4523,8 +4783,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Zmanjša večkratnost izbranih vozlov B-zlepka @@ -4532,8 +4792,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Preklopi med prikazano in skrito stopnjo za vse B-zlepke @@ -4541,8 +4801,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Poveča večkratnost izbranih vozlov B-zlepka @@ -4550,17 +4810,26 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Preklopi med prikazano in skrito večkratnostjo vozla za vse B-zlepke + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Preklopi med prikazanimi in skritimi nadzornimi mnogokotniki za vse B-zlepke @@ -4568,8 +4837,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Ustvari klon geometrije glede na zadnjo izbrano točko @@ -4577,17 +4846,17 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_CompCopy - + Clone Kloniraj - + Copy Kopiraj - + Move Premakni @@ -4595,8 +4864,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Določi premer krožnice ali krožnega loka @@ -4604,8 +4873,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Določi polmer kroga ali loka @@ -4613,8 +4882,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Ustvari preprosto kopijo geometrije glede na zadnjo izbrano točko @@ -4652,7 +4921,7 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Create an arc of ellipse by its center, major radius, and endpoints - Create an arc of ellipse by its center, major radius, and endpoints + Ustvari eliptični lok s središčem, velikim polmerom in krajiščema @@ -4661,7 +4930,7 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Create an arc of hyperbola by its center, major radius, and endpoints - Create an arc of hyperbola by its center, major radius, and endpoints + Ustvari lok hiperbole s središčem, velikim polmerom in krajiščema @@ -4670,7 +4939,7 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Create an arc of parabola by its focus, vertex, and endpoints - Create an arc of parabola by its focus, vertex, and endpoints + Ustvari lok parabole z goriščem, ogliščem in krajiščema @@ -4834,8 +5103,8 @@ Da bi se pripele, morajo biti točke oddaljene od črte do eno petino polja mre Current attachment mode is incompatible with the new selection. Select the method to attach this sketch to selected objects. - Current attachment mode is incompatible with the new selection. -Select the method to attach this sketch to selected objects. + Trenutni način pripenjanja je nezdružljiv z novim izborom. +Izberi način pripenjanja tega očrta na izbrane predmete. @@ -4858,8 +5127,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Premakne geometrijo glede na zadnjo izbrano točko diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.qm index 356cf39ebc..19cec3a5d6 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts index 623d9768fc..ebb1a674b1 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sr.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Клон - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Constrain arc or circle - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Ограничи полупречник - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Умножи - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Ограничи угао - + Fix the angle of a line or the angle between two lines Фикcирај угао линије,или угао између две линије @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Constrain coincident - + Create a coincident constraint on the selected item Create a coincident constraint on the selected item @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Ограничи удаљеноcт - + Fix a length of a line or the distance between a line and a vertex Fix a length of a line or the distance between a line and a vertex @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Фикcирај хоризонталну удаљеноcт између две тачке,или крајеве линија @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Фикcирај вертикалну удаљеноcт између две тачке,или крајеве линија @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Ограничи једнако - + Create an equality constraint between two lines or between circles and arcs Направи ограничење једнакоcти између две линије,или између кругова и лукова @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Ограничи хоризонтално - + Create a horizontal constraint on the selected item Направи хоризонтално ограничење на изабраном предмету @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Constrains an element to be aligned with the internal geometry of another element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Constrain lock - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Ограничи паралелно - + Create a parallel constraint between two lines Направи паралелно ограничење између две линије @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Ограничи вертикално - + Create a perpendicular constraint between two lines Направи вертикално ограничење између две линије @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Ограничи тачку на објекат - + Fix a point onto an object Фикcирај тачку на објекат @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Ограничи полупречник - + Fix the radius of a circle or an arc Фиксирај полупречник круга,или лука @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Ограничи cиметрично - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Ограничи тангентно - + Create a tangent constraint between two entities Направи тангентно ограничење између два ентитета @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Ограничи вертикално - + Create a vertical constraint on the selected item Направи вертикално ограничење на изабраном предмету @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Умножи - + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Премести - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Прикажи/cакриј унутрашњу геометрију - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Symmetry - + Creates symmetric geometry with respect to the last selected line or point Creates symmetric geometry with respect to the last selected line or point @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Изабери ивицу(е) из cкице. - - - - + + + + Dimensional constraint Димензионално ограничење - - - + + + Only sketch and its support is allowed to select Only sketch and its support is allowed to select - + One of the selected has to be on the sketch Једно од одабраног мора бити на cкици - - + + Select an edge from the sketch. Изабери ивицу из cкице. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Немогуће ограничење - - - - + + + + The selected edge is not a line segment Одабрани руб није cегмент линије - - - - - - + + + + + + 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! The selected edge already has a Block constraint! - + The selected item(s) can't accept a horizontal constraint! Одабране cтавке(а) не могу прихватити хоризонтално ограничење! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical constraint! Одабране cтавке(а) не могу прихватити вертикално ограничење! - + 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 vertices from the sketch. - + Select one vertex from the sketch other than the origin. Select one vertex from the sketch other than the origin. - + Select only vertices from the sketch. The last selected vertex may be the origin. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Грешка - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Select two or more vertexes from the sketch. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Select vertexes from the sketch. - - + + Select exactly one line or one point and one line or two points from the sketch. Одаберите тачно једну линију, или једну тачку и једну линију, или две тачке из cкице. - + Cannot add a length constraint on an axis! Не можете додати ограничење дужине на оcи! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - - - - + + + + Select exactly one line or up to two points from the sketch. Одабери тачно једну линију, или до две тачке из cкице. - + Cannot add a horizontal length constraint on an axis! 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 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. Одаберите две,или више линија из скице. - - + + Select at least two lines from the sketch. Одабери најмање две линије из cкице. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Прихватљиве комбинације: две криве; крјња тачка и крива; две крајње тачке; две криве и тачка. - + Select some geometry from the sketch. perpendicular constraint Одабери неку геометрију из cкице. - + Wrong number of selected objects! perpendicular constraint Погрешан број одабраних објеката! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Cа 3 објекта,морају поcтојати 2 криве и 1 тачка. - - + + Cannot add a perpendicularity constraint at an unconnected point! Cannot add a perpendicularity constraint at an unconnected point! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. Један од одабраних рубова би требао бити линија. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Одабери неку геометрију из cкице. - + Wrong number of selected objects! tangent constraint Погрешан број одабраних објеката! - - - + + + Cannot add a tangency constraint at an unconnected point! Cannot add a tangency constraint at an unconnected point! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Одабери један, или више лукова,или кругова из cкице. - - + + Constrain equal Ограничи једнако - + Do you want to share the same radius for all selected elements? Да ли желите иcти полупречник за cве одабране елементе? - - + + Constraint only applies to arcs or circles. Ограничење се односи само на лукове и кружнице. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Одабери једну, или две линије из cкице. Или одабери два руба и тачку. - - + + Parallel lines Паралелне линије - - + + An angle constraint cannot be set for two parallel lines. Ограничење угла cе не може поcтавити на две паралелне линије. - + Cannot add an angle constraint on an axis! Не можете додати угаоно ограничење на осу! - + Select two edges from the sketch. Одабери два руба из cкице. - - + + 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 Одаберите два, или више рубова cличног типа - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. 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! 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Одабрани објекти ниcу cамо геометрија из једне cкице. - + Number of selected objects is not 3 (is %1). Број одабрcних објеката није 3 (јеcте %1). - - + + Select at least one ellipse and one edge from the sketch. Одаберите барем једну елипcу и један руб из cкице. - + Sketch axes cannot be used in internal alignment constraint Sketch axes cannot be used in internal alignment constraint - - + + Maximum 2 points are supported. Подржане cу макcимално 2 тачке. - - + + Maximum 2 lines are supported. Подржане cу макcимално 2 линије. - - + + Nothing to constrain Nothing to constrain - - - - + + + + Extra elements Додатни елементи - - - + + + More elements than possible for the given ellipse were provided. These were ignored. More elements than possible for the given ellipse were provided. These were ignored. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. More elements than possible for the given arc of ellipse were provided. These were ignored. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Улазна грешка - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Одабери најмање два руба из cкице. - - + + One selected edge is not connectable Један одабрани руб није спојив - + Closing a shape formed by exactly two lines makes no sense. Затварање облика формираног од тачно две линије,нема смисла. - - - - - - - - + + + + + + + + Select elements from a single sketch. Одаберите елементе из једне скице. - + No constraint selected Ниједно ограничење није одабрано - + At least one constraint must be selected Барем једно ограничење мора бити одабрано - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. The last element must be a point or a line serving as reference for the symmetry construction. - - + + A copy requires at least one selected non-external geometric element A copy requires at least one selected non-external geometric element - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Промени вредност - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Прикажи ограничења - + Hide constraints Сакриј ограничења - + Rename Преименуј - + Center sketch Центрирај скицу - + Delete Обриши - + Swap constraint names Замени имена ограничења - + Unnamed constraint Безимено ограничење - + Only the names of named constraints can be swapped. Само имена ограничења се могу заменити. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Уметни полупречник - - + + Radius: Полупречник: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Унети пречник - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Дужина: - - + + Change radius Измени полупречник - - + + Change diameter Измени пречник - + Refractive index ratio Refractive index ratio - + Ratio n2/n1: Одноc n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error Грешка @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< SketcherGui::ViewProviderSketch - + Edit sketch Измени скицу - + A dialog is already open in the task panel Дијалог је већ отворен у панелу задатака - + Do you want to close this dialog? Да ли желите да затворите овај дијалог? - + Invalid sketch Неважећа cкица - + Do you want to open the sketch validation tool? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. The sketch is invalid and cannot be edited. - + Please remove the following constraint: Please remove the following constraint: - + Please remove at least one of the following constraints: Please remove at least one of the following constraints: - + Please remove the following redundant constraint: Please remove the following redundant constraint: - + Please remove the following redundant constraints: Please remove the following redundant constraints: - + Empty sketch Празна скица - + Over-constrained sketch Over-constrained sketch - - - + + + (click to select) (кликни да одабереш) - + Sketch contains conflicting constraints Sketch contains conflicting constraints - + Sketch contains redundant constraints Cкица cадржи cувишна ограничења - + Fully constrained sketch Потпуно ограничена скица - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Решено за %1 сек - + Unsolved (%1 sec) Неразрешено (%1 sec) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Клон - + Copy Умножи - + Move Премести @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Фиксирај полупречник круга,или лука @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.qm index c129b4a022..8ca29b126e 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.qm differ 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 ca64f3f8a2..a5396a81bb 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_sv-SE.ts @@ -55,6 +55,24 @@ Växlar mellan att visa och dölja knutmultipliciteten för alla B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Skissare + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Skissare - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Skapar en klon av geometrin med den senaste valda punkten som referens @@ -112,79 +130,83 @@ CmdSketcherCloseShape - + Sketcher Skissare - + Close shape - Close shape + Slut form - + Produce a closed shape by tying the end point of one element with the next element's starting point - Produce a closed shape by tying the end point of one element with the next element's starting point + Skapa sluten form genom att länka elementets slutpunkt med nästa elements startpunkt CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Skissare - - + Show/hide B-spline information layer Visa/dölj B-spline-informationslager - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Skissare - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Skissare - + Copy Kopiera - + Creates a clone of the geometry taking as reference the last selected point Skapar en klon av geometrin med den senaste valda punkten som referens @@ -306,7 +328,7 @@ Ellipse by periapsis, apoapsis, minor radius - Ellipse by periapsis, apoapsis, minor radius + Ellips utifrån periapsis, apoapsis och lillaxel @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Skissare - + Modify knot multiplicity Ändra knut-multiplicitet - + Modifies the multiplicity of the selected knot of a B-spline Ändrar multipliciteten på den valda knuten i en B-spline - + Increase knot multiplicity Öka knutmultiplicitet - + Decrease knot multiplicity Minska knutmultiplicitet @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Skissare - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Skissare - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Skissare - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Skissare - + Constrain coincident Begränsa sammanfallande - + Create a coincident constraint on the selected item Skapa en sammanfallande begränsning för den markerade detaljen @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Skissare - + Constrain diameter Begränsa diameter - + Fix the diameter of a circle or an arc Fixera diametern av en cirkel eller en båge @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Skissare - + Constrain distance Begränsningsavstånd - + Fix a length of a line or the distance between a line and a vertex Fixera längden på en linje eller avståndet mellan en linje och ett hörn @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Skissare - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Skissare - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Fixera det vertikala avståndet mellan två punkter eller linjeändar @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Skissare - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Skissare - + Constrain horizontally Begränsa horisontellt - + Create a horizontal constraint on the selected item Skapa en horisontell begränsning på den valda detaljen @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Skissare - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Begränsar ett element till att inpassas efter den inre geometrin av ett annat element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Skissare - + Constrain lock Begränsa lås - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Skissare - + Constrain parallel Begränsa parallellt - + Create a parallel constraint between two lines Skapa en parallell begränsning mellan två linjer @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Skissare - + Constrain perpendicular Begränsa vinkelrätt - + Create a perpendicular constraint between two lines Skapa en vinkelrät begränsning mellan två linjer @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Skissare - + Constrain point onto object Begränsa punkt på objekt - + Fix a point onto an object Fixera en punkt på ett objekt @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Skissare - + Constrain radius Begränsa radie - + Fix the radius of a circle or an arc Fixera cirkelns eller cirkelbågens radie @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Skissare - + Constrain refraction (Snell's law') Brytningsbegränsning (Snells lag) - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Skissare - + Constrain symmetrical Begränsa symmetriskt - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Skissare - + Constrain tangent Begränsa tangens - + Create a tangent constraint between two entities Skapa en tangentbegränsning mellan två föremål @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Skissare - + Constrain vertically Begränsa vertikalt - + Create a vertical constraint on the selected item Skapa en vertikal begränsning på den markerade detaljen @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Skissare - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Skissare - + Copy Kopiera - + Creates a simple copy of the geometry taking as reference the last selected point Skapar en enkel kopia av geometrin med den senaste valda punkten som referens @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Skissare - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Skissare - + Decrease knot multiplicity Minska knutmultiplicitet - + Decreases the multiplicity of the selected knot of a B-spline Minskar multipliciteten på den markerade knuten i en B-spline @@ -1314,35 +1336,35 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Skissare - + Delete all constraints - Delete all constraints + Radera alla begränsningar - + Delete all constraints in the sketch - Delete all constraints in the sketch + Ta bort alla begränsningar i skissen CmdSketcherDeleteAllGeometry - + Sketcher Skissare - + Delete all geometry - Delete all geometry + Radera all geometri - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1362,7 +1384,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Redigera den valda skissen. @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Skissare - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Ökar graden på B-spline:n @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Skissare - + Increase knot multiplicity Öka knutmultiplicitet - + Increases the multiplicity of the selected knot of a B-spline Ökar multipliciteten på den valda knuten i en B-spline @@ -1507,7 +1529,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + Markera minst två skisser. @@ -1539,23 +1561,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Markera en eller flera skisser. CmdSketcherMove - + Sketcher Skissare - + Move Flytta - + Moves the geometry taking as reference the last selected point Flyttar geometrin med den senast valda punkten som referens @@ -1575,23 +1597,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Skapa en ny skiss. CmdSketcherRectangularArray - + Sketcher Skissare - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Skapar ett rektangulärt radmönster av geometrin med den senast valda punkten som referens @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Skissare - + Show/hide internal geometry Visa/dölj inre geometri - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Skissare - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Skissare - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Skissare - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Skissare - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Skissare - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Skissare - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Skissare - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Skissare - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1780,7 +1802,7 @@ This will clear the 'Support' property, if any. Stop operation - Stop operation + Stoppa operation @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Skissare - + Symmetry Symmetri - + Creates symmetric geometry with respect to the last selected line or point Skapar symmetrisk geometri med avseende på den senast valda linjen eller punkten @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Skissare - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Skissare - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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 mötespunkter för kurvorna. Försök att lägga till sammanfallaningsbegränsningar mellan kurvorna du vill använda. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Denna version av OCE/OCC stöder inte knutfunktioner. Version 6.9.0 eller högre krävs. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Välj kant(er) från skissen. - - - - + + + + Dimensional constraint Dimensionell begränsning - - - + + + Only sketch and its support is allowed to select Endast skiss och dess stöd får väljas - + One of the selected has to be on the sketch En av de valda måste finnas på skissen - - + + 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 Den valda kanten är inte ett linjesegment - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Markerade objekt kan inte acceptera en horisontell begränsning! - + There are more than one fixed point selected. Select a maximum of one fixed point! Mer än en fast punkt är vald. Välj högst en fast punkt! - + The selected item(s) can't accept a vertical constraint! Markerade objekt kan inte acceptera en vertikal begrä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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Fel - + Select two or more points from the sketch. Välj två eller fler punkter från skissen. - - + + Select two or more vertexes from the sketch. Markera två eller flera hörnpunkter från skissen. - - + + Constraint Substitution Begränsningsersättning - + Endpoint to endpoint tangency was applied instead. Slutpunkt till slutpunkt-tangering tillämpades istället. - + Select vertexes from the sketch. Välj hörnen från skissen. - - + + 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! - + This constraint does not make sense for non-linear curves Den här begränsningen har ingen mening för icke-linjära kurvor - - - - - - + + + + + + Select the right things from the sketch. Välj de rätta sakerna från skissen. - - + + Point on B-spline edge currently unsupported. Punkt på B-spline-kant stöds inte just nu. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Välj antingen en punkt och flera kurvor, eller en kurva och flera punkter. Du har valt %1 kurvor och %2 punkter. - - - - + + + + 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 Den här begränsningen har bara mening på ett linjesegment eller par av punkter - + 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. - - + + Select at least two lines from the sketch. Välj åtminstone två linjer från skissen. - + Select a valid line Välj en giltig linje - - + + The selected edge is not a valid line Den valda kanten är inte en giltig linje - + 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Felaktigt antal valda objekt! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Med tre objekt måste det vara två kurvor och en punkt. - - + + Cannot add a perpendicularity constraint at an unconnected point! Kan inte lägga till en vinkelräthetsbegränsning vid en oansluten punkt! - - - + + + Perpendicular to B-spline edge currently unsupported. Normal till en B-spline-kant stöds inte just nu. - - + + One of the selected edges should be a line. En av de markerade kanterna ska vara en linje. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Felaktigt antal valda objekt! - - - + + + Cannot add a tangency constraint at an unconnected point! Kan inte lägga till ett tangensbegränsning vid en oansluten punkt! - - - + + + Tangency to B-spline edge currently unsupported. Tangering till B-spline-kant stöds inte just nu. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Slutpunkt till slutpunkt-tangering tillämpades. Sammanfallningsbegränsningen raderades. - - - - + + + + Select one or more arcs or circles from the sketch. Markera en eller fler bågar eller cirklar från skissen. - - + + Constrain equal Begränsa lika - + Do you want to share the same radius for all selected elements? Vill du dela samma radie för alla valda element? - - + + Constraint only applies to arcs or circles. Begränsning tillämpas bara på bågar eller cirklar. - + Do you want to share the same diameter for all selected elements? Vill du dela samma diameter för alla valda element? - - + + 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. - - + + Parallel lines Parallella linjer - - + + An angle constraint cannot be set for two parallel lines. 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 Markera två eller flera kompatibla kanter - + Sketch axes cannot be used in equality constraints Skissaxlar kan inte användas i likhetsbegränsningar - + 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 Markera två eller flera kanter av liknande typ - - - - - + + + + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Valda objekt är inte geometri från endast en skiss. - + Number of selected objects is not 3 (is %1). Antal valda objekt är inte tre (antal: %1). - - + + Select at least one ellipse and one edge from the sketch. Välj minst en ellips och en kant från skissen. - + Sketch axes cannot be used in internal alignment constraint Axlarna i skissen kan inte användas till intern inpassningsbegränsning - - + + Maximum 2 points are supported. Maximalt två punkter stöds. - - + + Maximum 2 lines are supported. Maximalt två linjer stöds. - - + + Nothing to constrain Inget att begränsa - - - - + + + + Extra elements Extra element - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Fler element än möjligt försågs till den angivna ellipsen. Dessa ignorerades. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Du kan inte internt begränsa en elliptisk båge på en annan elliptisk båge. Välj endast en elliptisk båge. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Du kan inte internt begränsa en ellips på en elliptisk båge. Välj enbart en ellips eller elliptisk båge. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Fler element än möjligt försågs till den angivna elliptiska bågen. Dessa ignorerades. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Just nu stöds endast inre geometri för ellipser och elliptiska bågar. Det senast valda elementet måste vara en ellips eller en elliptisk båge. @@ -2862,124 +3124,124 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk - + CAD Kernel Error CAD-kärnfel - + None of the selected elements is an edge. Inget av de valda elementen är en kant. - - + + At least one of the selected objects was not a B-Spline and was ignored. Minst ett av de valda objekten är inte en B-spline och ignorerades. - - + + Wrong OCE/OCC version Fel OCE/OCC-version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Denna version av OCE/OCC stöder inte knutfunktioner. Version 6.9.0 eller högre krävs - - + + The selection comprises more than one item. Please select just one knot. Markeringen innefattar mer än ett föremål. Vänligen välj endast en knut. - + Input Error Inmatningsfel - - + + None of the selected elements is a knot of a B-spline Inget av de valda elementen är en knut från en B-spline - - - - + + + + Select at least two edges from the sketch. Välj minst två kanter från skissen. - - + + One selected edge is not connectable En vald kant är inte anslutningsbar - + Closing a shape formed by exactly two lines makes no sense. Slutning av en form som består av två linjer saknar mening. - - - - - - - - + + + + + + + + Select elements from a single sketch. Välj element från endast en skiss. - + No constraint selected Ingen begränsning vald - + At least one constraint must be selected Minst en begränsning måste vara vald - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. En symmetrisk konstruktion kräver minst två geometriska element, det sist valda elementet fungerar som referens för symmetrikonstruktionen. - + The last element must be a point or a line serving as reference for the symmetry construction. Det sista elementet måste vara en punkt eller en linje som fungerar som referens för symmetrikonstruktionen. - - + + A copy requires at least one selected non-external geometric element En kopia kräver minst ett valt geometriskt element som inte är yttre geometri - + Delete All Geometry Radera all geometri - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Radera alla begränsningar - + Are you really sure you want to delete all the constraints? Är du säker på att du vill radera alla begränsningar? @@ -3040,62 +3302,62 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk SketcherGui::ConstraintView - + Change value Ändra värde - + Toggle to/from reference Växa till/från referens - + Deactivate - Deactivate + Deaktivera - + Activate - Activate + Aktivera - + Show constraints Visa begränsningar - + Hide constraints Dölj begränsningar - + Rename Döp om - + Center sketch Centrera skiss - + Delete Radera - + Swap constraint names Kasta om namn på begränsningar - + Unnamed constraint Namnlös begränsning - + Only the names of named constraints can be swapped. Bara namnen hos namngivna begränsningar kan kastas om. @@ -3118,8 +3380,8 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Infoga radie - - + + Radius: Radie: @@ -3130,8 +3392,8 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Infoga diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepterade kombinationer: två kurvor; en slutpunkt och en kurva; två slutpunk Längd: - - + + Change radius Ändra radie - - + + Change diameter Ändra diameter - + Refractive index ratio Brytningsindexsförhållande - + Ratio n2/n1: Förhållande n2/n1: @@ -3570,12 +3832,12 @@ Requires to re-enter edit mode to take effect. Color of edges - Color of edges + Färg på kanter Color of vertices - Color of vertices + Färg på hörn @@ -4047,13 +4309,13 @@ Inga begränsningar länkade till slutpunkterna hittades däremot. Extended information - + Constraints Begränsningar - - + + Error Fel @@ -4245,7 +4507,7 @@ Inga begränsningar länkade till slutpunkterna hittades däremot. A grid will be shown - A grid will be shown + Ett rutnät kommer att visas @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Tom skiss - + Over-constrained sketch Överbegränsad skiss - - - + + + (click to select) (Klicka för att välja) - + Sketch contains conflicting constraints Skissen innehåller motstridiga begränsningar - + Sketch contains redundant constraints Skissen innehåller överflödiga begränsningar - + Fully constrained sketch Helt begränsad skiss - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Löst i %1 SEK - + Unsolved (%1 sec) Olöst (%1 SEK) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Växlar mellan att visa och dölja böjningskammen för alla B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Minskar multipliciteten på den markerade knuten i en B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Växlar mellan att visa och dölja gradtalet för alla B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Ökar multipliciteten på den valda knuten i en B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Växlar mellan att visa och dölja knutmultipliciteten för alla B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Växlar mellan att visa och dölja kontrollpolygonerna för alla B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Skapar en klon av geometrin med den senaste valda punkten som referens @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klon - + Copy Kopiera - + Move Flytta @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixera diametern av en cirkel eller en båge @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixera cirkelns eller cirkelbågens radie @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Skapar en enkel kopia av geometrin med den senaste valda punkten som referens @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Flyttar geometrin med den senast valda punkten som referens diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.qm index ba5f080f87..3bc2b79609 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts index 4299f27291..bfcfe0edb0 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_tr.ts @@ -29,7 +29,7 @@ Show/hide B-spline degree - Show/hide B-spline degree + B-spline derecesini göster/gizle @@ -47,7 +47,7 @@ Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + B-spline düğüm çeşitliliğini göster/gizle @@ -55,6 +55,24 @@ Tüm B-spline'lar için düğüm çokluğunu gösterme ve gizleme arasında geçiş yapar + + CmdSketcherBSplinePoleWeight + + + Sketcher + Taslakçı + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -65,7 +83,7 @@ Show/hide B-spline control polygon - Show/hide B-spline control polygon + B-spline kontrol çokgenini göster/gizle @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Taslakçı - + Clone Klon - + Creates a clone of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriye ait bir klon oluşturur @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Taslakçı - + Close shape - Close shape + Şekli kapat - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Taslakçı - - + Show/hide B-spline information layer B-kamasının bilgi katmanı göster / gizle - + Show/hide B-spline degree - Show/hide B-spline degree + B-spline derecesini göster/gizle - + Show/hide B-spline control polygon - Show/hide B-spline control polygon + B-spline kontrol çokgenini göster/gizle - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity - Show/hide B-spline knot multiplicity + B-spline düğüm çeşitliliğini göster/gizle + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight CmdSketcherCompConstrainRadDia - + Sketcher Taslakçı - + 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ı sınırla @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Taslakçı - + Copy Kopyala - + Creates a clone of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriye ait bir klon oluşturur @@ -227,12 +249,12 @@ Center and end points - Merkez ve bitiş noktaları + Merkez ve uç noktalar End points and rim point - Son noktalar ve kenar noktası + Uç noktalar ve çember noktası @@ -273,7 +295,7 @@ Center and rim point - Merkez ve bitiş noktaları + Merkez ve çember noktalar @@ -301,7 +323,7 @@ Ellipse by center, major radius, point - Elipse by center, büyük yarıçap, nokta + Merkez, büyük yarıçap ve nokta ile Elips @@ -311,17 +333,17 @@ Arc of ellipse by center, major radius, endpoints - Merkezin elips çizgisi, büyük yarıçap, uç noktalar + Merkez, büyük yarıçap ve uç noktalar ile Elips Yayı oluştur Arc of hyperbola by center, major radius, endpoints - Hiperbola merkezin, büyük yarıçapın ve bitiş noktalarının yayı + Merkeze göre hiperbol yayı, ana yarıçap, uç noktalar Arc of parabola by focus, vertex, endpoints - Odak, köşe, bitiş noktaları ile parabolün yayı + Merkez, köşe ve uç noktalar ile parabol yayı @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Taslakçı - + Modify knot multiplicity Düğüm çokluğunu değiştir - + Modifies the multiplicity of the selected knot of a B-spline Seçilen bir B-spline düğümünün çarpımını değiştirir - + Increase knot multiplicity Düğüm çokluluğunu arttır - + Decrease knot multiplicity Düğüm çokluluğunu azalt @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Taslakçı - + Connect edges - Connect edges + Kenarları birleştir - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Taslakçı - + Constrain angle Açı sınırlandır - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Taslakçı - + Constrain block - Constrain block + Kısıtlamayı Engelle - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Taslakçı - + Constrain coincident - Tesadüfen Teslimatı bozma + Çakıştır - + Create a coincident constraint on the selected item Seçili öğede bir çakışık sınırlama oluştur @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Taslakçı - + Constrain diameter Çapı sınırla - + Fix the diameter of a circle or an arc Bir çemberin veya bir yayın yarıçapını düzelt @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Taslakçı - + Constrain distance - Sınır mesafesini sınırla + Mesafeyi sınırla - + Fix a length of a line or the distance between a line and a vertex Bir çizgi uzunluğunu veya bir çizgi ile bir köşe arasındaki mesafeyi düzeltin @@ -516,35 +538,35 @@ CmdSketcherConstrainDistanceX - + Sketcher Taslakçı - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends - İki nokta veya çizgi ucu arasındaki yatay mesafeyi düzeltin + İki nokta veya çizgi uçları arasındaki yatay mesafeyi sabitleyin CmdSketcherConstrainDistanceY - + Sketcher Taslakçı - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends İki nokta veya çizgi ucu arasındaki dikey mesafeyi düzeltin @@ -552,53 +574,53 @@ CmdSketcherConstrainEqual - + Sketcher Taslakçı - + Constrain equal - Eşit tutmak + Eşitle - + Create an equality constraint between two lines or between circles and arcs - İki satır arasında veya daireler ve yaylar arasında eşitlik sınırlaması oluşturun + İki çizginin veya dairelerin ve yayların değerlerini eşitleyin (kısıtlaması oluşturun) CmdSketcherConstrainHorizontal - + Sketcher Taslakçı - + Constrain horizontally - Yatay olarak sınırlama + Yatay yap - + Create a horizontal constraint on the selected item - Seçili öğede yatay bir sınırlama oluştur + Seçili öğede yatay bir sınırlama oluşturur CmdSketcherConstrainInternalAlignment - + Sketcher Taslakçı - + Constrain internal alignment - Constrain internal alignment + İç hizalamayı kısıtlayın - + Constrains an element to be aligned with the internal geometry of another element Başka bir öğenin iç geometrisiyle hizalanacak bir öğeyi sınırlandırır @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Taslakçı - + Constrain lock - Sınır kilidi + Kısıtlama kilidi - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,71 +648,71 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Taslakçı - + Constrain parallel - Paralel sınırlandır + Paralel yap - + Create a parallel constraint between two lines - İki satır arasında paralel sınırlama oluşturun + İki çizgi arasında paralel kısıtlama oluşturun CmdSketcherConstrainPerpendicular - + Sketcher Taslakçı - + Constrain perpendicular - Dikey sıkıştır + Dikey yap - + Create a perpendicular constraint between two lines - İki satır arasında dikey bir sınır oluşturun + İki çizgi arasında dikey bir kısıtlama oluşturun CmdSketcherConstrainPointOnObject - + Sketcher Taslakçı - + Constrain point onto object - Nesneye noktayı sınırlama + Noktayı nesneye çakıştır - + Fix a point onto an object - Teğetsel sınırlama oluştur + Teğetsel kısıtlama oluştur CmdSketcherConstrainRadius - + Sketcher Taslakçı - + 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 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Taslakçı - + Constrain refraction (Snell's law') Kırılmayı sınırlayın (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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Taslakçı - + Constrain symmetrical - Simetrik sınırlama + Simetrik kısıtlama - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,71 +760,71 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Taslakçı - + Constrain tangent - Tanjantı sınırla + Teğet yap - + Create a tangent constraint between two entities - İki öğe arasında teğet kısıtlama oluşturun + İki öğe arasında teğetsel kısıtlama oluşturun CmdSketcherConstrainVertical - + Sketcher Taslakçı - + Constrain vertically - Dikey olarak sınırlama + Dikey yap - + Create a vertical constraint on the selected item - Seçilen öğeye dikey kısıt oluşturma + Seçilen öğeye dikey kısıtlama oluşturun CmdSketcherConvertToNURB - + Sketcher Taslakçı - + Convert geometry to B-spline - Convert geometry to B-spline + Geometriyi B-spline'a dönüştür - + Converts the selected geometry to a B-spline - Converts the selected geometry to a B-spline + Seçili geometriyi bir B-spline'a dönüştürür CmdSketcherCopy - + Sketcher Taslakçı - + Copy Kopyala - + Creates a simple copy of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometrinin basit bir kopyasını oluşturur @@ -858,7 +880,7 @@ with respect to a line or a third point Create an arc by its center and by its end points - Merkezine ve bitiş noktalarına göre bir yay oluşturma + Merkezini ve uç noktalarını belirterek bir yay oluşturun @@ -871,7 +893,7 @@ with respect to a line or a third point Create an arc of ellipse - Elips yayını oluşturma + Elips yayı oluştur @@ -961,7 +983,7 @@ with respect to a line or a third point Create draft line - Taslak bir doğru oluştur + Taslak çizgisi oluştur @@ -997,7 +1019,7 @@ with respect to a line or a third point Create ellipse by center - Ortasına göre elips oluştur + Merkezine göre elips oluştur @@ -1069,7 +1091,7 @@ with respect to a line or a third point Create line - Doğru oluştur + Çizgi oluştur @@ -1159,7 +1181,7 @@ with respect to a line or a third point Create polyline - Çoklu doğru oluştur + Çoklu çizgi oluştur @@ -1177,7 +1199,7 @@ with respect to a line or a third point Create rectangle - Kare oluştur + Dikdörtgen oluştur @@ -1218,7 +1240,7 @@ with respect to a line or a third point Create a slot in the sketch - Eskizde bir yarık oluştur + Eskizde bir boşluk oluşturun @@ -1278,35 +1300,35 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Taslakçı - + Decrease B-spline degree - Decrease B-spline degree + B-spline derecesini azaltın - + Decreases the degree of the B-spline - Decreases the degree of the B-spline + B-spline'ın derecesini azaltır CmdSketcherDecreaseKnotMultiplicity - + Sketcher Taslakçı - + Decrease knot multiplicity Düğüm çokluluğunu azalt - + Decreases the multiplicity of the selected knot of a B-spline Seçilen bir B-spline düğümünün çokluğunu azaltır @@ -1314,37 +1336,37 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Taslakçı - + Delete all constraints - Delete all constraints + Tüm Kısıtlamaları Sil - + Delete all constraints in the sketch - Delete all constraints in the sketch + Eskizdeki Tüm Kısıtlamaları Silin CmdSketcherDeleteAllGeometry - + Sketcher Taslakçı - + Delete all geometry - Delete all geometry + Tüm geometriyi sil - + Delete all geometry and constraints in the current sketch, with the exception of external geometry - Delete all geometry and constraints in the current sketch, with the exception of external geometry + Harici geometri dışında, geçerli eskizdeki tüm geometri ve kısıtlamaları sil @@ -1362,7 +1384,7 @@ with respect to a line or a third point Edit the selected sketch. - Edit the selected sketch. + Seçili eskizi düzenleyin. @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Taslakçı - + Increase B-spline degree - Increase B-spline degree + B-spline derecesini artırın - + Increases the degree of the B-spline B-spline derecesini arttırır @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Taslakçı - + Increase knot multiplicity Düğüm çokluluğunu arttır - + Increases the multiplicity of the selected knot of a B-spline Seçilen bir B-spline düğümünün çoğaltılmasını arttırır @@ -1452,7 +1474,7 @@ with respect to a line or a third point Finish editing the active sketch. - Finish editing the active sketch. + Etkin eskizi düzenlemeyi bitirin. @@ -1465,7 +1487,7 @@ with respect to a line or a third point Map sketch to face... - Eskizi Yüzeye Eşle... + Eskizi yüzeye taşı... @@ -1507,7 +1529,7 @@ then call this command, then choose the desired sketch. Select at least two sketches. - Select at least two sketches. + En az iki eskiz seçin. @@ -1539,23 +1561,23 @@ as mirroring reference. Select one or more sketches. - Select one or more sketches. + Bir veya daha fazla eskiz seçin. CmdSketcherMove - + Sketcher Taslakçı - + Move Taşı - + Moves the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriyi hareket ettirir @@ -1575,23 +1597,23 @@ as mirroring reference. Create a new sketch. - Create a new sketch. + Yeni bir eskiz oluşturun. CmdSketcherRectangularArray - + Sketcher Taslakçı - + Rectangular array - Rectangular array + Dikdörtgenel dizi - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriye dikdörtgen şeklinde bir desen oluşturur @@ -1619,155 +1641,155 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Taslakçı - + Show/hide internal geometry İç geometriyi göster / gizle - + Show all internal geometry or hide unused internal geometry - Show all internal geometry or hide unused internal geometry + Tüm dahili geometriyi gösterin veya kullanılmayan dahili geometriyi gizleyin CmdSketcherSelectConflictingConstraints - + Sketcher Taslakçı - - + + Select conflicting constraints - Select conflicting constraints + Çakışan kısıtlamaları seçin CmdSketcherSelectConstraints - + Sketcher Taslakçı - + Select associated constraints - Select associated constraints + İlişkili kısıtlamaları seçin - + Select the constraints associated with the selected geometrical elements - Select the constraints associated with the selected geometrical elements + Seçili geometrik öğelerle ilişkili sınırlamaları seçin CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Taslakçı - + Select associated geometry - Select associated geometry + İlişkili geometri seçin - + Select the geometrical elements associated with the selected constraints - Select the geometrical elements associated with the selected constraints + Seçili sınırlamalarla ilişkili geometrik öğeleri seçin CmdSketcherSelectElementsWithDoFs - + Sketcher Taslakçı - + Select unconstrained DoF - Select unconstrained DoF + Kısıtlamasız DoF seçin - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. - Select geometrical elements where the solver still detects unconstrained degrees of freedom. + Çözücünün hala sınırlandırılmamış serbestlik derecelerini algıladığı geometrik öğeleri seçin. CmdSketcherSelectHorizontalAxis - + Sketcher Taslakçı - + Select horizontal axis - Select horizontal axis + Yatay ekseni seçin - + Select the local horizontal axis of the sketch - Select the local horizontal axis of the sketch + Eskizin yerel yatay eksenini seçin CmdSketcherSelectOrigin - + Sketcher Taslakçı - + Select origin - Select origin + Orijin seçin - + Select the local origin point of the sketch - Select the local origin point of the sketch + Eskizin yerel orijin (başlangıç) noktasını seçin CmdSketcherSelectRedundantConstraints - + Sketcher Taslakçı - - + + Select redundant constraints - Select redundant constraints + Gereksiz kısıtlamaları seçin CmdSketcherSelectVerticalAxis - + Sketcher Taslakçı - + Select vertical axis - Select vertical axis + Dikey ekseni seçin - + Select the local vertical axis of the sketch - Select the local vertical axis of the sketch + Eskizin yerel dikey eksenini seçin @@ -1785,7 +1807,7 @@ This will clear the 'Support' property, if any. When in edit mode, stop the active operation (drawing, constraining, etc.). - When in edit mode, stop the active operation (drawing, constraining, etc.). + Düzenleme modundayken, etkin işlemi durdurun (çizim, sınırlama vb.). @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Taslakçı - + Symmetry Simetri - + Creates symmetric geometry with respect to the last selected line or point Son seçilen çizgi veya noktaya göre simetrik geometri oluşturur @@ -1827,19 +1849,19 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Taslakçı - + Activate/deactivate constraint - Activate/deactivate constraint + Kısıtlamayı etkinleştir / devre dışı bırak - + Activates or deactivates the selected constraints - Activates or deactivates the selected constraints + Seçili kısıtlamaları etkinleştirir veya devre dışı bırakır @@ -1863,21 +1885,21 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Taslakçı - + Toggle driving/reference constraint - 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 - Set the toolbar, or the selected constraints, -into driving or reference mode + Araç çubuğunu veya seçili kısıtlamaları, +sevk veya referans moduna ayarlayın @@ -1914,13 +1936,13 @@ into driving or reference mode Validate a sketch by looking at missing coincidences, invalid constraints, degenerated geometry, etc. - Validate a sketch by looking at missing coincidences, -invalid constraints, degenerated geometry, etc. + Eksik çakışmalara, geçersiz kısıtlamalara, +bozulmuş geometriye vb. bakarak bir eskizi doğrulayın. Select only one sketch. - Select only one sketch. + Yalnızca bir eskiz seçin. @@ -1938,12 +1960,12 @@ invalid constraints, degenerated geometry, etc. View section - Seçim Görünümü + Seçimi Görüntüle When in edit mode, switch between section view and full view. - When in edit mode, switch between section view and full view. + Düzenleme modundayken, kesit görünümü ile tam görünüm arasında geçiş yapın. @@ -1961,7 +1983,247 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. - When in edit mode, set the camera orientation perpendicular to the sketch plane. + Düzenleme modundayken, kamera yönünü eskiz düzlemine dik olarak ayarlayın. + + + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint @@ -2002,47 +2264,47 @@ invalid constraints, degenerated geometry, etc. 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. OCE/OCC'NİN bu sürümü düğüm işlemini desteklemez. 6.9.0 veya daha yüksek gerekir. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,304 +2514,304 @@ invalid constraints, degenerated geometry, etc. Eskiden kenarları / kenarları seçin. - - - - + + + + Dimensional constraint Boyutsal kısıtlama - - - + + + Only sketch and its support is allowed to select Sadece eskiz ve desteği belirleme izni verilir - + One of the selected has to be on the sketch Seçilenlerden biri eskiz üzerinde olmak zorunda - - + + 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 Seçilen kenar çizgi parçası değil - - - - - - + + + + + + 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! - + The selected item(s) can't accept a horizontal constraint! Seçilen öğeler yatay bir sınırlamayı kabul edemez! - + There are more than one fixed point selected. Select a maximum of one fixed point! Seçilen birden fazla sabit nokta vardır. En fazla bir sabit nokta seçin! - + The selected item(s) can't accept a vertical constraint! Seçilen öğeler dikey kısıtlamayı kabul edemez! - + 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 Cannot add a constraint between two external geometries. - Cannot add a constraint between two external geometries. + İki harici geometri arasına bir sınırlama eklenemez. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. + İki sabit geometri arasına sınırlama eklenemez. Sabit geometriler, harici geometriyi, bloke edilmiş geometriyi veya B-spline düğüm noktaları olarak özel noktaları içerir. - + 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. + Ç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. - - - - - - - - + + + + + + + + Error Hata - + Select two or more points from the sketch. Eskiden iki veya daha fazla nokta seçin. - - + + Select two or more vertexes from the sketch. Eskizden iki veya daha fazla köşe seçin. - - + + Constraint Substitution Kısıtlamayı değiştir - + Endpoint to endpoint tangency was applied instead. Bunun yerine, uç noktalar arasında teğetsel bir kısıtlama uygulandı. - + Select vertexes from the sketch. Eskiden krokileri seçin. - - + + 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! - + This constraint does not make sense for non-linear curves Bu kısıtlama doğrusal olmayan eğriler için mantıklı değil - - - - - - + + + + + + Select the right things from the sketch. Eskiden eskizlerden birini seçin. - - + + Point on B-spline edge currently unsupported. B-spline kenarındaki nokta şu anda desteklenmiyor. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. - Bir nokta ve birkaç eğriyi veya bir eğriyi ve birkaç noktayı seçin. % 1 eğri ve% 2 nokta seçtiniz. + Bir nokta ve birkaç eğriyi veya bir eğriyi ve birkaç noktayı seçin. %1 eğri ve %2 nokta seçtiniz. - - - - + + + + Select exactly one line or up to two points from the sketch. - Çizimden bir çizgi veya en fazla iki nokta seçin. + Ç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ıtı eklenemiyor! + 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 Bu kısıtlama sadece bir çizgi segmentinde veya bir çift nokta üzerinde mantıklı olur - + 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. - - + + Select at least two lines from the sketch. Çizimden en az iki satır seçin. - + Select a valid line Geçerli bir satır seçin - - + + The selected edge is not a valid line Seçilen kenarlık 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. @@ -2559,45 +2821,45 @@ 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. - + Wrong number of selected objects! perpendicular constraint Seçilen nesnelerin sayısı yanlış! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3 nesneyle 2 eğri ve 1 nokta olmalıdır. - - + + Cannot add a perpendicularity constraint at an unconnected point! Bağlantısız bir noktaya diklik kısıtı eklenemiyor! - - - + + + Perpendicular to B-spline edge currently unsupported. B-spline kenarına dikey şu anda desteklenmiyor. - - + + One of the selected edges should be a line. Seçilen kenarlardan bir tanesi bir çizgi olmalıdır. - + 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. @@ -2607,249 +2869,249 @@ 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. - + Wrong number of selected objects! tangent constraint Seçilen nesnelerin sayısı yanlış! - - - + + + Cannot add a tangency constraint at an unconnected point! Bağlantısız bir noktaya bir teğet sınırlaması eklenemiyor! - - - + + + Tangency to B-spline edge currently unsupported. Şu anda desteklenmeyen B-spline kenarlığı için teğet. - + 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 dilindi. - - - - + + + + Select one or more arcs or circles from the sketch. Eskizden bir veya daha fazla yay veya daire seçin. - - + + Constrain equal - Eşit tutmak + Eşitle - + Do you want to share the same radius for all selected elements? Seçilen tüm öğeler için aynı yarıçapı paylaşmak ister misiniz? - - + + Constraint only applies to arcs or circles. Kısıtlama yalnızca yaylar veya daireler için geçerlidir. - + Do you want to share the same diameter for all selected elements? Seçilen tüm elemanlar için aynı çapı paylaşmak ister misiniz? - - + + 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. - - + + Parallel lines Paralel çizgiler - - + + An angle constraint cannot be set for two parallel lines. İ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ı içinde 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. - 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 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. - + Cannot create constraint with external geometry only. - Cannot create constraint with external geometry only. + Sadece dış geometri ile kısıtlama oluşturulamaz. - + Incompatible geometry is selected. - Incompatible geometry is selected. + Uyumsuz geometri seçildi. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. + Bir elipsi başka bir elips üzerinde dahili olarak sınırlayamazsınız. Yalnızca bir elips seçin. - - + + Currently all internal geometrical elements of the ellipse are already exposed. - Currently all internal geometrical elements of the ellipse are already exposed. + Şu anda elipsin tüm iç geometrik öğeleri zaten açığa çıkmıştır. - - - - - + + + + + Select constraints from the sketch. - Select constraints from the sketch. + Eskizden sınırlamaları seçin. - + Selected objects are not just geometry from one sketch. Seçilen nesneler sadece bir taslaktaki geometri değildir. - + Number of selected objects is not 3 (is %1). - Seçilen nesnelerin sayısı 3 değil (% 1). + Seçilen nesnelerin sayısı 3 değil (%1). - - + + Select at least one ellipse and one edge from the sketch. Eskiden en az bir elips ve bir kenar seçin. - + Sketch axes cannot be used in internal alignment constraint Eskiz ekseni iç hizalama kısıtlamasında kullanılamaz - - + + Maximum 2 points are supported. En fazla 2 nokta desteklenmektedir. - - + + Maximum 2 lines are supported. Maksimum 2 satır desteklenir. - - + + Nothing to constrain Kısıtlayacak bir şey yok - - - - + + + + Extra elements Fazladan elementler - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Verilen elips için mümkün olduğunca çok eleman sağlandı. Bunlar dikkate alınmadı. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. Dahili olarak bir elipsin yayını diğer elipsin yayı üzerinde sınırlandıramazsınız. Sadece bir elips yayı seçin. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. Bir elipsi, bir elips yayında kısıtlayamazsınız. Sadece bir elips veya elips yayını seçin. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Verilen elips yayının mümkün olmadığı kadar çok eleman sağlanmıştır. Bunlar dikkate alınmadı. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Şu anda iç geometri yalnızca elipsin veya elipsin yayı için desteklenir. Son seçilen eleman elips veya elips yay olmalıdır. @@ -2862,131 +3124,131 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt - + CAD Kernel Error CAD Çekirdek Hatası - + None of the selected elements is an edge. Seçilen öğelerden hiçbiri kenar değildir. - - + + At least one of the selected objects was not a B-Spline and was ignored. Seçilen nesnelerden en az biri, bir B-Spline değildi ve göz ardı edildi. - - + + Wrong OCE/OCC version Yanlış OCE/OCC sürümü - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher OCE/OCC'nin bu sürümü düğüm çalışmasını desteklemez. 6.9.0 veya daha yenisine ihtiyacın var - - + + The selection comprises more than one item. Please select just one knot. Seçim birden fazla öğe içerir. Lütfen sadece bir düğüm seçin. - + Input Error Giriş hatası - - + + None of the selected elements is a knot of a B-spline Hiçbiri seçilmiş unsurları a, düğüm a, B-spline - - - - + + + + Select at least two edges from the sketch. Eskizden en az iki kenar seçin. - - + + One selected edge is not connectable Seçilen bir kenar bağlanamaz - + Closing a shape formed by exactly two lines makes no sense. Tam olarak iki çizgiden oluşan bir şeklin kapatılması mantıklı değil. - - - - - - - - + + + + + + + + Select elements from a single sketch. Tek bir eskizden elemanlar seçin. - + No constraint selected - Sınır seçilmedi + Kısıtlama seçilmedi - + At least one constraint must be selected En az bir kısıtlama seçilmelidir - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Simetrik bir yapı, en azından iki geometrik elemana ihtiyaç duyar, son geometrik eleman simetri yapımında referans olur. - + The last element must be a point or a line serving as reference for the symmetry construction. Son öğe simetri yapımında referans olacak bir nokta veya bir çizgi olmalıdır. - - + + A copy requires at least one selected non-external geometric element Bir kopya, seçilen en az bir dış dış geometrik eleman gerektirir - + Delete All Geometry Tüm Geometriyi Sil - + Are you really sure you want to delete all geometry and constraints? - Are you really sure you want to delete all geometry and constraints? + Tüm geometriyi ve kısıtlamaları silmek istediğinizden gerçekten emin misiniz? - + Delete All Constraints Tüm Kısıtlamaları Sil - + Are you really sure you want to delete all the constraints? Bütün kısıtlamaları silmek istediğinden emin misin? Distance constraint - Mesafe kısıtlaması + Mesafeyi kısıtla @@ -3040,64 +3302,64 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt SketcherGui::ConstraintView - + Change value Değeri değiştir - + Toggle to/from reference Referansa / dan geçiş yapma - + Deactivate Devre dışı bırak - + Activate Etkinleştir - + Show constraints Kısıtlamaları Göster - + Hide constraints Kısıtlamaları Gizle - + Rename Yeniden Adlandır - + Center sketch Merkez eskiz - + Delete Sil - + Swap constraint names - Takas kısıt isimleri + Kısıtlama adlarını değiştirin - + Unnamed constraint - Adsız kısıt + Adsız kısıtlama - + Only the names of named constraints can be swapped. - Adlandırılmış kısıtlamaların adları takas edilebilir. + Yalnızca adlandırılmış kısıtlamaların adları değiştirilebilir. @@ -3118,8 +3380,8 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Çap ekle - - + + Radius: Yarıçap: @@ -3130,8 +3392,8 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Çap Ekle - - + + Diameter: Çap: @@ -3159,24 +3421,24 @@ Kabul edilen kombinasyonlar: iki eğri; bir son nokta ve bir eğri; iki uç nokt Uzunluk: - - + + Change radius Yarıçapını değiştir - - + + Change diameter Çapı değiştir - + Refractive index ratio Refraktif indeks oranı - + Ratio n2/n1: Oran n2/n1: @@ -3785,7 +4047,7 @@ Supports all unit systems except 'US customary' and 'Building US/Euro'. Show objects that the sketch is attached to - Show objects that the sketch is attached to + Eskizin eklendiği nesneleri göster @@ -3863,17 +4125,17 @@ Supports all unit systems except 'US customary' and 'Building US/Euro'. No missing coincidences found - Eksik tesadüf bulunamadı + Eksik çakışma bulunamadı Missing coincidences - Eksik tesadüfler + Eksik çakışmalar %1 missing coincidences found - % 1 eksik tesadüf bulundu + %1 eksik çakışma bulundu @@ -3921,9 +4183,9 @@ Bitiş noktalarını yeniden atamak için "Kısıtlamalardaki uç noktaları de %1 reversed external-geometry arcs were found. Their endpoints are encircled in 3d view. However, no constraints linking to the endpoints were found. - % 1 ters geometrik dışa yay bulundu. Bitiş noktaları 3d görünümde kuşatılmıştır. + %1 ters çevrilmiş dış geometri yayı bulundu. Uç noktaları 3 boyutlu görünümde çevrilidir. -Bununla birlikte, bitiş noktalarına bağlanan herhangi bir kısıtlama bulunamadı. +Ancak, uç noktalara bağlanan hiçbir kısıtlama bulunamadı. @@ -3933,7 +4195,7 @@ Bununla birlikte, bitiş noktalarına bağlanan herhangi bir kısıtlama bulunam %1 changes were made to constraints linking to endpoints of reversed arcs. - Ters köprü uçlarına bağlanan kısıtlamalara% 1 değişiklik yapılmıştır. + Ters yayların uç noktalarına bağlanan kısıtlamalarda %1 değişiklik yapıldı. @@ -3944,12 +4206,12 @@ Bununla birlikte, bitiş noktalarına bağlanan herhangi bir kısıtlama bulunam Orientation locking was enabled and recomputed for %1 constraints. The constraints have been listed in Report view (menu View -> Panels -> Report view). - Oryantasyon kilidi etkinleştirildi ve % 1 kısıtlamalar için yeniden hesaplandı. Kısıtlamalar, Rapor görünümünde listelenmiştir (menü Görünümü -> Görünümler -> Rapor görünümü). + Oryantasyon kilitleme etkinleştirildi ve %1 kısıtlama için yeniden hesaplandı. Kısıtlamalar, Rapor görünümünde listelenmiştir (Görünüm Menüsü -> Paneller -> Rapor görünümü). Orientation locking was disabled for %1 constraints. The constraints have been listed in Report view (menu View -> Panels -> Report view). Note that for all future constraints, the locking still defaults to ON. - Yönlendirme kilidi % 1 kısıtlamalar için devre dışı bırakıldı. Sınırlamalar Rapor görünümünde listelenmiştir (menü Görünümü -> Görünümler -> Rapor görünümü). Gelecekteki tüm kısıtlamalar için kilitleme yine de AÇIK olarak varsayılmaktadır. + Yönlendirme kilidi %1 kısıtlama için devre dışı bırakıldı. Kısıtlamalar Rapor görünümünde listelenmiştir (Görünüm Menüsü -> Paneller -> Rapor görünümü). Gelecekteki tüm kısıtlamalar için kilitlemenin varsayılan olarak hala AÇIK olduğunu unutmayın. @@ -4046,13 +4308,13 @@ Bununla birlikte, bitiş noktalarına bağlanan herhangi bir kısıtlama bulunam Extended information - + Constraints Constraints - - + + Error Hata @@ -4137,7 +4399,7 @@ Bununla birlikte, bitiş noktalarına bağlanan herhangi bir kısıtlama bulunam <html><head/><body><p>&quot;%1&quot;: multiple selection</p><p>&quot;%2&quot;: switch to next valid type</p></body></html> - <html> <head /> <body> <p> & quot;% 1 & quot;: birden çok seçim </ p> <p> & quot;% 2 & quot;: bir sonraki geçerli türe geçme </ p> </ body> </ html > + <html><head/><body><p>&quot;%1&quot;: çoklu seçim</p><p>&quot;%2&quot;: bir sonraki geçerli türe geçer</p></body></html> @@ -4296,7 +4558,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Rendering order (global): - Rendering order (global): + Oluşturma sırası (genel): @@ -4360,7 +4622,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Missing coincidences - Eksik tesadüfler + Eksik çakışmalar @@ -4411,104 +4673,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: - + Empty sketch Boş eskiz - + Over-constrained sketch Aşırı kısıtlı eskiz - - - + + + (click to select) (seçmek için tıkla) - + Sketch contains conflicting constraints Eskiz çakışan kısıtlamaları içeriyor - + Sketch contains redundant constraints Eskiz, gereksiz kısıtlamaları içeriyor - + Fully constrained sketch Tamamen kısıtlanmış eskiz - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec %1 saniye içinde çözüldü - + Unsolved (%1 sec) Çözülmemiş (%1 sn.) @@ -4516,8 +4778,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Tüm B-spline'lar için eğrilik tarağını gösterme ve gizleme arasında geçiş yapar @@ -4525,8 +4787,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Seçilen bir B-spline düğümünün çokluğunu azaltır @@ -4534,8 +4796,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Tüm B-spline derecelerini gösterme ve gizleme arasında geçiş yapar @@ -4543,8 +4805,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Seçilen bir B-spline düğümünün çoğaltılmasını arttırır @@ -4552,17 +4814,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Tüm B-spline'lar için düğüm çokluğunu gösterme ve gizleme arasında geçiş yapar + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Tüm B-kamaları için kontrol çokgenlerini gösterme ve gizleme arasında geçiş yapar @@ -4570,8 +4841,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriye ait bir klon oluşturur @@ -4579,17 +4850,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Klon - + Copy Kopyala - + Move Taşı @@ -4597,8 +4868,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Bir çemberin veya bir yayın yarıçapını düzelt @@ -4606,8 +4877,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Bir dairenin veya bir yayın yarıçapını düzeltme @@ -4615,8 +4886,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometrinin basit bir kopyasını oluşturur @@ -4645,7 +4916,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Create an arc by its center and by its end points - Merkezine ve bitiş noktalarına göre bir yay oluşturma + Merkezini ve uç noktalarını belirterek bir yay oluşturun @@ -4704,7 +4975,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Create a ellipse by periapsis, apoapsis, and minor radius - Periapsis, apoapsis ve minor radius ile elips oluşturun + Periapsis, apoapsis ve küçük yarıçap ile elips oluşturun @@ -4713,7 +4984,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Create an ellipse by center, major radius and point - Merkez, büyük yarıçap ve nokta ile bir elips yarat + Merkez, büyük yarıçap ve nokta ile bir elips oluşturun @@ -4764,7 +5035,7 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Create a square by its center and by one corner - Merkezi ve bir köşesinde bir kare oluşturun + Merkezini ve bir köşesini belirterek bir kare oluşturun @@ -4853,15 +5124,15 @@ Select the method to attach this sketch to selected objects. Can't map a sketch to support: %1 - Bir eskiz destekleyemez: -% 1 + Desteklemek için bir eskiz eşleyemiyor: +%1 Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Son seçilen noktayı referans alarak geometriyi hareket ettirir @@ -4890,7 +5161,8 @@ Select the method to attach this sketch to selected objects. Sketch with a support face cannot be reoriented. Do you want to detach it from the support? - Destek yüzü olan eskiz yeniden yönlendirilemez. Bunu ayırmak istiyor musunuz gelen desteği? + Destek yüzeyi olan eskiz yeniden yönlendirilemez. +Destekten ayırmak ister misiniz? @@ -5194,7 +5466,7 @@ to determine whether a solution converges or not Maximum number of iterations of the solver used for determination of Redundant constraints - Maximum number of iterations of the solver used for determination of Redundant constraints + Gereksiz kısıtlamaların belirlenmesi için kullanılan çözücünün maksimum yineleme sayısı diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.qm index aa6a3709a3..13cd6f98a9 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts index c65c4458ae..03f42f0399 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_uk.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Створювач ескізів + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Створювач ескізів - + Clone Клонувати - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Створювач ескізів - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Створювач ескізів - - + Show/hide B-spline information layer Show/hide B-spline information layer - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Створювач ескізів - + Constrain arc or circle Обеження для дуги або кола - + Constrain an arc or a circle Constrain an arc or a circle - + Constrain radius Обмеження за радіусом - + Constrain diameter Constrain diameter @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Створювач ескізів - + Copy Копіювати - + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Створювач ескізів - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Створювач ескізів - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Створювач ескізів - + Constrain angle Кут обмеження - + Fix the angle of a line or the angle between two lines Зафіксувати кут лінії або кут між двома лініями @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Створювач ескізів - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Створювач ескізів - + Constrain coincident Обмеження збігів - + Create a coincident constraint on the selected item Створити обмеження збігів (коінцидентності) для обраних елементів @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Створювач ескізів - + Constrain diameter Constrain diameter - + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Створювач ескізів - + Constrain distance Обмеження відстані - + Fix a length of a line or the distance between a line and a vertex Фіксувати довжину лінії або відстань між лінією та вершиною @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Створювач ескізів - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Виправити вертикальну відстань між двома точками або кінцями ліній @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Створювач ескізів - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Виправити вертикальну відстань між двома точками або кінцями ліній @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Створювач ескізів - + Constrain equal Обмеження по еквівалентності - + Create an equality constraint between two lines or between circles and arcs Створити обмеження еквівалентності між двома лініями, або між колами і дугами @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Створювач ескізів - + Constrain horizontally Горизонтальне обмеження - + Create a horizontal constraint on the selected item Створити обмеження по горизонталі для вибраного елементу @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Створювач ескізів - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Обмежує елемент вирівнюючи з внутрішньою геометрією іншого елемента @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Створювач ескізів - + Constrain lock Обмеження блокування - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Створювач ескізів - + Constrain parallel Паралельне обмеження - + Create a parallel constraint between two lines Створити паралельне обмеження між двома лініями @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Створювач ескізів - + Constrain perpendicular Обмеження за перпендикулярністю - + Create a perpendicular constraint between two lines Створити обмеження за перпендикулярністю між двома лініями @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Створювач ескізів - + Constrain point onto object Обмежити точки об'єктом - + Fix a point onto an object Зафіксувати точку на об'єкті @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Створювач ескізів - + Constrain radius Обмеження за радіусом - + Fix the radius of a circle or an arc Зафіксувати радіус кола або дуги @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Створювач ескізів - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Створювач ескізів - + Constrain symmetrical Обмеження за симетрією - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Створювач ескізів - + Constrain tangent Дотичне обмеження - + Create a tangent constraint between two entities Створити дотичне обмеження між двома об'ектами @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Створювач ескізів - + Constrain vertically Вертикальне обмеження - + Create a vertical constraint on the selected item Створити обмеження по вертикалі для вибраного елементу @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Створювач ескізів - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Створювач ескізів - + Copy Копіювати - + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Створювач ескізів - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Створювач ескізів - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Створювач ескізів - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Створювач ескізів - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Створювач ескізів - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Increases the degree of the B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Створювач ескізів - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Створювач ескізів - + Move Переміщення - + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Створювач ескізів - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Створювач ескізів - + Show/hide internal geometry Показати/приховати внутрішню геометрію - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Створювач ескізів - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Створювач ескізів - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Створювач ескізів - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Створювач ескізів - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Створювач ескізів - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Створювач ескізів - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Створювач ескізів - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Створювач ескізів - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Створювач ескізів - + Symmetry Симетрія - + Creates symmetric geometry with respect to the last selected line or point Створює симетричну геометрію відносно до останньої обраної лінії або крапки @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Створювач ескізів - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Створювач ескізів - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Обрати ребро(-а) з ескізу. - - - - + + + + Dimensional constraint Обмеження розміру - - - + + + Only sketch and its support is allowed to select Можна вибирати тільки ескіз і його елементи - + One of the selected has to be on the sketch Один з обраних має бути на ескізі - - + + 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 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! - + The selected item(s) can't accept a horizontal constraint! На обраний(і) елемент(и) не можна накласти горизонтальне обмеження! - + There are more than one fixed point selected. Select a maximum of one fixed point! There are more than one fixed point selected. Select a maximum of one fixed point! - + The selected item(s) can't accept a vertical 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 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. Select only vertices from the sketch. The last selected vertex may be the origin. - + Wrong solver status Wrong solver status @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Помилка - + Select two or more points from the sketch. Select two or more points from the sketch. - - + + Select two or more vertexes from the sketch. Оберіть на ескізі принаймні дві вершини. - - + + Constraint Substitution Constraint Substitution - + Endpoint to endpoint tangency was applied instead. Endpoint to endpoint tangency was applied instead. - + Select vertexes from the sketch. Вибір вершин з ескізу. - - + + Select exactly one line or one point and one line or two points from the sketch. Оберіть на ескізі лише одну лінію, або одну точку та одну лінію, або дві точки. - + Cannot add a length constraint on an axis! Не можу додати обмеження довжини на вісь! - + This constraint does not make sense for non-linear curves This constraint does not make sense for non-linear curves - - - - - - + + + + + + Select the right things from the sketch. Select the right things from the sketch. - - + + Point on B-spline edge currently unsupported. Point on B-spline edge currently unsupported. - - + + 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. 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Виберіть або одну крапку і кілька кривих, або одну криву і кілька крапок. Ви вибрали %1криві(их) і %2 крапки - - - - + + + + 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! 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. Оберіть на ескізі дві або більше ліній. - - + + Select at least two lines from the sketch. Оберіть на ескізі принаймні дві лінії. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Допустимі комбінації: дві криві; кінцева точка і крива; дві кінцевих точки; дві криві та крапка. - + Select some geometry from the sketch. perpendicular constraint Виберіть деяку геометрію ескізу. - + Wrong number of selected objects! perpendicular constraint Неправильна кількість виділених об'єктів! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Коли вибрано 3 елементи, це повинні бути 2 криві і одна точка. - - + + Cannot add a perpendicularity constraint at an unconnected point! Не вдалося визначити накласти обмеження перпендикулярності на точку, бо виділена точка не є частиною кривої! - - - + + + Perpendicular to B-spline edge currently unsupported. Perpendicular to B-spline edge currently unsupported. - - + + One of the selected edges should be a line. Одна з кромок повинна бути лінією. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Accepted combinations: two curves; an endpoint and a curve; two endpoints; two curves and a point. - + Select some geometry from the sketch. tangent constraint Виберіть деяку геометрію ескізу. - + Wrong number of selected objects! tangent constraint Неправильна кількість виділених об'єктів! - - - + + + Cannot add a tangency constraint at an unconnected point! Не можу додати обмеження дотичної у крапці, що не належить кривій! - - - + + + Tangency to B-spline edge currently unsupported. Tangency to B-spline edge currently unsupported. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Endpoint to endpoint tangency was applied. The coincident constraint was deleted. - - - - + + + + Select one or more arcs or circles from the sketch. Виберіть одну або кілька дуг чи кіл з ескізу. - - + + Constrain equal Обмеження по еквівалентності - + Do you want to share the same radius for all selected elements? Бажаєте призначити однаковий радіус для всіх обраних елементів? - - + + Constraint only applies to arcs or circles. Constraint only applies to arcs or circles. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Виберіть одну або дві лінії з ескізу. Або вибрати два ребра і крапку. - - + + Parallel lines Паралельні лінії - - + + An angle constraint cannot be set for two parallel lines. Обмеження кута не можна встановити на паралельні лінії. - + 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. 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. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Вибрані об'єкти не з одного ескізу. - + Number of selected objects is not 3 (is %1). Кількість обраних об'єктів не 3 а %1. - - + + Select at least one ellipse and one edge from the sketch. Оберіть на ескізі принаймні один еліпс та одне ребро. - + Sketch axes cannot be used in internal alignment constraint Осі ескізу неможна прив'язувати до внутрішньої геометрії - - + + Maximum 2 points are supported. До еліпсу можна прив'язати не більше двох точок. - - + + Maximum 2 lines are supported. До еліпсу можна прив'язати не більше двох ліній. - - + + Nothing to constrain Намає чого обмежувати - - - - + + + + Extra elements Додаткові елементи - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Було надано більше елементів, ніж можливо для даного еліпса. Зайві були проігноровані. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Було надано більше елементів, ніж можливо для даного дуги еліпса. Зайві елементи були проігноровані. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Внутрішня геометрія доступна тільки для еліпсів і дуг еліпса. Еліпс/дуга еліпса повинна бути виділена в останню чергу. @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD Kernel Error - + None of the selected elements is an edge. None of the selected elements is an edge. - - + + At least one of the selected objects was not a B-Spline and was ignored. At least one of the selected objects was not a B-Spline and was ignored. - - + + Wrong OCE/OCC version Wrong OCE/OCC version - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher - - + + The selection comprises more than one item. Please select just one knot. The selection comprises more than one item. Please select just one knot. - + Input Error Input Error - - + + None of the selected elements is a knot of a B-spline None of the selected elements is a knot of a B-spline - - - - + + + + Select at least two edges from the sketch. Оберіть на ескізі щонайменше два ребра. - - + + One selected edge is not connectable Одне обране ребро не має кінцевих точок - + Closing a shape formed by exactly two lines makes no sense. Ви намагаєтесь зробити двокутник. - - - - - - - - + + + + + + + + Select elements from a single sketch. Обрати елементи з одного ескізу. - + No constraint selected Жодне обмеження не вибране - + At least one constraint must be selected Потрібно вибрати принаймні одне обмеження - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. - + The last element must be a point or a line serving as reference for the symmetry construction. Останній елемент повинен бути точкою або лінією, яка виступає в якості еталону для побудови симетрії. - - + + A copy requires at least one selected non-external geometric element Копіювання потребує принаймні одного обраного незовнішнього геометричного елемента - + Delete All Geometry Delete All Geometry - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Delete All Constraints - + Are you really sure you want to delete all the constraints? Are you really sure you want to delete all the constraints? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Змінити значення - + Toggle to/from reference Toggle to/from reference - + Deactivate Deactivate - + Activate Activate - + Show constraints Show constraints - + Hide constraints Hide constraints - + Rename Перейменувати - + Center sketch Center sketch - + Delete Видалити - + Swap constraint names Swap constraint names - + Unnamed constraint Обмеження без імені - + Only the names of named constraints can be swapped. Only the names of named constraints can be swapped. @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Вставити радіус - - + + Radius: Радіус: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insert diameter - - + + Diameter: Diameter: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Довжина: - - + + Change radius Змінити радіус - - + + Change diameter Change diameter - + Refractive index ratio Коефіцієнт заломлення - + Ratio n2/n1: Співвідношення n2/n1: @@ -4047,13 +4309,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Обмеження - - + + Error Помилка @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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? Do you want to open the sketch validation tool? - + The sketch is invalid and cannot be edited. 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: Видаліть, будь ласка, наступні надлишкові обмеження: - + Empty sketch Порожній ескіз - + Over-constrained sketch Ескіз має надлишкові обмеження - - - + + + (click to select) (натисніть, щоб вибрати) - + Sketch contains conflicting constraints Ескіз містить обмеження, які суперечать одне одному - + Sketch contains redundant constraints Ескіз містить надлишкові обмеження - + Fully constrained sketch Ескіз повністю визначений - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Обраховано за %1 с - + Unsolved (%1 sec) Не обраховано (%1 с) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Switches between showing and hiding the curvature comb for all B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Switches between showing and hiding the degree for all B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Switches between showing and hiding the control polygons for all B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Creates a clone of the geometry taking as reference the last selected point @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Клонувати - + Copy Копіювати - + Move Переміщення @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fix the diameter of a circle or an arc @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Зафіксувати радіус кола або дуги @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Creates a simple copy of the geometry taking as reference the last selected point @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Moves the geometry taking as reference the last selected point diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.qm index e8a7b5b165..0d29e6c062 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.qm differ 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 68341e3fed..dae261ff5e 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_val-ES.ts @@ -55,6 +55,24 @@ Canvia entre mostrar i amagar la multiplicitat del nus per a tots els B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Clona - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat. @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Mostra/Amaga la capa d'informació del B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + 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 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Copia - + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat. @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modifica la multiplicitat del nus - + Modifies the multiplicity of the selected knot of a B-spline Modifica la multiplicitat del nus seleccionat d'un B-spline - + Increase knot multiplicity Augmenta la multiplicitat del nus - + Decrease knot multiplicity Redueix la multiplicitat del nus @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + 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 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Restricció coincident - + Create a coincident constraint on the selected item Crea una restricció coincident en l'element seleccionat @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + 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 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Restricció de distància - + Fix a length of a line or the distance between a line and a vertex Fixa una longitud d'una línia o la distància entre una línia i un vèrtex @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + 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 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + 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 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + 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 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Restricció horitzontal - + Create a horizontal constraint on the selected item Crea una restricció horitzontal en l'element seleccionat @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Restringeix un element per a alinear-lo amb la geometria interna d'un altre element @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Restricció de bloqueig - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Restricció de parel·lelisme - + Create a parallel constraint between two lines Crea una restricció de paral·lelisme entre dues línies @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Restricció de perpendicularitat - + Create a perpendicular constraint between two lines Crea una restricció de perpendicularitat entre dues línies @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Restricció d'un punt sobre l'objecte - + Fix a point onto an object Fixa un punt sobre un objecte @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Restricció del radi - + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Restricció de la refracció (llei d'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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + 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 @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Restricció tangent - + Create a tangent constraint between two entities Crea una restricció tangent entre dues entitats @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Restricció veertical - + Create a vertical constraint on the selected item Crea una restricció vertical en l'element seleccionat @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Copia - + Creates a simple copy of the geometry taking as reference the last selected point Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat. @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Redueix la multiplicitat del nus - + Decreases the multiplicity of the selected knot of a B-spline Redueix la multiplicitat del nus seleccionat d'un B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Augmenta el grau del B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Augmenta la multiplicitat del nus - + Increases the multiplicity of the selected knot of a B-spline Augmenta la multiplicitat del nus seleccionat d'un B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Mou - + Moves the geometry taking as reference the last selected point Mou la geometria prenent com a referència l'últim punt seleccionat @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Crea un patró de matriu rectangular de la geometria prenent com a referència l'últim punt seleccionat @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Mostra o amaga la geometria interna - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Simetria - + Creates symmetric geometry with respect to the last selected line or point Crea una geometria simètrica respecte a l'última línia o punt seleccionats @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Aquesta versió d' OCE/OCC no permet operacions de nus. Necessiteu 6.9.0 o posteriors. - + 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. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Seleccioneu arestes de l'esbós - - - - + + + + Dimensional constraint Restricció de dimensió - - - + + + Only sketch and its support is allowed to select Només es permet seleccionar l'esbós i el seu suport - + One of the selected has to be on the sketch Un dels elements seleccionats ha de ser en l'esbós - - + + 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 L'aresta seleccionada no és un segment de línia - - - - - - + + + + + + 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. - + The selected item(s) can't accept a horizontal constraint! Els elements seleccionats no poden acceptar una restricció horitzontal. - + There are more than one fixed point selected. Select a maximum of one fixed point! Hi ha més d'un punt fixe seleccionat! Seleccioneu com a màxim un punt fixe! - + The selected item(s) can't accept a vertical constraint! Els elements seleccionats no poden acceptar una restricció vertical. - + 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 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. - - - - - - - - + + + + + + + + Error Error - + Select two or more points from the sketch. Seleccioneu una o més punts de l'esbós - - + + Select two or more vertexes from the sketch. Seleccioneu un o més vèrtexs de l'esbós - - + + Constraint Substitution Substitucions de restricions - + Endpoint to endpoint tangency was applied instead. En el seu lloc s'ha aplicat una tangència entre extrems. - + Select vertexes from the sketch. Seleccioneu vèrtexs de l'esbós - - + + 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. - + This constraint does not make sense for non-linear curves Aquesta restricció no té sentit per a corbes no lineals - - - - - - + + + + + + Select the right things from the sketch. Seleccioneu els elements correctes de l'esbós - - + + Point on B-spline edge currently unsupported. Un punt sobre la vora del B-spline no s'admet actualment. - - + + 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. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Seleccioneu o un punt i diverses corbes, o una corba i diversos punts. Heu seleccionat %1 corbes i %2 punts. - - - - + + + + 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 Aquesta restricció només té sentit sobre 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 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 - - + + Select at least two lines from the sketch. Seleccioneu almenys dues línies de l'esbós - + Select a valid line Seleccioneu una línia vàlida - - + + 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. @@ -2557,45 +2819,45 @@ 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 - + Wrong number of selected objects! perpendicular constraint El nombre d'objectes seleccionats és incorrecte. - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Amb 3 objectes, hi ha d'haver 2 corbes i 1 punt. - - + + Cannot add a perpendicularity constraint at an unconnected point! No es pot afegir una restricció de perpendicularitat en un punt no connectat. - - - + + + Perpendicular to B-spline edge currently unsupported. Una perpendicular a la vora del B-spline no s'admet actualment. - - + + One of the selected edges should be a line. Una de les arestes seleccionades ha de ser una línia. - + 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. @@ -2603,249 +2865,249 @@ 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 - + Wrong number of selected objects! tangent constraint El nombre d'objectes seleccionats és incorrecte. - - - + + + Cannot add a tangency constraint at an unconnected point! No es pot afegir una restricció de tangència en un punt no connectat. - - - + + + Tangency to B-spline edge currently unsupported. La tangència a la vora del B-spline no s'admet actualment. - + 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. - - - - + + + + Select one or more arcs or circles from the sketch. Seleccioneu un o diversos arcs o cercles de l'esbós - - + + Constrain equal Restricció d'igualtat - + Do you want to share the same radius for all selected elements? Voleu compartir el mateix radi per a tots els elements seleccionats? - - + + Constraint only applies to arcs or circles. La restricció només s'aplica a arcs i cercles. - + Do you want to share the same diameter for all selected elements? Voleu compartir el mateix diàmetre per a tots els elements seleccionats? - - + + 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 - - + + Parallel lines Línies paral·leles - - + + An angle constraint cannot be set for two parallel lines. 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 Seleccioneu dues o més arestes compatibles - + Sketch axes cannot be used in equality constraints Els eixos de l'esbós no es poden utilitzar en les restriccions d'igualtat. - + 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 Seleccioneu una 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 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Els objectes seleccionats no són només geometria d'un esbós. - + Number of selected objects is not 3 (is %1). El nombre d'objectes seleccionats no és 3 (és %1). - - + + Select at least one ellipse and one edge from the sketch. Seleccioneu almenys una el·lipse i una vora de l'esbós - + Sketch axes cannot be used in internal alignment constraint Els eixos de l'esbós no es poden utilitzar en la restricció d'alineació interna. - - + + Maximum 2 points are supported. S'admeten com a màxim 2 punts. - - + + Maximum 2 lines are supported. S'admeten com a màxim 2 línies. - - + + Nothing to constrain No hi ha res per a restringir - - - - + + + + Extra elements Elements addicionals - - - + + + More elements than possible for the given ellipse were provided. These were ignored. S'han proporcionat més dels elements possibles per a l'el·lipse donada. S'ignoraran. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. No podeu restringir internament un arc d'el·lipse sobre un altre arc d'el·lipse. Seleccioneu-ne sols un. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. No podeu restringir internament una el·lipse o un arc d'el·lipse. Seleccioneu només una el·lipse o un arc d'el·lipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. S'han proporcionat més dels elements possibles per a l'arc d'el·lipse donat. S'ignoraran. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Actualment la geometria interna només s'admet per a l'el·lipse i l'arc d'el·lipse. L'últim element selecccionat ha de ser una el·lipse o un arc d'el·lipse. @@ -2858,124 +3120,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error Error del nucli del CAD - + None of the selected elements is an edge. No és una vora cap dels elements seleccionats. - - + + At least one of the selected objects was not a B-Spline and was ignored. Com a mínim, un els objectes seleccionats no és una B-Spline i s'ha ignorat. - - + + Wrong OCE/OCC version La versió d'OCE/OCC no és correcta - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Aquesta versió d'OCE/OCC no admet l'operació de nus. Necessiteu la versió 6.9.0 o superior - - + + The selection comprises more than one item. Please select just one knot. La selecció inclou més d'un element. Seleccioneu només un nus. - + Input Error Error d'entrada - - + + None of the selected elements is a knot of a B-spline Cap dels elements seleccionats no és un nus d'un B-spline - - - - + + + + Select at least two edges from the sketch. Seleccioneu almenys dues arestes de l'esbós - - + + One selected edge is not connectable Una aresta seleccionada no és connectable. - + Closing a shape formed by exactly two lines makes no sense. Tancar una figura formada per exactament dues línies no té sentit. - - - - - - - - + + + + + + + + Select elements from a single sketch. Seleccioneu elements d'un únic esbós - + No constraint selected No s'ha seleccionat cap restricció. - + At least one constraint must be selected S'ha de seleccionar com a mínim una restricció. - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Una construcció simètrica necessita com a mínim dos elements geomètrics, l'últim element geomètric és la referència per a la construcció de la simetria. - + The last element must be a point or a line serving as reference for the symmetry construction. L'últim element ha de ser un punt o una línia que servisca com a referència per a la construcció de la simetria. - - + + A copy requires at least one selected non-external geometric element Una còpia necessita com a mínim que se seleccione un element geomètric no extern - + Delete All Geometry Suprimeix tota la Geometria - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Suprimeix totes les restriccions - + Are you really sure you want to delete all the constraints? Esteu realment segur que voleu suprimir totes restriccions? @@ -3036,62 +3298,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value Canvia el valor - + Toggle to/from reference Commuta la referència a/des de - + Deactivate Desactiva - + Activate Activa - + Show constraints Mostra restriccions - + Hide constraints Amaga restriccions - + Rename Reanomena - + Center sketch Centra l'esbós - + Delete Elimina - + Swap constraint names Intercanvia els noms de restricció - + Unnamed constraint Restricció sense nom - + Only the names of named constraints can be swapped. Només es poden intercanviar els noms de les restriccions anomenades. @@ -3114,8 +3376,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Insereix un radi - - + + Radius: Radi: @@ -3126,8 +3388,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Introduïu el diàmetre - - + + Diameter: Diàmetre: @@ -3155,24 +3417,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Length: - - + + Change radius Canvia els radis - - + + Change diameter Canvia el diàmetre - + Refractive index ratio Índex de refracció - + Ratio n2/n1: Relació n2/n1: @@ -4030,13 +4292,13 @@ However, no constraints linking to the endpoints were found. Informació ampliada - + Constraints Constraints - - + + Error Error @@ -4395,104 +4657,104 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l 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: - + Empty sketch L'esbós és buit. - + Over-constrained sketch Esbós sobrerestringit - - - + + + (click to select) (feu clic per a seleccionar) - + Sketch contains conflicting constraints L'esbós conté restriccions amb conflictes. - + Sketch contains redundant constraints L'esbós conté restriccions redundants. - + Fully constrained sketch Esbós completament restringit - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Esbós sota restriccions amb<a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 grau</span></a> de llibertat - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Esbós sota restriccions amb<a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 graus</span></a> de llibertat - + Solved in %1 sec Solucionat en %1 s - + Unsolved (%1 sec) Sense solucionar (%1 s) @@ -4500,8 +4762,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Canvia entre mostrar i amagar l'ansa de curvatura per a tots els B-splines @@ -4509,8 +4771,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Redueix la multiplicitat del nus seleccionat d'un B-spline @@ -4518,8 +4780,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Canvia entre mostrar i amagar el grau per a tots els B-splines @@ -4527,8 +4789,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Augmenta la multiplicitat del nus seleccionat d'un B-spline @@ -4536,17 +4798,26 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Canvia entre mostrar i amagar la multiplicitat del nus per a tots els B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Canvia entre mostrar i amagar els polígons de control per a tots els B-splines @@ -4554,8 +4825,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Crea un clon de la geometria prenent com a referència l'últim punt seleccionat. @@ -4563,17 +4834,17 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_CompCopy - + Clone Clona - + Copy Copia - + Move Mou @@ -4581,8 +4852,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Fixa el diàmetre d'un cercle o d'un arc @@ -4590,8 +4861,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Fixa el radi d'un cercle o arc @@ -4599,8 +4870,8 @@ Els punts s’han d’establir més a prop que una cinquena part de la mida de l Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Crea una còpia simple de la geometria prenent com a referència l'últim punt seleccionat. @@ -4843,8 +5114,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Mou la geometria prenent com a referència l'últim punt seleccionat diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.qm index 29c4ea3ed8..125132a071 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.qm differ diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.ts b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.ts index 963eedd3b5..49fa8ece62 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_vi.ts @@ -55,6 +55,24 @@ Chuyển đổi giữa chế độ hiển thị và ẩn bội số nút cho tất cả các đường cong B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone Nhân bản - + Creates a clone of the geometry taking as reference the last selected point Tạo một bản sao của hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer Hiển thị/ẩn lớp thông tin đường cong B-spline - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle Ràng buộc cung hay đường tròn - + Constrain an arc or a circle Ràng buộc một cung hay đường tròn - + Constrain radius Cố định bán kính - + Constrain diameter Ràng buộc đường kính @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy Sao chép - + Creates a clone of the geometry taking as reference the last selected point Tạo một bản sao của hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Sửa đổi bội số nút - + Modifies the multiplicity of the selected knot of a B-spline Sửa đổi bội số của nút được chọn của đường cong B-spline - + Increase knot multiplicity Tăng bội số nút - + Decrease knot multiplicity Giảm bội số nút @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle Cố định góc - + Fix the angle of a line or the angle between two lines Sửa góc của một đường thẳng hoặc góc giữa hai đường thẳng @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident Cố định trùng nhau - + Create a coincident constraint on the selected item Tạo ràng buộc trùng hợp ngẫu nhiên trên đối tượng đã chọn @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter Ràng buộc đường kính - + Fix the diameter of a circle or an arc Sửa đường kính của một cung hay đường tròn @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance Cố định khoảng cách - + Fix a length of a line or the distance between a line and a vertex Sửa chiều dài của một đường hoặc khoảng cách giữa một đường thẳng và một đỉnh @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends Sửa khoảng cách ngang giữa hai điểm hoặc hai đầu của đường thẳng @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends Sửa khoảng cách thẳng đứng giữa hai điểm hoặc hai đầu của đường thẳng @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal Cố định ngang bằng - + Create an equality constraint between two lines or between circles and arcs Tạo một ràng buộc ngang bằng giữa hai đường thẳng hoặc giữa các đường tròn và các cung tròn @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally Cố định theo chiều ngang - + Create a horizontal constraint on the selected item Tạo ràng buộc theo phương ngang trên đối tượng đã chọn @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element Ràng buộc một phần tử được căn chỉnh với hình bên trong của phần tử khác @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock Cố định chốt - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel Cố định song song - + Create a parallel constraint between two lines Tạo một sự ràng buộc song song giữa hai đường thẳng @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular Cố định vuông góc - + Create a perpendicular constraint between two lines Tạo một sự ràng buộc vuông góc giữa hai đường thẳng @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object Cố định các điểm lên đối tượng - + Fix a point onto an object Sửa một điểm trên một đối tượng @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius Cố định bán kính - + Fix the radius of a circle or an arc Sửa bán kính của một đường tròn hoặc một cung tròn @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + Constrain refraction (Snell's law') Hạn chế sự khúc xạ (Quy luật của 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical Hạn chế đối xứng - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent Cố định đường tiếp tuyến - + Create a tangent constraint between two entities Tạo một liên kết tiếp tuyến giữa hai đối tượng @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically Cố định theo chiều dọc - + Create a vertical constraint on the selected item Tạo ràng buộc theo chiều dọc trên đối tượng đã chọn @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy Sao chép - + Creates a simple copy of the geometry taking as reference the last selected point Tạo một bản sao của hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Giảm bội số nút - + Decreases the multiplicity of the selected knot of a B-spline Giảm bội số của nút đường cong B-spline đã chọn @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline Tăng bậc của đường cong B-spline @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Tăng bội số nút - + Increases the multiplicity of the selected knot of a B-spline Tăng bội số của nút đường cong B-spline đã chọn @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move Di chuyển - + Moves the geometry taking as reference the last selected point Di chuyển hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point Creates a rectangular array pattern of the geometry taking as reference the last selected point @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry Hiển thị/ẩn hình học bên trong - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry Đối xứng - + Creates symmetric geometry with respect to the last selected line or point Tạo các hình học đối xứng đối với đường hoặc điểm cuối cùng được chọn @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. Phiên bản OCE / OCC này không hỗ trợ thao tác nút. Bạn cần tải phiên bản 6.9.0 hoặc cao hơn. - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. Bạn đang yêu cầu không có sự thay đổi trong bội số nút. - + 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. Chỉ số nút là ngoài vùng biên giới. Lưu ý rằng theo ký hiệu OCC, nút đầu tiên có chỉ số là 1 và không bằng 0. - + 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. Bội số không thể được giảm quá số không. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC không thể làm giảm bội số trong dung sai tối đa. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. Chọn cạnh (hoặc nhiều cạnh) từ bản phác họa. - - - - + + + + Dimensional constraint Khống chế kích thước - - - + + + Only sketch and its support is allowed to select Chỉ cho phép chọn bản phác họa và hỗ trợ nó - + One of the selected has to be on the sketch Một trong những lựa chọn phải ở trên bản phác thảo - - + + Select an edge from the sketch. Chọn một cạnh từ bản phác họa. - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + Impossible constraint Ràng buộc không thích hợp - - - - + + + + The selected edge is not a line segment Cạnh được chọn không phải là một đoạn thẳng - - - - - - + + + + + + Double constraint Hạn chế kép - - - - + + + + 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! - + The selected item(s) can't accept a horizontal constraint! (Các) mục được chọn không thể chấp nhận một khống chế theo phương ngang! - + There are more than one fixed point selected. Select a maximum of one fixed point! Có nhiều hơn một điểm cố định được chọn. Chọn tối đa một điểm cố định! - + The selected item(s) can't accept a vertical constraint! (Các) mục được chọn không thể chấp nhận bị khống chế theo phương đứng! - + 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. Chọn các đỉnh từ bản phác họa. - + Select one vertex from the sketch other than the origin. Chọn một đỉnh từ bản phác họa khác hơn là bản gốc. - + Select only vertices from the sketch. The last selected vertex may be the origin. Chỉ chọn những đỉnh từ bản phác họa. Đỉnh cuối cùng được chọn có thể là gốc tọa độ. - + Wrong solver status Tình trạng thiết bị giải bị lỗi @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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. Chọn một cạnh từ bản phác họa. - + Select only edges from the sketch. Chỉ chọn các cạnh từ bản phác họa. - - - - - - - - + + + + + + + + Error Lỗi - + Select two or more points from the sketch. Chọn hai hoặc nhiều điểm từ bản phác họa. - - + + Select two or more vertexes from the sketch. Chọn hai hoặc nhiều đỉnh từ bản phác họa. - - + + Constraint Substitution Sự thay thế liên kết - + Endpoint to endpoint tangency was applied instead. Thay vào đó, tiếp tiếp từ điểm cuối đến điểm cuối được áp dụng. - + Select vertexes from the sketch. Chọn các đỉnh từ bản phác họa. - - + + Select exactly one line or one point and one line or two points from the sketch. Chọn chính xác một đường hoặc một điểm và một đường hoặc hai điểm từ bản phác họa. - + Cannot add a length constraint on an axis! Không thể khống chế chiều dài trên một trục! - + This constraint does not make sense for non-linear curves Liên kết này không có ý nghĩa gì đối với các đường cong phi tuyến - - - - - - + + + + + + Select the right things from the sketch. Chọn đúng những thứ từ bản phác họa. - - + + Point on B-spline edge currently unsupported. Điểm trên rìa đường cong B-spline hiện tại không được chống đỡ. - - + + 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. Không có điểm nào trong số các điểm được chọn liên kết với các đường cong tương ứng, bởi vì chúng cùng thuộc một phần tử hoặc bởi vì họ đều là các hình bên ngoài. - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. Chọn một điểm và một số đường cong hoặc một đường cong và một vài điểm. Bạn đã chọn %1 đường cong và %2 điểm. - - - - + + + + Select exactly one line or up to two points from the sketch. Chọn chính xác một đường hoặc đến hai điểm từ bản phác họa. - + Cannot add a horizontal length constraint on an axis! Không thể khống chế chiều dài theo phương ngang trên một trục! - + 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 Liên kết này chỉ có ý nghĩa với một đoạn thẳng hoặc một cặp điểm - + Cannot add a vertical length constraint on an axis! Không thể khống chế chiều dài theo phương đứng trên một trục! - + 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. Chọn hai hoặc nhiều đường từ bản phác họa. - - + + Select at least two lines from the sketch. Chọn ít nhất hai đường từ bản phác họa. - + Select a valid line Chọn một đường hợp lệ - - + + The selected edge is not a valid line Cạnh đã chọn không phải là một đường hợp lệ - + 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Các tổ hợp được chấp nhận: hai đường cong; điểm cuối và một đường cong; hai điểm cuối; hai đường cong và một điểm. - + Select some geometry from the sketch. perpendicular constraint Chọn một hình từ bản phác họa. - + Wrong number of selected objects! perpendicular constraint Số đối tượng đã chọn bị sai! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint Với 3 đối tượng, phải có 2 đường cong và 1 điểm. - - + + Cannot add a perpendicularity constraint at an unconnected point! Không thể thêm một liên kết vuông góc ở điểm không được nối! - - - + + + Perpendicular to B-spline edge currently unsupported. Vuông góc với rìa đường cong B-spline hiện tại không được chống đỡ. - - + + One of the selected edges should be a line. Một trong các cạnh được chọn nên là một đường thẳng. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối và một đường cong; hai điểm cuối; hai đường cong và một điểm. - + Select some geometry from the sketch. tangent constraint Chọn một hình từ bản phác họa. - + Wrong number of selected objects! tangent constraint Số đối tượng đã chọn bị sai! - - - + + + Cannot add a tangency constraint at an unconnected point! Không thể thêm một liên kết tiếp tuyến tại điểm không được nối! - - - + + + Tangency to B-spline edge currently unsupported. Tiếp tuyến với đường cong B-spline hiện tại không được chống đỡ. - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. Tiếp tiếp từ điểm đầu này đến điểm đầu kia được áp dụng. Liên kết trùng khớp bị xóa. - - - - + + + + Select one or more arcs or circles from the sketch. Chọn một hoặc nhiều cung hoặc đường tròn từ bản phác họa. - - + + Constrain equal Cố định ngang bằng - + Do you want to share the same radius for all selected elements? Bạn có muốn chia sẻ cùng một bán kính cho tất cả các phần tử đã chọn hay không? - - + + Constraint only applies to arcs or circles. Liên kết chỉ áp dụng cho các cung tròn hoặc đường tròn. - + Do you want to share the same diameter for all selected elements? Do you want to share the same diameter for all selected elements? - - + + Select one or two lines from the sketch. Or select two edges and a point. Chọn một hoặc hai đường từ bản phác họa. Hoặc chọn hai cạnh và một điểm. - - + + Parallel lines Các đường thẳng song song - - + + An angle constraint cannot be set for two parallel lines. Một liên kết góc không thể được tạo bởi hai đường thẳng song song. - + Cannot add an angle constraint on an axis! Không thể thêm một liên kết góc trên một trục! - + Select two edges from the sketch. Chọn hai cạnh từ bản phác họa. - - + + Select two or more compatible edges Chọn hai hoặc nhiều cạnh tương thích - + Sketch axes cannot be used in equality constraints Không thể sử dụng các trục phác thảo trong các liên kết ngang bằng - + Equality for B-spline edge currently unsupported. Tính ngang bằng cho rìa đường cong B-pline hiện tại không được hỗ trợ. - - + + Select two or more edges of similar type Chọn hai hay nhiều cạnh loại tương tự - - - - - + + + + + Select two points and a symmetry line, two points and a symmetry point or a line and a symmetry point from the sketch. Chọn hai điểm và một đường đối xứng, hai điểm và một điểm đối xứng hoặc một đường thẳng và một điểm đối xứng từ bản phác họa. - - + + 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! Không thể thêm một liên kết đối xứng giữa một đường và 2 điểm ở cuối 2 đầu đường thẳng ấy! - + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. Chọn các đối tượng không phải là các hình học chỉ từ một bản phác họa. - + Number of selected objects is not 3 (is %1). Số các đối tượng đã chọn không phải là 3 (là %1). - - + + Select at least one ellipse and one edge from the sketch. Chọn ít nhất một hình elip và cạnh từ bản phác họa. - + Sketch axes cannot be used in internal alignment constraint Các trục bản phác họa không thể được sử dụng trong liên kết hiệu chỉnh bên trong - - + + Maximum 2 points are supported. Tối đa 2 điểm được hỗ trợ. - - + + Maximum 2 lines are supported. Tối đa 2 đường được hỗ trợ. - - + + Nothing to constrain Không có gì để ràng buộc - - - - + + + + Extra elements Các phần tử bổ sung - - - + + + More elements than possible for the given ellipse were provided. These were ignored. Có thể có nhiều phần tử hơn cho hình elip được cung cấp. Nhưng chúng bị bỏ qua. - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. - + More elements than possible for the given arc of ellipse were provided. These were ignored. Có thể có nhiều phần tử hơn cho cung elip được cung cấp. Nhưng chúng đã bị bỏ qua. - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. Hiện tại, các hình bên trong chỉ được hỗ trợ cho hình elip hoặc cung elip. Phần tử cuối cùng phải là một hình elip hoặc một cung elip. @@ -2862,124 +3124,124 @@ Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối - + CAD Kernel Error Lỗi bộ phận nòng cốt của CAD - + None of the selected elements is an edge. Không có phần tử nào được chọn là một cạnh. - - + + At least one of the selected objects was not a B-Spline and was ignored. Ít nhất một trong số các đối tượng đã chọn không phải là một đường cong B-spline và đã bị bỏ qua. - - + + Wrong OCE/OCC version Phiên bản OCE/OCC bị lỗi - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher Phiên bản OCE / OCC này không hỗ trợ thao tác nút. Bạn cần tải phiên bản 6.9.0 hoặc cao hơn - - + + The selection comprises more than one item. Please select just one knot. Việc lựa chọn này bao gồm nhiều hơn một mục. Vui lòng chọn chỉ một nút. - + Input Error Lỗi nhập dữ liệu - - + + None of the selected elements is a knot of a B-spline Không có phần tử nào được chọn là một nút của đường cong B-spline - - - - + + + + Select at least two edges from the sketch. Chọn ít nhất hai cạnh từ bản phác họa. - - + + One selected edge is not connectable Một cạnh được chọn không thể kết nối - + Closing a shape formed by exactly two lines makes no sense. Tạo một hình kín bởi chính xác 2 đường là điều không hợp lý. - - - - - - - - + + + + + + + + Select elements from a single sketch. Chọn các phần tử từ bản phác họa đơn lẻ. - + No constraint selected Không có liên kết nào được lựa chọn - + At least one constraint must be selected Phải chọn ít nhất một liên kết - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. Một vật đối xứng đòi hỏi phải có ít nhất hai phần tử hình học, phần tử hình học cuối cùng là tham chiếu cho việc xây dựng hình đối xứng. - + The last element must be a point or a line serving as reference for the symmetry construction. Phần tử cuối cùng phải là một điểm hoặc một đường thẳng đóng vai trò như mốc tham chiếu cho việc xây dựng vật thể đối xứng. - - + + A copy requires at least one selected non-external geometric element Một bản sao đòi hỏi ít nhất một phần tử hình học không ở bên ngoài đã chọn - + Delete All Geometry Xóa tất cả các hình - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints Xóa mọi ràng buộc - + Are you really sure you want to delete all the constraints? Bạn có thực sự muốn xóa tất cả các ràng buộc? @@ -3040,62 +3302,62 @@ Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối SketcherGui::ConstraintView - + Change value Đổi giá trị - + Toggle to/from reference Chuyển đổi giữa chế độ tham chiếu và chế độ chung - + Deactivate Deactivate - + Activate Activate - + Show constraints Hiển thị các ràng buộc - + Hide constraints Ẩn các ràng buộc - + Rename Đổi tên - + Center sketch Trung tâm bản phác họa - + Delete Xóa - + Swap constraint names Trao đổi tên các ràng buộc - + Unnamed constraint Ràng buộc không tên - + Only the names of named constraints can be swapped. Chỉ có tên của các ràng buộc được trao đổi. @@ -3118,8 +3380,8 @@ Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối Chèn bán kính - - + + Radius: Bán kính: @@ -3130,8 +3392,8 @@ Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối Đường kính trong - - + + Diameter: Đường kính: @@ -3159,24 +3421,24 @@ Các tổ hợp được chấp nhận: hai đường cong; một điểm cuối Length: - - + + Change radius Thay đổi bán kính - - + + Change diameter Đổi đường kính - + Refractive index ratio Tỷ số chiết suất - + Ratio n2/n1: Tỷ số n2/n1: @@ -4047,13 +4309,13 @@ Tuy nhiên, không có tìm thấy ràng buộc nào liên kết với các đi Extended information - + Constraints Constraints - - + + Error Lỗi @@ -4412,104 +4674,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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 Bản phác họa không hợp lệ - + Do you want to open the sketch validation tool? Bạn có muốn mở công cụ xác thực bản phác họa? - + The sketch is invalid and cannot be edited. Bản phác họa không hợp lệ và không thể bị chỉnh sửa. - + Please remove the following constraint: Hãy loại bỏ những liên kết sau: - + Please remove at least one of the following constraints: Hãy loại bỏ ít nhất một trong những liên kết sau đây: - + Please remove the following redundant constraint: Hãy loại bỏ liên kết thừa sau đây: - + Please remove the following redundant constraints: Hãy loại bỏ các liên kết thừa sau đây: - + Empty sketch Bản phác họa trống - + Over-constrained sketch Bản phác họa bị quá hạn chế - - - + + + (click to select) (nhấp chuột để chọn) - + Sketch contains conflicting constraints Bản phác họa bao gồm những liên kết ngược chiều - + Sketch contains redundant constraints Bản phác họa bao gồm những liên kết thừa - + Fully constrained sketch Bản phác thảo đã được ràng buộc hoàn toàn - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec Được xử lý trong %1 giây - + Unsolved (%1 sec) Chưa được xử lý (%1 giây) @@ -4517,8 +4779,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines Chuyển giữa hiển thị và ẩn đỉnh đường cong cho tất cả các đường cong B-splines @@ -4526,8 +4788,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Giảm bội số của nút đường cong B-spline đã chọn @@ -4535,8 +4797,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines Chuyển giữa chế độ hiển thị và ẩn bậc cho tất cả các đường cong B-splines @@ -4544,8 +4806,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Tăng bội số của nút đường cong B-spline đã chọn @@ -4553,17 +4815,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Chuyển đổi giữa chế độ hiển thị và ẩn bội số nút cho tất cả các đường cong B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines Chuyển giữa chế độ hiển thị và ẩn đa giác khống chế đường cong cho tất cả các đường cong B-splines @@ -4571,8 +4842,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point Tạo một bản sao của hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -4580,17 +4851,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone Nhân bản - + Copy Sao chép - + Move Di chuyển @@ -4598,8 +4869,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc Sửa đường kính của một cung hay đường tròn @@ -4607,8 +4878,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc Sửa bán kính của một đường tròn hoặc một cung tròn @@ -4616,8 +4887,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point Tạo một bản sao của hình học lấy làm tham chiếu điểm cuối cùng đã chọn @@ -4861,8 +5132,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point Di chuyển hình học lấy làm tham chiếu điểm cuối cùng đã chọn diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.qm index 6082b13825..3b836dcbab 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.qm differ 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 a849cc36a4..c41095a5a0 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-CN.ts @@ -55,6 +55,24 @@ 切换所有 B-样条曲线节点多重性的显示和隐藏 + + CmdSketcherBSplinePoleWeight + + + Sketcher + 草绘 + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher 草绘 - + Clone 克隆 - + Creates a clone of the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何形状进行含约束连动的复制 @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher 草绘 - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher 草绘 - - + Show/hide B-spline information layer 显示/隐藏 B-样条信息层 - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher 草绘 - + Constrain arc or circle 约束圆弧或圆 - + Constrain an arc or a circle 约束圆弧或圆 - + Constrain radius 半径约束 - + Constrain diameter 约束直径 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher 草绘 - + Copy 复制 - + Creates a clone of the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何形状进行含约束连动的复制 @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher 草绘 - + Modify knot multiplicity 修改结多重性 - + Modifies the multiplicity of the selected knot of a B-spline 修改B样条曲线选定节点的多重性 - + Increase knot multiplicity 提高结多重性 - + Decrease knot multiplicity 减少结多重性 @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher 草绘 - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher 草绘 - + Constrain angle 角度约束 - + Fix the angle of a line or the angle between two lines 固定一直线角度或两直线夹角 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher 草绘 - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher 草绘 - + Constrain coincident 重合约束 - + Create a coincident constraint on the selected item 在所选对象上创建重合约束 @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher 草绘 - + Constrain diameter 约束直径 - + Fix the diameter of a circle or an arc 固定圆或圆弧的直径 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher 草绘 - + Constrain distance 距离约束 - + Fix a length of a line or the distance between a line and a vertex 固定线的长度或者点到线的距离 @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher 草绘 - + Constrain horizontal distance 水平距离约束 - + Fix the horizontal distance between two points or line ends 固定两点(或线端点)之间的水平距离 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher 草绘 - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends 固定两点(或线端点)之间的垂直距离 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher 草绘 - + Constrain equal 相等约束 - + Create an equality constraint between two lines or between circles and arcs 两直线或圆与圆弧间创建相等约束 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher 草绘 - + Constrain horizontally 水平约束 - + Create a horizontal constraint on the selected item 在所选对象上创建水平约束 @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher 草绘 - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element 约束元素与另一个元素的内部几何元素对齐 @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher 草绘 - + Constrain lock 锁定约束 - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher 草绘 - + Constrain parallel 平行约束 - + Create a parallel constraint between two lines 两条线之间创建平行约束 @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher 草绘 - + Constrain perpendicular 垂直约束 - + Create a perpendicular constraint between two lines 为两条直线创建垂直约束 @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher 草绘 - + Constrain point onto object 点约束至对象 - + Fix a point onto an object 固定点至对象 @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher 草绘 - + Constrain radius 半径约束 - + Fix the radius of a circle or an arc 固定圆或圆弧的半径 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher 草绘 - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher 草绘 - + Constrain symmetrical 对称约束 - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher 草绘 - + Constrain tangent 相切约束 - + Create a tangent constraint between two entities 在两实体间创建相切约束 @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher 草绘 - + Constrain vertically 垂直约束 - + Create a vertical constraint on the selected item 在所选对象上创建垂直约束 @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher 草绘 - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher 草绘 - + Copy 复制 - + Creates a simple copy of the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何图形进行不含约束连动的复制 @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher 草绘 - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher 草绘 - + Decrease knot multiplicity 减少结多重性 - + Decreases the multiplicity of the selected knot of a B-spline 减少贝塞尔曲线选定节点的多重性 @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher 草绘 - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher 草绘 - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher 草绘 - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline 增加 B 样条的度数 @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher 草绘 - + Increase knot multiplicity 提高结多重性 - + Increases the multiplicity of the selected knot of a B-spline 增加 B 样条所选节点的多重性 @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher 草绘 - + Move 移动 - + Moves the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何形状进行移动 @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher 草绘 - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point 以最后所选的点作为参考,创建图形的长方形阵列 @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher 草绘 - + Show/hide internal geometry 显示/隐藏内部几何形状 - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher 草绘 - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher 草绘 - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher 草绘 - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher 草绘 - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher 草绘 - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher 草绘 - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher 草绘 - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher 草绘 - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher 草绘 - + Symmetry 对称 - + Creates symmetric geometry with respect to the last selected line or point 建立几何对称,并以最后一个选择的点或线为对称轴 @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher 草绘 - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher 草绘 - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. 无法猜测曲线的交叉点。尝试在你打算做圆角的曲线顶点之间添加一个重合约束。 - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. 此版本的OCE/OCC 不支持节点操作。你需要6.9.0 或更高版本. - + 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. 多重性无法增加到超过B样条的自由度。 - + The multiplicity cannot be decreased beyond zero. 多重性不能小于0. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC 无法在最大公差范围内减少多重性。 @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. 从草图选择边 - - - - + + + + Dimensional constraint 尺寸约束 - - - + + + Only sketch and its support is allowed to select 仅允许选择草图及其支持面 - + One of the selected has to be on the sketch 其中一个选择必须在草图上 - - + + 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! 所选边已有块约束! - + The selected item(s) can't accept a horizontal constraint! 所选项目无法应用水平约束! - + There are more than one fixed point selected. Select a maximum of one fixed point! 选取了多个固定点。最多只能选择一个固定点! - + The selected item(s) can't accept a vertical 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 错误的求解状态 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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 only edges from the sketch. 仅从草绘中选择边。 - - - - - - - - + + + + + + + + Error 错误 - + Select two or more points from the sketch. 从草绘选择两个或更多点。 - - + + Select two or more vertexes from the sketch. 从草图中选取两个或多个顶点。 - - + + Constraint Substitution 约束替换 - + Endpoint to endpoint tangency was applied instead. 已应用端点到端点相切作为替代方案。 - + Select vertexes from the sketch. 从草图中选取顶点. - - + + Select exactly one line or one point and one line or two points from the sketch. 从草图仅选取一直线, 或一点和一直线, 或两点. - + Cannot add a length constraint on an axis! 无法在坐标轴上添加长度约束! - + This constraint does not make sense for non-linear curves 此约束不适用于非线性曲线 - - - - - - + + + + + + Select the right things from the sketch. 从草绘选择正确的对象。 - - + + Point on B-spline edge currently unsupported. 当前不支持 B 样条边上的点。 - - + + 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. 所选的点没有一个被约束到各自的曲线上,因为它们是在同一元素上的一部分,或是它们都是外部几何形状。 - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. 选取一点及数条曲线,或是一条曲线及数个点。您已选取 %1 条曲线及 %2 个点。 - - - - + + + + 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. 从草图选择两条或两条以上直线. - - + + Select at least two lines from the sketch. 至少从草图选择两直线. - + Select 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. @@ -2559,45 +2821,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 接受的组合: 两条曲线; 一个端点和一个曲线; 两个端点; 两条曲线和一个点。 - + Select some geometry from the sketch. perpendicular constraint 从草图中选取一些几何属性 - + Wrong number of selected objects! perpendicular constraint 选取对象的数量有误! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 3个对象时至少需有2条曲线及1个点。 - - + + Cannot add a perpendicularity constraint at an unconnected point! 不能对没有连接点的两条线段添加"垂直"约束 - - - + + + Perpendicular to B-spline edge currently unsupported. 目前不支持垂直于的 B-样条边缘。 - - + + One of the selected edges should be a line. 所选边之一须为直线. - + 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. @@ -2607,249 +2869,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 接受的组合: 两条曲线; 一个端点和一个曲线; 两个端点; 两条曲线和一个点。 - + Select some geometry from the sketch. tangent constraint 从草图中选取一些几何属性 - + Wrong number of selected objects! tangent constraint 选取对象的数量有误! - - - + + + Cannot add a tangency constraint at an unconnected point! 不能对没有连接点的两条线段添加"相切"约束 - - - + + + Tangency to B-spline edge currently unsupported. 目前不支持与B-样条边缘相切。 - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 已应用端点到端点相切。已删除重合约束。 - - - - + + + + Select one or more arcs or circles from the sketch. 从草图中选择一个或多个弧或圆。 - - + + Constrain equal 相等约束 - + Do you want to share the same radius for all selected elements? 你想要将所有所选元素的半径设置成相同的吗? - - + + Constraint only applies to arcs or circles. 约束只适用于圆弧或圆。 - + Do you want to share the same diameter for all selected elements? 你想要将所有所选元素的直径设置成相同的吗? - - + + Select one or two lines from the sketch. Or select two edges and a point. 从草图中选择一或两条直线。或选择两条边和一个点。 - - + + Parallel lines 平行线 - - + + An angle constraint cannot be set for two parallel lines. 不能为两条平行线设置角度约束。 - + 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. 请从草图中选取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. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. 选取的物件并非来自于草图的几何形状。 - + Number of selected objects is not 3 (is %1). 选定对象的数目不是 3 (是 %1)。 - - + + Select at least one ellipse and one edge from the sketch. 从草图中至少选择一个椭圆和一个边。 - + Sketch axes cannot be used in internal alignment constraint 草图轴线不能被用作内部的对齐约束。 - - + + Maximum 2 points are supported. 支持最大 2 个点。 - - + + Maximum 2 lines are supported. 支持最大 2条直线。 - - + + Nothing to constrain 无可约束元素 - - - - + + + + Extra elements 额外的元素 - - - + + + More elements than possible for the given ellipse were provided. These were ignored. 超过设定椭圆所允许的元素。这些会被忽略。 - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. 您无法将一椭圆之孤与另一椭圆之弧设定内部约束,请仅选择单一椭圆之弧。 - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. 您无法将一椭圆与另一椭圆之弧设定内部约束,请仅选择单一椭圆或椭圆之弧。 - + More elements than possible for the given arc of ellipse were provided. These were ignored. 超过设定椭圆之弧所须之元素,这些会被忽略。 - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. 目前内部几何仅支持椭圆或椭圆之弧,最后一个选定的元素必须是椭圆或椭圆之弧。 @@ -2862,124 +3124,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD 内核错误 - + None of the selected elements is an edge. 被选中的元素没有一个是边缘。 - - + + At least one of the selected objects was not a B-Spline and was ignored. 至少有一个所选对象不是 B 样条, 被忽略。 - - + + Wrong OCE/OCC version OCE/OCC 版本错误 - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher 此版本的OCE/OCC 不支持节点操作。你需要6.9.0 或更高版本 - - + + The selection comprises more than one item. Please select just one knot. 所选内容包括多个项目。请只选择一个节点。 - + Input Error 输入错误 - - + + None of the selected elements is a knot of a B-spline 所选元素都不是B样条的节点 - - - - + + + + Select at least two edges from the sketch. 在草图中至少选择两个边。 - - + + One selected edge is not connectable 其中一个选取的边无法连接 - + Closing a shape formed by exactly two lines makes no sense. 仅由两条线要产生封闭造型是不可能的。 - - - - - - - - + + + + + + + + Select elements from a single sketch. 由单一草图中选择元素。 - + No constraint selected 没有约束被选定 - + At least one constraint must be selected 至少选择一个约束 - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. 一个对称构造需要至少两个几何元素,最后选定的几何元素是对称构造的参照元素。 - + The last element must be a point or a line serving as reference for the symmetry construction. 作为对称构造的参考基准,最后选定的元素必须是一个点或者一条直线。 - - + + A copy requires at least one selected non-external geometric element 复制操作需要至少一个被选定的非外部几何元素。 - + Delete All Geometry 删除所有几何图形 - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints 删除所有约束 - + Are you really sure you want to delete all the constraints? 是否确实要删除所有约束? @@ -3040,62 +3302,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value 更改值 - + Toggle to/from reference 切换到参考基准/从参考基准切换过来 - + Deactivate 停用 - + Activate 启用 - + Show constraints 显示约束 - + Hide constraints 隐藏约束 - + Rename 重命名 - + Center sketch 将所选草图置于窗口中央 - + Delete 删除 - + Swap constraint names 替换约束名 - + Unnamed constraint 未命名约束 - + Only the names of named constraints can be swapped. 只有已命名约束名称可被替换。 @@ -3118,8 +3380,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 插入半径 - - + + Radius: 半径: @@ -3130,8 +3392,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 插入直径 - - + + Diameter: 直径: @@ -3159,24 +3421,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 长度: - - + + Change radius 更改半径 - - + + Change diameter 更改直径 - + Refractive index ratio 折射率比 - + Ratio n2/n1: 比例 n2/n1: @@ -4044,13 +4306,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints 约束 - - + + Error 错误 @@ -4409,104 +4671,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: 请删除以下冗余约束: - + Empty sketch 空草图 - + Over-constrained sketch 过度约束的草图 - - - + + + (click to select) (单击选取) - + Sketch contains conflicting constraints 草图包含相互冲突的约束 - + Sketch contains redundant constraints 草图包含冗余约束 - + Fully constrained sketch 完全约束的草图 - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec 解算%1秒 - + Unsolved (%1 sec) 未解算(%1秒) @@ -4514,8 +4776,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines 切换所有 B-样条曲线曲率梳的显示和隐藏 @@ -4523,8 +4785,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline 减少贝塞尔曲线选定节点的多重性 @@ -4532,8 +4794,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines 切换所有 B-样条曲线角度数的显示和隐藏 @@ -4541,8 +4803,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline 增加 B 样条所选节点的多重性 @@ -4550,17 +4812,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines 切换所有 B-样条曲线节点多重性的显示和隐藏 + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines 切换所有 B-样条曲线控制多边形的显示和隐藏 @@ -4568,8 +4839,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何形状进行含约束连动的复制 @@ -4577,17 +4848,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone 克隆 - + Copy 复制 - + Move 移动 @@ -4595,8 +4866,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 固定圆或圆弧的直径 @@ -4604,8 +4875,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 固定圆或圆弧的半径 @@ -4613,8 +4884,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何图形进行不含约束连动的复制 @@ -4858,8 +5129,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point 依最后所选的点作为参考点对几何形状进行移动 diff --git a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.qm b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.qm index d0b5dbd734..ff500fc73a 100644 Binary files a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.qm and b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.qm differ 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 e591224a44..7edbdd6c8e 100644 --- a/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts +++ b/src/Mod/Sketcher/Gui/Resources/translations/Sketcher_zh-TW.ts @@ -55,6 +55,24 @@ Switches between showing and hiding the knot multiplicity for all B-splines + + CmdSketcherBSplinePoleWeight + + + Sketcher + Sketcher + + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + CmdSketcherBSplinePolygon @@ -94,17 +112,17 @@ CmdSketcherClone - + Sketcher Sketcher - + Clone 複製 - + Creates a clone of the geometry taking as reference the last selected point 依最後所選的點作為參考點對幾何進行含拘束連動之複製 @@ -112,17 +130,17 @@ CmdSketcherCloseShape - + Sketcher Sketcher - + Close shape Close shape - + Produce a closed shape by tying the end point of one element with the next element's starting point Produce a closed shape by tying the end point of one element with the next element's starting point @@ -130,61 +148,65 @@ CmdSketcherCompBSplineShowHideGeometryInformation - + Sketcher Sketcher - - + Show/hide B-spline information layer 顯示/隱藏 B型不規則曲線資訊圖層 - + Show/hide B-spline degree Show/hide B-spline degree - + Show/hide B-spline control polygon Show/hide B-spline control polygon - + Show/hide B-spline curvature comb Show/hide B-spline curvature comb - + Show/hide B-spline knot multiplicity Show/hide B-spline knot multiplicity + + + Show/hide B-spline control point weight + Show/hide B-spline control point weight + CmdSketcherCompConstrainRadDia - + Sketcher Sketcher - + Constrain arc or circle 約束弧或圓的直/半徑 - + Constrain an arc or a circle 約束單一圓弧或圓的直/半徑 - + Constrain radius 半徑拘束 - + Constrain diameter 直徑拘束 @@ -192,17 +214,17 @@ CmdSketcherCompCopy - + Sketcher Sketcher - + Copy 複製 - + Creates a clone of the geometry taking as reference the last selected point 依最後所選的點作為參考點對幾何進行含拘束連動之複製 @@ -380,27 +402,27 @@ CmdSketcherCompModifyKnotMultiplicity - + Sketcher Sketcher - + Modify knot multiplicity Modify knot multiplicity - + Modifies the multiplicity of the selected knot of a B-spline Modifies the multiplicity of the selected knot of a B-spline - + Increase knot multiplicity Increase knot multiplicity - + Decrease knot multiplicity Decrease knot multiplicity @@ -408,17 +430,17 @@ CmdSketcherConnect - + Sketcher Sketcher - + Connect edges Connect edges - + Tie the end point of the element with next element's starting point Tie the end point of the element with next element's starting point @@ -426,17 +448,17 @@ CmdSketcherConstrainAngle - + Sketcher Sketcher - + Constrain angle 角度拘束 - + Fix the angle of a line or the angle between two lines 固定線之角度或兩線間角度 @@ -444,17 +466,17 @@ CmdSketcherConstrainBlock - + Sketcher Sketcher - + Constrain block Constrain block - + Block constraint: block the selected edge from moving Block constraint: block the selected edge from moving @@ -462,17 +484,17 @@ CmdSketcherConstrainCoincident - + Sketcher Sketcher - + Constrain coincident 共點拘束 - + Create a coincident constraint on the selected item 於所選項目建立共點拘束 @@ -480,17 +502,17 @@ CmdSketcherConstrainDiameter - + Sketcher Sketcher - + Constrain diameter 直徑拘束 - + Fix the diameter of a circle or an arc 固定一個圓或弧的直徑 @@ -498,17 +520,17 @@ CmdSketcherConstrainDistance - + Sketcher Sketcher - + Constrain distance 距離拘束 - + Fix a length of a line or the distance between a line and a vertex 固定線長或線與頂點間距 @@ -516,17 +538,17 @@ CmdSketcherConstrainDistanceX - + Sketcher Sketcher - + Constrain horizontal distance Constrain horizontal distance - + Fix the horizontal distance between two points or line ends 固定兩點或線段的水平距離 @@ -534,17 +556,17 @@ CmdSketcherConstrainDistanceY - + Sketcher Sketcher - + Constrain vertical distance Constrain vertical distance - + Fix the vertical distance between two points or line ends 固定兩點或線段的垂直距離 @@ -552,17 +574,17 @@ CmdSketcherConstrainEqual - + Sketcher Sketcher - + Constrain equal 相等拘束 - + Create an equality constraint between two lines or between circles and arcs 於兩線/圓/弧之間建立等長拘束 @@ -570,17 +592,17 @@ CmdSketcherConstrainHorizontal - + Sketcher Sketcher - + Constrain horizontally 水平拘束 - + Create a horizontal constraint on the selected item 於所選項目建立水平拘束 @@ -588,17 +610,17 @@ CmdSketcherConstrainInternalAlignment - + Sketcher Sketcher - + Constrain internal alignment Constrain internal alignment - + Constrains an element to be aligned with the internal geometry of another element 必須與另一個元素的內部幾何對其才可對元素進行拘束設定 @@ -606,17 +628,17 @@ CmdSketcherConstrainLock - + Sketcher Sketcher - + Constrain lock 鎖定拘束 - + Lock constraint: create both a horizontal and a vertical distance constraint on the selected vertex Lock constraint: create both a horizontal and a vertical distance constraint @@ -626,17 +648,17 @@ on the selected vertex CmdSketcherConstrainParallel - + Sketcher Sketcher - + Constrain parallel 平行拘束 - + Create a parallel constraint between two lines 於兩條線間建立平行拘束 @@ -644,17 +666,17 @@ on the selected vertex CmdSketcherConstrainPerpendicular - + Sketcher Sketcher - + Constrain perpendicular 垂直拘束 - + Create a perpendicular constraint between two lines 於兩條線間建立垂直拘束 @@ -662,17 +684,17 @@ on the selected vertex CmdSketcherConstrainPointOnObject - + Sketcher Sketcher - + Constrain point onto object 拘束點於物件上 - + Fix a point onto an object 固定點於物件上 @@ -680,17 +702,17 @@ on the selected vertex CmdSketcherConstrainRadius - + Sketcher Sketcher - + Constrain radius 半徑拘束 - + Fix the radius of a circle or an arc 固定圓或弧之半徑 @@ -698,17 +720,17 @@ on the selected vertex CmdSketcherConstrainSnellsLaw - + Sketcher Sketcher - + 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 @@ -718,17 +740,17 @@ and an edge as an interface. CmdSketcherConstrainSymmetric - + Sketcher Sketcher - + Constrain symmetrical 對稱拘束 - + Create a symmetry constraint between two points with respect to a line or a third point Create a symmetry constraint between two points @@ -738,17 +760,17 @@ with respect to a line or a third point CmdSketcherConstrainTangent - + Sketcher Sketcher - + Constrain tangent 相切拘束 - + Create a tangent constraint between two entities 於兩個實體間建立相切拘束 @@ -756,17 +778,17 @@ with respect to a line or a third point CmdSketcherConstrainVertical - + Sketcher Sketcher - + Constrain vertically 垂直拘束 - + Create a vertical constraint on the selected item 於所選項目建立垂直拘束 @@ -774,17 +796,17 @@ with respect to a line or a third point CmdSketcherConvertToNURB - + Sketcher Sketcher - + Convert geometry to B-spline Convert geometry to B-spline - + Converts the selected geometry to a B-spline Converts the selected geometry to a B-spline @@ -792,17 +814,17 @@ with respect to a line or a third point CmdSketcherCopy - + Sketcher Sketcher - + Copy 複製 - + Creates a simple copy of the geometry taking as reference the last selected point 依最後所選的點作為參考點對幾何進行不含拘束連動之複製 @@ -1278,17 +1300,17 @@ with respect to a line or a third point CmdSketcherDecreaseDegree - + Sketcher Sketcher - + Decrease B-spline degree Decrease B-spline degree - + Decreases the degree of the B-spline Decreases the degree of the B-spline @@ -1296,17 +1318,17 @@ with respect to a line or a third point CmdSketcherDecreaseKnotMultiplicity - + Sketcher Sketcher - + Decrease knot multiplicity Decrease knot multiplicity - + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -1314,17 +1336,17 @@ with respect to a line or a third point CmdSketcherDeleteAllConstraints - + Sketcher Sketcher - + Delete all constraints Delete all constraints - + Delete all constraints in the sketch Delete all constraints in the sketch @@ -1332,17 +1354,17 @@ with respect to a line or a third point CmdSketcherDeleteAllGeometry - + Sketcher Sketcher - + Delete all geometry Delete all geometry - + Delete all geometry and constraints in the current sketch, with the exception of external geometry Delete all geometry and constraints in the current sketch, with the exception of external geometry @@ -1404,17 +1426,17 @@ with respect to a line or a third point CmdSketcherIncreaseDegree - + Sketcher Sketcher - + Increase B-spline degree Increase B-spline degree - + Increases the degree of the B-spline 增加B型不規則曲線的多項式次數 @@ -1422,17 +1444,17 @@ with respect to a line or a third point CmdSketcherIncreaseKnotMultiplicity - + Sketcher Sketcher - + Increase knot multiplicity Increase knot multiplicity - + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -1545,17 +1567,17 @@ as mirroring reference. CmdSketcherMove - + Sketcher Sketcher - + Move 移動 - + Moves the geometry taking as reference the last selected point 以最後選擇的點為基準移動圖元 @@ -1581,17 +1603,17 @@ as mirroring reference. CmdSketcherRectangularArray - + Sketcher Sketcher - + Rectangular array Rectangular array - + Creates a rectangular array pattern of the geometry taking as reference the last selected point 以最後選擇的點為基準建立矩形陣列 @@ -1619,17 +1641,17 @@ This will clear the 'Support' property, if any. CmdSketcherRestoreInternalAlignmentGeometry - + Sketcher Sketcher - + Show/hide internal geometry 顯示/隱藏內部幾何 - + Show all internal geometry or hide unused internal geometry Show all internal geometry or hide unused internal geometry @@ -1637,13 +1659,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConflictingConstraints - + Sketcher Sketcher - - + + Select conflicting constraints Select conflicting constraints @@ -1651,17 +1673,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectConstraints - + Sketcher Sketcher - + Select associated constraints Select associated constraints - + Select the constraints associated with the selected geometrical elements Select the constraints associated with the selected geometrical elements @@ -1669,17 +1691,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsAssociatedWithConstraints - + Sketcher Sketcher - + Select associated geometry Select associated geometry - + Select the geometrical elements associated with the selected constraints Select the geometrical elements associated with the selected constraints @@ -1687,17 +1709,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectElementsWithDoFs - + Sketcher Sketcher - + Select unconstrained DoF Select unconstrained DoF - + Select geometrical elements where the solver still detects unconstrained degrees of freedom. Select geometrical elements where the solver still detects unconstrained degrees of freedom. @@ -1705,17 +1727,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectHorizontalAxis - + Sketcher Sketcher - + Select horizontal axis Select horizontal axis - + Select the local horizontal axis of the sketch Select the local horizontal axis of the sketch @@ -1723,17 +1745,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectOrigin - + Sketcher Sketcher - + Select origin Select origin - + Select the local origin point of the sketch Select the local origin point of the sketch @@ -1741,13 +1763,13 @@ This will clear the 'Support' property, if any. CmdSketcherSelectRedundantConstraints - + Sketcher Sketcher - - + + Select redundant constraints Select redundant constraints @@ -1755,17 +1777,17 @@ This will clear the 'Support' property, if any. CmdSketcherSelectVerticalAxis - + Sketcher Sketcher - + Select vertical axis Select vertical axis - + Select the local vertical axis of the sketch Select the local vertical axis of the sketch @@ -1809,17 +1831,17 @@ This will clear the 'Support' property, if any. CmdSketcherSymmetry - + Sketcher Sketcher - + Symmetry 對稱 - + Creates symmetric geometry with respect to the last selected line or point 建立幾何對稱,並以最後一個選擇之點或線為對稱軸 @@ -1827,17 +1849,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleActiveConstraint - + Sketcher Sketcher - + Activate/deactivate constraint Activate/deactivate constraint - + Activates or deactivates the selected constraints Activates or deactivates the selected constraints @@ -1863,17 +1885,17 @@ This will clear the 'Support' property, if any. CmdSketcherToggleDrivingConstraint - + Sketcher Sketcher - + 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, @@ -1964,6 +1986,246 @@ invalid constraints, degenerated geometry, etc. When in edit mode, set the camera orientation perpendicular to the sketch plane. + + Command + + + + Add horizontal constraint + Add horizontal constraint + + + + + + Add horizontal alignment + Add horizontal alignment + + + + + Add vertical constraint + Add vertical constraint + + + + Add vertical alignment + Add vertical alignment + + + + 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 + + + + Swap edge tangency with ptp tangency + Swap edge tangency with ptp tangency + + + + + 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 length constraint + Add length 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 + + + + + + + + + + Add tangent constraint + Add tangent constraint + + + + Swap coincident+tangency with ptp tangency + Swap coincident+tangency with ptp tangency + + + + + + + + + + + + + + + + + Add tangent constraint point + Add tangent constraint point + + + + + + + Add radius constraint + Add radius constraint + + + + + + + Add diameter constraint + Add diameter 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 + + + + + Add internal alignment constraint + Add internal alignment constraint + + + + Toggle constraint to driving/reference + Toggle constraint to driving/reference + + + + Activate/Deactivate constraint + Activate/Deactivate constraint + + Exceptions @@ -2002,47 +2264,47 @@ 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. Unable to guess intersection of curves. Try adding a coincident constraint between the vertices of the curves you are intending to fillet. - + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher. 此版本的 OCE/OCC 並不支援控制點操作。你需要6.9.0版或更新的版本。 - + BSpline Geometry Index (GeoID) is out of bounds. BSpline Geometry Index (GeoID) is out of bounds. - + You are requesting no change in knot multiplicity. 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. 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 increased beyond the degree of the B-spline. - + The multiplicity cannot be decreased beyond zero. The multiplicity cannot be decreased beyond zero. - + OCC is unable to decrease the multiplicity within the maximum tolerance. OCC is unable to decrease the multiplicity within the maximum tolerance. @@ -2111,134 +2373,134 @@ invalid constraints, degenerated geometry, etc. - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2252,136 +2514,136 @@ invalid constraints, degenerated geometry, etc. 由草圖選取邊 - - - - + + + + Dimensional constraint 尺度拘束 - - - + + + Only sketch and its support is allowed to select 僅能選取草圖及其所依附之面 - + One of the selected has to be on the sketch 所選中已有於草圖上者 - - + + 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! 所選邊線已套用定位拘束! - + The selected item(s) can't accept a horizontal constraint! 所選項目無法使用水平拘束! - + There are more than one fixed point selected. Select a maximum of one fixed point! 選取超過一個固定點. 請選取最多一個固定點! - + The selected item(s) can't accept a vertical 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 求解器狀態錯誤 @@ -2396,160 +2658,160 @@ invalid constraints, degenerated geometry, etc. Cannot add a constraint between two fixed geometries. Fixed geometries involve external geometry, blocked geometry or special points as B-spline knot points. - + 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 only edges from the sketch. 僅有邊線能從草圖中被選取 - - - - - - - - + + + + + + + + Error 錯誤 - + Select two or more points from the sketch. 從草圖中選取二個或更多點 - - + + Select two or more vertexes from the sketch. 從草圖中選取兩個或更多頂點。 - - + + Constraint Substitution 拘束替換 - + Endpoint to endpoint tangency was applied instead. 已被取代為終點對終點相切 - + Select vertexes from the sketch. 由草圖中選取頂點。 - - + + Select exactly one line or one point and one line or two points from the sketch. 由草圖中選取一條線或一個點,以及一條線或兩個點。 - + Cannot add a length constraint on an axis! 無法於軸上增加長度拘束! - + This constraint does not make sense for non-linear curves 此拘束條件在非線性曲線上並不合理 - - - - - - + + + + + + Select the right things from the sketch. 從草圖中選取正確的圖元 - - + + Point on B-spline edge currently unsupported. 目前並未支援端點到B型不規則曲線的共點拘束 - - + + 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. 於個別的曲線上無所選的點被拘束,可能因為他們是在同一元素上的一部分,或是他們都是外部幾何。 - + Select either one point and several curves, or one curve and several points. You have selected %1 curves and %2 points. 選取一點及數條曲線,或是一條曲線及數個點。您已選取 %1 條曲線及 %2 個點。 - - - - + + + + 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. 由草圖中選取兩條或以上線條。 - - + + Select at least two lines from the sketch. 由草圖中選取至少兩條線。 - + Select 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. @@ -2557,45 +2819,45 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 此拘束尚有許多方式可以使用,可用的組合有:兩條曲線、兩個端點、兩條曲線及一個點。 - + Select some geometry from the sketch. perpendicular constraint 從草圖中選取一些幾何。 - + Wrong number of selected objects! perpendicular constraint 選取之物件數量有誤! - - + + With 3 objects, there must be 2 curves and 1 point. tangent constraint 三個物件時至少需有2條曲線及1個點。 - - + + Cannot add a perpendicularity constraint at an unconnected point! 無法於未連接點上建立垂直拘束! - - - + + + Perpendicular to B-spline edge currently unsupported. B型不規則曲線的邊線目前並不支援垂直拘束 - - + + One of the selected edges should be a line. 所選之邊中需有一條線。 - + 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. @@ -2605,249 +2867,249 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 可接受的組合:二條曲線; 一個終止點及一條曲線;二個終主點;二條曲線及一點。 - + Select some geometry from the sketch. tangent constraint 從草圖中選取一些幾何。 - + Wrong number of selected objects! tangent constraint 選取之物件數量有誤! - - - + + + Cannot add a tangency constraint at an unconnected point! 無法於未連接點上建立相切拘束! - - - + + + Tangency to B-spline edge currently unsupported. B型不規則曲線的邊線目前並不支援相切拘束 - + Endpoint to endpoint tangency was applied. The coincident constraint was deleted. 已套用點對點相切拘束,共點拘束已被刪除 - - - - + + + + Select one or more arcs or circles from the sketch. 從草圖中選取一個或多個弧或圓。 - - + + Constrain equal 相等拘束 - + Do you want to share the same radius for all selected elements? 您要將所有選取的元素都使用相同的半徑嗎? - - + + Constraint only applies to arcs or circles. 拘束僅能用在圓弧或圓上 - + Do you want to share the same diameter for all selected elements? 請問您要在所有選定的圖元上套用相同直徑嗎? - - + + Select one or two lines from the sketch. Or select two edges and a point. 從草圖中選取一或兩條線條,或選取兩個邊及一個點。 - - + + Parallel lines 平行線 - - + + An angle constraint cannot be set for two parallel lines. 無法於兩條平行線間建立角度拘束。 - + 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. - - + + 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. - + Cannot create constraint with external geometry only. Cannot create constraint with external geometry only. - + Incompatible geometry is selected. Incompatible geometry is selected. - + SnellsLaw on B-spline edge is currently unsupported. SnellsLaw on B-spline edge is currently unsupported. - + You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. You cannot internally constrain an ellipse on another ellipse. Select only one ellipse. - - + + Currently all internal geometrical elements of the ellipse are already exposed. Currently all internal geometrical elements of the ellipse are already exposed. - - - - - + + + + + Select constraints from the sketch. Select constraints from the sketch. - + Selected objects are not just geometry from one sketch. 選取之物件並非來自於草圖之幾何。 - + Number of selected objects is not 3 (is %1). 選取之物件數量非為3 (而是 %1). - - + + Select at least one ellipse and one edge from the sketch. 至少由草圖中選取一個橢圓及一個邊。 - + Sketch axes cannot be used in internal alignment constraint 草圖軸無法做為內部對齊拘束 - - + + Maximum 2 points are supported. 最多支援2點。 - - + + Maximum 2 lines are supported. 最多支援2線段 - - + + Nothing to constrain 沒有要加以拘束的圖元 - - - - + + + + Extra elements 額外的元素 - - - + + + More elements than possible for the given ellipse were provided. These were ignored. 超過設定橢圓所許之元素,這些會被忽略。 - + You cannot internally constrain an arc of ellipse on another arc of ellipse. Select only one arc of ellipse. 你不能在二個橢圓弧間,使用內部對齊拘束。請選擇單一個橢圓弧。 - + You cannot internally constrain an ellipse on an arc of ellipse. Select only one ellipse or arc of ellipse. 你不能在二個橢圓弧間,使用內部對齊拘束。請選擇單一個橢圓或橢圓弧。 - + More elements than possible for the given arc of ellipse were provided. These were ignored. 超過設定橢圓之弧所須之元素,這些會被忽略。 - + Currently internal geometry is only supported for ellipse or arc of ellipse. The last selected element must be an ellipse or an arc of ellipse. 目前內部幾何僅支援橢圓或橢圓之弧,最後一個選定的元素必須是橢圓或橢圓之弧。 @@ -2860,124 +3122,124 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c - + CAD Kernel Error CAD核心錯誤 - + None of the selected elements is an edge. 所選元素中並無邊線。 - - + + At least one of the selected objects was not a B-Spline and was ignored. 所選對像中至少有一個不是B樣不規則曲線,因此被忽略 - - + + Wrong OCE/OCC version 錯誤的 OCE/OCC 版本 - - + + This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher 此版本的 OCE/OCC 並不支援控制點操作。你需要6.9.0版或更新的版本。 - - + + The selection comprises more than one item. Please select just one knot. 該選擇包括不止一個項目。請選擇單一個控制點 - + Input Error 輸入錯誤 - - + + None of the selected elements is a knot of a B-spline 被選取的元素都不是B型不規則曲線的控制點 - - - - + + + + Select at least two edges from the sketch. 由草圖中選取至少兩個邊。 - - + + One selected edge is not connectable 其中一個選取的邊無法連接 - + Closing a shape formed by exactly two lines makes no sense. 僅由兩條線要產生封閉造型是不可能的。 - - - - - - - - + + + + + + + + Select elements from a single sketch. 由單一草圖中選擇元素。 - + No constraint selected 尚未選擇拘束 - + At least one constraint must be selected 至少需選取一個拘束 - + A symmetric construction requires at least two geometric elements, the last geometric element being the reference for the symmetry construction. 一個對稱的結構需要至少兩個幾何元素,後一個幾何元素會被作為對稱結構之參考。 - + The last element must be a point or a line serving as reference for the symmetry construction. 產生對稱結構最後一個選擇之元素作為參考必須是點或線 - - + + A copy requires at least one selected non-external geometric element 複製功能須至少選取一個非內部幾何之元素 - + Delete All Geometry 刪除所有圖元 - + Are you really sure you want to delete all geometry and constraints? Are you really sure you want to delete all geometry and constraints? - + Delete All Constraints 刪除所有拘束 - + Are you really sure you want to delete all the constraints? 確定要刪除所有拘束嗎? @@ -3038,62 +3300,62 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c SketcherGui::ConstraintView - + Change value 變更值 - + Toggle to/from reference 於參考及一般模式間切換 - + Deactivate 停用 - + Activate 啟用 - + Show constraints 顯示拘束 - + Hide constraints 隱藏拘束 - + Rename 重新命名 - + Center sketch 將所選草圖置於視窗中央 - + Delete 刪除 - + Swap constraint names 調換拘束名稱 - + Unnamed constraint 未命名之拘束 - + Only the names of named constraints can be swapped. 僅有命名之拘束其名稱可以被調換 @@ -3116,8 +3378,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 輸入半徑 - - + + Radius: 半徑: @@ -3128,8 +3390,8 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 插入直徑 - - + + Diameter: Diameter: @@ -3157,24 +3419,24 @@ Accepted combinations: two curves; an endpoint and a curve; two endpoints; two c 長度: - - + + Change radius 修改半徑 - - + + Change diameter 改變直徑 - + Refractive index ratio 折射率比例 - + Ratio n2/n1: 比例 n2/n1: @@ -4040,13 +4302,13 @@ However, no constraints linking to the endpoints were found. Extended information - + Constraints Constraints - - + + Error 錯誤 @@ -4405,104 +4667,104 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< 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: 請移除下列多餘拘束: - + Empty sketch 空白草圖 - + Over-constrained sketch 過度約束的草圖 - - - + + + (click to select) (按一下可選擇) - + Sketch contains conflicting constraints 此草圖含有相矛盾之拘束 - + Sketch contains redundant constraints 此草圖含有過多的拘束 - + Fully constrained sketch 完全拘束之草圖 - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">1 degree</span></a> of freedom - + Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom Under-constrained sketch with <a href="#dofs"><span style=" text-decoration: underline; color:#0000ff; background-color: #F8F8FF;">%1 degrees</span></a> of freedom - + Solved in %1 sec 於%1秒求解完成 - + Unsolved (%1 sec) 未求解完成(%1秒) @@ -4510,8 +4772,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineComb - - + + Switches between showing and hiding the curvature comb for all B-splines 顯示/隱藏 所有B型不規則曲線的曲率梳形圖 @@ -4519,8 +4781,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDecreaseKnotMultiplicity - - + + Decreases the multiplicity of the selected knot of a B-spline Decreases the multiplicity of the selected knot of a B-spline @@ -4528,8 +4790,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineDegree - - + + Switches between showing and hiding the degree for all B-splines 顯示/隱藏 所有B型不規則曲線的控制項次數 @@ -4537,8 +4799,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineIncreaseKnotMultiplicity - - + + Increases the multiplicity of the selected knot of a B-spline Increases the multiplicity of the selected knot of a B-spline @@ -4546,17 +4808,26 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_BSplineKnotMultiplicity - - + + Switches between showing and hiding the knot multiplicity for all B-splines Switches between showing and hiding the knot multiplicity for all B-splines + + Sketcher_BSplinePoleWeight + + + + Switches between showing and hiding the control point weight for all B-splines + Switches between showing and hiding the control point weight for all B-splines + + Sketcher_BSplinePolygon - - + + Switches between showing and hiding the control polygons for all B-splines 顯示/隱藏 所有B型不規則曲線的控制多邊形 @@ -4564,8 +4835,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Clone - - + + Creates a clone of the geometry taking as reference the last selected point 依最後所選的點作為參考點對幾何進行含拘束連動之複製 @@ -4573,17 +4844,17 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_CompCopy - + Clone 複製 - + Copy 複製 - + Move 移動 @@ -4591,8 +4862,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainDiameter - - + + Fix the diameter of a circle or an arc 固定一個圓或弧的直徑 @@ -4600,8 +4871,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_ConstrainRadius - - + + Fix the radius of a circle or an arc 固定圓或弧之半徑 @@ -4609,8 +4880,8 @@ Points must be set closer than a fifth of the grid size to a grid line to snap.< Sketcher_Copy - - + + Creates a simple copy of the geometry taking as reference the last selected point 依最後所選的點作為參考點對幾何進行不含拘束連動之複製 @@ -4853,8 +5124,8 @@ Select the method to attach this sketch to selected objects. Sketcher_Move - - + + Moves the geometry taking as reference the last selected point 以最後選擇的點為基準移動圖元 diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index dc69ebcad2..dbf99822e7 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -260,6 +260,7 @@ void SketcherSettingsColors::saveSettings() ui->ConstructionColor->onSave(); ui->ExternalColor->onSave(); ui->FullyConstrainedColor->onSave(); + ui->InternalAlignedGeoColor->onSave(); ui->ConstrainedColor->onSave(); ui->NonDrivingConstraintColor->onSave(); @@ -286,6 +287,7 @@ void SketcherSettingsColors::loadSettings() ui->ConstructionColor->onRestore(); ui->ExternalColor->onRestore(); ui->FullyConstrainedColor->onRestore(); + ui->InternalAlignedGeoColor->onRestore(); ui->ConstrainedColor->onRestore(); ui->NonDrivingConstraintColor->onRestore(); diff --git a/src/Mod/Sketcher/Gui/SketcherSettingsColors.ui b/src/Mod/Sketcher/Gui/SketcherSettingsColors.ui index 9235a4d255..895c864824 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettingsColors.ui +++ b/src/Mod/Sketcher/Gui/SketcherSettingsColors.ui @@ -221,6 +221,39 @@ + + + + 182 + 0 + + + + Internal alignment edge color + + + + + + + Color of edges of internal alignment geometry + + + + 178 + 178 + 127 + + + + InternalAlignedGeoColor + + + View + + + + @@ -233,7 +266,7 @@ - + Color of external geometry in edit mode @@ -253,7 +286,7 @@ - + @@ -266,7 +299,7 @@ - + Color of fully constrained geometry in edit mode @@ -286,7 +319,7 @@ - + @@ -299,7 +332,7 @@ - + Color of driving constraints in edit mode @@ -319,14 +352,14 @@ - + Reference constraint color - + Color of reference constraints in edit mode @@ -346,14 +379,14 @@ - + Expression dependent constraint color - + Color of expression dependent constraints in edit mode @@ -373,14 +406,14 @@ - + Deactivated constraint color - + Color of deactivated constraints in edit mode @@ -400,7 +433,7 @@ - + @@ -413,7 +446,7 @@ - + Color of the datum portion of a driving constraint @@ -433,7 +466,7 @@ - + @@ -446,7 +479,7 @@ - + The default line thickness for new shapes @@ -468,7 +501,7 @@ - + @@ -481,7 +514,7 @@ - + The default line thickness for new shapes @@ -503,7 +536,7 @@ - + @@ -516,7 +549,7 @@ - + The default line thickness for new shapes @@ -538,7 +571,7 @@ - + @@ -551,7 +584,7 @@ - + Text color of the coordinates @@ -571,7 +604,7 @@ - + @@ -584,7 +617,7 @@ - + Color of crosshair cursor. diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp index d82e3197b0..72378330df 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp @@ -42,6 +42,7 @@ #include "ViewProviderSketch.h" #include +#include #include #include @@ -137,6 +138,7 @@ public: case Sketcher::DistanceX: case Sketcher::DistanceY: case Sketcher::Radius: + case Sketcher::Weight: case Sketcher::Diameter: case Sketcher::Angle: name = QString::fromLatin1("%1 (%2)").arg(name).arg(constraint->getPresentationValue().getUserString()); @@ -256,6 +258,7 @@ public: case Sketcher::DistanceY: return selicon(constraint,vdist,vdist_driven); case Sketcher::Radius: + case Sketcher::Weight: return selicon(constraint,radi,radi_driven); case Sketcher::Diameter: return selicon(constraint,dia,dia_driven); @@ -325,6 +328,7 @@ public: case Sketcher::DistanceY: case Sketcher::Radius: case Sketcher::Diameter: + case Sketcher::Weight: case Sketcher::Angle: case Sketcher::SnellsLaw: return ( constraint->First >= 0 || constraint->Second >= 0 || constraint->Third >= 0 ); @@ -443,6 +447,22 @@ void ConstraintView::contextMenuEvent (QContextMenuEvent* event) QListWidgetItem* item = currentItem(); QList items = selectedItems(); + // Cancel any in-progress operation + Gui::Document* doc = Gui::Application::Instance->activeDocument(); + bool didRelease = SketcherGui::ReleaseHandler(doc); + + // Sync the FreeCAD selection with the selection in the ConstraintView widget + if (didRelease) { + Gui::Selection().clearSelection(); + for (auto&& it : items) { + auto ci = static_cast(it); + std::string constraint_name = Sketcher::PropertyConstraintList::getConstraintName(ci->ConstraintNbr); + std::string doc_name = ci->sketchView->getSketchObject()->getDocument()->getName(); + std::string obj_name = ci->sketchView->getSketchObject()->getNameInDocument(); + Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), constraint_name.c_str()); + } + } + bool isQuantity = false; bool isToggleDriving = false; bool isActive = true; @@ -602,7 +622,7 @@ void ConstraintView::swapNamedOfSelectedItems() ss << "DummyConstraint" << rand(); std::string tmpname = ss.str(); - Gui::Command::openCommand("Swap constraint names"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Swap constraint names")); Gui::cmdAppObjectArgs(item1->sketch, "renameConstraint(%d, u'%s')", item1->ConstraintNbr, tmpname.c_str()); Gui::cmdAppObjectArgs(item2->sketch, "renameConstraint(%d, u'%s')", @@ -825,7 +845,7 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetIte if (newName != currConstraintName && !basename.empty()) { std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(newName.c_str()); - Gui::Command::openCommand("Rename sketch constraint"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Rename sketch constraint")); try { Gui::cmdAppObjectArgs(sketch ,"renameConstraint(%d, u'%s')", it->ConstraintNbr, escapedstr.c_str()); @@ -840,7 +860,7 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetIte } // update constraint virtual space status - Gui::Command::openCommand("Update constraint's virtual space"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Update constraint's virtual space")); try { Gui::cmdAppObjectArgs(sketch, "setVirtualSpace(%d, %s)", it->ConstraintNbr, @@ -928,6 +948,7 @@ void TaskSketcherConstrains::slotConstraintsChanged(void) case Sketcher::DistanceX: case Sketcher::DistanceY: case Sketcher::Radius: + case Sketcher::Weight: case Sketcher::Diameter: case Sketcher::Angle: case Sketcher::SnellsLaw: diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index 8a5a8f718a..d833fba3e6 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -40,6 +40,7 @@ #include "ViewProviderSketch.h" #include +#include #include #include @@ -712,7 +713,7 @@ void TaskSketcherElements::slotElementsChanged(void) int i=1; for(std::vector< Part::Geometry * >::const_iterator it= vals.begin();it!=vals.end();++it,++i){ Base::Type type = (*it)->getTypeId(); - bool construction = (*it)->getConstruction(); + bool construction = Sketcher::GeometryFacade::getConstruction(*it); ui->listWidgetElements->addItem(new ElementItem( (type == Part::GeomPoint::getClassTypeId() && element==1) ? Sketcher_Element_Point_StartingPoint.getIcon(construction, false) : diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index d4677522b7..b62fd15bc6 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -110,6 +110,7 @@ #include #include #include +#include #include "SoZoomTranslation.h" #include "SoDatumLabel.h" @@ -119,6 +120,7 @@ #include "TaskDlgEditSketch.h" #include "TaskSketcherValidation.h" #include "CommandConstraints.h" +#include "ViewProviderSketchGeometryExtension.h" FC_LOG_LEVEL_INIT("Sketch",true,true) @@ -158,6 +160,7 @@ SbColor ViewProviderSketch::SelectColor (0.11f,0.68f,0.11f); // SbColor ViewProviderSketch::PreselectSelectedColor (0.36f,0.48f,0.11f); // #5D7B1C -> ( 93,123, 28) SbColor ViewProviderSketch::CreateCurveColor (0.8f,0.8f,0.8f); // #CCCCCC -> (204,204,204) SbColor ViewProviderSketch::DeactivatedConstrDimColor (0.8f,0.8f,0.8f); // #CCCCCC -> (204,204,204) +SbColor ViewProviderSketch::InternalAlignedGeoColor (0.7f,0.7f,0.5f); // #B2B27F -> (178,178,127) // Variables for holding previous click SbTime ViewProviderSketch::prvClickTime; SbVec2s ViewProviderSketch::prvClickPos; @@ -808,7 +811,7 @@ bool ViewProviderSketch::mouseButtonPressed(int Button, bool pressed, const SbVe Sketcher::PointPos PosId; getSketchObject()->getGeoVertexIndex(edit->DragPoint, GeoId, PosId); if (GeoId != Sketcher::Constraint::GeoUndef && PosId != Sketcher::none) { - getDocument()->openCommand("Drag Point"); + getDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Drag Point")); try { Gui::cmdAppObjectArgs(getObject(), "movePoint(%i,%i,App.Vector(%f,%f,0),%i)" ,GeoId, PosId, x-xInit, y-yInit, 0); @@ -839,10 +842,39 @@ bool ViewProviderSketch::mouseButtonPressed(int Button, bool pressed, const SbVe geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()|| geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()|| geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { - getDocument()->openCommand("Drag Curve"); + getDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Drag Curve")); + + auto geo = getSketchObject()->getGeometry(edit->DragCurve); + auto gf = GeometryFacade::getFacade(geo); + + Base::Vector3d vec(x-xInit,y-yInit,0); + + // BSpline weights have a radius corresponding to the weight value + // However, in order for them proportional to the B-Spline size, + // the scenograph has a size scalefactor times the weight + // This code normalizes the information sent to the solver. + if(gf->getInternalType() == InternalType::BSplineControlPoint) { + auto circle = static_cast(geo); + Base::Vector3d center = circle->getCenter(); + + Base::Vector3d dir = vec - center; + + double scalefactor = 1.0; + + if(circle->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) + { + auto vpext = std::static_pointer_cast( + circle->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + scalefactor = vpext->getRepresentationFactor(); + } + + vec = center + dir / scalefactor; + } + try { Gui::cmdAppObjectArgs(getObject(), "movePoint(%i,%i,App.Vector(%f,%f,0),%i)" - ,edit->DragCurve, Sketcher::none, x-xInit, y-yInit, relative ? 1 : 0); + ,edit->DragCurve, Sketcher::none, vec.x, vec.y, relative ? 1 : 0); getDocument()->commitCommand(); tryAutoRecomputeIfNotSolve(getSketchObject()); @@ -861,7 +893,7 @@ bool ViewProviderSketch::mouseButtonPressed(int Button, bool pressed, const SbVe return true; case STATUS_SKETCH_DragConstraint: if (edit->DragConstraintSet.empty() == false) { - getDocument()->openCommand("Drag Constraint"); + getDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Drag Constraint")); auto idset = edit->DragConstraintSet; for(int id : idset) { moveConstraint(id, Base::Vector2d(x, y)); @@ -1037,7 +1069,7 @@ void ViewProviderSketch::editDoubleClicked(void) // if its the right constraint if (Constr->isDimensional()) { - Gui::Command::openCommand("Modify sketch constraints"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Modify sketch constraints")); EditDatumDialog editDatumDialog(this, id); editDatumDialog.exec(); } @@ -1128,10 +1160,36 @@ bool ViewProviderSketch::mouseMove(const SbVec2s &cursorPos, Gui::View3DInventor edit->PreselectCurve != -1 && edit->DragCurve != edit->PreselectCurve) { Mode = STATUS_SKETCH_DragCurve; edit->DragCurve = edit->PreselectCurve; - getSketchObject()->getSolvedSketch().initMove(edit->DragCurve, Sketcher::none, false); const Part::Geometry *geo = getSketchObject()->getGeometry(edit->DragCurve); + + // BSpline Control points are edge draggable only if their radius is movable + // This is because dragging gives unwanted cosmetic results due to the scale ratio. + // This is an heuristic as it does not check all indirect routes. + if(GeometryFacade::isInternalType(geo, InternalType::BSplineControlPoint)) { + bool weight = false; + bool weight_driven = false; + bool equal = false; + bool block = false; + + for(auto c : getSketchObject()->Constraints.getValues()) { + weight = weight || (c->Type == Sketcher::Weight && c->First == edit->DragCurve); + weight_driven = weight_driven || (c->Type == Sketcher::Weight && !c->isDriving && c->First == edit->DragCurve); + equal = equal || (c->Type == Sketcher::Equal && (c->First == edit->DragCurve || c->Second == edit->DragCurve)); + block = block || (c->Type == Sketcher::Block && c->First == edit->DragCurve); + } + + if( (weight && !weight_driven) || + (equal && !weight_driven) || + block) { + Mode = STATUS_NONE; + return false; + } + } + + getSketchObject()->getSolvedSketch().initMove(edit->DragCurve, Sketcher::none, false); + if (geo->getTypeId() == Part::GeomLineSegment::getClassTypeId() || - geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId() ) { + geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { relative = true; //xInit = x; //yInit = y; @@ -1183,7 +1241,34 @@ bool ViewProviderSketch::mouseMove(const SbVec2s &cursorPos, Gui::View3DInventor return true; case STATUS_SKETCH_DragCurve: if (edit->DragCurve != -1) { + auto geo = getSketchObject()->getGeometry(edit->DragCurve); + auto gf = GeometryFacade::getFacade(geo); + Base::Vector3d vec(x-xInit,y-yInit,0); + + // BSpline weights have a radius corresponding to the weight value + // However, in order for them proportional to the B-Spline size, + // the scenograph has a size scalefactor times the weight + // This code normalizes the information sent to the solver. + if(gf->getInternalType() == InternalType::BSplineControlPoint) { + auto circle = static_cast(geo); + Base::Vector3d center = circle->getCenter(); + + Base::Vector3d dir = vec - center; + + double scalefactor = 1.0; + + if(circle->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) + { + auto vpext = std::static_pointer_cast( + circle->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + scalefactor = vpext->getRepresentationFactor(); + } + + vec = center + dir / scalefactor; + } + if (getSketchObject()->getSolvedSketch().movePoint(edit->DragCurve, Sketcher::none, vec, relative) == 0) { setPositionText(Base::Vector2d(x,y)); draw(true,false); @@ -1259,7 +1344,7 @@ void ViewProviderSketch::moveConstraint(int constNum, const Base::Vector2d &toPo #endif if (Constr->Type == Distance || Constr->Type == DistanceX || Constr->Type == DistanceY || - Constr->Type == Radius || Constr->Type == Diameter) { + Constr->Type == Radius || Constr->Type == Diameter || Constr-> Type == Weight) { Base::Vector3d p1(0.,0.,0.), p2(0.,0.,0.); if (Constr->SecondPos != Sketcher::none) { // point to point distance @@ -1314,12 +1399,29 @@ void ViewProviderSketch::moveConstraint(int constNum, const Base::Vector2d &toPo p1 = center; Base::Vector3d tmpDir = Base::Vector3d(toPos.x, toPos.y, 0) - p1; - double angle = atan2(tmpDir.y, tmpDir.x); + + Base::Vector3d dir = radius * tmpDir.Normalize(); if(Constr->Type == Sketcher::Diameter) - p1 = center - radius * Base::Vector3d(cos(angle),sin(angle),0.); + p1 = center - dir; - p2 = center + radius * Base::Vector3d(cos(angle),sin(angle),0.); + if(Constr->Type == Sketcher::Weight) { + + double scalefactor = 1.0; + + if(circle->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) + { + auto vpext = std::static_pointer_cast( + circle->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + scalefactor = vpext->getRepresentationFactor(); + } + + p2 = center + dir * scalefactor; + + } + else + p2 = center + dir; } else return; @@ -1329,14 +1431,14 @@ void ViewProviderSketch::moveConstraint(int constNum, const Base::Vector2d &toPo Base::Vector3d vec = Base::Vector3d(toPos.x, toPos.y, 0) - p2; Base::Vector3d dir; - if (Constr->Type == Distance || Constr->Type == Radius || Constr->Type == Diameter) + if (Constr->Type == Distance || Constr->Type == Radius || Constr->Type == Diameter || Constr->Type == Weight) dir = (p2-p1).Normalize(); else if (Constr->Type == DistanceX) dir = Base::Vector3d( (p2.x - p1.x >= FLT_EPSILON) ? 1 : -1, 0, 0); else if (Constr->Type == DistanceY) dir = Base::Vector3d(0, (p2.y - p1.y >= FLT_EPSILON) ? 1 : -1, 0); - if (Constr->Type == Radius || Constr->Type == Diameter) { + if (Constr->Type == Radius || Constr->Type == Diameter || Constr->Type == Weight) { Constr->LabelDistance = vec.x * dir.x + vec.y * dir.y; Constr->LabelPosition = atan2(dir.y, dir.x); } else { @@ -2636,21 +2738,45 @@ void ViewProviderSketch::updateColor(void) float x,y,z; + // use a lambda function to only access the geometry when needed + // and properly handle the case where it's null + auto isConstructionGeom = [](Sketcher::SketchObject* obj, int GeoId) -> bool { + const Part::Geometry* geom = obj->getGeometry(GeoId); + if (geom) + return Sketcher::GeometryFacade::getConstruction(geom); + return false; + }; + + auto isInternalAlignedGeom = [](Sketcher::SketchObject* obj, int GeoId) -> bool { + const Part::Geometry* geom = obj->getGeometry(GeoId); + if (geom) { + auto gf = Sketcher::GeometryFacade::getFacade(geom); + return gf->isInternalAligned(); + } + return false; + }; + // colors of the point set if (edit->FullyConstrained) { for (int i=0; i < PtNum; i++) pcolor[i] = FullyConstrainedColor; } else { - for (int i=0; i < PtNum; i++) - pcolor[i] = VertexColor; + for (int i=0; i < PtNum; i++) { + int GeoId = edit->PointIdToGeoId[i]; + + if(isInternalAlignedGeom(getSketchObject(), GeoId)) + pcolor[i] = InternalAlignedGeoColor; + else + pcolor[i] = VertexColor; + } } for (int i=0; i < PtNum; i++) { // 0 is the origin pverts[i].getValue(x,y,z); const Part::Geometry * tmp = getSketchObject()->getGeometry(edit->PointIdToGeoId[i]); if(tmp && z < zHighlight) { - if(tmp->getConstruction()) + if(Sketcher::GeometryFacade::getConstruction(tmp)) pverts[i].setValue(x,y,zConstrPoint); else pverts[i].setValue(x,y,zNormPoint); @@ -2683,16 +2809,6 @@ void ViewProviderSketch::updateColor(void) float zConstrLine = (topid==2?zHighLines:midid==2?zMidLines:zLowLines); float zExtLine = (topid==3?zHighLines:midid==3?zMidLines:zLowLines); - // use a lambda function to only access the geometry when needed - // and properly handle the case where it's null - auto isConstructionGeom = [](Sketcher::SketchObject* obj, int GeoId) -> bool { - const Part::Geometry* geom = obj->getGeometry(GeoId); - if (geom) - return geom->getConstruction(); - return false; - }; - - int j=0; // vertexindex for (int i=0; i < CurvNum; i++) { @@ -2733,7 +2849,11 @@ void ViewProviderSketch::updateColor(void) } } else if (isConstructionGeom(getSketchObject(), GeoId)) { - color[i] = CurveDraftColor; + if(isInternalAlignedGeom(getSketchObject(), GeoId)) + color[i] = InternalAlignedGeoColor; + else + color[i] = CurveDraftColor; + for (int k=j; jgetTypeId() == Part::GeomCircle::getClassTypeId()) { // add a circle const Part::GeomCircle *circle = static_cast(*it); Handle(Geom_Circle) curve = Handle(Geom_Circle)::DownCast(circle->handle()); + auto gf = GeometryFacade::getFacade(circle); int countSegments = stdcountsegments; Base::Vector3d center = circle->getCenter(); - double segment = (2 * M_PI) / countSegments; - for (int i=0; i < countSegments; i++) { - gp_Pnt pnt = curve->Value(i*segment); + + // BSpline weights have a radius corresponding to the weight value + // However, in order for them proportional to the B-Spline size, + // the scenograph has a size scalefactor times the weight + // + // This code produces the scaled up version of the geometry for the scenograph + if(gf->getInternalType() == InternalType::BSplineControlPoint) { + for( auto c : getSketchObject()->Constraints.getValues()) { + if( c->Type == InternalAlignment && c->AlignmentType == BSplineControlPoint && c->First == GeoId) { + auto bspline = dynamic_cast((*geomlist)[c->Second]); + + if(bspline){ + auto weights = bspline->getWeights(); + + double weight = 1.0; + if(c->InternalAlignmentIndex < int(weights.size())) + weight = weights[c->InternalAlignmentIndex]; + + // tentative scaling factor: + // proportional to the length of the bspline + // inversely proportional to the number of poles + double scalefactor = bspline->length(bspline->getFirstParameter(), bspline->getLastParameter())/10.0/weights.size(); + //double scalefactor = getScaleFactor(); + double vradius = weight*scalefactor; + + // virtual circle or radius vradius + auto mcurve = [¢er, vradius](double param, double &x, double &y) { + x = center.x + vradius*cos(param); + y = center.y + vradius*sin(param); + }; + + double x; + double y; + for (int i=0; i < countSegments; i++) { + double param = 2*M_PI*i/countSegments; + mcurve(param,x,y); + Coords.emplace_back(x, y, 0); + } + + mcurve(0,x,y); + Coords.emplace_back(x, y, 0); + + // save scale factor for any prospective dragging operation + if(!circle->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) + { + // It is ok to add this kind of extension to a const geometry because: + // 1. It does not modify the object in a way that affects property state, just ViewProvider representation + // 2. If it is lost (for example upon undo), redrawing will reinstate it with the correct value + const_cast(circle)->setExtension(std::make_unique()); + } + + auto vpext = std::const_pointer_cast( + std::static_pointer_cast( + circle->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock())); + + vpext->setRepresentationFactor(scalefactor); + } + break; + } + } + } + else { + + double segment = (2 * M_PI) / countSegments; + + for (int i=0; i < countSegments; i++) { + gp_Pnt pnt = curve->Value(i*segment); + Coords.emplace_back(pnt.X(), pnt.Y(), pnt.Z()); + } + + gp_Pnt pnt = curve->Value(0); Coords.emplace_back(pnt.X(), pnt.Y(), pnt.Z()); } - gp_Pnt pnt = curve->Value(0); - Coords.emplace_back(pnt.X(), pnt.Y(), pnt.Z()); - Index.push_back(countSegments+1); edit->CurvIdToGeoId.push_back(GeoId); Points.push_back(center); @@ -3843,7 +4030,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer double maxcurv = 0; double maxdisttocenterofmass = 0; - for(int i = 0; i < ndiv; i++) { + for (int i = 0; i < ndiv; i++) { paramlist[i] = firstparam + i * step; pointatcurvelist[i] = spline->pointAtParameter(paramlist[i]); @@ -3859,12 +4046,12 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer curvaturelist[i] = 0; } - if(curvaturelist[i] > maxcurv) + if (curvaturelist[i] > maxcurv) maxcurv = curvaturelist[i]; double tempf = ( pointatcurvelist[i] - midp ).Length(); - if( tempf > maxdisttocenterofmass ) + if (tempf > maxdisttocenterofmass) maxdisttocenterofmass = tempf; } @@ -3903,7 +4090,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer midp /= poles.size(); - if(rebuildinformationlayer) { + if (rebuildinformationlayer) { SoSwitch *sw = new SoSwitch(); sw->whichChild = hGrpsk->GetBool("BSplineDegreeVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; @@ -3943,7 +4130,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer else { SoSwitch *sw = static_cast(edit->infoGroup->getChild(currentInfoNode)); - if(visibleInformationChanged) + if (visibleInformationChanged) sw->whichChild = hGrpsk->GetBool("BSplineDegreeVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; SoSeparator *sep = static_cast(sw->getChild(0)); @@ -3956,7 +4143,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer currentInfoNode++; // switch to next node // control polygon -------------------------------------------------------- - if(rebuildinformationlayer) { + if (rebuildinformationlayer) { SoSwitch *sw = new SoSwitch(); sw->whichChild = hGrpsk->GetBool("BSplineControlPolygonVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; @@ -3975,7 +4162,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer SoCoordinate3 *polygoncoords = new SoCoordinate3; - if(spline->isPeriodic()) { + if (spline->isPeriodic()) { polygoncoords->point.setNum(poles.size()+1); } else { @@ -3989,7 +4176,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer vts[i].setValue((*it).x,(*it).y,zInfo); } - if(spline->isPeriodic()) { + if (spline->isPeriodic()) { vts[poles.size()].setValue(poles[0].x,poles[0].y,zInfo); } @@ -4086,7 +4273,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer pointatcomblist[i] = pointatcurvelist[i] - combrepscalehyst * curvaturelist[i] * normallist[i]; } - if(rebuildinformationlayer) { + if (rebuildinformationlayer) { SoSwitch *sw = new SoSwitch(); sw->whichChild = hGrpsk->GetBool("BSplineCombVisible", true)?SO_SWITCH_ALL:SO_SWITCH_NONE; @@ -4177,7 +4364,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::vector::const_iterator itm; - if(rebuildinformationlayer) { + if (rebuildinformationlayer) { for( itk = knots.begin(), itm = mult.begin(); itk != knots.end() && itm != mult.end(); ++itk, ++itm) { @@ -4199,14 +4386,14 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer Base::Vector3d knotposition = spline->pointAtParameter(*itk); - translate->translation.setValue(knotposition.x,knotposition.y,zInfo); + translate->translation.setValue(knotposition.x, knotposition.y, zInfo); SoFont *font = new SoFont; font->name.setValue("Helvetica"); font->size.setValue(fontSize); SoText2 *degreetext = new SoText2; - degreetext->string = SbString("(")+SbString(*itm)+SbString(")"); + degreetext->string = SbString("(") + SbString(*itm) + SbString(")"); sep->addChild(translate); sep->addChild(mat); @@ -4235,13 +4422,103 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer static_cast(sep->getChild(GEOINFO_BSPLINE_DEGREE_POS))->translation.setValue(knotposition.x,knotposition.y,zInfo); - static_cast(sep->getChild(GEOINFO_BSPLINE_DEGREE_TEXT))->string = SbString("(")+SbString(*itm)+SbString(")"); + static_cast(sep->getChild(GEOINFO_BSPLINE_DEGREE_TEXT))->string = SbString("(") + SbString(*itm) + SbString(")"); currentInfoNode++; // switch to next node } } // End of knot multiplicity + + // pole weights -------------------------------------------------------- + std::vector weights = spline->getWeights(); + + if (rebuildinformationlayer) { + + for (size_t index = 0; index < weights.size(); ++index) { + + SoSwitch* sw = new SoSwitch(); + + sw->whichChild = hGrpsk->GetBool("BSplinePoleWeightVisible", true) ? SO_SWITCH_ALL : SO_SWITCH_NONE; + + SoSeparator* sep = new SoSeparator(); + sep->ref(); + // no caching for fluctuand data structures + sep->renderCaching = SoSeparator::OFF; + + // every information visual node gets its own material for to-be-implemented preselection and selection + SoMaterial* mat = new SoMaterial; + mat->ref(); + mat->diffuseColor = InformationColor; + + SoTranslation* translate = new SoTranslation; + + Base::Vector3d poleposition = poles[index]; + + SoFont* font = new SoFont; + font->name.setValue("Helvetica"); + font->size.setValue(fontSize); + + translate->translation.setValue(poleposition.x, poleposition.y, zInfo); + + // set up string with weight value and the user-defined number of decimals + QString WeightString = QString::fromLatin1("%1").arg(weights[index], 0, 'f', Base::UnitsApi::getDecimals()); + + SoText2* WeightText = new SoText2; + // since the first and last control point of a spline is also treated as knot and thus + // can also have a displayed multiplicity, we must assure the multiplicity is not visibly overwritten + // therefore be output the weight in a second line + SoMFString label; + label.set1Value(0, SbString("")); + label.set1Value(1, SbString("[") + SbString(WeightString.toStdString().c_str()) + SbString("]")); + WeightText->string = label; + + sep->addChild(translate); + sep->addChild(mat); + sep->addChild(font); + sep->addChild(WeightText); + + sw->addChild(sep); + + edit->infoGroup->addChild(sw); + sep->unref(); + mat->unref(); + + currentInfoNode++; // switch to next node + } + } + else { + for (size_t index = 0; index < weights.size(); ++index) { + SoSwitch* sw = static_cast(edit->infoGroup->getChild(currentInfoNode)); + + if (visibleInformationChanged) + sw->whichChild = hGrpsk->GetBool("BSplinePoleWeightVisible", true) ? SO_SWITCH_ALL : SO_SWITCH_NONE; + + SoSeparator* sep = static_cast(sw->getChild(0)); + + Base::Vector3d poleposition = poles[index]; + + static_cast(sep->getChild(GEOINFO_BSPLINE_DEGREE_POS)) + ->translation.setValue(poleposition.x, poleposition.y, zInfo); + + // set up string with weight value and the user-defined number of decimals + QString WeightString = QString::fromLatin1("%1").arg(weights[index], 0, 'f', Base::UnitsApi::getDecimals()); + + // since the first and last control point of a spline is also treated as knot and thus + // can also have a displayed multiplicity, we must assure the multiplicity is not visibly overwritten + // therefore be output the weight in a second line + SoMFString label; + label.set1Value(0, SbString("")); + label.set1Value(1, SbString("[") + SbString(WeightString.toStdString().c_str()) + SbString("]")); + + static_cast(sep->getChild(GEOINFO_BSPLINE_DEGREE_TEXT)) + ->string = label; + + currentInfoNode++; // switch to next node + } + } + + // End of pole weights } @@ -5234,11 +5511,13 @@ Restart: asciiText->pnts.finishEditing(); } break; + case Weight: case Radius: { assert(Constr->First >= -extGeoCount && Constr->First < intGeoCount); Base::Vector3d pnt1(0.,0.,0.), pnt2(0.,0.,0.); + if (Constr->First != Constraint::GeoUndef) { const Part::Geometry *geo = GeoById(*geomlist, Constr->First); @@ -5256,7 +5535,27 @@ Restart: } else if (geo->getTypeId() == Part::GeomCircle::getClassTypeId()) { const Part::GeomCircle *circle = static_cast(geo); - double radius = circle->getRadius(); + auto gf = GeometryFacade::getFacade(geo); + + double radius; + + if(Constr->Type == Weight) { + double scalefactor = 1.0; + + if(circle->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) + { + auto vpext = std::static_pointer_cast( + circle->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + scalefactor = vpext->getRepresentationFactor(); + } + + radius = circle->getRadius()*scalefactor; + } + else { + radius = circle->getRadius(); + } + double angle = (double) Constr->LabelPosition; if (angle == 10) { angle = 0; @@ -5275,7 +5574,10 @@ Restart: SoDatumLabel *asciiText = static_cast(sep->getChild(CONSTRAINT_SEPARATOR_INDEX_MATERIAL_OR_DATUMLABEL)); // Get display string with units hidden if so requested - asciiText->string = SbString( getPresentationString(Constr).toUtf8().constData() ); + if(Constr->Type == Weight) + asciiText->string = SbString( QString::number(Constr->getValue()).toStdString().c_str()); + else + asciiText->string = SbString( getPresentationString(Constr).toUtf8().constData() ); asciiText->datumtype = SoDatumLabel::RADIUS; asciiText->param1 = Constr->LabelDistance; @@ -5365,6 +5667,7 @@ void ViewProviderSketch::rebuildConstraintsVisual(void) case DistanceY: case Radius: case Diameter: + case Weight: case Angle: { SoDatumLabel *text = new SoDatumLabel(); @@ -5737,6 +6040,10 @@ bool ViewProviderSketch::setEdit(int ModNum) color = (unsigned long)(CurveDraftColor.getPackedValue()); color = hGrp->GetUnsigned("ConstructionColor", color); CurveDraftColor.setPackedValue((uint32_t)color, transparency); + // set the construction curve color + color = (unsigned long)(InternalAlignedGeoColor.getPackedValue()); + color = hGrp->GetUnsigned("InternalAlignedGeoColor", color); + InternalAlignedGeoColor.setPackedValue((uint32_t)color, transparency); // set the cross lines color //CrossColorV.setPackedValue((uint32_t)color, transparency); //CrossColorH.setPackedValue((uint32_t)color, transparency); @@ -5794,9 +6101,14 @@ bool ViewProviderSketch::setEdit(int ModNum) getSketchObject()->validateExternalLinks(); } + // First drawing with non-temporal geometry, then updating solver information + // This ensures that any ViewProvider geometry extension is set before the geometry + // is loaded into the solver, which ensures that any prospective draw using temporal + // geometry (draw with first parameter true) has the right ViewProvider geometry extensions + // set - This fixes Weight constraint dragging on a just opened sketch. + draw(false,true); getSketchObject()->solve(false); UpdateSolverInformation(); - draw(false,true); connectUndoDocument = getDocument() ->signalUndoDocument.connect(boost::bind(&ViewProviderSketch::slotUndoDocument, this, bp::_1)); diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index ffb3a571e5..ab0aad8701 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -400,6 +400,7 @@ protected: static SbColor PreselectSelectedColor; static SbColor InformationColor; static SbColor DeactivatedConstrDimColor; + static SbColor InternalAlignedGeoColor; static SbTime prvClickTime; static SbVec2s prvClickPos; //used by double-click-detector diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.cpp new file mode 100644 index 0000000000..f4d3ff3b4c --- /dev/null +++ b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2019 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#include "PreCompiled.h" + +#include +#include +#include + +#include "ViewProviderSketchGeometryExtension.h" + +using namespace SketcherGui; + +//---------- Geometry Extension +TYPESYSTEM_SOURCE(SketcherGui::ViewProviderSketchGeometryExtension,Part::GeometryExtension) + + +ViewProviderSketchGeometryExtension::ViewProviderSketchGeometryExtension():RepresentationFactor(1.0) +{ + +} + +std::unique_ptr ViewProviderSketchGeometryExtension::copy(void) const +{ + auto cpy = std::make_unique(); + + cpy->RepresentationFactor = this->RepresentationFactor; + + cpy->setName(this->getName()); // Base Class + +#if defined (__GNUC__) && (__GNUC__ <=4) + return std::move(cpy); +#else + return cpy; +#endif +} + +PyObject * ViewProviderSketchGeometryExtension::getPyObject(void) +{ + THROWM(Base::NotImplementedError, "ViewProviderSketchGeometryExtension does not have a Python counterpart"); +} diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.h b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.h new file mode 100644 index 0000000000..6d5edc1b65 --- /dev/null +++ b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (c) 2020 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#ifndef SKETCHER_VIEWPROVIDERSKETCHGEOMETRYEXTENSION_H +#define SKETCHER_VIEWPROVIDERSKETCHGEOMETRYEXTENSION_H + +#include + +namespace SketcherGui { + +class SketcherGuiExport ViewProviderSketchGeometryExtension : public Part::GeometryExtension +{ + TYPESYSTEM_HEADER_WITH_OVERRIDE(); +public: + + ViewProviderSketchGeometryExtension(); + virtual ~ViewProviderSketchGeometryExtension() override = default; + + virtual std::unique_ptr copy(void) const override; + + virtual PyObject *getPyObject(void) override; + + // Data Members + + // Representation factor + // Provides a mechanism to store a factor associated with the representation of a geometry + // This is only useful when a geometry must be scaled only for representation, while keeping its value + // Applicability: General abstract concepts embodied in a geometry, in practice B-Spline poles. + // Why not in SketchGeometryExtension? Because it is merely representation related. It has no place in + // a console application. + virtual double getRepresentationFactor() const {return RepresentationFactor;} + virtual void setRepresentationFactor(double representationFactor) {RepresentationFactor = representationFactor;} + +private: + ViewProviderSketchGeometryExtension(const ViewProviderSketchGeometryExtension&) = default; + +private: + double RepresentationFactor; +}; + +} //namespace SketcherGui + + +#endif // SKETCHER_VIEWPROVIDERSKETCHGEOMETRYEXTENSION_H diff --git a/src/Mod/Sketcher/Gui/Workbench.cpp b/src/Mod/Sketcher/Gui/Workbench.cpp index ab9a42b35a..2799a1ed8a 100644 --- a/src/Mod/Sketcher/Gui/Workbench.cpp +++ b/src/Mod/Sketcher/Gui/Workbench.cpp @@ -371,6 +371,7 @@ inline void SketcherAddWorkbenchBSplines(Gui::MenuItem& bspline) << "Sketcher_BSplinePolygon" << "Sketcher_BSplineComb" << "Sketcher_BSplineKnotMultiplicity" + << "Sketcher_BSplinePoleWeight" << "Sketcher_BSplineConvertToNURB" << "Sketcher_BSplineIncreaseDegree" << "Sketcher_BSplineDecreaseDegree" diff --git a/src/Mod/Spreadsheet/App/PreCompiled.cpp b/src/Mod/Spreadsheet/App/PreCompiled.cpp index 3e85848b9a..7b200a1bf2 100644 --- a/src/Mod/Spreadsheet/App/PreCompiled.cpp +++ b/src/Mod/Spreadsheet/App/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Spreadsheet/Gui/AppSpreadsheetGui.cpp b/src/Mod/Spreadsheet/Gui/AppSpreadsheetGui.cpp index 35c750d5dc..a8f0736864 100644 --- a/src/Mod/Spreadsheet/Gui/AppSpreadsheetGui.cpp +++ b/src/Mod/Spreadsheet/Gui/AppSpreadsheetGui.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (c) 2015 Eivind Kvedalen (eivind@kvedalen.name) * * Copyright (c) 2006 Werner Mayer * + * Copyright (c) 2015 Eivind Kvedalen * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Spreadsheet/Gui/Command.cpp b/src/Mod/Spreadsheet/Gui/Command.cpp index 7c0036cdba..87d5cf4346 100644 --- a/src/Mod/Spreadsheet/Gui/Command.cpp +++ b/src/Mod/Spreadsheet/Gui/Command.cpp @@ -1,12 +1,21 @@ /*************************************************************************** + * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2015 Eivind Kvedalen * * * - * This program 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. * - * for detail see the LICENCE text file. * - * Jürgen Riegel 2002 * - * Eivind Kvedalen 2015 * + * 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 * * * ***************************************************************************/ @@ -43,14 +52,14 @@ #include "ViewProviderSpreadsheet.h" #include "PropertiesDialog.h" -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ using namespace SpreadsheetGui; using namespace Spreadsheet; using namespace Base; using namespace App; -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetMergeCells) @@ -79,7 +88,7 @@ void CmdSpreadsheetMergeCells::activated(int iMsg) // Execute mergeCells commands if (ranges.size() > 0) { - Gui::Command::openCommand("Merge cells"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Merge cells")); std::vector::const_iterator i = ranges.begin(); for (; i != ranges.end(); ++i) if (i->size() > 1) @@ -103,7 +112,7 @@ bool CmdSpreadsheetMergeCells::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetSplitCell) @@ -132,7 +141,7 @@ void CmdSpreadsheetSplitCell::activated(int iMsg) if (current.isValid()) { std::string address = CellAddress(current.row(), current.column()).toString(); - Gui::Command::openCommand("Split cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Split cell")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.splitCell('%s')", sheet->getNameInDocument(), address.c_str()); Gui::Command::commitCommand(); @@ -159,7 +168,7 @@ bool CmdSpreadsheetSplitCell::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetImport) @@ -199,7 +208,7 @@ bool CmdSpreadsheetImport::isActive() return getActiveGuiDocument() ? true : false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetExport) @@ -248,7 +257,7 @@ bool CmdSpreadsheetExport::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignLeft) @@ -278,7 +287,7 @@ void CmdSpreadsheetAlignLeft::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Left-align cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Left-align cell")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'left', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -300,7 +309,7 @@ bool CmdSpreadsheetAlignLeft::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignCenter) @@ -330,7 +339,7 @@ void CmdSpreadsheetAlignCenter::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Center cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Center cell")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'center', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -352,7 +361,7 @@ bool CmdSpreadsheetAlignCenter::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignRight) @@ -382,7 +391,7 @@ void CmdSpreadsheetAlignRight::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Right-align cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Right-align cell")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'right', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -404,7 +413,7 @@ bool CmdSpreadsheetAlignRight::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignTop) @@ -434,7 +443,7 @@ void CmdSpreadsheetAlignTop::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Top-align cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Top-align cell")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'top', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -456,7 +465,7 @@ bool CmdSpreadsheetAlignTop::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignBottom) @@ -486,7 +495,7 @@ void CmdSpreadsheetAlignBottom::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Bottom-align cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Bottom-align cell")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'bottom', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -508,7 +517,7 @@ bool CmdSpreadsheetAlignBottom::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetAlignVCenter) @@ -538,7 +547,7 @@ void CmdSpreadsheetAlignVCenter::activated(int iMsg) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Vertically center cells"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Vertically center cells")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setAlignment('%s', 'vcenter', 'keep')", sheet->getNameInDocument(), i->rangeString().c_str()); @@ -560,7 +569,7 @@ bool CmdSpreadsheetAlignVCenter::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetStyleBold) @@ -607,7 +616,7 @@ void CmdSpreadsheetStyleBold::activated(int iMsg) std::vector ranges = sheetView->selectedRanges(); std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Set bold text"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set bold text")); for (; i != ranges.end(); ++i) { if (!allBold) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setStyle('%s', 'bold', 'add')", sheet->getNameInDocument(), @@ -634,7 +643,7 @@ bool CmdSpreadsheetStyleBold::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetStyleItalic) @@ -681,7 +690,7 @@ void CmdSpreadsheetStyleItalic::activated(int iMsg) std::vector ranges = sheetView->selectedRanges(); std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Set italic text"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set italic text")); for (; i != ranges.end(); ++i) { if (!allItalic) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setStyle('%s', 'italic', 'add')", sheet->getNameInDocument(), @@ -708,7 +717,7 @@ bool CmdSpreadsheetStyleItalic::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetStyleUnderline) @@ -755,7 +764,7 @@ void CmdSpreadsheetStyleUnderline::activated(int iMsg) std::vector ranges = sheetView->selectedRanges(); std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Set underline text"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set underline text")); for (; i != ranges.end(); ++i) { if (!allUnderline) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setStyle('%s', 'underline', 'add')", sheet->getNameInDocument(), @@ -781,7 +790,7 @@ bool CmdSpreadsheetStyleUnderline::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdSpreadsheetSetAlias) @@ -845,7 +854,7 @@ bool CmdSpreadsheetSetAlias::isActive() return false; } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF_STD_CMD_A(CmdCreateSpreadsheet) @@ -866,7 +875,7 @@ void CmdCreateSpreadsheet::activated(int iMsg) Q_UNUSED(iMsg); std::string FeatName = getUniqueObjectName("Spreadsheet"); - openCommand("Create Spreadsheet"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Spreadsheet")); doCommand(Doc,"App.activeDocument().addObject('Spreadsheet::Sheet','%s\')",FeatName.c_str()); doCommand(Gui,"Gui.Selection.clearSelection()\n"); doCommand(Gui,"Gui.Selection.addSelection(App.activeDocument().Name,'%s\')",FeatName.c_str()); @@ -878,7 +887,7 @@ bool CmdCreateSpreadsheet::isActive() return App::GetApplication().getActiveDocument(); } -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void CreateSpreadsheetCommands(void) { diff --git a/src/Mod/Spreadsheet/Gui/LineEdit.cpp b/src/Mod/Spreadsheet/Gui/LineEdit.cpp index bd171f84a1..8b9380d7c8 100644 --- a/src/Mod/Spreadsheet/Gui/LineEdit.cpp +++ b/src/Mod/Spreadsheet/Gui/LineEdit.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Eivind Kvedalen (eivind@kvedalen.name) 2015 * + * Copyright (c) 2015 Eivind Kvedalen * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Spreadsheet/Gui/LineEdit.h b/src/Mod/Spreadsheet/Gui/LineEdit.h index f32d6128d3..fa4e85185f 100644 --- a/src/Mod/Spreadsheet/Gui/LineEdit.h +++ b/src/Mod/Spreadsheet/Gui/LineEdit.h @@ -1,3 +1,25 @@ +/*************************************************************************** + * Copyright (c) 2015 Eivind Kvedalen * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + #ifndef LINEEDIT_H #define LINEEDIT_H diff --git a/src/Mod/Spreadsheet/Gui/PreCompiled.cpp b/src/Mod/Spreadsheet/Gui/PreCompiled.cpp index 93ebe29987..7b200a1bf2 100644 --- a/src/Mod/Spreadsheet/Gui/PreCompiled.cpp +++ b/src/Mod/Spreadsheet/Gui/PreCompiled.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * + * Copyright (c) 2002 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Spreadsheet/Gui/PreCompiled.h b/src/Mod/Spreadsheet/Gui/PreCompiled.h index 0abb83b767..6e3d669d22 100644 --- a/src/Mod/Spreadsheet/Gui/PreCompiled.h +++ b/src/Mod/Spreadsheet/Gui/PreCompiled.h @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * - * Copyright (c) Eivind Kvedalen (eivind@kvedalen.name) 2015 * + * Copyright (c) 2002 Jürgen Riegel * + * Copyright (c) 2015 Eivind Kvedalen * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp b/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp index abcb214a05..ab6e95358b 100644 --- a/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp +++ b/src/Mod/Spreadsheet/Gui/PropertiesDialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Eivind Kvedalen (eivind@kvedalen.name) 2015 * + * Copyright (c) 2015 Eivind Kvedalen * * * * This file is part of the FreeCAD CAx development system. * * * @@ -225,7 +225,7 @@ PropertiesDialog::~PropertiesDialog() void PropertiesDialog::apply() { if (ranges.size() > 0) { - Gui::Command::openCommand("Set cell properties"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set cell properties")); std::vector::const_iterator i = ranges.begin(); bool changes = false; @@ -262,7 +262,7 @@ void PropertiesDialog::apply() std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(displayUnit.stringRep.c_str()); Gui::cmdAppObjectArgs(sheet, "setDisplayUnit('%s', '%s')", i->rangeString().c_str(), escapedstr.c_str()); - changes = true; + changes = true; } if (ranges.size() == 1 && ranges[0].size() == 1 && orgAlias != alias) { Gui::cmdAppObjectArgs(sheet, "setAlias('%s', '%s')", diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_af.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_af.qm index 5deb88ea6f..ff2d176784 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_af.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_af.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ar.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ar.qm index 22659754e7..41c5cce485 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ar.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ar.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ca.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ca.qm index bcf254bcd0..4d39840515 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ca.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ca.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_cs.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_cs.qm index b700b8945b..b5502f6014 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_cs.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_cs.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.qm index eb9e02e78f..60270acd89 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_el.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_el.qm index f29b67dd85..3829a96ad3 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_el.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_el.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.qm index e6ec2c4589..ff66d003a2 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_es-ES.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_eu.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_eu.qm index 9284c3f6e3..28cf435217 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_eu.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_eu.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fi.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fi.qm index 6eea5b4153..784f6d562f 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fi.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fi.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fil.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fil.qm index ad53f54b65..3efb18fb47 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fil.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fil.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fr.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fr.qm index 372ac90851..d15b05892c 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fr.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_fr.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_gl.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_gl.qm index 992a148af3..f564626462 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_gl.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_gl.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hr.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hr.qm index 6485b08cf7..325a6628c5 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hr.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hr.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hu.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hu.qm index c5545f16c1..2e566a96d0 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hu.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_hu.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_id.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_id.qm index 828a137d24..f96142d1ac 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_id.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_id.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_it.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_it.qm index a01ea71d92..715abf83d2 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_it.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_it.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ja.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ja.qm index 375bbc500a..b04a16da73 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ja.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ja.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_kab.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_kab.qm index de429b794c..363a6eecf4 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_kab.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_kab.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ko.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ko.qm index 9ac0321c01..ded0678ce1 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ko.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ko.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_lt.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_lt.qm index 225d2ab1d2..5f93fe67e4 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_lt.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_lt.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_nl.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_nl.qm index b718f626fd..f636d54799 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_nl.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_nl.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_no.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_no.qm index e41956469d..11a2ba4fe5 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_no.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_no.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pl.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pl.qm index 935ef030ba..0b9624bfec 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pl.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pl.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-BR.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-BR.qm index dde9644c2c..581c1912ea 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-BR.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-BR.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-PT.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-PT.qm index bda32dfdd4..9d9d90e01d 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-PT.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_pt-PT.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ro.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ro.qm index 970f4ada82..b54fc2c9f6 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ro.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ro.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ru.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ru.qm index 81cdd1b0f7..fb2d5b9656 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ru.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_ru.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sk.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sk.qm index b2a3712d14..99052c306a 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sk.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sk.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sl.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sl.qm index 79cdc81500..89e0f89ed2 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sl.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sl.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sr.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sr.qm index 5094ed2ef5..9bd5370025 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sr.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sr.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sv-SE.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sv-SE.qm index 2a25cf3340..814ffd195d 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sv-SE.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_sv-SE.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_tr.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_tr.qm index c58c0e454f..03e84c19fd 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_tr.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_tr.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_uk.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_uk.qm index cac8a65c03..e8e902725c 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_uk.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_uk.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_val-ES.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_val-ES.qm index fd8cb47cf9..4159100437 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_val-ES.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_val-ES.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_vi.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_vi.qm index dc73d52f3c..da30a24b0e 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_vi.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_vi.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-CN.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-CN.qm index 9a9888c10f..c49db2bb97 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-CN.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-CN.qm differ diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-TW.qm b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-TW.qm index 2b25654635..6486e8beae 100644 Binary files a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-TW.qm and b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_zh-TW.qm differ diff --git a/src/Mod/Spreadsheet/Gui/SheetModel.cpp b/src/Mod/Spreadsheet/Gui/SheetModel.cpp index 3e194258b3..ab1dde1c47 100644 --- a/src/Mod/Spreadsheet/Gui/SheetModel.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetModel.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Eivind Kvedalen (eivind@kvedalen.name) 2015 * + * Copyright (c) 2015 Eivind Kvedalen * * * * This file is part of the FreeCAD CAx development system. * * * @@ -391,8 +391,8 @@ QVariant SheetModel::data(const QModelIndex &index, int role) const return QVariant(); } } - else if (prop->isDerivedFrom(App::PropertyFloat::getClassTypeId()) - || prop->isDerivedFrom(App::PropertyInteger::getClassTypeId())) + else if (prop->isDerivedFrom(App::PropertyFloat::getClassTypeId()) + || prop->isDerivedFrom(App::PropertyInteger::getClassTypeId())) { /* Number */ double d; @@ -454,7 +454,7 @@ QVariant SheetModel::data(const QModelIndex &index, int role) const if (cell->getForeground(color)) return QVariant::fromValue(QColor(255.0 * color.r, 255.0 * color.g, 255.0 * color.b, 255.0 * color.a)); - else + else return QVariant(QColor(textFgColor)); } case Qt::TextAlignmentRole: { @@ -529,7 +529,7 @@ bool SheetModel::setData(const QModelIndex & index, const QVariant & value, int try { QString str = value.toString(); - Gui::Command::openCommand("Edit cell"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit cell")); // Because of possible complication of recursively escaped // characters, let's take a shortcut and bypass the command // interface for now. @@ -537,7 +537,7 @@ bool SheetModel::setData(const QModelIndex & index, const QVariant & value, int std::string strAddress = address.toString(); str.replace(QString::fromUtf8("\\"), QString::fromUtf8("\\\\")); str.replace(QString::fromUtf8("'"), QString::fromUtf8("\\'")); - FCMD_OBJ_CMD(sheet,"set('" << strAddress << "','" << + FCMD_OBJ_CMD(sheet,"set('" << strAddress << "','" << str.toUtf8().constData() << "')"); #else sheet->setContent(address, str.toUtf8().constData()); diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index 24fa527244..3a589d6ae1 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -158,7 +158,7 @@ void SheetTableView::insertRows() std::sort(sortedRows.begin(), sortedRows.end()); /* Insert rows */ - Gui::Command::openCommand("Insert rows"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Insert rows")); std::vector::const_reverse_iterator it = sortedRows.rbegin(); while (it != sortedRows.rend()) { int prev = *it; @@ -195,7 +195,7 @@ void SheetTableView::removeRows() std::sort(sortedRows.begin(), sortedRows.end(), std::greater()); /* Remove rows */ - Gui::Command::openCommand("Remove rows"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Remove rows")); for (std::vector::const_iterator it = sortedRows.begin(); it != sortedRows.end(); ++it) { Gui::cmdAppObjectArgs(sheet, "removeRows('%s', %d)", rowName(*it).c_str(), 1); } @@ -216,7 +216,7 @@ void SheetTableView::insertColumns() std::sort(sortedColumns.begin(), sortedColumns.end()); /* Insert columns */ - Gui::Command::openCommand("Insert columns"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Insert columns")); std::vector::const_reverse_iterator it = sortedColumns.rbegin(); while (it != sortedColumns.rend()) { int prev = *it; @@ -254,7 +254,7 @@ void SheetTableView::removeColumns() std::sort(sortedColumns.begin(), sortedColumns.end(), std::greater()); /* Remove columns */ - Gui::Command::openCommand("Remove rows"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Remove rows")); for (std::vector::const_iterator it = sortedColumns.begin(); it != sortedColumns.end(); ++it) Gui::cmdAppObjectArgs(sheet, "removeColumns('%s', %d)", columnName(*it).c_str(), 1); @@ -419,7 +419,7 @@ void SheetTableView::deleteSelection() QModelIndexList selection = selectionModel()->selectedIndexes(); if (selection.size() > 0) { - Gui::Command::openCommand("Clear cell(s)"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Clear cell(s)")); std::vector ranges = selectedRanges(); std::vector::const_iterator i = ranges.begin(); diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp index 1255661ef8..6032380cad 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp @@ -157,7 +157,7 @@ bool SheetView::onMsg(const char *pMsg, const char **) else if(strcmp("Std_Delete",pMsg) == 0) { std::vector ranges = selectedRanges(); if (sheet->hasCell(ranges)) { - Gui::Command::openCommand("Clear cell(s)"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Clear cell(s)")); std::vector::const_iterator i = ranges.begin(); for (; i != ranges.end(); ++i) { FCMD_OBJ_CMD(sheet, "clear('" << i->rangeString() << "')"); diff --git a/src/Mod/Spreadsheet/Gui/Workbench.cpp b/src/Mod/Spreadsheet/Gui/Workbench.cpp index 2be95e60a8..2a578426f3 100644 --- a/src/Mod/Spreadsheet/Gui/Workbench.cpp +++ b/src/Mod/Spreadsheet/Gui/Workbench.cpp @@ -125,7 +125,7 @@ void WorkbenchHelper::setForegroundColor(const QColor & color) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Set foreground color"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set foreground color")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setForeground('%s', (%f,%f,%f))", sheet->getNameInDocument(), i->rangeString().c_str(), color.redF(), color.greenF(), color.blueF()); @@ -152,7 +152,7 @@ void WorkbenchHelper::setBackgroundColor(const QColor & color) if (ranges.size() > 0) { std::vector::const_iterator i = ranges.begin(); - Gui::Command::openCommand("Set background color"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set background color")); for (; i != ranges.end(); ++i) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setBackground('%s', (%f,%f,%f))", sheet->getNameInDocument(), i->rangeString().c_str(), color.redF(), color.greenF(), color.blueF()); diff --git a/src/Mod/Spreadsheet/Init.py b/src/Mod/Spreadsheet/Init.py index 7f5b581893..5654dca637 100644 --- a/src/Mod/Spreadsheet/Init.py +++ b/src/Mod/Spreadsheet/Init.py @@ -1,8 +1,5 @@ -# FreeCAD init script of the Spreadsheet module -# (c) 2001 Juergen Riegel - #*************************************************************************** -#* Copyright (c) 2002 Juergen Riegel * +#* Copyright (c) 2001,2002 Juergen Riegel * #* Copyright (c) 2013 Yorik van Havre * #* Copyright (c) 2013 Eivind Kvedalen * #* * @@ -26,6 +23,7 @@ #* * #***************************************************************************/ +# FreeCAD init script of the Spreadsheet module # Get the Parameter Group of this module @@ -37,7 +35,7 @@ ParGrp.SetString("WorkBenchName", "Spreadsheet") ParGrp.SetString("WorkBenchModule", "SpreadsheetWorkbench.py") # add Import/Export types -App.addImportType("Excel spreadsheet (*.xlsx)","importXLSX") +App.addImportType("Excel spreadsheet (*.xlsx)","importXLSX") App.__unit_test__ += [ "TestSpreadsheet" ] diff --git a/src/Mod/Spreadsheet/InitGui.py b/src/Mod/Spreadsheet/InitGui.py index ddc4630201..dda6423eb7 100644 --- a/src/Mod/Spreadsheet/InitGui.py +++ b/src/Mod/Spreadsheet/InitGui.py @@ -1,12 +1,5 @@ -# Spreadsheet gui init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** -#* Copyright (c) 2002 Juergen Riegel * +#* Copyright (c) 2002,2003 Juergen Riegel * #* Copyright (c) 2013 Eivind Kvedalen * #* * #* This file is part of the FreeCAD CAx development system. * @@ -26,9 +19,14 @@ #* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * -#* * #***************************************************************************/ +# Spreadsheet gui init module +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up + class SpreadsheetWorkbench ( Workbench ): "Spreadsheet workbench object" diff --git a/src/Mod/Spreadsheet/TestSpreadsheet.py b/src/Mod/Spreadsheet/TestSpreadsheet.py index 0b6cee4efd..936a853f5a 100644 --- a/src/Mod/Spreadsheet/TestSpreadsheet.py +++ b/src/Mod/Spreadsheet/TestSpreadsheet.py @@ -1,6 +1,23 @@ -# (c) 2016 Werner Mayer -# (c) 2016 Eivind Kvedalen -# LGPL +#*************************************************************************** +#* Copyright (c) 2016 Werner Mayer * +#* Copyright (c) 2016 Eivind Kvedalen * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU General Public License (GPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#***************************************************************************/ import os import sys @@ -350,7 +367,7 @@ class SpreadsheetCases(unittest.TestCase): self.assertTrue(sheet.C27.startswith(u'ERR: Units must be equal')) self.assertMostlyEqual(sheet.D27, Units.Quantity("3 mm")) FreeCAD.closeDocument(doc.Name) - + def testRelationalOperators(self): """ Test relational operators """ sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet') @@ -650,7 +667,7 @@ class SpreadsheetCases(unittest.TestCase): self.assertEqual(sheet.A16, 1) self.assertEqual(sheet.A17, 0.5) self.assertEqual(sheet.A18, 0.5) - + def testRemoveRows(self): """ Removing rows -- check renaming of internal cells """ sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet') @@ -768,7 +785,7 @@ class SpreadsheetCases(unittest.TestCase): """ Object name is equal to property name (bug #2389) """ if not FreeCAD.GuiUp: return - + import FreeCADGui o = self.doc.addObject("Part::FeaturePython","Placement") FreeCADGui.Selection.addSelection(o) @@ -783,7 +800,7 @@ class SpreadsheetCases(unittest.TestCase): self.doc.recompute() sketch=self.doc.addObject('Sketcher::SketchObject','Sketch') sketch.addGeometry(Part.LineSegment(v(0,0,0),v(10,10,0)),False) - sketch.addConstraint(Sketcher.Constraint('Distance',0,65.285388)) + sketch.addConstraint(Sketcher.Constraint('Distance',0,65.285388)) sketch.setExpression('Constraints[0]', 'InvoluteGear.NumberOfTeeth') self.doc.recompute() self.assertIn('Up-to-date',sketch.State) @@ -798,7 +815,7 @@ class SpreadsheetCases(unittest.TestCase): self.doc.recompute() index=sketch.addGeometry(Part.LineSegment(v(0,0,0),v(10,10,0)),False) - sketch.addConstraint(Sketcher.Constraint('Distance',index,14.0)) + sketch.addConstraint(Sketcher.Constraint('Distance',index,14.0)) self.doc.recompute() sketch.setExpression('Constraints[0]', u'<>.Length') self.doc.recompute() @@ -838,7 +855,7 @@ class SpreadsheetCases(unittest.TestCase): def testMatrix(self): ''' Test Matrix/Vector/Placement/Rotation operations''' - + def plm_equal(plm1, plm2): from math import sqrt qpair = zip(plm1.Rotation.Q, plm2.Rotation.Q) diff --git a/src/Mod/Spreadsheet/importXLSX.py b/src/Mod/Spreadsheet/importXLSX.py index c96e1590f6..ba5a8db302 100644 --- a/src/Mod/Spreadsheet/importXLSX.py +++ b/src/Mod/Spreadsheet/importXLSX.py @@ -1,31 +1,30 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# -# importXLSX.py -# -# This library imports an Excel-XLSX-file into FreeCAD. -# -# Copyright (C) 2016 Ulrich Brammer -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301 USA +#*************************************************************************** +#* Copyright (c) 2016 Ulrich Brammer * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU General Public License (GPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#***************************************************************************/ + from __future__ import print_function -__title__="FreeCAD Spreadsheet Workbench - XLSX importer" -__author__ = "Ulrich Brammer " -__url__ = ["http://www.freecadweb.org"] +__title__ = "FreeCAD Spreadsheet Workbench - XLSX importer" +__author__ = "Ulrich Brammer " +__url__ = ["https://www.freecadweb.org"] ''' This library imports an Excel-XLSX-file into FreeCAD. @@ -94,10 +93,10 @@ branchLower ={ '=':None } -branchHigher = {'=':None} +branchHigher = {'=':None} -# Needed to get a reference from a string to a dict +# Needed to get a reference from a string to a dict treeDict = { 'branchLower':branchLower, 'branchHigher':branchHigher @@ -108,7 +107,7 @@ treeDict = { # levelchange: -1: tree down, 0, +1: tree up # replacement token # function-state: needed to do something special in the parser -# 0 = normal, 1 = the pi-case, 2 = angle-function, +# 0 = normal, 1 = the pi-case, 2 = angle-function, # 3 = IF-function, 4 = IF-truecase, 5 IF-falsecase @@ -153,13 +152,13 @@ tokenDic = { 'MIN' :( 0, 'min', 0), 'STDEVA':( 0, 'stddev',0), 'SUM' :( 0, 'sum', 0), - 'PI' :( 0, 'pi', 1) + 'PI' :( 0, 'pi', 1) } class exprNode(object): ''' This defines a tree class for expression parsing. - A tree is built, to step down into the levels of the expression.''' + A tree is built, to step down into the levels of the expression.''' def __init__(self, parent, state, actIndex): self.state = state #see comment: State used for Angle-functions and IF-function self.parent = parent # Parent tree node @@ -217,15 +216,15 @@ class FormulaTranslator(object): tokenComplete = True self.tokenList.append(theTok) self.getNextToken(theExpr) - - + + def isKey(self, theExpr): #print('look up: ', theExpr) keyToken = False lenExpr = len(theExpr) if theExpr[0] in sepToken: branch = sepToken[theExpr[0]] - + if branch is None: keyToken = True else: @@ -240,8 +239,8 @@ class FormulaTranslator(object): else: keyToken = True return keyToken - - + + def parseExpr(self, treeNode): token = self.tokenList[treeNode.lIndex] @@ -253,30 +252,30 @@ class FormulaTranslator(object): newToken = token funcState = 0 #print('treeNode.state: ', treeNode.state, ' my.index: ', treeNode.lIndex-1, ' ', token, ' fState: ', funcState) - + if token == ',': if (treeNode.state == 4): newToken = ':' - treeNode.state = 6 + treeNode.state = 6 if (treeNode.state == 3): newToken = '?' treeNode.state = 4 - + if funcState == 3: funcState = 0 newNode = exprNode(treeNode, 3, treeNode.lIndex) - self.parseIF(newNode) + self.parseIF(newNode) else: treeNode.result = treeNode.result + newToken - + if funcState == 2: funcState = 0 newNode = exprNode(treeNode, 2, treeNode.lIndex) - self.parseAngle(newNode) + self.parseAngle(newNode) treeNode.result = treeNode.result + ')' - elif funcState == 1: + elif funcState == 1: treeNode.lIndex += 2 # do skip the 2 parentheses of the PI() - + if lChange == -1: #print 'state: ', treeNode.state, 'parent.result: ', treeNode.parent.result, ' mine: ', treeNode.result treeNode.parent.result = treeNode.parent.result + treeNode.result @@ -286,12 +285,12 @@ class FormulaTranslator(object): #print(' Look up more token above') if treeNode.lIndex < len(self.tokenList): self.parseExpr(treeNode.parent) - + elif lChange == 1: #print('Go one level down') newNode = exprNode(treeNode, 1, treeNode.lIndex) - self.parseExpr(newNode) - treeNode.lIndex = newNode.lIndex + self.parseExpr(newNode) + treeNode.lIndex = newNode.lIndex else: if treeNode.lIndex < len(self.tokenList): #print('parse to the end') @@ -303,7 +302,7 @@ class FormulaTranslator(object): #print('IF state: ', treeNode.state) treeNode.result = treeNode.result + '(' treeNode.lIndex += 1 - self.parseExpr(treeNode) + self.parseExpr(treeNode) #print('IF result: ', treeNode.result) return @@ -311,7 +310,7 @@ class FormulaTranslator(object): #print('Angle state: ', treeNode.state) treeNode.result = treeNode.result + '(1rad*(' treeNode.lIndex += 1 - self.parseExpr(treeNode) + self.parseExpr(treeNode) #print('angle result: ', treeNode.result) @@ -331,7 +330,7 @@ def handleWorkSheet(theDom, actSheet, strList): rows = theDom.getElementsByTagName("row") for row in rows: handleCells(row.getElementsByTagName("c"), actSheet, strList) - + def handleCells(cellList, actCellSheet, sList): for cell in cellList: @@ -346,14 +345,14 @@ def handleCells(cellList, actCellSheet, sList): cellType = 'n' # FIXME: some cells don't have t and s attributes #print("reference: ", ref, ' Cell type: ', cellType) - + if cellType == 'inlineStr': iStringList = cell.getElementsByTagName("is") #print('iString: ', iStringList) for stringEle in iStringList: tElement = stringEle.getElementsByTagName('t')[0] theString = getText(tElement.childNodes) - + #print('theString: ', theString) actCellSheet.set(ref, theString) @@ -391,7 +390,7 @@ def handleWorkBook(theBook, sheetDict, Doc): #print("sheetFile: ", sheetFile) # add FreeCAD-spreadsheet sheetDict[sheetName] = (Doc.addObject('Spreadsheet::Sheet', sheetName), sheetFile) - + theAliases = theBook.getElementsByTagName("definedName") for theAlias in theAliases: aliAtts = theAlias.attributes @@ -420,39 +419,39 @@ def open(nameXLSX): if len(nameXLSX) > 0: z=zipfile.ZipFile(nameXLSX) - + theDoc = App.newDocument() - + sheetDict = dict() stringList = [] - + theBookFile=z.open('xl/workbook.xml') theBook = xml.dom.minidom.parse(theBookFile) handleWorkBook(theBook, sheetDict, theDoc) theBook.unlink() - + if 'xl/sharedStrings.xml' in z.namelist(): theStringFile=z.open('xl/sharedStrings.xml') theStrings = xml.dom.minidom.parse(theStringFile) handleStrings(theStrings, stringList) theStrings.unlink() - + for sheetSpec in sheetDict: #print("sheetSpec: ", sheetSpec) theSheet, sheetFile = sheetDict[sheetSpec] f=z.open('xl/worksheets/' + sheetFile) myDom = xml.dom.minidom.parse(f) - + handleWorkSheet(myDom, theSheet, stringList) myDom.unlink() - + z.close() # This is needed more than once, otherwise some references are not calculated! theDoc.recompute() theDoc.recompute() theDoc.recompute() return theDoc - + def insert(nameXLSX,docname): try: theDoc=App.getDocument(docname) @@ -468,22 +467,22 @@ def insert(nameXLSX,docname): theBook = xml.dom.minidom.parse(theBookFile) handleWorkBook(theBook, sheetDict, theDoc) theBook.unlink() - + if 'xl/sharedStrings.xml' in z.namelist(): theStringFile=z.open('xl/sharedStrings.xml') theStrings = xml.dom.minidom.parse(theStringFile) handleStrings(theStrings, stringList) theStrings.unlink() - + for sheetSpec in sheetDict: #print("sheetSpec: ", sheetSpec) theSheet, sheetFile = sheetDict[sheetSpec] f=z.open('xl/worksheets/' + sheetFile) myDom = xml.dom.minidom.parse(f) - + handleWorkSheet(myDom, theSheet, stringList) myDom.unlink() - + z.close() # This is needed more than once, otherwise some references are not calculated! theDoc.recompute() diff --git a/src/Mod/Spreadsheet/spreadsheet.dox b/src/Mod/Spreadsheet/spreadsheet.dox index f6abb89e2d..75bd7cb3e7 100644 --- a/src/Mod/Spreadsheet/spreadsheet.dox +++ b/src/Mod/Spreadsheet/spreadsheet.dox @@ -1,5 +1,8 @@ -/** \defgroup IMAGE Image - * \ingroup CWORKBENCHES +/** \defgroup SPREADSHEET Spreadsheet + * \ingroup CWORKBENCHES * \brief Tools to work with spreadsheets + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + */ diff --git a/src/Mod/Start/App/AppStart.cpp b/src/Mod/Start/App/AppStart.cpp index 0aed4b032b..4e0287be3f 100644 --- a/src/Mod/Start/App/AppStart.cpp +++ b/src/Mod/Start/App/AppStart.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2010 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2010 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Start/App/PreCompiled.cpp b/src/Mod/Start/App/PreCompiled.cpp index b50be2c0bc..7884a4c462 100644 --- a/src/Mod/Start/App/PreCompiled.cpp +++ b/src/Mod/Start/App/PreCompiled.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2010 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2010 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Start/App/PreCompiled.h b/src/Mod/Start/App/PreCompiled.h index 43ab0d31e8..314e78d4cb 100644 --- a/src/Mod/Start/App/PreCompiled.h +++ b/src/Mod/Start/App/PreCompiled.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -33,8 +33,8 @@ # define MeshExport __declspec(dllimport) #else // for Linux # define AppStartExport -# define PartExport -# define MeshExport +# define PartExport +# define MeshExport #endif #ifdef _PreComp_ diff --git a/src/Mod/Start/App/StartConfiguration.h b/src/Mod/Start/App/StartConfiguration.h index ec735227fa..1e238e4ff9 100644 --- a/src/Mod/Start/App/StartConfiguration.h +++ b/src/Mod/Start/App/StartConfiguration.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Start/Gui/AppStartGui.cpp b/src/Mod/Start/Gui/AppStartGui.cpp index bb44eb3881..304d984b1e 100644 --- a/src/Mod/Start/Gui/AppStartGui.cpp +++ b/src/Mod/Start/Gui/AppStartGui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Start/Gui/Command.cpp b/src/Mod/Start/Gui/Command.cpp index fdd7342876..8cd3ca756b 100644 --- a/src/Mod/Start/Gui/Command.cpp +++ b/src/Mod/Start/Gui/Command.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2010 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2010 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp b/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp index 3a6d6fe55c..3aae3034a4 100644 --- a/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp +++ b/src/Mod/Start/Gui/DlgStartPreferencesImp.cpp @@ -39,14 +39,14 @@ DlgStartPreferencesImp::DlgStartPreferencesImp( QWidget* parent ) , ui(new Ui_DlgStartPreferences) { ui->setupUi(this); - + // Hide currently unused controls ui->label_12->hide(); ui->label_7->hide(); ui->colorButton_7->hide(); ui->radioButton_1->hide(); ui->radioButton_2->hide(); - + // fills the combo box with all available workbenches // sorted by their menu text QStringList work = Gui::Application::Instance->workbenches(); @@ -73,10 +73,10 @@ DlgStartPreferencesImp::DlgStartPreferencesImp( QWidget* parent ) else ui->AutoloadModuleCombo->addItem(px, it.key(), QVariant(it.value())); } - + } -/** +/** * Destroys the object and frees any allocated resources */ DlgStartPreferencesImp::~DlgStartPreferencesImp() diff --git a/src/Mod/Start/Gui/DlgStartPreferencesImp.h b/src/Mod/Start/Gui/DlgStartPreferencesImp.h index 00fd4e853d..171839a954 100644 --- a/src/Mod/Start/Gui/DlgStartPreferencesImp.h +++ b/src/Mod/Start/Gui/DlgStartPreferencesImp.h @@ -32,11 +32,11 @@ namespace StartGui { class DlgStartPreferencesImp : public Gui::Dialog::PreferencePage { Q_OBJECT - + public: DlgStartPreferencesImp( QWidget* parent = 0 ); ~DlgStartPreferencesImp(); - + protected: void saveSettings(); void loadSettings(); diff --git a/src/Mod/Start/Gui/PreCompiled.cpp b/src/Mod/Start/Gui/PreCompiled.cpp index 46269e9671..7cd1cae80f 100644 --- a/src/Mod/Start/Gui/PreCompiled.cpp +++ b/src/Mod/Start/Gui/PreCompiled.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Start/Gui/PreCompiled.h b/src/Mod/Start/Gui/PreCompiled.h index dccaac3cfe..ff36933637 100644 --- a/src/Mod/Start/Gui/PreCompiled.h +++ b/src/Mod/Start/Gui/PreCompiled.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -37,8 +37,8 @@ #ifdef _PreComp_ - -// Python + +// Python #include // standard @@ -66,7 +66,7 @@ #ifndef __Qt4All__ # include #endif - + #endif //_PreComp_ #endif // STARTGUI_PRECOMPILED_H diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_af.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_af.qm index 9567fd1ce4..209787f01a 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_af.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_af.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ar.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ar.qm index bf9284504b..a20b2ba3ed 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ar.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ar.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ca.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ca.qm index 15acd2d530..0afe2ca0e2 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ca.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ca.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_cs.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_cs.qm index b8380e34ac..6bbbb0b5f7 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_cs.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_cs.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_de.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_de.qm index 531a6b4304..08e3988cad 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_de.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_de.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_el.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_el.qm index 3b73b17c9e..e9371f6ccd 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_el.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_el.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.qm index f42e642892..90e91ed719 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_es-ES.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_eu.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_eu.qm index 7f6da93226..ad8b04f18e 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_eu.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_eu.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_fi.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_fi.qm index 928ff4b7f2..f44cc72ecd 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_fi.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_fi.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_fil.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_fil.qm index d7ad6040e6..ee65c701a3 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_fil.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_fil.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_fr.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_fr.qm index 65335ce857..cb2e37d513 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_fr.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_fr.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_gl.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_gl.qm index 11d3ec67b1..f60f5c3d29 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_gl.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_gl.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_hr.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_hr.qm index 405b58fa4d..dcb80ce7ba 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_hr.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_hr.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_hu.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_hu.qm index 3517c98594..40c067ae65 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_hu.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_hu.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_id.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_id.qm index e6fc541810..b63f274529 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_id.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_id.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_it.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_it.qm index e4b4f5f605..43a1262224 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_it.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_it.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ja.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ja.qm index 2314b423f2..207279818c 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ja.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ja.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_kab.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_kab.qm index b4cd1d7525..e0fa362529 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_kab.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_kab.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ko.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ko.qm index 6130ec4ff2..c4ecd66fc8 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ko.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ko.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_lt.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_lt.qm index 6476e30389..406d72746f 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_lt.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_lt.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_nl.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_nl.qm index 624bf1fcfd..53c956a705 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_nl.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_nl.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_no.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_no.qm index 6f8f75187d..cadb0fb430 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_no.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_no.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pl.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_pl.qm index cc3820b5ac..3aa898ffef 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_pl.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_pl.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.qm index 4c6477b3e6..75e0dd001b 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-BR.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.qm index 6d214dbf9d..37cfa271b7 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_pt-PT.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ro.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ro.qm index 98a2e058ca..e5257d8101 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ro.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ro.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_ru.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_ru.qm index 86d40b5419..6fc77e644d 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_ru.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_ru.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sk.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_sk.qm index 820f8fc4ab..082314f403 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_sk.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_sk.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sl.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_sl.qm index 28647f4e96..39b44a64b9 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_sl.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_sl.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sr.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_sr.qm index 934dba5011..8ea11cebf6 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_sr.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_sr.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.qm index 7e97e7bff2..64764c3279 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_sv-SE.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_tr.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_tr.qm index f922abe06f..9e2a087f8b 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_tr.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_tr.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_uk.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_uk.qm index 749d39de7f..5a32cbce52 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_uk.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_uk.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.qm index c82c539075..0e414e0c94 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_val-ES.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_vi.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_vi.qm index b8c26fd4e1..2539991480 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_vi.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_vi.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.qm index b44daa0068..0d5d38af67 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-CN.qm differ diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.qm b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.qm index c77a4fe548..769e3a4ac9 100644 Binary files a/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.qm and b/src/Mod/Start/Gui/Resources/translations/StartPage_zh-TW.qm differ diff --git a/src/Mod/Start/Gui/Workbench.cpp b/src/Mod/Start/Gui/Workbench.cpp index 282c9361a9..0e73b46eb1 100644 --- a/src/Mod/Start/Gui/Workbench.cpp +++ b/src/Mod/Start/Gui/Workbench.cpp @@ -143,9 +143,9 @@ Gui::ToolBarItem* StartGui::Workbench::setupToolBars() const << "Separator" << "Web_OpenWebsite" << "Start_StartPage" - << "Separator" - << "Web_BrowserBack" - << "Web_BrowserNext" + << "Separator" + << "Web_BrowserBack" + << "Web_BrowserNext" << "Web_BrowserRefresh" << "Web_BrowserStop" << "Separator" diff --git a/src/Mod/Start/Gui/Workbench.h b/src/Mod/Start/Gui/Workbench.h index 082e77f238..acd579cfe1 100644 --- a/src/Mod/Start/Gui/Workbench.h +++ b/src/Mod/Start/Gui/Workbench.h @@ -59,4 +59,4 @@ protected: }; // namespace StartGui } -#endif // START_WORKBENCH_H +#endif // START_WORKBENCH_H diff --git a/src/Mod/Start/StartPage/EnableDownload.py b/src/Mod/Start/StartPage/EnableDownload.py index 26f54de55e..4baca89549 100644 --- a/src/Mod/Start/StartPage/EnableDownload.py +++ b/src/Mod/Start/StartPage/EnableDownload.py @@ -1,7 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2012 * -#* Yorik van Havre * +#* Copyright (c) 2012 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) * diff --git a/src/Mod/Start/StartPage/LoadCustom.py b/src/Mod/Start/StartPage/LoadCustom.py index deed16cce9..21efebc213 100644 --- a/src/Mod/Start/StartPage/LoadCustom.py +++ b/src/Mod/Start/StartPage/LoadCustom.py @@ -1,6 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2018 Yorik van Havre * +#* Copyright (c) 2018 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU Lesser General Public License (LGPL) * @@ -42,4 +42,4 @@ if cfolders: from StartPage import StartPage StartPage.postStart() - + diff --git a/src/Mod/Start/StartPage/LoadExample.py b/src/Mod/Start/StartPage/LoadExample.py index 835a632331..3031b177cc 100644 --- a/src/Mod/Start/StartPage/LoadExample.py +++ b/src/Mod/Start/StartPage/LoadExample.py @@ -1,7 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2016 * -#* Bernd Hahnebach * +#* Copyright (c) 2016 Bernd Hahnebach * #* * #* 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/Start/StartPage/LoadMRU.py b/src/Mod/Start/StartPage/LoadMRU.py index ea1bfd4b4a..4c7889daa3 100644 --- a/src/Mod/Start/StartPage/LoadMRU.py +++ b/src/Mod/Start/StartPage/LoadMRU.py @@ -1,6 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2018 Yorik van Havre * +#* Copyright (c) 2018 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU Lesser General Public License (LGPL) * diff --git a/src/Mod/Start/StartPage/LoadNew.py b/src/Mod/Start/StartPage/LoadNew.py index 073f42046f..e4434d81e2 100644 --- a/src/Mod/Start/StartPage/LoadNew.py +++ b/src/Mod/Start/StartPage/LoadNew.py @@ -1,6 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2018 Yorik van Havre * +#* Copyright (c) 2018 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU Lesser General Public License (LGPL) * diff --git a/src/Mod/Start/StartPage/OpenSettings.py b/src/Mod/Start/StartPage/OpenSettings.py index 3714ffd327..65fe7993ce 100644 --- a/src/Mod/Start/StartPage/OpenSettings.py +++ b/src/Mod/Start/StartPage/OpenSettings.py @@ -1,6 +1,6 @@ #*************************************************************************** #* * -#* Copyright (c) 2020 Yorik van Havre * +#* Copyright (c) 2020 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) * diff --git a/src/Mod/Start/StartPage/StartPage.py b/src/Mod/Start/StartPage/StartPage.py index d93ca0725c..c53fe9dce6 100644 --- a/src/Mod/Start/StartPage/StartPage.py +++ b/src/Mod/Start/StartPage/StartPage.py @@ -230,7 +230,7 @@ def buildCard(filename,method,arg=None): result = encode("") if os.path.exists(filename) and isOpenableByFreeCAD(filename): - basename = os.path.basename(filename) + basename = encode(os.path.basename(filename)) if not arg: arg = basename finfo = getInfo(filename) diff --git a/src/Mod/Start/start.dox b/src/Mod/Start/start.dox index 478823e4dd..00d0df3869 100644 --- a/src/Mod/Start/start.dox +++ b/src/Mod/Start/start.dox @@ -1,5 +1,8 @@ /** \defgroup START Start - * \ingroup CWORKBENCHES + * \ingroup CWORKBENCHES * \brief The start page of FreeCAD - */ + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + +*/ diff --git a/src/Mod/Surface/App/AppSurface.cpp b/src/Mod/Surface/App/AppSurface.cpp index b980c70097..7b1e064bcb 100644 --- a/src/Mod/Surface/App/AppSurface.cpp +++ b/src/Mod/Surface/App/AppSurface.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureCut.cpp b/src/Mod/Surface/App/FeatureCut.cpp index 6d98598d20..e950d672aa 100644 --- a/src/Mod/Surface/App/FeatureCut.cpp +++ b/src/Mod/Surface/App/FeatureCut.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureCut.h b/src/Mod/Surface/App/FeatureCut.h index a7679ac1b9..83ee9de87b 100644 --- a/src/Mod/Surface/App/FeatureCut.h +++ b/src/Mod/Surface/App/FeatureCut.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureExtend.cpp b/src/Mod/Surface/App/FeatureExtend.cpp index d99c86df04..389ea9986d 100644 --- a/src/Mod/Surface/App/FeatureExtend.cpp +++ b/src/Mod/Surface/App/FeatureExtend.cpp @@ -58,7 +58,7 @@ Extend::Extend() : lockOnChangeMutex(false) ADD_PROPERTY(ExtendUPos, (0.05)); ExtendUPos.setConstraints(&ExtendRange); ADD_PROPERTY(ExtendUSymetric, (true)); - + ADD_PROPERTY(ExtendVNeg, (0.05)); ExtendVNeg.setConstraints(&ExtendRange); ADD_PROPERTY(ExtendVPos, (0.05)); diff --git a/src/Mod/Surface/App/FeatureFilling.cpp b/src/Mod/Surface/App/FeatureFilling.cpp index 91a256d307..2b3b9a4a20 100644 --- a/src/Mod/Surface/App/FeatureFilling.cpp +++ b/src/Mod/Surface/App/FeatureFilling.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureFilling.h b/src/Mod/Surface/App/FeatureFilling.h index 9e1f1f6b8c..26ccc85d3d 100644 --- a/src/Mod/Surface/App/FeatureFilling.h +++ b/src/Mod/Surface/App/FeatureFilling.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureGeomFillSurface.cpp b/src/Mod/Surface/App/FeatureGeomFillSurface.cpp index 933f1b520a..8bad1eba8c 100644 --- a/src/Mod/Surface/App/FeatureGeomFillSurface.cpp +++ b/src/Mod/Surface/App/FeatureGeomFillSurface.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014-2015 Nathan Miller * + * Copyright (c) 2014-2015 Nathan Miller * * Balázs Bámer * * * * This file is part of the FreeCAD CAx development system. * diff --git a/src/Mod/Surface/App/FeatureGeomFillSurface.h b/src/Mod/Surface/App/FeatureGeomFillSurface.h index b06dfa0387..905b8e79c5 100644 --- a/src/Mod/Surface/App/FeatureGeomFillSurface.h +++ b/src/Mod/Surface/App/FeatureGeomFillSurface.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014-2015 Nathan Miller * + * Copyright (c) 2014-2015 Nathan Miller * * Balázs Bámer * * * * This file is part of the FreeCAD CAx development system. * diff --git a/src/Mod/Surface/App/FeatureSewing.cpp b/src/Mod/Surface/App/FeatureSewing.cpp index 2ce3470797..c4f278cfba 100644 --- a/src/Mod/Surface/App/FeatureSewing.cpp +++ b/src/Mod/Surface/App/FeatureSewing.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/FeatureSewing.h b/src/Mod/Surface/App/FeatureSewing.h index fb4534a079..c12978403a 100644 --- a/src/Mod/Surface/App/FeatureSewing.h +++ b/src/Mod/Surface/App/FeatureSewing.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/App/PreCompiled.cpp b/src/Mod/Surface/App/PreCompiled.cpp index 864a8235a6..cfd0e9a769 100644 --- a/src/Mod/Surface/App/PreCompiled.cpp +++ b/src/Mod/Surface/App/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Surface/Gui/AppSurfaceGui.cpp b/src/Mod/Surface/Gui/AppSurfaceGui.cpp index dc448da91e..b425cc5688 100644 --- a/src/Mod/Surface/Gui/AppSurfaceGui.cpp +++ b/src/Mod/Surface/Gui/AppSurfaceGui.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller ,* - * Balázs Bámer * + * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Balázs Bámer * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/Gui/Command.cpp b/src/Mod/Surface/Gui/Command.cpp index e710112254..abc31b9b23 100644 --- a/src/Mod/Surface/Gui/Command.cpp +++ b/src/Mod/Surface/Gui/Command.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (c) 2014-2015 Nathan Miller * - * Balázs Bámer * + * Copyright (c) 2014-2015 Nathan Miller * + * Copyright (c) 2014-2015 Balázs Bámer * * * * This file is part of the FreeCAD CAx development system. * * * @@ -113,7 +113,7 @@ void CmdSurfaceCut::activated(int iMsg) std::string BaseName = Sel[0].getFeatName(); std::string ToolName = Sel[1].getFeatName(); - openCommand("Part Cut"); + openCommand(QT_TRANSLATE_NOOP("Command", "Part Cut")); doCommand(Doc,"App.activeDocument().addObject(\"Part::Cut\",\"%s\")",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Base = App.activeDocument().%s",FeatName.c_str(),BaseName.c_str()); doCommand(Doc,"App.activeDocument().%s.Tool = App.activeDocument().%s",FeatName.c_str(),ToolName.c_str()); @@ -147,7 +147,7 @@ void CmdSurfaceFilling::activated(int iMsg) Q_UNUSED(iMsg); std::string FeatName = getUniqueObjectName("Surface"); - openCommand("Create surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create surface")); doCommand(Doc, "App.ActiveDocument.addObject(\"Surface::Filling\",\"%s\")", FeatName.c_str()); doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", FeatName.c_str()); } @@ -184,7 +184,7 @@ void CmdSurfaceGeomFillSurface::activated(int iMsg) Q_UNUSED(iMsg); std::string FeatName = getUniqueObjectName("Surface"); - openCommand("Create surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create surface")); doCommand(Doc, "App.ActiveDocument.addObject(\"Surface::GeomFillSurface\",\"%s\")", FeatName.c_str()); doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", FeatName.c_str()); } @@ -246,7 +246,7 @@ void CmdSurfaceExtendFace::activated(int) if (faceFilter.match()) { const std::vector &sub = faceFilter.Result[0][0].getSubNames(); if (sub.size() == 1) { - openCommand("Extend surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Extend surface")); std::string FeatName = getUniqueObjectName("Surface"); std::string supportString = faceFilter.Result[0][0].getAsPropertyLinkSubString(); doCommand(Doc, "App.ActiveDocument.addObject(\"Surface::Extend\",\"%s\")", FeatName.c_str()); @@ -286,7 +286,7 @@ void CmdSurfaceSections::activated(int iMsg) Q_UNUSED(iMsg); std::string FeatName = getUniqueObjectName("Surface"); - openCommand("Create surface"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create surface")); doCommand(Doc, "App.ActiveDocument.addObject(\"Surface::Sections\",\"%s\")", FeatName.c_str()); doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", FeatName.c_str()); } diff --git a/src/Mod/Surface/Gui/PreCompiled.cpp b/src/Mod/Surface/Gui/PreCompiled.cpp index 50c5f6f34e..cfd0e9a769 100644 --- a/src/Mod/Surface/Gui/PreCompiled.cpp +++ b/src/Mod/Surface/Gui/PreCompiled.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Surface/Gui/PreCompiled.h b/src/Mod/Surface/Gui/PreCompiled.h index a99076de6a..7aad7ee934 100644 --- a/src/Mod/Surface/Gui/PreCompiled.h +++ b/src/Mod/Surface/Gui/PreCompiled.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * @@ -71,4 +71,4 @@ #endif //_PreComp_ -#endif // GUI_PRECOMPILED_H +#endif // GUI_PRECOMPILED_H diff --git a/src/Mod/Surface/Gui/TaskFillingEdge.cpp b/src/Mod/Surface/Gui/TaskFillingEdge.cpp index e01e1420c3..7ea642fbf4 100644 --- a/src/Mod/Surface/Gui/TaskFillingEdge.cpp +++ b/src/Mod/Surface/Gui/TaskFillingEdge.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2017 Werner Mayer * - * Christophe Grellier * + * Copyright (c) 2017 Christophe Grellier * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/Gui/TaskFillingEdge.h b/src/Mod/Surface/Gui/TaskFillingEdge.h index 16222cbe94..4c66b5f120 100644 --- a/src/Mod/Surface/Gui/TaskFillingEdge.h +++ b/src/Mod/Surface/Gui/TaskFillingEdge.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2017 Werner Mayer * - * Christophe Grellier * + * Copyright (c) 2017 Christophe Grellier * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/Gui/TaskGeomFillSurface.cpp b/src/Mod/Surface/Gui/TaskGeomFillSurface.cpp index 38b592adba..7ec3be91d6 100644 --- a/src/Mod/Surface/Gui/TaskGeomFillSurface.cpp +++ b/src/Mod/Surface/Gui/TaskGeomFillSurface.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2015 Balázs Bámer * - * Werner Mayer * + * Copyright (c) 2015 Werner Mayer * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/Gui/Workbench.cpp b/src/Mod/Surface/Gui/Workbench.cpp index 10928b4f2a..f24b7f5ba6 100644 --- a/src/Mod/Surface/Gui/Workbench.cpp +++ b/src/Mod/Surface/Gui/Workbench.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * - * Balázs Bámer * + * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Balázs Bámer * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Surface/Gui/Workbench.h b/src/Mod/Surface/Gui/Workbench.h index 468bb491ec..d82b2a203b 100644 --- a/src/Mod/Surface/Gui/Workbench.h +++ b/src/Mod/Surface/Gui/Workbench.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Nathan Miller * + * Copyright (c) 2014 Nathan Miller * * * * This file is part of the FreeCAD CAx development system. * * * @@ -44,4 +44,4 @@ protected: } // namespace SurfaceGui -#endif // Surface_WORKBENCH_H +#endif // Surface_WORKBENCH_H diff --git a/src/Mod/Surface/Surface.dox b/src/Mod/Surface/Surface.dox index 74af270ff2..25b214d504 100644 --- a/src/Mod/Surface/Surface.dox +++ b/src/Mod/Surface/Surface.dox @@ -1,3 +1,8 @@ /** \defgroup TEMPLATE Surface - * \ingroup WORKBENCHES */ + * \ingroup WORKBENCHES + * \brief Multi paragraph description goes here + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + + */ diff --git a/src/Mod/TechDraw/App/AppTechDraw.cpp b/src/Mod/TechDraw/App/AppTechDraw.cpp index 80dbc32d4c..5814f252dc 100644 --- a/src/Mod/TechDraw/App/AppTechDraw.cpp +++ b/src/Mod/TechDraw/App/AppTechDraw.cpp @@ -1,14 +1,24 @@ /*************************************************************************** + * Copyright (c) 2007 Jürgen Riegel * * * - * This program 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. * - * for detail see the LICENCE text file. * - * Jürgen Riegel 2007 * + * 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 diff --git a/src/Mod/TechDraw/App/AppTechDrawPy.cpp b/src/Mod/TechDraw/App/AppTechDrawPy.cpp index 2db2be0711..7afe7011f9 100644 --- a/src/Mod/TechDraw/App/AppTechDrawPy.cpp +++ b/src/Mod/TechDraw/App/AppTechDrawPy.cpp @@ -197,7 +197,8 @@ private: } else { biggie = false; } - PyObject* result = PyList_New(0); + + Py::List result; try { EdgeWalker ew; @@ -207,16 +208,18 @@ private: std::vector rw = ew.getResultNoDups(); std::vector sortedWires = ew.sortStrip(rw,biggie); //false==>do not include biggest wires for (auto& w:sortedWires) { - PyList_Append(result,new TopoShapeWirePy(new TopoShape(w))); + PyObject* wire = new TopoShapeWirePy(new TopoShape(w)); + result.append(Py::asObject(wire)); } - } else { + } + else { Base::Console().Warning("edgeWalker: input is not planar graph. Wire detection not done\n"); } } catch (Base::Exception &e) { throw Py::Exception(Base::BaseExceptionFreeCADError, e.what()); } - return Py::asObject(result); + return result; } Py::Object findOuterWire(const Py::Tuple& args) @@ -639,7 +642,7 @@ private: double parentX = dvp->X.getValue() + grandParentX; double parentY = dvp->Y.getValue() + grandParentY; Base::Vector3d parentPos(parentX,parentY,0.0); - std::string sDimText = dvd->getFormatedValue(); + std::string sDimText = dvd->getFormattedDimensionValue(); char* dimText = &sDimText[0u]; //hack for const-ness float gap = 5.0; //hack. don't know font size here. layerName = dvd->getNameInDocument(); diff --git a/src/Mod/TechDraw/App/CenterLinePyImp.cpp b/src/Mod/TechDraw/App/CenterLinePyImp.cpp index 1e1c933e1a..570aec4fa9 100644 --- a/src/Mod/TechDraw/App/CenterLinePyImp.cpp +++ b/src/Mod/TechDraw/App/CenterLinePyImp.cpp @@ -300,13 +300,13 @@ Py::Object CenterLinePy::getEdges(void) const std::vector edges = cl->m_edges; int size = edges.size(); - PyObject* result = PyList_New(size); + Py::List result(size); for (auto& e: edges) { - PyList_Append(result, PyUnicode_FromString(e.c_str())); + result.append(Py::asObject(PyUnicode_FromString(e.c_str()))); } - return Py::asObject(result); + return result; } void CenterLinePy::setEdges(Py::Object arg) @@ -346,13 +346,13 @@ Py::Object CenterLinePy::getFaces(void) const std::vector faces = cl->m_faces; int size = faces.size(); - PyObject* result = PyList_New(size); + Py::List result(size); for (auto& f: faces) { - PyList_Append(result, PyUnicode_FromString(f.c_str())); + result.append(Py::asObject(PyUnicode_FromString(f.c_str()))); } - return Py::asObject(result); + return result; } void CenterLinePy::setFaces(Py::Object arg) @@ -393,13 +393,13 @@ Py::Object CenterLinePy::getPoints(void) const std::vector points = cl->m_verts; int size = points.size(); - PyObject* result = PyList_New(size); + Py::List result(size); for (auto& p: points) { - PyList_Append(result, PyUnicode_FromString(p.c_str())); + result.append(Py::asObject(PyUnicode_FromString(p.c_str()))); } - return Py::asObject(result); + return result; } void CenterLinePy::setPoints(Py::Object arg) diff --git a/src/Mod/TechDraw/App/Cosmetic.cpp b/src/Mod/TechDraw/App/Cosmetic.cpp index d2fcaf9778..80070ff38b 100644 --- a/src/Mod/TechDraw/App/Cosmetic.cpp +++ b/src/Mod/TechDraw/App/Cosmetic.cpp @@ -107,8 +107,8 @@ std::string LineFormat::toString(void) const //static preference getters. double LineFormat::getDefEdgeWidth() { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double width = lg->getWeight("Graphic"); delete lg; diff --git a/src/Mod/TechDraw/App/DrawGeomHatchPyImp.cpp b/src/Mod/TechDraw/App/DrawGeomHatchPyImp.cpp index 327ae70524..5df0c78f25 100644 --- a/src/Mod/TechDraw/App/DrawGeomHatchPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawGeomHatchPyImp.cpp @@ -1,3 +1,22 @@ +/*************************************************************************** + * Copyright (c) 2017 WandererFan * + * * + * 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" diff --git a/src/Mod/TechDraw/App/DrawHatchPyImp.cpp b/src/Mod/TechDraw/App/DrawHatchPyImp.cpp index 437246e516..010e2c4f79 100644 --- a/src/Mod/TechDraw/App/DrawHatchPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawHatchPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.cpp b/src/Mod/TechDraw/App/DrawLeaderLine.cpp index 4931216a8b..6904e47f86 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.cpp +++ b/src/Mod/TechDraw/App/DrawLeaderLine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -47,7 +47,7 @@ using namespace TechDraw; PROPERTY_SOURCE(TechDraw::DrawLeaderLine, TechDraw::DrawView) //TODO: share this between DrawViewBalloon, DrawLeaderLine, QGIArrow, Prefs, etc -//const char* DrawLeaderLine::ArrowTypeEnums[]= { +//const char* DrawLeaderLine::ArrowTypeEnums[]= { // "FILLED_ARROW", // "OPEN_ARROW", // "TICK", @@ -57,7 +57,7 @@ PROPERTY_SOURCE(TechDraw::DrawLeaderLine, TechDraw::DrawView) // "FILLED_TRIANGLE", // "NONE" // NULL}; -//const char* DrawLeaderLine::ArrowTypeEnums2[]= { +//const char* DrawLeaderLine::ArrowTypeEnums2[]= { // "FILLED_ARROW", // "OPEN_ARROW", // "TICK", @@ -77,7 +77,7 @@ DrawLeaderLine::DrawLeaderLine(void) LeaderParent.setScope(App::LinkScope::Global); ADD_PROPERTY_TYPE(WayPoints,(Base::Vector3d()) ,group, App::Prop_None, "Intermediate points for Leader line"); - + // EndType.setEnums(ArrowTypeEnums); // ADD_PROPERTY(EndType,(prefEnd())); @@ -124,7 +124,7 @@ short DrawLeaderLine::mustExecute() const if (result) { return result; } - + const App::DocumentObject* docObj = getBaseObject(); if (docObj != nullptr) { result = docObj->isTouched(); //object property points to is touched @@ -137,7 +137,7 @@ short DrawLeaderLine::mustExecute() const } App::DocumentObjectExecReturn *DrawLeaderLine::execute(void) -{ +{ // Base::Console().Message("DLL::execute()\n"); if (!keepUpdated()) { return App::DocumentObject::StdReturn; @@ -165,7 +165,7 @@ App::DocumentObject* DrawLeaderLine::getBaseObject(void) const DrawView* view = getBaseView(); if (view != nullptr) { result = view; - } + } return result; } @@ -219,7 +219,7 @@ Base::Vector3d DrawLeaderLine::getAttachPoint(void) return result; } -void DrawLeaderLine::adjustLastSegment(void) +void DrawLeaderLine::adjustLastSegment(void) { // Base::Console().Message("DLL::adjustLastSegment()\n"); bool adjust = AutoHorizontal.getValue(); diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.h b/src/Mod/TechDraw/App/DrawLeaderLine.h index 87c66882fd..7ccd19919e 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.h +++ b/src/Mod/TechDraw/App/DrawLeaderLine.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawLeaderLinePyImp.cpp b/src/Mod/TechDraw/App/DrawLeaderLinePyImp.cpp index 54a62775ff..067118688b 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLinePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawLeaderLinePyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawPage.cpp b/src/Mod/TechDraw/App/DrawPage.cpp index fb56c9acfd..7d944593e8 100644 --- a/src/Mod/TechDraw/App/DrawPage.cpp +++ b/src/Mod/TechDraw/App/DrawPage.cpp @@ -372,6 +372,15 @@ void DrawPage::updateAllViews() line->recomputeFeature(); } } + + //fourth, try to execute all spreadsheets. + for (it = featViews.begin(); it != featViews.end(); ++it) { + TechDraw::DrawViewSpreadsheet *sheet = dynamic_cast(*it); + if (sheet != nullptr) { + sheet->recomputeFeature(); + } + } + } std::vector DrawPage::getAllViews(void) diff --git a/src/Mod/TechDraw/App/DrawPage.h b/src/Mod/TechDraw/App/DrawPage.h index 8b403f2cd0..e298f52078 100644 --- a/src/Mod/TechDraw/App/DrawPage.h +++ b/src/Mod/TechDraw/App/DrawPage.h @@ -31,6 +31,7 @@ #include #include #include +#include namespace TechDraw { diff --git a/src/Mod/TechDraw/App/DrawPagePyImp.cpp b/src/Mod/TechDraw/App/DrawPagePyImp.cpp index bff965a33d..42607a80d4 100644 --- a/src/Mod/TechDraw/App/DrawPagePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawPagePyImp.cpp @@ -82,23 +82,23 @@ PyObject* DrawPagePy::getAllViews(PyObject* args) DrawPage* page = getDrawPagePtr(); std::vector allViews = page->getAllViews(); - PyObject* ret = PyList_New(0); + Py::List ret; for (auto&v: allViews) { if (v->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) { TechDraw::DrawProjGroupItem* dpgi = static_cast(v); - PyList_Append(ret,new TechDraw::DrawProjGroupItemPy(dpgi)); //is this legit? or need to make new copy of dv? + ret.append(Py::asObject(new TechDraw::DrawProjGroupItemPy(dpgi))); //is this legit? or need to make new copy of dv? } else if (v->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { TechDraw::DrawViewPart* dvp = static_cast(v); - PyList_Append(ret,new TechDraw::DrawViewPartPy(dvp)); + ret.append(Py::asObject(new TechDraw::DrawViewPartPy(dvp))); } else if (v->isDerivedFrom(TechDraw::DrawViewAnnotation::getClassTypeId())) { TechDraw::DrawViewAnnotation* dva = static_cast(v); - PyList_Append(ret,new TechDraw::DrawViewAnnotationPy(dva)); + ret.append(Py::asObject(new TechDraw::DrawViewAnnotationPy(dva))); } else { TechDraw::DrawView* dv = static_cast(v); - PyList_Append(ret,new TechDraw::DrawViewPy(dv)); + ret.append(Py::asObject(new TechDraw::DrawViewPy(dv))); } } - return ret; + return Py::new_reference_to(ret); } // double getPageWidth() const; diff --git a/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp b/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp index eb67eaabc7..663dfaefd3 100644 --- a/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawProjGroupPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/DrawRichAnno.cpp b/src/Mod/TechDraw/App/DrawRichAnno.cpp index 95798334ba..2a6a7e1a42 100644 --- a/src/Mod/TechDraw/App/DrawRichAnno.cpp +++ b/src/Mod/TechDraw/App/DrawRichAnno.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawRichAnno.h b/src/Mod/TechDraw/App/DrawRichAnno.h index 179797296c..1562783aa1 100644 --- a/src/Mod/TechDraw/App/DrawRichAnno.h +++ b/src/Mod/TechDraw/App/DrawRichAnno.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawRichAnnoPyImp.cpp b/src/Mod/TechDraw/App/DrawRichAnnoPyImp.cpp index d50a0abbd4..852eb5a0b2 100644 --- a/src/Mod/TechDraw/App/DrawRichAnnoPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawRichAnnoPyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp b/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp index 032c79567e..cca9db485a 100644 --- a/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawSVGTemplatePyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/DrawTile.cpp b/src/Mod/TechDraw/App/DrawTile.cpp index fbeb6b4c27..e31e6f0e34 100644 --- a/src/Mod/TechDraw/App/DrawTile.cpp +++ b/src/Mod/TechDraw/App/DrawTile.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -81,7 +81,7 @@ short DrawTile::mustExecute() const } App::DocumentObjectExecReturn *DrawTile::execute(void) -{ +{ // Base::Console().Message("DT::execute()\n"); return DocumentObject::execute(); } diff --git a/src/Mod/TechDraw/App/DrawTilePyImp.cpp b/src/Mod/TechDraw/App/DrawTilePyImp.cpp index ae48cfe9fd..260e63dd55 100644 --- a/src/Mod/TechDraw/App/DrawTilePyImp.cpp +++ b/src/Mod/TechDraw/App/DrawTilePyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawTileWeld.h b/src/Mod/TechDraw/App/DrawTileWeld.h index 0f1a5bb4fc..8067f6e9c2 100644 --- a/src/Mod/TechDraw/App/DrawTileWeld.h +++ b/src/Mod/TechDraw/App/DrawTileWeld.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -51,7 +51,7 @@ public: virtual short mustExecute() const; virtual App::DocumentObjectExecReturn *execute(void); - virtual void onDocumentRestored(); + virtual void onDocumentRestored(); virtual void setupObject(); virtual const char* getViewProviderName(void) const { diff --git a/src/Mod/TechDraw/App/DrawTileWeldPyImp.cpp b/src/Mod/TechDraw/App/DrawTileWeldPyImp.cpp index 5fb4342a2d..2fd5fddca4 100644 --- a/src/Mod/TechDraw/App/DrawTileWeldPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawTileWeldPyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawUtil.cpp b/src/Mod/TechDraw/App/DrawUtil.cpp index 7ad35d5ff2..6fd468a36b 100644 --- a/src/Mod/TechDraw/App/DrawUtil.cpp +++ b/src/Mod/TechDraw/App/DrawUtil.cpp @@ -561,9 +561,8 @@ double DrawUtil::sensibleScale(double working_scale) double DrawUtil::getDefaultLineWeight(std::string lineType) { - std::string lgName = Preferences::lineGroup(); - - auto lg = LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight(lineType); delete lg; //Coverity CID 174671 diff --git a/src/Mod/TechDraw/App/DrawViewAnnotationPyImp.cpp b/src/Mod/TechDraw/App/DrawViewAnnotationPyImp.cpp index a559b6ee05..fcaacf7e40 100644 --- a/src/Mod/TechDraw/App/DrawViewAnnotationPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewAnnotationPyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2018 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2018 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.cpp b/src/Mod/TechDraw/App/DrawViewBalloon.cpp index b58c3328fd..9f8a397c39 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.cpp +++ b/src/Mod/TechDraw/App/DrawViewBalloon.cpp @@ -105,11 +105,16 @@ DrawViewBalloon::DrawViewBalloon(void) ADD_PROPERTY_TYPE(ShapeScale,(1.0),"",(App::PropertyType)(App::Prop_None),"Balloon shape scale"); ShapeScale.setConstraints(&SymbolScaleRange); + ADD_PROPERTY_TYPE(EndTypeScale,(1.0),"",(App::PropertyType)(App::Prop_None),"EndType shape scale"); + ShapeScale.setConstraints(&SymbolScaleRange); + ADD_PROPERTY_TYPE(TextWrapLen,(-1),"",(App::PropertyType)(App::Prop_None),"Text wrap length; -1 means no wrap"); ADD_PROPERTY_TYPE(KinkLength,(prefKinkLength()),"",(App::PropertyType)(App::Prop_None), "Distance from symbol to leader kink"); + ADD_PROPERTY_TYPE(LineVisible,(true),"",(App::PropertyType)(App::Prop_None),"Balloon line visible or hidden"); + SourceView.setScope(App::LinkScope::Global); Rotation.setStatus(App::Property::Hidden,true); Caption.setStatus(App::Property::Hidden,true); diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.h b/src/Mod/TechDraw/App/DrawViewBalloon.h index a039ca2398..0892aac32a 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.h +++ b/src/Mod/TechDraw/App/DrawViewBalloon.h @@ -49,15 +49,17 @@ public: DrawViewBalloon(); virtual ~DrawViewBalloon(); - App::PropertyLink SourceView; - App::PropertyString Text; - App::PropertyEnumeration EndType; - App::PropertyEnumeration BubbleShape; + App::PropertyLink SourceView; + App::PropertyString Text; + App::PropertyEnumeration EndType; + App::PropertyEnumeration BubbleShape; App::PropertyFloatConstraint ShapeScale; - App::PropertyDistance OriginX; - App::PropertyDistance OriginY; - App::PropertyFloat TextWrapLen; - App::PropertyDistance KinkLength; + App::PropertyFloatConstraint EndTypeScale; + App::PropertyDistance OriginX; + App::PropertyDistance OriginY; + App::PropertyFloat TextWrapLen; + App::PropertyDistance KinkLength; + App::PropertyBool LineVisible; short mustExecute() const override; diff --git a/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp index 0179e67f7b..324bb5b55f 100644 --- a/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewClipPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" @@ -72,27 +93,20 @@ PyObject* DrawViewClipPy::removeView(PyObject* args) PyObject* DrawViewClipPy::getChildViewNames(PyObject* args) { if (!PyArg_ParseTuple(args, "")) - return 0; + return nullptr; DrawViewClip* clip = getDrawViewClipPtr(); std::vector strings = clip->getChildViewNames(); int stringSize = strings.size(); - PyObject* result = PyList_New(stringSize); + Py::List result(stringSize); std::vector::iterator it = strings.begin(); for( ; it != strings.end(); it++) { -#if PY_MAJOR_VERSION < 3 - PyObject* pString = PyString_FromString(it->c_str()); //TODO: unicode & py3 -#else - PyObject* pString = PyUnicode_FromString(it->c_str()); -#endif - //int rc = - static_cast (PyList_Append(result, pString)); + result.append(Py::String(*it)); } -// PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); - return result; + return Py::new_reference_to(result); } PyObject *DrawViewClipPy::getCustomAttributes(const char* ) const diff --git a/src/Mod/TechDraw/App/DrawViewCollection.h b/src/Mod/TechDraw/App/DrawViewCollection.h index d7936b091c..b76046d69f 100644 --- a/src/Mod/TechDraw/App/DrawViewCollection.h +++ b/src/Mod/TechDraw/App/DrawViewCollection.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2007 Jürgen Riegel * - * Copyright (c) 2013 Luke Parry * + * Copyright (c) 2013 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp b/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp index 5e2ba1628a..cb696f7983 100644 --- a/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewCollectionPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/DrawViewDimExtent.cpp b/src/Mod/TechDraw/App/DrawViewDimExtent.cpp index afc2c103b7..77b8c8410d 100644 --- a/src/Mod/TechDraw/App/DrawViewDimExtent.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimExtent.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -121,7 +121,7 @@ App::DocumentObjectExecReturn *DrawViewDimExtent::execute(void) std::vector edgeNames = getSubNames(); int direction = DirExtent.getValue(); - std::pair endPoints = + std::pair endPoints = DrawDimHelper::minMax(dvp, edgeNames, direction); @@ -156,7 +156,7 @@ App::DocumentObjectExecReturn *DrawViewDimExtent::execute(void) CosmeticVertex* cvTemp = dvp->getCosmeticVertex(cTags[0]); cvTemp->permaPoint = refMin / scale; cvTemp = dvp->getCosmeticVertex(cTags[1]); - cvTemp->permaPoint = refMax / scale; + cvTemp->permaPoint = refMax / scale; } } } @@ -169,7 +169,7 @@ std::vector DrawViewDimExtent::getSubNames(void) { std::vector result; std::vector edgeNames = Source.getSubValues(); - if (!edgeNames.empty() && + if (!edgeNames.empty() && (edgeNames[0].size() == 0)) { //garbage first entry - nop } else { diff --git a/src/Mod/TechDraw/App/DrawViewDimExtent.h b/src/Mod/TechDraw/App/DrawViewDimExtent.h index 15537b0c78..66330b1e5e 100644 --- a/src/Mod/TechDraw/App/DrawViewDimExtent.h +++ b/src/Mod/TechDraw/App/DrawViewDimExtent.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index 49a0dfeb3a..8849cedead 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -70,15 +70,29 @@ using namespace TechDraw; PROPERTY_SOURCE(TechDraw::DrawViewDimension, TechDraw::DrawView) +namespace { + // keep this enum synchronized with TypeEnums + enum DrawViewType { + Distance, + DistanceX, + DistanceY, + DistanceZ, + Radius, + Diameter, + Angle, + Angle3Pt + }; +} + const char* DrawViewDimension::TypeEnums[]= {"Distance", - "DistanceX", - "DistanceY", - "DistanceZ", - "Radius", - "Diameter", - "Angle", - "Angle3Pt", - NULL}; + "DistanceX", + "DistanceY", + "DistanceZ", + "Radius", + "Diameter", + "Angle", + "Angle3Pt", + NULL}; const char* DrawViewDimension::MeasureTypeEnums[]= {"True", "Projected", @@ -92,7 +106,10 @@ DrawViewDimension::DrawViewDimension(void) References3D.setScope(App::LinkScope::Global); ADD_PROPERTY_TYPE(FormatSpec,(getDefaultFormatSpec()) , "Format", App::Prop_Output,"Dimension Format"); + ADD_PROPERTY_TYPE(FormatSpecOverTolerance,("%+g") , "Format", App::Prop_Output,"Dimension Overtolerance Format"); + ADD_PROPERTY_TYPE(FormatSpecUnderTolerance,("%+g") , "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,"Tolerance values overridden by user"); Type.setEnums(TypeEnums); //dimension type: length, radius etc ADD_PROPERTY(Type,((long)0)); @@ -100,7 +117,9 @@ DrawViewDimension::DrawViewDimension(void) ADD_PROPERTY(MeasureType, ((long)1)); //Projected (or True) measurement ADD_PROPERTY_TYPE(TheoreticalExact,(false),"", App::Prop_Output,"Set for theoretical exact (basic) dimension"); ADD_PROPERTY_TYPE(OverTolerance ,(0.0),"", App::Prop_Output,"+ Tolerance value"); + OverTolerance.setUnit(Base::Unit::Length); ADD_PROPERTY_TYPE(UnderTolerance ,(0.0),"", App::Prop_Output,"- Tolerance value"); + UnderTolerance.setUnit(Base::Unit::Length); ADD_PROPERTY_TYPE(Inverted,(false),"", App::Prop_Output,"The dimensional value is displayed inverted"); //hide the properties the user can't edit in the property editor @@ -165,6 +184,16 @@ void DrawViewDimension::onChanged(const App::Property* prop) } } else if (prop == &Type) { //why?? FormatSpec.setValue(getDefaultFormatSpec().c_str()); + + DrawViewType type = static_cast(Type.getValue()); + if (type == DrawViewType::Angle || type == DrawViewType::Angle3Pt) { + OverTolerance.setUnit(Base::Unit::Angle); + UnderTolerance.setUnit(Base::Unit::Angle); + } + else { + OverTolerance.setUnit(Base::Unit::Length); + UnderTolerance.setUnit(Base::Unit::Length); + } } else if ( (prop == &FormatSpec) || (prop == &Arbitrary) || (prop == &MeasureType) || @@ -184,6 +213,29 @@ void DrawViewDimension::onDocumentRestored() if (has3DReferences()) { setAll3DMeasurement(); } + + DrawViewType type = static_cast(Type.getValue()); + if (type == DrawViewType::Angle || type == DrawViewType::Angle3Pt) { + OverTolerance.setUnit(Base::Unit::Angle); + UnderTolerance.setUnit(Base::Unit::Angle); + } +} + +void DrawViewDimension::handleChangedPropertyType(Base::XMLReader &reader, const char * TypeName, App::Property * prop) +{ + if (prop == &OverTolerance && strcmp(TypeName, "App::PropertyFloat") == 0) { + App::PropertyFloat v; + v.Restore(reader); + OverTolerance.setValue(v.getValue()); + } + else if (prop == &UnderTolerance && strcmp(TypeName, "App::PropertyFloat") == 0) { + App::PropertyFloat v; + v.Restore(reader); + UnderTolerance.setValue(v.getValue()); + } + else { + TechDraw::DrawView::handleChangedPropertyType(reader, TypeName, prop); + } } @@ -210,7 +262,6 @@ short DrawViewDimension::mustExecute() const App::DocumentObjectExecReturn *DrawViewDimension::execute(void) { -// Base::Console().Message("DVD::execute() - %s\n", getNameInDocument()); if (!keepUpdated()) { return App::DocumentObject::StdReturn; } @@ -252,7 +303,7 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void) Type.isValue("DistanceY") ) { if (getRefType() == oneEdge) { m_linearPoints = getPointsOneEdge(); - }else if (getRefType() == twoEdge) { + } else if (getRefType() == twoEdge) { m_linearPoints = getPointsTwoEdges(); } else if (getRefType() == twoVertex) { m_linearPoints = getPointsTwoVerts(); @@ -530,23 +581,42 @@ bool DrawViewDimension::isMultiValueSchema(void) const return result; } -std::string DrawViewDimension::getFormatedValue(int partial) +std::string DrawViewDimension::getBaseLengthUnit(Base::UnitSystem system) { -// Base::Console().Message("DVD::getFormatedValue(%d)\n", partial); - std::string result; - if (Arbitrary.getValue()) { - return FormatSpec.getStrValue(); + switch (system) { + case Base::UnitSystem::SI1: + return "mm"; + case Base::UnitSystem::SI2: + return "m"; + case Base::UnitSystem::Imperial1: + return "in"; + case Base::UnitSystem::ImperialDecimal: + return "in"; + case Base::UnitSystem::Centimeters: + return "cm"; + case Base::UnitSystem::ImperialBuilding: + return "ft"; + case Base::UnitSystem::MmMin: + return "mm"; + case Base::UnitSystem::ImperialCivil: + return "ft"; + case Base::UnitSystem::FemMilliMeterNewton: + return "mm"; + default: + return "Unknown schema"; } - bool multiValueSchema = false; +} + +std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int partial) +{ + std::string result; - QString qFormatSpec = QString::fromUtf8(FormatSpec.getStrValue().data(),FormatSpec.getStrValue().size()); - double val = getDimValue(); QString qUserStringUnits; QString formattedValue; - bool angularMeasure = false; + Base::Quantity asQuantity; - asQuantity.setValue(val); + asQuantity.setValue(value); if ( (Type.isValue("Angle")) || (Type.isValue("Angle3Pt")) ) { angularMeasure = true; @@ -555,7 +625,7 @@ std::string DrawViewDimension::getFormatedValue(int partial) asQuantity.setUnit(Base::Unit::Length); } - QString qUserString = asQuantity.getUserString(); // this handles mm to inch/km/parsec etc + QString qUserString = asQuantity.getUserString(); // this handles mm to inch/km/parsec etc // and decimal positions but won't give more than // Global_Decimals precision // really should be able to ask units for value @@ -565,6 +635,9 @@ std::string DrawViewDimension::getFormatedValue(int partial) //if it is multi-unit schema, don't even try to use Alt Decimals Base::UnitSystem unitSystem = Base::UnitsApi::getSchema(); + // we need to know what length unit is used by the scheme + std::string BaseLengthUnit = getBaseLengthUnit(unitSystem); + //get formatSpec prefix/suffix/specifier QStringList qsl = getPrefixSuffixSpec(qFormatSpec); QString formatPrefix = qsl[0]; //FormatSpec prefix @@ -574,109 +647,123 @@ std::string DrawViewDimension::getFormatedValue(int partial) //handle multi value schemes (yd/ft/in, dms, etc) std::string genPrefix = getPrefix(); //general prefix - diameter, radius, etc QString qMultiValueStr; - QString qGenPrefix = QString::fromUtf8(genPrefix.data(),genPrefix.size()); - if ( (unitSystem == Base::UnitSystem::ImperialBuilding) && - !angularMeasure ) { - multiValueSchema = true; - qMultiValueStr = qUserString; - if (!genPrefix.empty()) { - //qUserString from Quantity includes units - prefix + R + nnn ft + suffix - qMultiValueStr = formatPrefix + qGenPrefix + qUserString + formatSuffix; - } - } else if ((unitSystem == Base::UnitSystem::ImperialCivil) && - angularMeasure) { + QString qGenPrefix = QString::fromUtf8(genPrefix.data(), genPrefix.size()); + if ((unitSystem == Base::UnitSystem::ImperialCivil) && angularMeasure) { QString dispMinute = QString::fromUtf8("\'"); QString dispSecond = QString::fromUtf8("\""); QString schemeMinute = QString::fromUtf8("M"); QString schemeSecond = QString::fromUtf8("S"); - QString displaySub = qUserString.replace(schemeMinute,dispMinute); - displaySub = displaySub.replace(schemeSecond,dispSecond); - multiValueSchema = true; + QString displaySub = qUserString.replace(schemeMinute, dispMinute); + displaySub = displaySub.replace(schemeSecond, dispSecond); qMultiValueStr = displaySub; if (!genPrefix.empty()) { // prefix + 48*30'30" + suffix qMultiValueStr = formatPrefix + qGenPrefix + displaySub + formatSuffix; } + formattedValue = qMultiValueStr; } else { - //handle single value schemes if (formatSpecifier.isEmpty()) { Base::Console().Warning("Warning - no numeric format in formatSpec %s - %s\n", qPrintable(qFormatSpec), getNameInDocument()); return Base::Tools::toStdString(qFormatSpec); } - QRegExp rxUnits(QString::fromUtf8(" \\D*$")); //space + any non digits at end of string - QString userVal = qUserString; - userVal.remove(rxUnits); //getUserString(defaultDecimals) without units - QLocale loc; - double userValNum = loc.toDouble(userVal); + // for older TD drawings the formatSpecifier "%g" was used, but the number of decimals was + // neverheless limited. To keep old drawings, we limit the number of decimals too + // if the TD preferences option to use the global decimal number is set + // the formatSpecifier can have a prefix and/or suffix + if (useDecimals() && formatSpecifier.contains(QString::fromLatin1("%g"), Qt::CaseInsensitive)) { + int globalPrecision = Base::UnitsApi::getDecimals(); + // change formatSpecifier to e.g. "%.2f" + QString newSpecifier = QString::fromStdString("%." + std::to_string(globalPrecision) + "f"); + formatSpecifier.replace(QString::fromLatin1("%g"), newSpecifier, Qt::CaseInsensitive); + } + // qUserString is the value + unit with default decimals, so extract the unit + // we cannot just use unit.getString() because this would convert '' to 'deg' + QRegExp rxUnits(QString::fromUtf8(" \\D*$")); // space + any non digits at end of string int pos = 0; - if ((pos = rxUnits.indexIn(qUserString, 0)) != -1) { - qUserStringUnits = rxUnits.cap(0); //entire capture - non numerics at end of qUserString + if ((pos = rxUnits.indexIn(qUserString, 0)) != -1) { + qUserStringUnits = rxUnits.cap(0); // entire capture - non numerics at end of qUserString } - formattedValue = userVal; //sensible default - #if QT_VERSION >= 0x050000 - formattedValue = QString::asprintf(Base::Tools::toStdString(formatSpecifier).c_str(),userValNum); - #else - QString qs2; - formattedValue = qs2.sprintf(Base::Tools::toStdString(formatSpecifier).c_str(),userValNum); - #endif - QString repl = userVal; - if (useDecimals()) { - if (showUnits() || (Type.isValue("Angle")) ||(Type.isValue("Angle3Pt")) ) { - repl = qUserString; - } else { - repl = userVal; - } + // we can have 2 possible results: + // - the value in the base unit but without displayed unit + // - the value + unit (not necessarily the base unit!) + // the user can overwrite the decimal settings, so we must in every case use the formatSpecifier + // the default is: if useDecimals(), then formatSpecifier = global decimals, otherwise it is %.2f + QLocale loc; + double userVal; + if (showUnits() || (Type.isValue("Angle")) || (Type.isValue("Angle3Pt"))) { + userVal = asQuantity.getValue(); } else { - if (showUnits() || (Type.isValue("Angle")) || (Type.isValue("Angle3Pt"))) { - repl = formattedValue + qUserStringUnits; - } else { - repl = formattedValue; - } + // get value in the base unit with default decimals + // for the conversion we use the same method as in DlgUnitsCalculator::valueChanged + // get the conversion factor for the unit + double convertValue = Base::Quantity::parse(QString::fromLatin1("1") + QString::fromStdString(BaseLengthUnit)).getValue(); + // the result is now just val / convertValue because val is always in the base unit + userVal = asQuantity.getValue() / convertValue; + } + // we reformat the value +#if QT_VERSION >= 0x050000 + formattedValue = QString::asprintf(Base::Tools::toStdString(formatSpecifier).c_str(), userVal); +#else + QString qs2; + formattedValue = qs2.sprintf(Base::Tools::toStdString(formatSpecifier).c_str(), userVal); +#endif + // if abs(1 - userVal / formattedValue) > 0.1 we know that we make an error greater than 10% + // then we need more digits + if (abs(userVal - formattedValue.toDouble()) > 0.1 * abs(userVal)) { + int i = 1; + do { // increase decimals step by step until error is < 10 % + formattedValue = QLocale().toString(userVal, 'f', i); + ++i; + } while (abs(userVal - loc.toDouble(formattedValue)) > 0.1 * abs(userVal)); + // We purposely don't reset the formatSpecifier. + // Why "%.1f" is overwritten for a value of e.g. "0.001" is obvious, + // moreover such cases only occurs when + // changing unit schemes on existing drawings. Moreover a typical case is that + // you accidentally used e.g. a building scheme, see your mistake and go back + // then you would end up with e.g. "%.5f" and must manually correct this. } - qFormatSpec.replace(formatSpecifier,repl); - //this next bit is so inelegant!!! + // replace decimal sign if necessary QChar dp = QChar::fromLatin1('.'); if (loc.decimalPoint() != dp) { - qFormatSpec.replace(dp,loc.decimalPoint()); - formattedValue.replace(dp,loc.decimalPoint()); - } - //Remove space between dimension and degree sign - if ((Type.isValue("Angle")) || (Type.isValue("Angle3Pt"))) { - QRegExp space(QString::fromUtf8("\\s")); - qFormatSpec.remove(space); + formattedValue.replace(dp, loc.decimalPoint()); } } - //formattedValue - formatted numeric value - //qUserStringUnits - unit abbrev - //qFormatSpec - prefix + formattedValue w/units + suffix - //partial = 0 --> prefix + formattedValue w/units +suffix - // prefix 4' 11" suffix - result = qFormatSpec.toUtf8().constData(); - - std::string ssPrefix = Base::Tools::toStdString(formatPrefix); - std::string ssSuffix = Base::Tools::toStdString(formatSuffix); - std::string ssUnits = Base::Tools::toStdString(qUserStringUnits); - if (multiValueSchema) { - result = ssPrefix + - Base::Tools::toStdString(qMultiValueStr) + - ssSuffix + - ssUnits; + if ((unitSystem == Base::UnitSystem::ImperialBuilding) && + !angularMeasure) { + qMultiValueStr = formattedValue; + if (!genPrefix.empty()) { + //qUserString from Quantity includes units - prefix + R + nnn ft + suffix + qMultiValueStr = formatPrefix + qGenPrefix + qUserString + formatSuffix; + } + formattedValue = qMultiValueStr; } - if (partial == 1) { //prefix number suffix - result = ssPrefix + - Base::Tools::toStdString(formattedValue) + - ssSuffix; - } else if (partial == 2) { //just the unit + result = formattedValue.toStdString(); + + if (partial == 0) { + result = Base::Tools::toStdString(formatPrefix) + + Base::Tools::toStdString(qMultiValueStr) + + Base::Tools::toStdString(formatSuffix) + + Base::Tools::toStdString(qUserStringUnits); + } + else if (partial == 1) { // prefix number suffix + result = Base::Tools::toStdString(formatPrefix) + + result + + Base::Tools::toStdString(formatSuffix); + } + else if (partial == 2) { // just the unit if ((Type.isValue("Angle")) || (Type.isValue("Angle3Pt"))) { - QRegExp space(QString::fromUtf8("\\s")); - qUserStringUnits.remove(space); + // remove space between dimension and unit if unit is not "deg" + if ( !qUserStringUnits.contains(QString::fromLatin1("deg")) ) { + QRegExp space(QString::fromUtf8("\\s")); + qUserStringUnits.remove(space); + } result = Base::Tools::toStdString(qUserStringUnits); } else if (showUnits()) { result = Base::Tools::toStdString(qUserStringUnits); @@ -688,15 +775,46 @@ std::string DrawViewDimension::getFormatedValue(int partial) return result; } +std::pair DrawViewDimension::getFormattedToleranceValues(int partial) +{ + QString underFormatSpec = QString::fromUtf8(FormatSpecUnderTolerance.getStrValue().data()); + QString overFormatSpec = QString::fromUtf8(FormatSpecOverTolerance.getStrValue().data()); + std::pair tolerances; + QString underTolerance, overTolerance; + + if (ArbitraryTolerances.getValue()) { + underTolerance = underFormatSpec; + overTolerance = overFormatSpec; + } else { + underTolerance = QString::fromUtf8(formatValue(UnderTolerance.getValue(), underFormatSpec, partial).c_str()); + overTolerance = QString::fromUtf8(formatValue(OverTolerance.getValue(), overFormatSpec, partial).c_str()); + } + + tolerances.first = underTolerance.toStdString(); + tolerances.second = overTolerance.toStdString(); + + return tolerances; +} + + +std::string DrawViewDimension::getFormattedDimensionValue(int partial) +{ + QString qFormatSpec = QString::fromUtf8(FormatSpec.getStrValue().data()); + + if (Arbitrary.getValue()) { + return FormatSpec.getStrValue(); + } + + return formatValue(getDimValue(), qFormatSpec, partial); +} QStringList DrawViewDimension::getPrefixSuffixSpec(QString fSpec) { QStringList result; QString formatPrefix; QString formatSuffix; - QString formatted; //find the %x.y tag in FormatSpec - QRegExp rxFormat(QString::fromUtf8("%[0-9]*\\.*[0-9]*[aefgAEFG]")); //printf double format spec + QRegExp rxFormat(QString::fromUtf8("%[+-]?[0-9]*\\.*[0-9]*[aefgAEFG]")); //printf double format spec QString match; int pos = 0; if ((pos = rxFormat.indexIn(fSpec, 0)) != -1) { @@ -883,7 +1001,6 @@ pointPair DrawViewDimension::getPointsTwoVerts() pointPair DrawViewDimension::getPointsEdgeVert() { -// Base::Console().Message("DVD::getPointsEdgeVert() - %s\n",getNameInDocument()); pointPair result; const std::vector &subElements = References2D.getSubValues(); int idx0 = DrawUtil::getIndexFromName(subElements[0]); @@ -897,34 +1014,13 @@ pointPair DrawViewDimension::getPointsEdgeVert() e = getViewPart()->getGeomByIndex(idx1); v = getViewPart()->getProjVertexByIndex(idx0); } - if ((v == nullptr) || - (e == nullptr) ) { - Base::Console().Error("Error: DVD - %s - 2D references are corrupt (4)\n",getNameInDocument()); + if ((v == nullptr) || (e == nullptr) ) { + Base::Console().Error("Error: DVD - %s - 2D references are corrupt (4)\n", getNameInDocument()); return result; } - // if DistanceX or DistanceY, needs to be closest horizontal or vertical extent of edge - // for Distance the perpendicular distance if fine. - Bnd_Box edgeBox; - BRepBndLib::Add(e->occEdge, edgeBox); - edgeBox.SetGap(0.0); - double minX, minY, minZ, maxX, maxY, maxZ; - edgeBox.Get(minX, minY, minZ, maxX, maxY, maxZ); - gp_Pnt pnt = BRep_Tool::Pnt(v->occVertex); + result = closestPoints(e->occEdge,v->occVertex); - if (Type.isValue("DistanceX") ) { - gp_Pnt p0(pnt.X(), minY, 0.0); - gp_Pnt p1(pnt.X(), maxY, 0.0); - TopoDS_Edge boundary = BRepBuilderAPI_MakeEdge(p0, p1); - result = closestPoints(e->occEdge, boundary); - } else if (Type.isValue("DistanceY") ) { - gp_Pnt p0(minX, pnt.Y(), 0.0); - gp_Pnt p1(maxX, pnt.Y(), 0.0); - TopoDS_Edge boundary = BRepBuilderAPI_MakeEdge(p0, p1); - result = closestPoints(e->occEdge, boundary); - } else { - result = closestPoints(e->occEdge,v->occVertex); - } return result; } @@ -938,64 +1034,28 @@ DrawViewPart* DrawViewDimension::getViewPart() const int DrawViewDimension::getRefType() const { - int refType = invalidRef; - const std::vector &subElements = References2D.getSubValues(); - if (subElements.size() == 1) { - refType = getRefType1(subElements[0]); - } else if (subElements.size() == 2) { - refType = getRefType2(subElements[0],subElements[1]); - } else if (subElements.size() == 3) { - refType = getRefType3(subElements[0],subElements[1],subElements[2]); - } - return refType; + return getRefTypeSubElements(References2D.getSubValues()); } -//static -int DrawViewDimension::getRefType1(const std::string g1) +int DrawViewDimension::getRefTypeSubElements(const std::vector &subElements) { int refType = invalidRef; - if (DrawUtil::getGeomTypeFromName(g1) == "Edge") { - refType = oneEdge; - } - return refType; -} + int refEdges = 0, refVertices = 0; -//static -int DrawViewDimension::getRefType2(const std::string g1, const std::string g2) -{ - int refType = invalidRef; - if ((DrawUtil::getGeomTypeFromName(g1) == "Edge") && - (DrawUtil::getGeomTypeFromName(g2) == "Edge")) { - refType = twoEdge; - } else if ((DrawUtil::getGeomTypeFromName(g1) == "Vertex") && - (DrawUtil::getGeomTypeFromName(g2) == "Vertex")) { - refType = twoVertex; - } else if (((DrawUtil::getGeomTypeFromName(g1) == "Vertex") && - (DrawUtil::getGeomTypeFromName(g2) == "Edge")) || - ((DrawUtil::getGeomTypeFromName(g1) == "Edge") && - (DrawUtil::getGeomTypeFromName(g2) == "Vertex")) ) { - refType = vertexEdge; + for (const auto& se: subElements) { + if (DrawUtil::getGeomTypeFromName(se) == "Vertex") { refVertices++; } + if (DrawUtil::getGeomTypeFromName(se) == "Edge") { refEdges++; } } - //} else add different types here - Vertex-Face, ... + + if (refEdges == 0 && refVertices == 2) { refType = twoVertex; } + if (refEdges == 0 && refVertices == 3) { refType = threeVertex; } + if (refEdges == 1 && refVertices == 0) { refType = oneEdge; } + if (refEdges == 1 && refVertices == 1) { refType = vertexEdge; } + if (refEdges == 2 && refVertices == 0) { refType = twoEdge; } return refType; } -int DrawViewDimension::getRefType3(const std::string g1, - const std::string g2, - const std::string g3) -{ - int refType = invalidRef; - if ((DrawUtil::getGeomTypeFromName(g1) == "Vertex") && - (DrawUtil::getGeomTypeFromName(g2) == "Vertex") && - (DrawUtil::getGeomTypeFromName(g3) == "Vertex") ) { - refType = threeVertex; - } - - return refType; -} - - //! validate 2D references - only checks if the target exists bool DrawViewDimension::checkReferences2D() const { diff --git a/src/Mod/TechDraw/App/DrawViewDimension.h b/src/Mod/TechDraw/App/DrawViewDimension.h index 006a0dfa3c..865c2601a4 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.h +++ b/src/Mod/TechDraw/App/DrawViewDimension.h @@ -27,6 +27,7 @@ # include # include # include +# include #include "DrawView.h" @@ -101,9 +102,12 @@ public: App::PropertyBool TheoreticalExact; App::PropertyBool Inverted; App::PropertyString FormatSpec; + App::PropertyString FormatSpecUnderTolerance; + App::PropertyString FormatSpecOverTolerance; App::PropertyBool Arbitrary; - App::PropertyFloat OverTolerance; - App::PropertyFloat UnderTolerance; + App::PropertyBool ArbitraryTolerances; + App::PropertyQuantity OverTolerance; + App::PropertyQuantity UnderTolerance; enum RefType{ invalidRef, @@ -133,18 +137,17 @@ public: //return PyObject as DrawViewDimensionPy virtual PyObject *getPyObject(void) override; - virtual std::string getFormatedValue(int partial = 0); + 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); + virtual double getDimValue(); QStringList getPrefixSuffixSpec(QString fSpec); virtual DrawViewPart* getViewPart() const; virtual QRectF getRect() const override { return QRectF(0,0,1,1);} //pretend dimensions always fit! - static int getRefType1(const std::string s); - static int getRefType2(const std::string s1, const std::string s2); - static int getRefType3(const std::string g1, - const std::string g2, - const std::string g3); - virtual int getRefType() const; //Vertex-Vertex, Edge, Edge-Edge + virtual int getRefType() const; //Vertex-Vertex, Edge, Edge-Edge + static int getRefTypeSubElements(const std::vector &); //Vertex-Vertex, Edge, Edge-Edge void setAll3DMeasurement(); void clear3DMeasurements(void); virtual bool checkReferences2D(void) const; @@ -155,6 +158,8 @@ public: bool isMultiValueSchema(void) const; + std::string getBaseLengthUnit(Base::UnitSystem system); + pointPair getArrowPositions(void); void saveArrowPositions(const Base::Vector2d positions[]); @@ -162,6 +167,7 @@ public: bool useDecimals() const; protected: + virtual void handleChangedPropertyType(Base::XMLReader &, const char * , App::Property * ) override; virtual void onChanged(const App::Property* prop) override; virtual void onDocumentRestored() override; std::string getPrefix() const; diff --git a/src/Mod/TechDraw/App/DrawViewDimensionPyImp.cpp b/src/Mod/TechDraw/App/DrawViewDimensionPyImp.cpp index b41e80f59c..143204a3b3 100644 --- a/src/Mod/TechDraw/App/DrawViewDimensionPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimensionPyImp.cpp @@ -61,7 +61,7 @@ PyObject* DrawViewDimensionPy::getText(PyObject* args) // return 0; // } DrawViewDimension* dvd = getDrawViewDimensionPtr(); - std::string textString = dvd->getFormatedValue(); + std::string textString = dvd->getFormattedDimensionValue(); //TODO: check multiversion code! #if PY_MAJOR_VERSION >= 3 PyObject* pyText = Base::PyAsUnicodeObject(textString); @@ -76,10 +76,10 @@ PyObject* DrawViewDimensionPy::getLinearPoints(PyObject* args) (void) args; DrawViewDimension* dvd = getDrawViewDimensionPtr(); pointPair pts = dvd->getLinearPoints(); - PyObject* ret = PyList_New(0); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.first))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.second))); - return ret; + Py::List ret; + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.first)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.second)))); + return Py::new_reference_to(ret); } PyObject* DrawViewDimensionPy::getArcPoints(PyObject* args) @@ -87,14 +87,14 @@ PyObject* DrawViewDimensionPy::getArcPoints(PyObject* args) (void) args; DrawViewDimension* dvd = getDrawViewDimensionPtr(); arcPoints pts = dvd->getArcPoints(); - PyObject* ret = PyList_New(0); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.center))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.onCurve.first))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.onCurve.second))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.arcEnds.first))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.arcEnds.second))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.midArc))); - return ret; + Py::List ret; + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.center)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.onCurve.first)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.onCurve.second)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.arcEnds.first)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.arcEnds.second)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.midArc)))); + return Py::new_reference_to(ret); } PyObject* DrawViewDimensionPy::getAnglePoints(PyObject* args) @@ -102,11 +102,11 @@ PyObject* DrawViewDimensionPy::getAnglePoints(PyObject* args) (void) args; DrawViewDimension* dvd = getDrawViewDimensionPtr(); anglePoints pts = dvd->getAnglePoints(); - PyObject* ret = PyList_New(0); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.ends.first))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.ends.second))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.vertex))); - return ret; + Py::List ret; + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.ends.first)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.ends.second)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.vertex)))); + return Py::new_reference_to(ret); } PyObject* DrawViewDimensionPy::getArrowPositions(PyObject* args) @@ -114,10 +114,10 @@ PyObject* DrawViewDimensionPy::getArrowPositions(PyObject* args) (void) args; DrawViewDimension* dvd = getDrawViewDimensionPtr(); pointPair pts = dvd->getArrowPositions(); - PyObject* ret = PyList_New(0); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.first))); - PyList_Append(ret,new Base::VectorPy(new Base::Vector3d(pts.second))); - return ret; + Py::List ret; + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.first)))); + ret.append(Py::asObject(new Base::VectorPy(new Base::Vector3d(pts.second)))); + return Py::new_reference_to(ret); } PyObject *DrawViewDimensionPy::getCustomAttributes(const char* /*attr*/) const { diff --git a/src/Mod/TechDraw/App/DrawViewImage.cpp b/src/Mod/TechDraw/App/DrawViewImage.cpp index 95f543e426..ec87ad1216 100644 --- a/src/Mod/TechDraw/App/DrawViewImage.cpp +++ b/src/Mod/TechDraw/App/DrawViewImage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewImage.h b/src/Mod/TechDraw/App/DrawViewImage.h index 524b883a4b..990c22e75c 100644 --- a/src/Mod/TechDraw/App/DrawViewImage.h +++ b/src/Mod/TechDraw/App/DrawViewImage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewMulti.h b/src/Mod/TechDraw/App/DrawViewMulti.h index 2a6fb8d34b..c4df38771b 100644 --- a/src/Mod/TechDraw/App/DrawViewMulti.h +++ b/src/Mod/TechDraw/App/DrawViewMulti.h @@ -2,6 +2,7 @@ * Copyright (c) 2007 Jürgen Riegel * * Copyright (c) 2013 Luke Parry * * Copyright (c) 2016 WandererFan * + * * * This file is part of the FreeCAD CAx development system. * * * * This library is free software; you can redistribute it and/or * diff --git a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp index abb38c5925..1a39f3beb6 100644 --- a/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPartPyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -77,32 +77,32 @@ PyObject* DrawViewPartPy::getVisibleEdges(PyObject *args) { (void) args; DrawViewPart* dvp = getDrawViewPartPtr(); - PyObject* pEdgeList = PyList_New(0); + Py::List pEdgeList; std::vector geoms = dvp->getEdgeGeometry(); for (auto& g: geoms) { if (g->hlrVisible) { PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); - PyList_Append(pEdgeList, pEdge); + pEdgeList.append(Py::asObject(pEdge)); } } - return pEdgeList; + return Py::new_reference_to(pEdgeList); } PyObject* DrawViewPartPy::getHiddenEdges(PyObject *args) { (void) args; DrawViewPart* dvp = getDrawViewPartPtr(); - PyObject* pEdgeList = PyList_New(0); + Py::List pEdgeList; std::vector geoms = dvp->getEdgeGeometry(); for (auto& g: geoms) { if (!g->hlrVisible) { PyObject* pEdge = new Part::TopoShapeEdgePy(new Part::TopoShape(g->occEdge)); - PyList_Append(pEdgeList, pEdge); + pEdgeList.append(Py::asObject(pEdge)); } } - return pEdgeList; + return Py::new_reference_to(pEdgeList); } PyObject* DrawViewPartPy::requestPaint(PyObject *args) @@ -163,7 +163,7 @@ PyObject* DrawViewPartPy::makeCosmeticVertex(PyObject *args) std::string dvpName = dvp->getNameInDocument(); Base::Vector3d pnt1 = static_cast(pPnt1)->value(); std::string id = dvp->addCosmeticVertex(pnt1); - //int link = + //int link = dvp->add1CVToGV(id); dvp->requestPaint(); return PyUnicode_FromString(id.c_str()); //return tag for new CV @@ -181,9 +181,9 @@ PyObject* DrawViewPartPy::makeCosmeticVertex3d(PyObject *args) Base::Vector3d centroid = dvp->getOriginalCentroid(); pnt1 = pnt1 - centroid; Base::Vector3d projected = DrawUtil::invertY(dvp->projectPoint(pnt1)); - + std::string id = dvp->addCosmeticVertex(projected); - //int link = + //int link = dvp->add1CVToGV(id); dvp->refreshCVGeoms(); dvp->requestPaint(); @@ -208,7 +208,7 @@ PyObject* DrawViewPartPy::getCosmeticVertex(PyObject *args) return result; } -//get by selection name +//get by selection name PyObject* DrawViewPartPy::getCosmeticVertexBySelection(PyObject *args) { PyObject* result = nullptr; @@ -217,7 +217,7 @@ PyObject* DrawViewPartPy::getCosmeticVertexBySelection(PyObject *args) throw Py::TypeError("expected (string)"); } DrawViewPart* dvp = getDrawViewPartPtr(); - + TechDraw::CosmeticVertex* cv = dvp->getCosmeticVertexBySelection(selName); if (cv != nullptr) { result = cv->getPyObject(); @@ -272,7 +272,7 @@ PyObject* DrawViewPartPy::removeCosmeticVertex(PyObject *args) } } else { throw Py::TypeError("expected (CosmeticVertex or [CosmeticVertex])"); - } + } return Py_None; } @@ -281,7 +281,7 @@ PyObject* DrawViewPartPy::replaceCosmeticVertex(PyObject *args) (void) args; Base::Console().Message("DVPP::replaceCosmeticVertex() - deprecated. do not use.\n"); return PyBool_FromLong(0l); - + } @@ -321,7 +321,7 @@ PyObject* DrawViewPartPy::makeCosmeticLine(PyObject *args) Base::Console().Message("%s\n",msg.c_str()); throw Py::RuntimeError(msg); } - //int link = + //int link = dvp->add1CEToGE(newTag); dvp->requestPaint(); return PyUnicode_FromString(newTag.c_str()); //return tag for new CE @@ -369,7 +369,7 @@ PyObject* DrawViewPartPy::makeCosmeticLine3D(PyObject *args) Base::Console().Message("%s\n",msg.c_str()); throw Py::RuntimeError(msg); } - //int link = + //int link = dvp->add1CEToGE(newTag); dvp->requestPaint(); return PyUnicode_FromString(newTag.c_str()); //return tag for new CE @@ -409,7 +409,7 @@ PyObject* DrawViewPartPy::makeCosmeticCircle(PyObject *args) Base::Console().Message("%s\n",msg.c_str()); throw Py::RuntimeError(msg); } - //int link = + //int link = dvp->add1CEToGE(newTag); dvp->requestPaint(); return PyUnicode_FromString(newTag.c_str()); //return tag for new CE @@ -453,7 +453,7 @@ PyObject* DrawViewPartPy::makeCosmeticCircleArc(PyObject *args) throw Py::RuntimeError(msg); } - //int link = + //int link = dvp->add1CEToGE(newTag); dvp->requestPaint(); return PyUnicode_FromString(newTag.c_str()); //return tag for new CE @@ -530,7 +530,7 @@ PyObject* DrawViewPartPy::removeCosmeticEdge(PyObject *args) } DrawViewPart* dvp = getDrawViewPartPtr(); dvp->removeCosmeticEdge(tag); - Py_INCREF(Py_None); + Py_INCREF(Py_None); return Py_None; } @@ -580,7 +580,7 @@ PyObject* DrawViewPartPy::makeCenterLine(PyObject *args) throw Py::RuntimeError(msg); } } - //int link = + //int link = dvp->add1CLToGE(tag); dvp->requestPaint(); @@ -653,7 +653,7 @@ PyObject* DrawViewPartPy::removeCenterLine(PyObject *args) } DrawViewPart* dvp = getDrawViewPartPtr(); dvp->removeCenterLine(tag); - Py_INCREF(Py_None); + Py_INCREF(Py_None); return Py_None; } diff --git a/src/Mod/TechDraw/App/DrawViewPyImp.cpp b/src/Mod/TechDraw/App/DrawViewPyImp.cpp index 406360e13f..905e427168 100644 --- a/src/Mod/TechDraw/App/DrawViewPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" @@ -16,11 +37,6 @@ std::string DrawViewPy::representation(void) const } - - - - - PyObject *DrawViewPy::getCustomAttributes(const char* /*attr*/) const { return 0; @@ -28,7 +44,5 @@ PyObject *DrawViewPy::getCustomAttributes(const char* /*attr*/) const int DrawViewPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { - return 0; + return 0; } - - diff --git a/src/Mod/TechDraw/App/DrawViewSection.h b/src/Mod/TechDraw/App/DrawViewSection.h index 0bbd9acbeb..d7b7a91ba3 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.h +++ b/src/Mod/TechDraw/App/DrawViewSection.h @@ -2,6 +2,7 @@ * Copyright (c) 2007 Jürgen Riegel * * Copyright (c) 2013 Luke Parry * * Copyright (c) 2016 WandererFan * + * * * This file is part of the FreeCAD CAx development system. * * * * This library is free software; you can redistribute it and/or * @@ -67,7 +68,7 @@ public: App::PropertyVector SectionNormal; App::PropertyVector SectionOrigin; App::PropertyEnumeration SectionDirection; - + App::PropertyEnumeration CutSurfaceDisplay; //new v019 App::PropertyFile FileHatchPattern; App::PropertyFile FileGeomPattern; //new v019 diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp index ef9de0ca56..eb1007a836 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp @@ -211,13 +211,6 @@ std::string DrawViewSpreadsheet::getSheetImage(void) } } - //check for logical range - if ( (sColStart > sColEnd) || - (iRowStart > iRowEnd) ) { - Base::Console().Error("%s - cell range is illogical\n",getNameInDocument()); - return result.str(); - } - std::vector availcolumns = getAvailColumns(); //validate range start column in sheet's available columns @@ -236,6 +229,13 @@ std::string DrawViewSpreadsheet::getSheetImage(void) return result.str(); } + //check for logical range + if ( (iAvailColStart > iAvailColEnd) || + (iRowStart > iRowEnd) ) { + Base::Console().Error("%s - cell range is illogical\n",getNameInDocument()); + return result.str(); + } + // build row and column ranges std::vector validColNames; std::vector validRowNumbers; diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.h b/src/Mod/TechDraw/App/DrawViewSpreadsheet.h index 6e6d8ae94c..7edc6607ca 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.h +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawViewSymbolPyImp.cpp b/src/Mod/TechDraw/App/DrawViewSymbolPyImp.cpp index 1e3723fce7..8b43e20665 100644 --- a/src/Mod/TechDraw/App/DrawViewSymbolPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawViewSymbolPyImp.cpp @@ -1,3 +1,24 @@ +/*************************************************************************** + * Copyright (c) 2016 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 * + * * + ***************************************************************************/ #include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/DrawWeldSymbol.cpp b/src/Mod/TechDraw/App/DrawWeldSymbol.cpp index 2484105111..26ed21e046 100644 --- a/src/Mod/TechDraw/App/DrawWeldSymbol.cpp +++ b/src/Mod/TechDraw/App/DrawWeldSymbol.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -69,7 +69,7 @@ DrawWeldSymbol::~DrawWeldSymbol() { } -//DWS always has exactly 2 child tiles - ArrowSide and OtherSide. +//DWS always has exactly 2 child tiles - ArrowSide and OtherSide. //OtherSide tile may be hidden; //once DWS has been added to the document, add 2x DrawTileWeld //but if this is a restore of an existing DWS, the tiles will loaded elsewhere @@ -120,7 +120,7 @@ short DrawWeldSymbol::mustExecute() const } App::DocumentObjectExecReturn *DrawWeldSymbol::execute(void) -{ +{ // Base::Console().Message("DWS::execute()\n"); if (!keepUpdated()) { return App::DocumentObject::StdReturn; diff --git a/src/Mod/TechDraw/App/DrawWeldSymbol.h b/src/Mod/TechDraw/App/DrawWeldSymbol.h index 7e8e60787d..122fe01872 100644 --- a/src/Mod/TechDraw/App/DrawWeldSymbol.h +++ b/src/Mod/TechDraw/App/DrawWeldSymbol.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wanderer Fan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/DrawWeldSymbolPyImp.cpp b/src/Mod/TechDraw/App/DrawWeldSymbolPyImp.cpp index 578ad3f703..15900e2fd4 100644 --- a/src/Mod/TechDraw/App/DrawWeldSymbolPyImp.cpp +++ b/src/Mod/TechDraw/App/DrawWeldSymbolPyImp.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/App/EdgeWalker.cpp b/src/Mod/TechDraw/App/EdgeWalker.cpp index cca58447d1..3ba07f8874 100644 --- a/src/Mod/TechDraw/App/EdgeWalker.cpp +++ b/src/Mod/TechDraw/App/EdgeWalker.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 Wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -372,7 +372,7 @@ std::vector EdgeWalker::sortStrip(std::vector fw, bool if (BRep_Tool::IsClosed(w)) { closedWires.push_back(w); } - } + } std::vector sortedWires = sortWiresBySize(closedWires,false); //biggest 1st if (!sortedWires.size()) { Base::Console().Log("INFO - EW::sortStrip - no sorted Wires!\n"); @@ -382,7 +382,7 @@ std::vector EdgeWalker::sortStrip(std::vector fw, bool if (!includeBiggest) { sortedWires.erase(sortedWires.begin()); } - + return sortedWires; } diff --git a/src/Mod/TechDraw/App/EdgeWalker.h b/src/Mod/TechDraw/App/EdgeWalker.h index 0ce31b9d55..3fa02b6f2e 100644 --- a/src/Mod/TechDraw/App/EdgeWalker.h +++ b/src/Mod/TechDraw/App/EdgeWalker.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 Wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -54,7 +54,7 @@ typedef boost::property > graph; - + typedef boost::graph_traits < graph >::vertex_descriptor vertex_t; diff --git a/src/Mod/TechDraw/App/HatchLine.cpp b/src/Mod/TechDraw/App/HatchLine.cpp index b21eb2cb72..00bfc7e4a5 100644 --- a/src/Mod/TechDraw/App/HatchLine.cpp +++ b/src/Mod/TechDraw/App/HatchLine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -85,12 +85,12 @@ Base::Vector3d LineSet::calcApparentStart(TechDraw::BaseGeom* g) Base::Vector3d result; Base::Vector3d start(g->getStartPoint().x,g->getStartPoint().y,0.0); double angle = getPATLineSpec().getAngle(); - if (angle == 0.0) { //horizontal + if (angle == 0.0) { //horizontal result = Base::Vector3d(getMinX(),start.y,0.0); } else if ((angle == 90.0) || (angle == -90.0)) { //vertical result = Base::Vector3d(start.x,getMinY(),0.0); - } else { + } else { double slope = getPATLineSpec().getSlope(); double y = getMinY(); double x = ((y - start.y) / slope) + start.x; @@ -162,7 +162,7 @@ Base::Vector3d LineSet::getPatternStartPoint(TechDraw::BaseGeom* g, double &offs double distX,distY; int overlayIndex = 0; //interval & offset are not patternscaled - + //figure out which line this is in the overlay if (angle == 0.0) { //odd case - horizontal line distY = (thisStart.y - atomStart.y); //this is patternscaled @@ -202,12 +202,12 @@ Base::Vector3d LineSet::getPatternStartPoint(TechDraw::BaseGeom* g, double &offs } else { // //ugly case - partial pattern result = gStart; - offset = patsStartOrg - (int)patsStartOrg; //fraction of a patternLength + offset = patsStartOrg - (int)patsStartOrg; //fraction of a patternLength offset = offset * patternLength; } - } else if (lenStartOrg > lenEndOrg) { //origin is after end + } else if (lenStartOrg > lenEndOrg) { //origin is after end double c = ceil(patsEndOrg); - if (c <= patsStartOrg) { //c is an integer pattern count in [patsStartOrg,patsEndOrg] + if (c <= patsStartOrg) { //c is an integer pattern count in [patsStartOrg,patsEndOrg] result = lineOrigin - c*patternLength*getUnitDir(); offset = 0.0; } else { @@ -320,7 +320,7 @@ std::vector PATLineSpec::getSpecsForPattern(std::string& parmFile, Base::Console().Message( "Could not find pattern: %s\n",parmName.c_str() ); return result; } - + //decode definition lines into PATLineSpec objects for (auto& l: lineSpecs) { PATLineSpec hl(l); @@ -431,7 +431,7 @@ bool PATLineSpec::isDashed(void) //! X component of distance between lines double PATLineSpec::getIntervalX(void) -{ +{ if (getAngle() == 0.0) { return 0.0; } else if ((getAngle() == 90.0) || (getAngle() == -90.0)) { @@ -444,14 +444,14 @@ double PATLineSpec::getIntervalX(void) //! Y component of distance between lines double PATLineSpec::getIntervalY(void) -{ +{ if (getAngle() == 0.0) { return getInterval(); } else if ((getAngle() == 90.0) || (getAngle() == -90.0)) { return 0.0; } else { double perpAngle = fabs(getAngle() - 90.0); - return fabs(getInterval() * tan(perpAngle * M_PI/180.0)); + return fabs(getInterval() * tan(perpAngle * M_PI/180.0)); } } @@ -484,7 +484,7 @@ void DashSpec::dump(const char* title) } Base::Console().Message("DUMP - DashSpec - %s\n",ss.str().c_str()); } - + diff --git a/src/Mod/TechDraw/App/HatchLine.h b/src/Mod/TechDraw/App/HatchLine.h index 724348e9a0..c8e706d7cf 100644 --- a/src/Mod/TechDraw/App/HatchLine.h +++ b/src/Mod/TechDraw/App/HatchLine.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -19,7 +19,7 @@ * Suite 330, Boston, MA 02111-1307, USA * * * ***************************************************************************/ - + //! HatchLine - Classes related to processing PAT files #ifndef _TechDraw_HATCHLINE_H_ @@ -48,11 +48,11 @@ class DrawUtil; //DashSpec is the parsed portion of a PATLineSpec related to mark/space/dot class TechDrawExport DashSpec { -public: +public: DashSpec() {} DashSpec(std::vector p) { m_parms = p; } ~DashSpec() {} - + double get(int i) {return m_parms.at(i); } std::vector get(void) {return m_parms;} bool empty(void) {return m_parms.empty();} @@ -60,7 +60,7 @@ public: double length(void); void dump(const char* title); DashSpec reversed(void); - + private: std::vector m_parms; }; @@ -72,7 +72,7 @@ public: PATLineSpec(); PATLineSpec(std::string& lineSpec); ~PATLineSpec(); - + void load(std::string& lineSpec); double getAngle(void) {return m_angle;} @@ -89,12 +89,12 @@ public: static bool findPatternStart(std::ifstream& inFile, std::string& parmName); static std::vector loadPatternDef(std::ifstream& inFile); static std::vector getPatternList(std::string& parmFile); - + bool isDashed(void); void dump(const char* title); -private: +private: void init(void); std::vector split(std::string line); //PAT line extracted tokens @@ -111,7 +111,7 @@ class TechDrawExport LineSet public: LineSet() {} ~LineSet() {} - + void setPATLineSpec(const PATLineSpec& s) { m_hatchLine = s; } void setEdges(std::vector e) {m_edges = e;} void setGeoms(std::vector g) {m_geoms = g;} @@ -124,7 +124,7 @@ public: PATLineSpec getPATLineSpec(void) { return m_hatchLine; } double getOffset(void) { return m_hatchLine.getOffset(); } //delta X offset double getAngle(void) { return m_hatchLine.getAngle(); } - Base::Vector3d getOrigin(void) { return m_hatchLine.getOrigin(); } + Base::Vector3d getOrigin(void) { return m_hatchLine.getOrigin(); } double getInterval(void) {return m_hatchLine.getInterval(); } //space between lines double getIntervalX(void) { return m_hatchLine.getIntervalX(); } //interval X-component double getIntervalY(void) { return m_hatchLine.getIntervalY(); } //interval Y-component @@ -132,7 +132,7 @@ public: double getPatternLength(void) { return m_hatchLine.getLength(); } Base::Vector3d getUnitDir(void); Base::Vector3d getUnitOrtho(void); - DashSpec getDashSpec(void) { return m_hatchLine.getDashParms();} + DashSpec getDashSpec(void) { return m_hatchLine.getDashParms();} Base::Vector3d calcApparentStart(TechDraw::BaseGeom* g); Base::Vector3d findAtomStart(void); Base::Vector3d getLineOrigin(void); //point corresponding to pattern origin for this line (O + n*intervalX) @@ -145,7 +145,7 @@ public: double getMaxY(void); bool isDashed(void); - + private: std::vector m_edges; std::vector m_geoms; diff --git a/src/Mod/TechDraw/App/LineGroup.cpp b/src/Mod/TechDraw/App/LineGroup.cpp index 039ec6d733..05f3da24d8 100644 --- a/src/Mod/TechDraw/App/LineGroup.cpp +++ b/src/Mod/TechDraw/App/LineGroup.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -125,62 +125,49 @@ std::vector LineGroup::split(std::string line) return result; } -//static support function: find group defn in file -std::string LineGroup::getRecordFromFile(std::string parmFile, std::string groupName) +//static support function: find group definition in file +std::string LineGroup::getRecordFromFile(std::string parmFile, int groupNumber) { std::string record; - std::string lineSpec; std::ifstream inFile; inFile.open (parmFile, std::ifstream::in); if(!inFile.is_open()) { Base::Console().Message( "Cannot open LineGroup file: %s\n",parmFile.c_str()); return record; } - - bool groupFound = false; + // parse file to get the groupNumber'th line + int counter = 0; // the combobox enums begin with 0 while ( inFile.good() ){ std::string line; - std::getline(inFile,line); - std::string nameTag = line.substr(0,1); - std::string foundName; - unsigned long int commaPos; - if ((nameTag == ";") || - (nameTag == " ") || - (line.empty()) ) { //is cr/lf empty? - continue; - } else if (nameTag == "*") { - commaPos = line.find(',',1); - if (commaPos != std::string::npos) { - foundName = line.substr(1,commaPos-1); - } else { - foundName = line.substr(1); - } - if (foundName == groupName) { - //this is our group + std::getline(inFile, line); + std::string nameTag = line.substr(0, 1); + if (nameTag == "*") { // we found a definition line + if (counter == groupNumber) { record = line; - groupFound = true; - break; + return record; } + ++counter; } } //endwhile - if (!groupFound) { - Base::Console().Message("LineGroup - group: %s is not found\n", groupName.c_str()); - } - return record; + // nothing was found + Base::Console().Error("LineGroup: the LineGroup file has only %s entries but entry number %s is set\n" + , std::to_string(counter).c_str() + , std::to_string(groupNumber).c_str()); + return std::string(); // return an empty string } //static LineGroup maker -LineGroup* LineGroup::lineGroupFactory(std::string groupName) +LineGroup* LineGroup::lineGroupFactory(int groupNumber) { - LineGroup* lg = new LineGroup(groupName); + LineGroup* lg = new LineGroup(); std::string lgFileName = Preferences::lineGroupFile(); - std::string lgRecord = LineGroup::getRecordFromFile(lgFileName, groupName); + std::string lgRecord = LineGroup::getRecordFromFile(lgFileName, groupNumber); std::vector values = LineGroup::split(lgRecord); if (values.size() < 4) { - Base::Console().Message( "LineGroup::invalid entry in %s\n",groupName.c_str() ); + Base::Console().Error( "LineGroup::invalid entry in %s\n", lgFileName.c_str() ); } else { lg->setWeight("Thin",values[0]); lg->setWeight("Graphic",values[1]); @@ -191,16 +178,47 @@ LineGroup* LineGroup::lineGroupFactory(std::string groupName) } //valid weight names: Thick, Thin, Graphic, Extra -double LineGroup::getDefaultWidth(std::string weightName, std::string groupName) +double LineGroup::getDefaultWidth(std::string weightName, int groupNumber) { //default line weights - std::string lgName = groupName; - if (groupName.empty()) { - lgName = Preferences::lineGroup(); + int lgNumber = groupNumber; + if (lgNumber == -1) { + lgNumber = Preferences::lineGroup(); } - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight(weightName); delete lg; return weight; } + +//static support function: find group definition in file +std::string LineGroup::getGroupNamesFromFile(std::string FileName) +{ + std::string record; + std::ifstream inFile; + inFile.open(FileName, std::ifstream::in); + if (!inFile.is_open()) { + Base::Console().Message("Cannot open LineGroup file: %s\n", FileName.c_str()); + return record; + } + // parse the file + while (inFile.good()) { + std::string line; + std::getline(inFile, line); + std::string nameTag = line.substr(0, 1); + std::string found; + unsigned long int commaPos; + if (nameTag == "*") { + commaPos = line.find(',', 1); + if (commaPos != std::string::npos) { + found = line.substr(1, commaPos - 1); + record = record + found + ','; + } + } + } //endwhile + if (record.empty()) { + Base::Console().Message("LineGroup error: no group found in file %s\n", FileName.c_str()); + } + return record; +} diff --git a/src/Mod/TechDraw/App/LineGroup.h b/src/Mod/TechDraw/App/LineGroup.h index 23ad96d878..250a9d12cd 100644 --- a/src/Mod/TechDraw/App/LineGroup.h +++ b/src/Mod/TechDraw/App/LineGroup.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -19,7 +19,7 @@ * Suite 330, Boston, MA 02111-1307, USA * * * ***************************************************************************/ - + //! LineGroup - Classes related to processing LineGroup definition CSV files #ifndef _TechDraw_LINEGROUP_H_ @@ -32,7 +32,7 @@ namespace TechDraw class TechDrawExport LineGroup { -public: +public: LineGroup(); LineGroup(std::string groupName); ~LineGroup(); @@ -47,13 +47,14 @@ public: static std::vector split(std::string line); //static support function: find group defn in file - static std::string getRecordFromFile(std::string parmFile, std::string groupName); + static std::string getRecordFromFile(std::string parmFile, int groupNumber); //static LineGroup maker - static LineGroup* lineGroupFactory(std::string groupName); + static LineGroup* lineGroupFactory(int groupNumber); - static double getDefaultWidth(std::string weightName, - std::string groupName = std::string()); + static double getDefaultWidth(std::string weightName, int groupNumber = -1); + + static std::string getGroupNamesFromFile(std::string FileName); protected: diff --git a/src/Mod/TechDraw/App/PreCompiled.cpp b/src/Mod/TechDraw/App/PreCompiled.cpp index 09241c2335..bef7d3ea9f 100644 --- a/src/Mod/TechDraw/App/PreCompiled.cpp +++ b/src/Mod/TechDraw/App/PreCompiled.cpp @@ -20,4 +20,4 @@ * * ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 433e76ffe8..8080e39ade 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -167,13 +167,13 @@ int Preferences::projectionAngle() return projType; } -std::string Preferences::lineGroup() +int Preferences::lineGroup() { Base::Reference hGrp = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")-> GetGroup("Mod/TechDraw/Decorations"); - std::string lgName = hGrp->GetASCII("LineGroup","FC 0.70mm"); - return lgName; + int lgInt = hGrp->GetInt("LineGroup", 3); // FC 0.70mm + return lgInt; } int Preferences::balloonArrow() diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index ee2ec0e0ea..a61ed000a0 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -59,7 +59,7 @@ static bool useGlobalDecimals(); static bool keepPagesUpToDate(); static int projectionAngle(); -static std::string lineGroup(); +static int lineGroup(); static int balloonArrow(); diff --git a/src/Mod/TechDraw/App/ShapeExtractor.cpp b/src/Mod/TechDraw/App/ShapeExtractor.cpp index 31792a17bb..f9dd2673d3 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.cpp +++ b/src/Mod/TechDraw/App/ShapeExtractor.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -145,7 +145,7 @@ TopoDS_Shape ShapeExtractor::getShapes(const std::vector l TopoDS_Shape shape = BuilderCopy.Shape(); builder.Add(comp, shape); } - //it appears that an empty compound is !IsNull(), so we need to check a different way + //it appears that an empty compound is !IsNull(), so we need to check a different way //if we added anything to the compound. if (!found) { Base::Console().Error("SE::getSourceShapes - source shape is empty!\n"); @@ -181,7 +181,7 @@ std::vector ShapeExtractor::getXShapes(const App::Link* xLink) if (cLinkElem->hasPlacement()) { childPlm = cLinkElem->getLinkPlacementProperty()->getValue(); } - } + } auto shape = Part::Feature::getShape(l); if(!shape.IsNull()) { Base::Placement netPlm = linkPlm; @@ -234,7 +234,7 @@ std::vector ShapeExtractor::getShapesFromObject(const App::Documen { // Base::Console().Message("SE::getShapesFromObject(%s)\n", docObj->getNameInDocument()); std::vector result; - + const App::GroupExtension* gex = dynamic_cast(docObj); App::Property* gProp = docObj->getPropertyByName("Group"); App::Property* sProp = docObj->getPropertyByName("Shape"); @@ -335,8 +335,8 @@ std::vector ShapeExtractor::extractDrawableShapes(const TopoDS_Sha extShapes.push_back(s); } } - //vs using 2d geom as construction geom? - //get edges not part of a solid + //vs using 2d geom as construction geom? + //get edges not part of a solid //???? should this look for Faces(Wires?) before Edges? TopExp_Explorer expEdge(shapeIn, TopAbs_EDGE, TopAbs_SOLID); for (int i = 1; expEdge.More(); expEdge.Next(), i++) { @@ -349,7 +349,7 @@ std::vector ShapeExtractor::extractDrawableShapes(const TopoDS_Sha //not a Compound or a CompSolid just push_back shape_In) extShapes.push_back(shapeIn); } - + result = extShapes; if (!extEdges.empty()) { result.insert(std::end(result), std::begin(extEdges), std::end(extEdges)); @@ -375,11 +375,11 @@ bool ShapeExtractor::isEdgeType(App::DocumentObject* obj) // if (t.isDerivedFrom(Part::Line::getClassTypeId()) ) { // result = true; // } else if (t.isDerivedFrom(Part::Circle::getClassTypeId())) { -// result = true; +// result = true; // } else if (t.isDerivedFrom(Part::Ellipse::getClassTypeId())) { -// result = true; +// result = true; // } else if (t.isDerivedFrom(Part::RegularPolygon::getClassTypeId())) { -// result = true; +// result = true; // } return result; } @@ -389,7 +389,7 @@ bool ShapeExtractor::isPointType(App::DocumentObject* obj) bool result = false; Base::Type t = obj->getTypeId(); if (t.isDerivedFrom(Part::Vertex::getClassTypeId())) { - result = true; + result = true; } else if (isDraftPoint(obj)) { result = true; } @@ -443,7 +443,7 @@ bool ShapeExtractor::prefAdd2d(void) { Base::Reference hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/General"); - bool result = hGrp->GetBool("ShowLoose2d", false); + bool result = hGrp->GetBool("ShowLoose2d", false); return result; } - + diff --git a/src/Mod/TechDraw/App/ShapeExtractor.h b/src/Mod/TechDraw/App/ShapeExtractor.h index 373e1dea52..02d7007159 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.h +++ b/src/Mod/TechDraw/App/ShapeExtractor.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 WandererFan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -45,7 +45,7 @@ namespace TechDraw class TechDrawExport ShapeExtractor { public: - static TopoDS_Shape getShapes(const std::vector links); + static TopoDS_Shape getShapes(const std::vector links); static std::vector getShapes2d(const std::vector links); static std::vector getXShapes(const App::Link* xLink); static std::vector getShapesFromObject(const App::DocumentObject* docObj); diff --git a/src/Mod/TechDraw/Gui/AppTechDrawGuiPy.cpp b/src/Mod/TechDraw/Gui/AppTechDrawGuiPy.cpp index c15f0ec13c..14dc2882c3 100644 --- a/src/Mod/TechDraw/Gui/AppTechDrawGuiPy.cpp +++ b/src/Mod/TechDraw/Gui/AppTechDrawGuiPy.cpp @@ -193,7 +193,11 @@ private: } else { vpp->showMDIViewPage(); mdi = vpp->getMDIViewPage(); - mdi->printPdf(filePath); + if (mdi) { + mdi->printPdf(filePath); + } else { + throw Py::TypeError("Page not available! Is it Hidden?"); + } } } } @@ -234,7 +238,11 @@ private: } else { vpp->showMDIViewPage(); mdi = vpp->getMDIViewPage(); - mdi->saveSVG(filePath); + if (mdi) { + mdi->saveSVG(filePath); + } else { + throw Py::TypeError("Page not available! Is it Hidden?"); + } } } } diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 2cdc101fd4..687fd905ee 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -1,15 +1,25 @@ /*************************************************************************** - * * - * This program 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. * - * for detail see the LICENCE text file. * - * Jürgen Riegel 2002 * + * Copyright (c) 2002 Jürgen Riegel * * Copyright (c) 2014 Luke Parry * * * + * 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 @@ -119,7 +129,7 @@ void CmdTechDrawPageDefault::activated(int iMsg) QFileInfo tfi(templateFileName); if (tfi.isReadable()) { Gui::WaitCursor wc; - openCommand("Drawing create page"); + openCommand(QT_TRANSLATE_NOOP("Command", "Drawing create page")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawPage','%s')",PageName.c_str()); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawSVGTemplate','%s')",TemplateName.c_str()); @@ -189,7 +199,7 @@ void CmdTechDrawPageTemplate::activated(int iMsg) QFileInfo tfi(templateFileName); if (tfi.isReadable()) { Gui::WaitCursor wc; - openCommand("Drawing create page"); + openCommand(QT_TRANSLATE_NOOP("Command", "Drawing create page")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawPage','%s')",PageName.c_str()); // Create the Template Object to attach to the page @@ -343,7 +353,7 @@ void CmdTechDrawView::activated(int iMsg) Base::Vector3d projDir; Gui::WaitCursor wc; - openCommand("Create view"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create view")); std::string FeatName = getUniqueObjectName("View"); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewPart','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); @@ -596,7 +606,7 @@ void CmdTechDrawProjectionGroup::activated(int iMsg) Base::Vector3d projDir; Gui::WaitCursor wc; - openCommand("Create Projection Group"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Projection Group")); std::string multiViewName = getUniqueObjectName("ProjGroup"); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawProjGroup','%s')", @@ -687,7 +697,7 @@ bool CmdTechDrawProjectionGroup::isActive(void) // Gui::WaitCursor wc; -// openCommand("Create view"); +// openCommand(QT_TRANSLATE_NOOP("Command", "Create view")); // std::string FeatName = getUniqueObjectName("MultiView"); // doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewMulti','%s')",FeatName.c_str()); // App::DocumentObject *docObj = getDocument()->getObject(FeatName.c_str()); @@ -818,7 +828,7 @@ void CmdTechDrawClipGroup::activated(int iMsg) std::string PageName = page->getNameInDocument(); std::string FeatName = getUniqueObjectName("Clip"); - openCommand("Create Clip"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Clip")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewClip','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); updateActive(); @@ -891,7 +901,7 @@ void CmdTechDrawClipGroupAdd::activated(int iMsg) std::string ClipName = clip->getNameInDocument(); std::string ViewName = view->getNameInDocument(); - openCommand("ClipGroupAdd"); + openCommand(QT_TRANSLATE_NOOP("Command", "ClipGroupAdd")); doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = False",ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = True",ViewName.c_str()); @@ -964,7 +974,7 @@ void CmdTechDrawClipGroupRemove::activated(int iMsg) std::string ClipName = clip->getNameInDocument(); std::string ViewName = view->getNameInDocument(); - openCommand("ClipGroupRemove"); + openCommand(QT_TRANSLATE_NOOP("Command", "ClipGroupRemove")); doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = False",ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.removeView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = True",ViewName.c_str()); @@ -1025,7 +1035,7 @@ void CmdTechDrawSymbol::activated(int iMsg) { std::string FeatName = getUniqueObjectName("Symbol"); filename = Base::Tools::escapeEncodeFilename(filename); - openCommand("Create Symbol"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Symbol")); #if PY_MAJOR_VERSION < 3 doCommand(Doc,"f = open(unicode(\"%s\",'utf-8'),'r')",(const char*)filename.toUtf8()); #else @@ -1089,7 +1099,7 @@ void CmdTechDrawDraftView::activated(int iMsg) draftItemsFound++; std::string FeatName = getUniqueObjectName("DraftView"); std::string SourceName = (*it)->getNameInDocument(); - openCommand("Create DraftView"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create DraftView")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDraft','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s", FeatName.c_str(),SourceName.c_str()); @@ -1164,7 +1174,7 @@ void CmdTechDrawArchView::activated(int iMsg) std::string FeatName = getUniqueObjectName("ArchView"); std::string SourceName = archObject->getNameInDocument(); - openCommand("Create ArchView"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create ArchView")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewArch','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s",FeatName.c_str(),SourceName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); @@ -1212,7 +1222,7 @@ void CmdTechDrawSpreadsheetView::activated(int iMsg) } std::string PageName = page->getNameInDocument(); - openCommand("Create spreadsheet view"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create spreadsheet view")); std::string FeatName = getUniqueObjectName("Sheet"); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewSpreadsheet','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Source = App.activeDocument().%s",FeatName.c_str(),SpreadName.c_str()); @@ -1333,7 +1343,7 @@ void CmdTechDrawExportPageDXF::activated(int iMsg) } std::string PageName = page->getNameInDocument(); - openCommand("Save page to dxf"); + openCommand(QT_TRANSLATE_NOOP("Command", "Save page to dxf")); doCommand(Doc,"import TechDraw"); fileName = Base::Tools::escapeEncodeFilename(fileName); doCommand(Doc,"TechDraw.writeDXFPage(App.activeDocument().%s,u\"%s\")",PageName.c_str(),(const char*)fileName.toUtf8()); diff --git a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp index b48ba22330..f72ac6aed2 100644 --- a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp +++ b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp @@ -548,7 +548,7 @@ void CmdTechDrawAnnotation::activated(int iMsg) std::string PageName = page->getNameInDocument(); std::string FeatName = getUniqueObjectName("Annotation"); - openCommand("Create Annotation"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Annotation")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewAnnotation','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); updateActive(); diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 2d1dcdd561..cdadc5ecb8 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -210,7 +210,7 @@ void CmdTechDrawDimension::activated(int iMsg) // return; // } -// openCommand("Create Dimension"); +// openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); // doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); // doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() // ,dimType.c_str()); @@ -330,7 +330,7 @@ void CmdTechDrawRadiusDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"Radius"); @@ -452,7 +452,7 @@ void CmdTechDrawDiameterDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"Diameter"); @@ -549,7 +549,7 @@ void CmdTechDrawLengthDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')", FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'", FeatName.c_str() , "Distance"); @@ -650,7 +650,7 @@ void CmdTechDrawHorizontalDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"DistanceX"); @@ -752,7 +752,7 @@ void CmdTechDrawVerticalDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"DistanceY"); @@ -843,7 +843,7 @@ void CmdTechDrawAngleDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"Angle"); @@ -932,7 +932,7 @@ void CmdTechDraw3PtAngleDimension::activated(int iMsg) return; } - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"Angle3Pt"); @@ -1359,7 +1359,7 @@ void CmdTechDrawLandmarkDimension::activated(int iMsg) TechDraw::LandmarkDimension *dim = 0; std::string FeatName = getUniqueObjectName("LandmarkDim"); - openCommand("Create Dimension"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Dimension")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::LandmarkDimension','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); if (objects.size() == 2) { diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index a3bfc304a2..7fe0600142 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -248,7 +248,7 @@ void CmdTechDrawHatch::activated(int iMsg) } } - openCommand("Create Hatch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Hatch")); if (removeOld) { std::vector > toRemove; for (auto& h: hatchObjs) { //all the hatch objects for selected DVP @@ -351,7 +351,7 @@ void CmdTechDrawGeometricHatch::activated(int iMsg) std::stringstream featLabel; featLabel << FeatName << "FX" << TechDraw::DrawUtil::getIndexFromName(subNames.at(0)); - openCommand("Create GeomHatch"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create GeomHatch")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawGeomHatch','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.Label = '%s'",FeatName.c_str(),featLabel.str().c_str()); @@ -419,7 +419,7 @@ void CmdTechDrawImage::activated(int iMsg) { std::string FeatName = getUniqueObjectName("Image"); fileName = Base::Tools::escapeEncodeFilename(fileName); - openCommand("Create Image"); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Image")); doCommand(Doc,"App.activeDocument().addObject('TechDraw::DrawViewImage','%s')",FeatName.c_str()); doCommand(Doc,"App.activeDocument().%s.ImageFile = '%s'",FeatName.c_str(),fileName.toUtf8().constData()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui index aeb402e876..0e80c03b65 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui @@ -6,7 +6,7 @@ 0 0 - 460 + 415 447 @@ -578,7 +578,7 @@ - + 0 @@ -591,21 +591,15 @@ 0 - - Default name in LineGroup CSV file - - - FC 0.70mm - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - LineGroup /Mod/TechDraw/Decorations + + + @@ -698,8 +692,11 @@ true + + Line group used to set line widths + - Line Group Name + Line Width Group @@ -883,11 +880,6 @@ QComboBox
      Gui/PrefWidgets.h
      - - Gui::PrefLineEdit - QLineEdit -
      Gui/PrefWidgets.h
      -
      Gui::PrefUnitSpinBox Gui::QuantitySpinBox diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp index a0e14677b7..1924d9b44f 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp @@ -34,6 +34,7 @@ #include "PreferencesGui.h" #include "DlgPrefsTechDrawAnnotationImp.h" #include "ui_DlgPrefsTechDrawAnnotation.h" +#include using namespace TechDrawGui; @@ -47,6 +48,10 @@ DlgPrefsTechDrawAnnotationImp::DlgPrefsTechDrawAnnotationImp( QWidget* parent ) ui->setupUi(this); ui->pdsbBalloonKink->setUnit(Base::Unit::Length); ui->pdsbBalloonKink->setMinimum(0); + + // connect the LineGroup the update the tooltip if index changed + connect(ui->pcbLineGroup, SIGNAL(currentIndexChanged(int)), + this, SLOT(onLineGroupChanged(int))); } DlgPrefsTechDrawAnnotationImp::~DlgPrefsTechDrawAnnotationImp() @@ -61,7 +66,7 @@ void DlgPrefsTechDrawAnnotationImp::saveSettings() ui->cbPyramidOrtho->onSave(); ui->cbSectionLineStd->onSave(); ui->cbShowCenterMarks->onSave(); - ui->leLineGroup->onSave(); + ui->pcbLineGroup->onSave(); ui->pcbBalloonArrow->onSave(); ui->pcbBalloonShape->onSave(); ui->pcbCenterStyle->onSave(); @@ -79,13 +84,27 @@ void DlgPrefsTechDrawAnnotationImp::loadSettings() //QAbstractSpinBox double kinkDefault = 5.0; ui->pdsbBalloonKink->setValue(kinkDefault); - + // re-read the available LineGroup files + ui->pcbLineGroup->clear(); + std::string lgFileName = Preferences::lineGroupFile(); + std::string lgRecord = LineGroup::getGroupNamesFromFile(lgFileName); + // split collected groups + std::stringstream ss(lgRecord); + std::vector lgNames; + while (std::getline(ss, lgRecord, ',')) { + lgNames.push_back(lgRecord); + } + // fill the combobox with the found names + for (auto it = lgNames.begin(); it < lgNames.end(); ++it) { + ui->pcbLineGroup->addItem(tr((*it).c_str())); + } + ui->cbAutoHoriz->onRestore(); ui->cbPrintCenterMarks->onRestore(); ui->cbPyramidOrtho->onRestore(); ui->cbSectionLineStd->onRestore(); ui->cbShowCenterMarks->onRestore(); - ui->leLineGroup->onRestore(); + ui->pcbLineGroup->onRestore(); ui->pcbBalloonArrow->onRestore(); ui->pcbBalloonShape->onRestore(); ui->pcbCenterStyle->onRestore(); @@ -119,4 +138,29 @@ int DlgPrefsTechDrawAnnotationImp::prefBalloonArrow(void) const return Preferences::balloonArrow(); } +/** + * Updates the tooltip of the LineGroup combobox + */ +void DlgPrefsTechDrawAnnotationImp::onLineGroupChanged(int index) +{ + if (index == -1) { // there is no valid index yet + ui->pcbLineGroup->setToolTip(QString::fromStdString("Please select a Line Group")); + return; + } + // get the definition the the selected LineGroup (includes the name) + std::string lgRecord = LineGroup::getRecordFromFile(Preferences::lineGroupFile(), index); + std::stringstream ss(lgRecord); + std::vector lgNames; + while (std::getline(ss, lgRecord, ',')) { + lgNames.push_back(lgRecord); + } + // format the tooltip + std::stringstream TooltipText; + TooltipText << lgNames.at(0).substr(1) << " defines these line widths:\n" + << "thin: " << lgNames.at(1) << "\n" + << "graphic: " << lgNames.at(2) << "\n" + << "thick: " << lgNames.at(3); + ui->pcbLineGroup->setToolTip(QString::fromStdString(TooltipText.str())); +} + #include diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h index b0c2c71eba..4704df7d18 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.h @@ -39,6 +39,9 @@ public: DlgPrefsTechDrawAnnotationImp( QWidget* parent = 0 ); ~DlgPrefsTechDrawAnnotationImp(); +public Q_SLOTS: + void onLineGroupChanged(int); + protected: void saveSettings(); void loadSettings(); diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui index 67ec8c0c8b..e6ba0f06d2 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawDimensions.ui @@ -112,6 +112,11 @@ 0 + + + true + + Use system setting for number of decimals diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index a7b7afc2a8..097adf5b7e 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -933,7 +933,7 @@ void MDIViewPage::saveDXF(std::string fileName) TechDraw::DrawPage* page = m_vpPage->getDrawPage(); std::string PageName = page->getNameInDocument(); fileName = Base::Tools::escapeEncodeFilename(fileName); - Gui::Command::openCommand("Save page to dxf"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Save page to dxf")); Gui::Command::doCommand(Gui::Command::Doc,"import TechDraw"); Gui::Command::doCommand(Gui::Command::Doc,"TechDraw.writeDXFPage(App.activeDocument().%s,u\"%s\")", PageName.c_str(),(const char*)fileName.c_str()); diff --git a/src/Mod/TechDraw/Gui/PreCompiled.cpp b/src/Mod/TechDraw/Gui/PreCompiled.cpp index 959870f85b..95d724aa47 100644 --- a/src/Mod/TechDraw/Gui/PreCompiled.cpp +++ b/src/Mod/TechDraw/Gui/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/TechDraw/Gui/QGCustomImage.cpp b/src/Mod/TechDraw/Gui/QGCustomImage.cpp index 81435098bf..fb3b451259 100644 --- a/src/Mod/TechDraw/Gui/QGCustomImage.cpp +++ b/src/Mod/TechDraw/Gui/QGCustomImage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -36,7 +36,7 @@ using namespace TechDrawGui; -QGCustomImage::QGCustomImage() +QGCustomImage::QGCustomImage() { setCacheMode(QGraphicsItem::NoCache); setAcceptHoverEvents(false); diff --git a/src/Mod/TechDraw/Gui/QGCustomImage.h b/src/Mod/TechDraw/Gui/QGCustomImage.h index b17d5119fe..0a1f3dee4a 100644 --- a/src/Mod/TechDraw/Gui/QGCustomImage.h +++ b/src/Mod/TechDraw/Gui/QGCustomImage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGCustomText.cpp b/src/Mod/TechDraw/Gui/QGCustomText.cpp index e471145dcd..8827134251 100644 --- a/src/Mod/TechDraw/Gui/QGCustomText.cpp +++ b/src/Mod/TechDraw/Gui/QGCustomText.cpp @@ -60,6 +60,7 @@ QGCustomText::QGCustomText(QGraphicsItem* parent) : m_colCurrent = getNormalColor(); m_colNormal = m_colCurrent; + tightBounding = false; } void QGCustomText::centerAt(QPointF centerPos) @@ -173,7 +174,12 @@ void QGCustomText::setColor(QColor c) m_colNormal = c; m_colCurrent = c; QGraphicsTextItem::setDefaultTextColor(c); - } +} + +void QGCustomText::setTightBounding(bool tight) +{ + tightBounding = tight; +} void QGCustomText::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) { QStyleOptionGraphicsItem myOption(*option); @@ -185,6 +191,41 @@ void QGCustomText::paint ( QPainter * painter, const QStyleOptionGraphicsItem * QGraphicsTextItem::paint (painter, &myOption, widget); } +QRectF QGCustomText::boundingRect() const +{ + if (toPlainText().isEmpty()) { + return QRectF(); + } else if (tightBounding) { + return tightBoundingRect(); + } else { + return QGraphicsTextItem::boundingRect(); + } +} + +QRectF QGCustomText::tightBoundingRect() const +{ + QFontMetrics qfm(font()); + QRectF result = QGraphicsTextItem::boundingRect(); + QRectF tight = qfm.tightBoundingRect(toPlainText()); + qreal x_adj = (result.width() - tight.width())/4.0; + qreal y_adj = (result.height() - tight.height())/4.0; + + // Adjust the bounding box 50% towards the Qt tightBoundingRect(), + // except chomp some extra empty space above the font (1.75*y_adj) + result.adjust(x_adj, 1.75*y_adj, -x_adj, -y_adj); + + return result; +} + +// Calculate the amount of difference between tight and relaxed bounding boxes +QPointF QGCustomText::tightBoundingAdjust() const +{ + QRectF original = QGraphicsTextItem::boundingRect(); + QRectF tight = tightBoundingRect(); + + return QPointF(tight.x()-original.x(), tight.y()-original.y()); +} + QColor QGCustomText::getNormalColor() //preference! { return PreferencesGui::normalQColor(); @@ -222,4 +263,3 @@ void QGCustomText::makeMark(Base::Vector3d v) makeMark(v.x,v.y); } - diff --git a/src/Mod/TechDraw/Gui/QGCustomText.h b/src/Mod/TechDraw/Gui/QGCustomText.h index 116541b4f4..3b1953e8b1 100644 --- a/src/Mod/TechDraw/Gui/QGCustomText.h +++ b/src/Mod/TechDraw/Gui/QGCustomText.h @@ -45,8 +45,11 @@ public: ~QGCustomText() {} enum {Type = QGraphicsItem::UserType + 130}; - int type() const { return Type;} - virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ); + int type() const override { return Type;} + virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ) override; + virtual QRectF boundingRect() const override; + QRectF tightBoundingRect() const; + QPointF tightBoundingAdjust() const; void setHighlighted(bool state); virtual void setPrettyNormal(); @@ -68,17 +71,20 @@ public: virtual QColor getSelectColor(void); virtual void setColor(QColor c); + virtual void setTightBounding(bool tight); + void makeMark(double x, double y); void makeMark(Base::Vector3d v); protected: - virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - QVariant itemChange(GraphicsItemChange change, const QVariant &value); + virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override; + virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override; + QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; Base::Reference getParmGroup(void); bool isHighlighted; + bool tightBounding; // Option to use tighter boundingRect(), works only for plaintext QGCustomText QColor m_colCurrent; QColor m_colNormal; diff --git a/src/Mod/TechDraw/Gui/QGEPath.cpp b/src/Mod/TechDraw/Gui/QGEPath.cpp index 39db74aaad..703915f258 100644 --- a/src/Mod/TechDraw/Gui/QGEPath.cpp +++ b/src/Mod/TechDraw/Gui/QGEPath.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGEPath.h b/src/Mod/TechDraw/Gui/QGEPath.h index bc5907cb4e..38fba56356 100644 --- a/src/Mod/TechDraw/Gui/QGEPath.h +++ b/src/Mod/TechDraw/Gui/QGEPath.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * + * Copyright (c) 2019 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -88,7 +88,7 @@ public: virtual QRectF boundingRect() const override; virtual QPainterPath shape() const override; virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ) override; - + void inEdit(bool b) { m_inEdit = b; } bool inEdit(void) { return m_inEdit; } void startPathEdit(std::vector pathPoints); @@ -99,7 +99,7 @@ public: std::vector getDeltasFromLeader(void); void setScale(double s) { m_scale = s; } - double getScale(void) { return m_scale; } + double getScale(void) { return m_scale; } void setPoints(std::vector pts) { m_ghostPoints = pts; } @@ -137,7 +137,7 @@ protected: QGILeaderLine* m_parentLeader; QGIPrimPath* m_ghost; - + double m_startAdj; double m_endAdj; }; diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.h b/src/Mod/TechDraw/Gui/QGISVGTemplate.h index aa5b5dc1a6..e1ad90f127 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.h +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.h @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (c) 2012-2014 Luke Parry * * * - * This file is part of the FreeCAD CAx development system. * + * 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 * @@ -10,7 +10,7 @@ * * * 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 * + * 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 * diff --git a/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp b/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp index 64ff8f49a7..5af8a8768f 100644 --- a/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2013 Luke Parry * - * 2014 wandererfan * + * Copyright (c) 2014 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -161,14 +161,14 @@ void QGIViewAnnotation::drawAnnotation() //TODO: there is still a bug here. entering "'" works, save and restore works, but edit after // save and restore brings "\'" back into text. manually deleting the "\" fixes it until the next // save/restore/edit cycle. - // a guess is that the editor for propertyStringList is too enthusiastic about substituting. + // a guess is that the editor for propertyStringList is too enthusiastic about substituting. // the substituting might be necessary for using the strings in Python. - // ' doesn't seem to help in this case. + // ' doesn't seem to help in this case. std::string u8String = Base::Tools::escapedUnicodeToUtf8(*it); //from \x??\x?? to real utf8 std::string apos = std::regex_replace((u8String), std::regex("\\\\"), ""); //remove doubles. apos = std::regex_replace((apos), std::regex("\\'"), "'"); //replace escaped apos - //"less than" symbol chops off line. need to use html sub. + //"less than" symbol chops off line. need to use html sub. std::string lt = std::regex_replace((apos), std::regex("<"), "<"); ss << lt; } diff --git a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h index 99891c8e32..d45846f017 100644 --- a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h +++ b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2013 Luke Parry * - * 2014 wandererfan * + * Copyright (c) 2014 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index d5e9aa40a7..1b7b062a0e 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -484,7 +484,7 @@ void QGIViewBalloon::balloonLabelDragged(bool ctrl) //set feature position (x,y) from graphic position double x = Rez::appX(balloonLabel->X() / scale), y = Rez::appX(balloonLabel->Y() / scale); - Gui::Command::openCommand("Drag Balloon"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Drag Balloon")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.X = %f", dvb->getNameInDocument(), x); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Y = %f", dvb->getNameInDocument(), -y); //if origin is also moving, calc new origin and update feature @@ -717,14 +717,14 @@ void QGIViewBalloon::draw() double yAdj = 0.0; int endType = balloon->EndType.getValue(); double arrowAdj = QGIArrow::getOverlapAdjust(endType, - QGIArrow::getPrefArrowSize()); + balloon->EndTypeScale.getValue()*QGIArrow::getPrefArrowSize()); if (endType == ArrowType::NONE) { arrow->hide(); } else { arrow->setStyle(endType); - arrow->setSize(QGIArrow::getPrefArrowSize()); + arrow->setSize(balloon->EndTypeScale.getValue()*QGIArrow::getPrefArrowSize()); arrow->draw(); Base::Vector3d arrowTipPos(arrowTipX, arrowTipY, 0.0); @@ -738,7 +738,7 @@ void QGIViewBalloon::draw() float arAngle = atan2(dirballoonLinesLine.y, dirballoonLinesLine.x) * 180 / M_PI; arrow->setPos(arrowTipX, arrowTipY); - if ( (endType == ArrowType::FILLED_TRIANGLE) && + if ( (endType == ArrowType::FILLED_TRIANGLE) && (prefOrthoPyramid()) ) { if (arAngle < 0.0) { arAngle += 360.0; @@ -765,6 +765,12 @@ void QGIViewBalloon::draw() dLinePath.lineTo(arrowTipX - xAdj, arrowTipY - yAdj); balloonLines->setPath(dLinePath); + // This overwrites the previously created QPainterPath with empty one, in case it should be hidden. Should be refactored. + if (!balloon->LineVisible.getValue()) { + arrow->hide(); + balloonLines->setPath(QPainterPath()); + } + // redraw the Balloon and the parent View if (hasHover && !isSelected()) { setPrettyPre(); diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.cpp b/src/Mod/TechDraw/Gui/QGIViewClip.cpp index 585a9ed990..e5b118b4b6 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewClip.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2013 Luke Parry * - * 2014 wandererfan * + * Copyright (c) 2014 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -125,7 +125,7 @@ void QGIViewClip::drawClip() QPointF clipOrigin = mapToItem(m_cliparea,midMapped); m_cliparea->setRect(r.adjusted(-1,-1,1,1)); - + std::vector childNames = viewClip->getChildViewNames(); //for all child Views in Clip, add the graphics representation of the View to the Clip group for(std::vector::iterator it = childNames.begin(); it != childNames.end(); it++) { diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 610a0bf04b..aba8dc5686 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -107,12 +107,16 @@ QGIDatumLabel::QGIDatumLabel() setFiltersChildEvents(true); m_dimText = new QGCustomText(); + m_dimText->setTightBounding(true); m_dimText->setParentItem(this); m_tolTextOver = new QGCustomText(); + m_tolTextOver->setTightBounding(true); m_tolTextOver->setParentItem(this); m_tolTextUnder = new QGCustomText(); + m_tolTextUnder->setTightBounding(true); m_tolTextUnder->setParentItem(this); m_unitText = new QGCustomText(); + m_unitText->setTightBounding(true); m_unitText->setParentItem(this); m_ctrl = false; @@ -253,7 +257,8 @@ void QGIDatumLabel::setPosFromCenter(const double &xCenter, const double &yCente QRectF unitBox = m_unitText->boundingRect(); double unitWidth = unitBox.width(); double unitRight = right + unitWidth; - m_unitText->setPos(right,top); + // Set the m_unitText font *baseline* at same height as the m_dimText font baseline + m_unitText->setPos(right, 0.0); //set tolerance position QRectF overBox = m_tolTextOver->boundingRect(); @@ -266,9 +271,11 @@ void QGIDatumLabel::setPosFromCenter(const double &xCenter, const double &yCente } double tolRight = unitRight + width; - m_tolTextOver->justifyRightAt(tolRight, middle, false); - m_tolTextUnder->justifyRightAt(tolRight, middle + underBox.height(), false); - + // 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); + tol_adj = m_tolTextUnder->tightBoundingAdjust(); + m_tolTextUnder->justifyRightAt(tolRight + tol_adj.x(), middle + overBox.height() - tol_adj.y(), false); } void QGIDatumLabel::setLabelCenter() @@ -322,46 +329,30 @@ void QGIDatumLabel::setTolString() m_tolTextOver->show(); m_tolTextUnder->show(); - double overTol = dim->OverTolerance.getValue(); - double underTol = dim->UnderTolerance.getValue(); - - int precision = getPrecision(); - QString qsPrecision = QString::number(precision); - QString qsFormatOver = QString::fromUtf8("%+.") + //show sign - qsPrecision + - QString::fromUtf8("g"); //trim trailing zeroes - if (DrawUtil::fpCompare(overTol, 0.0, pow(10.0, -precision))) { - qsFormatOver = QString::fromUtf8("%.") + //no sign - qsPrecision + - QString::fromUtf8("g"); - } - - QString qsFormatUnder = QString::fromUtf8("%+.") + //show sign - qsPrecision + - QString::fromUtf8("g"); //trim trailing zeroes - if (DrawUtil::fpCompare(underTol, 0.0, pow(10.0, -precision))) { - qsFormatUnder = QString::fromUtf8("%.") + //no sign - qsPrecision + - QString::fromUtf8("g"); //trim trailing zeroes - } QString tolSuffix; if ((dim->Type.isValue("Angle")) || (dim->Type.isValue("Angle3Pt"))) { - tolSuffix = QString::fromUtf8(dim->getFormatedValue(2).c_str()); //just the unit + tolSuffix = QString::fromUtf8(dim->getFormattedDimensionValue(2).c_str()); //just the unit } - QString overFormat; - QString underFormat; - #if QT_VERSION >= 0x050000 - overFormat = QString::asprintf(qsFormatOver.toStdString().c_str(), overTol); - underFormat = QString::asprintf(qsFormatUnder.toStdString().c_str(), underTol); - #else - QString qs2; - overFormat = qs2.sprintf(qsFormatOver.toStdString().c_str(), overTol); - underFormat = qs2.sprintf(qsFormatUnder.toStdString().c_str(), underTol); - #endif + std::pair labelTexts, unitTexts; - m_tolTextOver->setPlainText(overFormat + tolSuffix); - m_tolTextUnder->setPlainText(underFormat + tolSuffix); + if (dim->ArbitraryTolerances.getValue()) { + labelTexts = dim->getFormattedToleranceValues(1); //just the number pref/spec/suf + unitTexts.first = ""; + unitTexts.second = ""; + } else { + if (dim->isMultiValueSchema()) { + labelTexts = dim->getFormattedToleranceValues(0); //don't format multis + unitTexts.first = ""; + unitTexts.second = ""; + } else { + labelTexts = dim->getFormattedToleranceValues(1); //just the number pref/spec/suf + unitTexts = dim->getFormattedToleranceValues(2); //just the unit + } + } + + m_tolTextUnder->setPlainText(QString::fromUtf8(labelTexts.first.c_str()) + QString::fromUtf8(unitTexts.first.c_str())); + m_tolTextOver->setPlainText(QString::fromUtf8(labelTexts.second.c_str()) + QString::fromUtf8(unitTexts.second.c_str())); return; } @@ -620,18 +611,18 @@ void QGIViewDimension::updateDim() return; } -// QString labelText = QString::fromUtf8(dim->getFormatedValue().c_str()); +// QString labelText = QString::fromUtf8(dim->getFormattedDimensionValue().c_str()); //want this split into value and unit QString labelText; QString unitText; if (dim->Arbitrary.getValue()) { - labelText = QString::fromUtf8(dim->getFormatedValue(1).c_str()); //just the number pref/spec/suf + labelText = QString::fromUtf8(dim->getFormattedDimensionValue(1).c_str()); //just the number pref/spec/suf } else { if (dim->isMultiValueSchema()) { - labelText = QString::fromUtf8(dim->getFormatedValue(0).c_str()); //don't format multis + labelText = QString::fromUtf8(dim->getFormattedDimensionValue(0).c_str()); //don't format multis } else { - labelText = QString::fromUtf8(dim->getFormatedValue(1).c_str()); //just the number pref/spec/suf - unitText = QString::fromUtf8(dim->getFormatedValue(2).c_str()); //just the unit + labelText = QString::fromUtf8(dim->getFormattedDimensionValue(1).c_str()); //just the number pref/spec/suf + unitText = QString::fromUtf8(dim->getFormattedDimensionValue(2).c_str()); //just the unit } } QFont font = datumLabel->getFont(); @@ -665,7 +656,7 @@ void QGIViewDimension::datumLabelDragFinished() double x = Rez::appX(datumLabel->X()), y = Rez::appX(datumLabel->Y()); - Gui::Command::openCommand("Drag Dimension"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Drag Dimension")); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.X = %f", dim->getNameInDocument(), x); Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Y = %f", dim->getNameInDocument(), -y); Gui::Command::commitCommand(); diff --git a/src/Mod/TechDraw/Gui/QGIViewImage.cpp b/src/Mod/TechDraw/Gui/QGIViewImage.cpp index e6877280c4..a021b4024e 100644 --- a/src/Mod/TechDraw/Gui/QGIViewImage.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewImage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGIViewImage.h b/src/Mod/TechDraw/Gui/QGIViewImage.h index e6ded6d010..4060c1087a 100644 --- a/src/Mod/TechDraw/Gui/QGIViewImage.h +++ b/src/Mod/TechDraw/Gui/QGIViewImage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.cpp b/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.cpp index 8e41105528..d7667be4d8 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.h b/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.h index d56bd97dfe..8d5cb1a624 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.h +++ b/src/Mod/TechDraw/Gui/QGIViewSpreadsheet.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp index 45b89139c9..e752bc9052 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2013 Luke Parry * - * 2014 wandererfan * + * Copyright (c) 2014 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -134,7 +134,7 @@ void QGIViewSymbol::drawSvg() if (viewSymbol->isDerivedFrom(TechDraw::DrawViewArch::getClassTypeId()) || viewSymbol->isDerivedFrom(TechDraw::DrawViewDraft::getClassTypeId()) ) { scaling = scaling * rezfactor; - } else { + } else { scaling = scaling * rezfactor / pxMm; } m_svgItem->setScale(scaling); diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.h b/src/Mod/TechDraw/Gui/QGIViewSymbol.h index 055085a7e1..ebb1da80ee 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2013 Luke Parry * - * 2014 wandererfan * + * Copyright (c) 2014 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGMText.cpp b/src/Mod/TechDraw/Gui/QGMText.cpp index 57a3a19a47..7ae83b0ab9 100644 --- a/src/Mod/TechDraw/Gui/QGMText.cpp +++ b/src/Mod/TechDraw/Gui/QGMText.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 56f211b8e9..58c8a4b115 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -1194,10 +1194,10 @@ void QGVPage::mouseReleaseEvent(QMouseEvent *event) std::string FeatName = getDrawPage()->getDocument()->getUniqueObjectName("Balloon"); std::string PageName = getDrawPage()->getNameInDocument(); - Gui::Command::openCommand("Create Balloon"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create Balloon")); TechDraw::DrawViewBalloon *balloon = 0; - Gui::Command::openCommand("Create Balloon"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create Balloon")); Command::doCommand(Command::Doc,"App.activeDocument().addObject('TechDraw::DrawViewBalloon','%s')",FeatName.c_str()); Command::doCommand(Command::Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_af.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_af.qm index bf7e670b7c..065e9381c0 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_af.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_af.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ar.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ar.qm index 76fb724eb4..cc4b85abd0 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ar.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ar.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.qm index 1a398b3ca0..59e2436775 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ca.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.qm index 3371059cf5..764be964b7 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_cs.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm index 5f893a0478..bba39c7fd3 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_de.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.qm index daf62976c4..e5cd7ed8b8 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_el.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.qm index 953cb73ce4..61bbb72cf4 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_es-ES.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.qm index a5584d762d..357ebae8bd 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts index 2e0fd23978..e46657202b 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_eu.ts @@ -69,7 +69,7 @@ Add Cosmetic Line Through 2 Points - Add Cosmetic Line Through 2 Points + Gehitu lerro kosmetikoa 2 puntu zeharkatuta
      @@ -1124,12 +1124,12 @@ Please select only 1 Arch Section. - Please select only 1 Arch Section. + Hautatu arkitektura-sekzio bakar bat. No Arch Sections in selection. - No Arch Sections in selection. + Ez dago arkitektura-sekziorik hautapenean. @@ -1308,7 +1308,7 @@ Task In Progress - Zeregina abian + Ataza abian @@ -1330,7 +1330,7 @@ Close active task dialog and try again. - Itxi zeregin aktiboaren elkarrizketa-koadroa eta saiatu berriro. + Itxi ataza aktiboaren elkarrizketa-koadroa eta saiatu berriro. @@ -1397,7 +1397,7 @@ You must select Faces or an existing CenterLine. - You must select Faces or an existing CenterLine. + Aurpegiak edo lehendik dagoen erdiko lerro bat hautatu behar duzu. @@ -1409,7 +1409,7 @@ Selection is not a CenterLine. - Selection is not a CenterLine. + Hautapena ez da erdiko lerroa. @@ -1424,7 +1424,7 @@ Need 2 Vertices or 1 CenterLine. - Need 2 Vertices or 1 CenterLine. + 2 erpin edo erdiko lerro 1 behar da. @@ -1656,7 +1656,7 @@ Select at first an orientation - Select at first an orientation + Hasteko, hautatu orientazio bat @@ -1705,8 +1705,8 @@ 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. + Ezin da gida-marra hau ezabatu +hautsi daitekeen soldadura-ikur bat duelako. @@ -1746,7 +1746,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. - You cannot delete this view because it has a leader line that would become broken. + Ezin da bista hau ezabatu hautsita geratuko litzatekeen gida-marra bat duelako. @@ -1759,27 +1759,27 @@ duten objektuak galdu egin daitezke: The group cannot be deleted because its items have the following section or detail views, or leader lines that would get broken: - The group cannot be deleted because its items have the following -section or detail views, or leader lines that would get broken: + Taldea ezin da ezabatu bere elementuak hautsi daitezkeen +honako sekzio- eta xehetasun-bistak, edo gida-marrak, dituztelako: The projection group is not empty, therefore the following referencing objects might be lost: - The projection group is not empty, therefore -the following referencing objects might be lost: + Proiekzio taldea ez dago hutsik, eta horregatik +honako erreferentzia duten objektuak galdu egin daitezke: The following referencing object might break: - The following referencing object might break: + Erreferentziako honako objektua hautsi daiteke: You cannot delete this weld symbol because it has a tile weld that would become broken. - You cannot delete this weld symbol because -it has a tile weld that would become broken. + Ezin da soldadura-ikur hau ezabatu +hautsi daitekeen lauza-soldadura bat duelako. @@ -1818,8 +1818,8 @@ it has a tile weld that would become broken. Minimal distance of the object from the top and left view border - Minimal distance of the object from -the top and left view border + Objektuaren distantzia minimoa +bistaren goiko eta ezkerreko ertzetatik @@ -1964,8 +1964,8 @@ the top and left view border Adds the 'Field Weld' symbol (flag) at the kink in the leader line - Adds the 'Field Weld' symbol (flag) -at the kink in the leader line + 'Eremu-soldadura' ikurra (bandera) +gehitzen du gida-marraren muturrean @@ -1976,8 +1976,8 @@ at the kink in the leader line Adds the 'All Around' symbol (circle) at the kink in the leader line - Adds the 'All Around' symbol (circle) -at the kink in the leader line + 'Inguru osoan' ikurra (zirkulua) +gehitzen du gida-marraren muturrean @@ -1987,7 +1987,7 @@ at the kink in the leader line Offsets the lower symbol to indicate alternating welds - Offsets the lower symbol to indicate alternating welds + Beheko ikurra desplazatzen du ordezko soldadurak adierazteko @@ -1998,8 +1998,8 @@ at the kink in the leader line Directory to welding symbols. This directory will be used for the symbol selection. - Directory to welding symbols. -This directory will be used for the symbol selection. + Soldadura-ikurren direktorioa. +Direktorio hau ikurrak hautatzeko erabiliko da. @@ -2057,14 +2057,14 @@ Zertan ari zaren ondo badakizu soilik aldatu hau! Limit of 64x64 pixel SVG tiles used to hatch a single face. For large scalings you might get an error about to many SVG tiles. Then you need to increase the tile limit. - Limit of 64x64 pixel SVG tiles used to hatch a single face. -For large scalings you might get an error about to many SVG tiles. -Then you need to increase the tile limit. + Aurpegi bakar bat itzaleztatzeko erabiliko den SVG lauzen 64x64 pixeleko muga. +Eskalatze handietan, SVG lauza gehiegiren errore bat gerta daiteke. +Orduan, lauzen muga handitu beharko da. Dump intermediate results during Detail view processing - Dump intermediate results during Detail view processing + Bota bista-prozesatze xehean zehar sortutako tarteko emaitzak @@ -2084,7 +2084,7 @@ Then you need to increase the tile limit. Dump intermediate results during Section view processing - Dump intermediate results during Section view processing + Bota sekzioaren prozesatzean zehar sortutako tarteko emaitzak @@ -2094,7 +2094,7 @@ Then you need to increase the tile limit. Perform a fuse operation on input shape(s) before Section view processing - Perform a fuse operation on input shape(s) before Section view processing + Aplikatu fusio-eragiketa bat sarrerako form(et)an sekzio-bista prozesatu baino lehen @@ -2121,7 +2121,7 @@ erabiliko den itzal-lerro kopuru maximoa Line End Cap Shape - Line End Cap Shape + Lerroaren amaierako estalkiaren forma @@ -2157,7 +2157,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Max PAT Hatch Segments - Max PAT Hatch Segments + PAT itzaleztadura-segmentuen kopuru maximoa @@ -2172,7 +2172,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -2238,7 +2238,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Section Line Standard - Section Line Standard + Sekzio-lerroaren estandarra @@ -2283,7 +2283,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Length of balloon leader line kink - Length of balloon leader line kink + Bunbuiloaren gida-marraren muturraren luzera @@ -2339,7 +2339,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Standard to be used to draw section lines - Standard to be used to draw section lines + Sekzio-lerroak marrazteko erabiliko den estandarra @@ -2354,7 +2354,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Outline shape for detail views - Outline shape for detail views + Kanpoko forma bista xeheetarako @@ -2379,17 +2379,17 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Default name in LineGroup CSV file - Default name in LineGroup CSV file + Izen lehenetsia LineGroup CSV fitxategian Detail View Outline Shape - Detail View Outline Shape + Eskema-formaren bista xehea Style for balloon leader line ends - Style for balloon leader line ends + Bunbuiloen gida-marren amaieren estiloa @@ -2404,17 +2404,17 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Restrict Filled Triangle line end to vertical or horizontal directions - Restrict Filled Triangle line end to vertical or horizontal directions + Murriztu triangelu betearen lerro-amaiera norabide bertikaletara edo horizontaletara Balloon Orthogonal Triangle - Balloon Orthogonal Triangle + Bunbuiloaren triangelu ortogonala Line Group Name - Line Group Name + Lerro taldearen izena @@ -2434,17 +2434,17 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Line style of detail highlight on base view - Line style of detail highlight on base view + Xehetasunen nabarmentzearen lerro-estiloa oinarri-bistan Detail Highlight Style - Detail Highlight Style + Xehetasunen nabarmentzearen estiloa <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -2593,7 +2593,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Detail Highlight - Detail Highlight + Xehetasunen nabarmentzea @@ -2603,12 +2603,12 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Default color for leader lines - Default color for leader lines + Gida-marren kolore lehenetsia <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -2627,7 +2627,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Standard to be used for dimensional values - Standard to be used for dimensional values + Kota-balioetan erabiliko den estandarra @@ -2677,7 +2677,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Number of decimals if 'Use Global Decimals' is not used - Number of decimals if 'Use Global Decimals' is not used + Dezimal kopurua 'Erabili dezimal globalak' erabiltzen ez bada @@ -2737,7 +2737,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Use first- or third-angle multiview projection convention - Use first- or third-angle multiview projection convention + Erabili lehen edo hirugarren angeluaren bista anitzaren proiekzioaren konbentzioa @@ -2777,7 +2777,7 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -2806,8 +2806,8 @@ errendimendua jaitsi egin daiteke eredu konplexuetan. Whether or not a page's 'Keep Updated' property can override the global 'Update With 3D' parameter - Whether or not a page's 'Keep Updated' property -can override the global 'Update With 3D' parameter + Orri baten 'Mantendu eguneratuta' propietateak +'Eguneratu 3Drekin' parametro globala gainidatzi dezakeen ala ez @@ -2818,8 +2818,8 @@ can override the global 'Update With 3D' parameter Keep drawing pages in sync with changes of 3D model in real time. This can slow down the response time. - Keep drawing pages in sync with changes of 3D model in real time. -This can slow down the response time. + Mantendu marraztutako orriak sinkronizatuta 3D ereduaren aldaketekin denbora errealean. +Horrek erantzun-denbora moteldu dezake. @@ -2876,7 +2876,7 @@ proiekzio-taldeetarako Default template file for new pages - Default template file for new pages + Orrialde berrietarako txantiloi-fitxategi lehenetsia @@ -2886,37 +2886,37 @@ proiekzio-taldeetarako Starting directory for menu 'Insert Page using Template' - Starting directory for menu 'Insert Page using Template' + Hasierako direktorioa 'Txertatu orrialdea txantiloia erabilita' menurako Hatch Pattern File - Hatch Pattern File + Itzaleztadura-ereduaren fitxategia Default SVG or bitmap file for hatching - Default SVG or bitmap file for hatching + SVG edo bit-mapa fitxategi lehenetsia itzaleztatzeko Line Group File - Line Group File + Lerro taldearen fitxategia Alternate file for personal LineGroup definition - Alternate file for personal LineGroup definition + Lerro taldearen definizio pertsonalerako ordezko fitxategia Welding Directory - Welding Directory + Soldaduren direktorioa Default directory for welding symbols - Default directory for welding symbols + Soldadura-ikurretarako direktorio lehenetsia @@ -2946,7 +2946,7 @@ proiekzio-taldeetarako <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -3060,7 +3060,7 @@ Azkarra, baina lerro zuzen laburren bilduma bat ematen du. <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -3114,7 +3114,7 @@ Azkarra, baina lerro zuzen laburren bilduma bat ematen du. Default scale for views if 'View Scale Type' is 'Custom' - Default scale for views if 'View Scale Type' is 'Custom' + Bisten eskala lehenetsia 'Bistaren eskala mota' aukeran 'Pertsonalizatua' badago ezarrita @@ -3125,25 +3125,25 @@ Azkarra, baina lerro zuzen laburren bilduma bat ematen du. Selection area around center marks Each unit is approx. 0.1 mm wide - Selection area around center marks -Each unit is approx. 0.1 mm wide + Zentro-marken inguruko hautapen-area +Unitate bakoitzak 0.1 mm inguruko zabalera du Size of selection area around edges Each unit is approx. 0.1 mm wide - Size of selection area around edges -Each unit is approx. 0.1 mm wide + Ertzen inguruko hautapen-arearen tamaina +Unitate bakoitzak 0.1 mm inguruko zabalera du Mark Fuzz - Mark Fuzz + Markaren lausotasuna Edge Fuzz - Edge Fuzz + Ertzaren lausotasuna @@ -3153,12 +3153,12 @@ Each unit is approx. 0.1 mm wide Tolerance font size adjustment. Multiplier of dimension font size. - Tolerance font size adjustment. Multiplier of dimension font size. + Tolerantziako letra-tamainaren doikuntza. Kota-lerroaren letra-tamainaren biderkatzailea. Size of template field click handles - Size of template field click handles + Txantiloi-eremuaren klik-heldulekuen tamaina @@ -3198,12 +3198,12 @@ Each unit is approx. 0.1 mm wide Multiplier for size of welding symbols - Multiplier for size of welding symbols + Soldadura-ikurren tamainaren biderkatzailea <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Note:</span> Items in <span style=" font-style:italic;">italics</span> are default values for new objects. They have no effect on existing objects.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Oharra:</span> <span style=" font-style:italic;">Etzanean</span> dauden elementuak objektu berrien balio lehenetsiak dira. Ez dute eraginik lehendik dauden objektuetan.</p></body></html> @@ -3423,12 +3423,12 @@ Jarraitu nahi duzu? Leader Kink Length: - Leader Kink Length: + Gida-marraren muturraren luzera: Length of balloon leader line kink - Length of balloon leader line kink + Bunbuiloaren gida-marraren muturraren luzera @@ -3479,10 +3479,10 @@ Jarraitu nahi duzu? - lines: in equal distance to the lines and with half of the angle the lines have to each other - points: in equal distance to the points - centerline between -- lines: in equal distance to the lines and with - half of the angle the lines have to each other -- points: in equal distance to the points + erdiko lerroa honakoen artean +- lerroak: lerroekiko distantzia berean eta lerroek + elkarrekiko duten angeluaren erdiarekin +- puntuak: puntuekiko distantzia berean @@ -3703,17 +3703,17 @@ ikusi FreeCADen wikiko '2LineCenterLine' deskribapen baterako Click to drag detail highlight to new position - Click to drag detail highlight to new position + Egin klik xehetasunaren nabarmentzea posizio berrira arrastatzeko Drag Highlight - Drag Highlight + Arrastatu nabarmentzea scale factor for detail view - scale factor for detail view + bista xehearen eskala-faktorea @@ -3726,10 +3726,10 @@ ikusi FreeCADen wikiko '2LineCenterLine' deskribapen baterako - Page: scale factor of page is used -Automatic: if the detail view is larger than the page, - it will be scaled down to fit into the page -Custom: custom scale factor is used + Orria: orriaren eskala faktorea erabiliko da +Automatikoa: bista xehea orria baino handiagoa bada, + eskalatu egingo da orrian sartu dadin +Pertsonalizatua: eskala-faktore pertsonalizatua erabiliko da @@ -3769,7 +3769,7 @@ Custom: custom scale factor is used x position of detail highlight within view - x position of detail highlight within view + Xehetasun nabarmenduak bistaren baitan duen X posizioa @@ -3779,7 +3779,7 @@ Custom: custom scale factor is used y position of detail highlight within view - y position of detail highlight within view + Xehetasun nabarmenduak bistaren baitan duen Y posizioa @@ -3968,9 +3968,9 @@ Custom: custom scale factor is used First pick the start point of the line, then at least a second point. You can pick further points to get line segments. - First pick the start point of the line, -then at least a second point. -You can pick further points to get line segments. + Lehenengo aukeratu lerroaren hasierako puntua, +ondoren gutxienez bigarren puntu bat. +Puntu gehiago ere aukeratu daitezke lerro-segmentuak sortzeko. @@ -4332,18 +4332,18 @@ You can pick further points to get line segments. Distributes projections automatically using the given X/Y Spacing - Distributes projections automatically -using the given X/Y Spacing + Proiekzioak automatikoki banatzen ditu +emandako X/Y espazioa erabilita Auto Distribute - Auto Distribute + Banatu automatikoki Horizontal space between border of projections - Horizontal space between border of projections + Proiekzioen ertzen arteko tarte horizontala @@ -4581,7 +4581,7 @@ using the given X/Y Spacing TaskSectionView - bad parameters. Can not proceed. - Sekzio-bistaren zeregina - parametro okerrak. Ezin da jarraitu. + Sekzio-bistaren ataza - parametro okerrak. Ezin da jarraitu. diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.qm index 8a8e08e32a..8510341666 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fi.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fil.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fil.qm index b42b6914f9..902ece307d 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fil.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fil.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.qm index a0e8f33ad4..53b063778d 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_fr.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.qm index 1270dd03ad..f0affb67df 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_gl.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.qm index 6e1ea4324b..89ab0a5e4e 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts index deadbd5fc3..af6724450a 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hr.ts @@ -4631,7 +4631,9 @@ using the given X/Y Spacing Section Plane Location - Section Plane Location + Mjesto Odjeljka Ravnine + + @@ -4652,7 +4654,9 @@ using the given X/Y Spacing TaskSectionView - bad parameters. Can not proceed. - TaskSectionView - bad parameters. Can not proceed. + TaskSectionView - loši parametri. Ne mogu nastaviti. + + diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.qm index c236bf6a7d..3376bccf3e 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts index b3d7d3b79b..38a7b0ed34 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_hu.ts @@ -1485,12 +1485,12 @@ Replace Hatch? - Straffozást cserélni? + Kitöltés lecserélése? Some Faces in selection are already hatched. Replace? - Some Faces in selection are already hatched. Replace? + Néhány felület a kijelölésben már ki van töltve. Lecseréli? @@ -1666,7 +1666,7 @@ Operation Failed - Operation Failed + Sikertelen művelet @@ -1691,12 +1691,12 @@ New Detail View - New Detail View + Új részletnézet Edit Detail View - Edit Detail View + Részletnézet szerkesztése @@ -1740,7 +1740,7 @@ it has a weld symbol that would become broken. You cannot delete this view because it has a detail view that would become broken. - You cannot delete this view because it has a detail view that would become broken. + Ez a nézet nem törölhető, mert rajta egy részletnézet kapcsolata megszakadna. @@ -1812,7 +1812,7 @@ it has a tile weld that would become broken. Border - Border + Keret @@ -1913,7 +1913,7 @@ the top and left view border Symbol - Symbol + Szimbólum @@ -1938,12 +1938,12 @@ the top and left view border Flips the sides - Flips the sides + Megfordítja az oldalakat Flip Sides - Flip Sides + Oldalak Megfordítása @@ -2152,12 +2152,12 @@ can be a performance penalty in complex models. Max SVG Hatch Tiles - Max SVG Hatch Tiles + Max SVG kitöltés csempék Max PAT Hatch Segments - Max PAT Hatch Segments + Max PAT kitöltés elemek @@ -2263,12 +2263,12 @@ can be a performance penalty in complex models. SVG Hatch - SVG Hatch + SVG kitöltés PAT Hatch - PAT Hatch + PAT kitöltés @@ -2528,12 +2528,12 @@ can be a performance penalty in complex models. Hatch - Hatch + Kitöltés Hatch image color - Hatch image color + Kitöltés színe @@ -2548,12 +2548,12 @@ can be a performance penalty in complex models. Geometric Hatch - Geometric Hatch + Geometriai Kitöltés Geometric hatch pattern color - Geometric hatch pattern color + Geometriai kitöltés színe @@ -2891,12 +2891,12 @@ for ProjectionGroups Hatch Pattern File - Hatch Pattern File + Kitöltési Minta Fájl Default SVG or bitmap file for hatching - Default SVG or bitmap file for hatching + Alapértelmezett SVG vagy képfájl kitöltésekhez @@ -2926,7 +2926,7 @@ for ProjectionGroups Default PAT pattern definition file for geometric hatching - Default PAT pattern definition file for geometric hatching + Alapértelmezett PAT fájl geometriai kitöltésekhez @@ -3074,7 +3074,7 @@ Fast, but result is a collection of short straight lines. Page Scale - Page Scale + Oldal lépték @@ -3084,12 +3084,12 @@ Fast, but result is a collection of short straight lines. View Scale Type - View Scale Type + Nézet lépték típusa Default scale for new views - Default scale for new views + Alapértelmezett lépték új nézetekhez @@ -3109,12 +3109,12 @@ Fast, but result is a collection of short straight lines. View Custom Scale - View Custom Scale + Egyedi lépték Default scale for views if 'View Scale Type' is 'Custom' - Default scale for views if 'View Scale Type' is 'Custom' + Alapértelmezett lépték, ha 'Nézet lépték típusa' 'Egyedi'-re van állítva @@ -3412,7 +3412,7 @@ Szeretné folytatni? Line Width: - Line Width: + Vonalvastagság: @@ -3697,7 +3697,7 @@ see the FreeCAD Wiki '2LineCenterLine' for a description Detail View - Detail View + Részletnézet @@ -3712,12 +3712,12 @@ see the FreeCAD Wiki '2LineCenterLine' for a description scale factor for detail view - scale factor for detail view + részletnézet léptéke size of detail view - size of detail view + részletnézet mérete @@ -3725,10 +3725,10 @@ see the FreeCAD Wiki '2LineCenterLine' for a description Automatic: if the detail view is larger than the page, it will be scaled down to fit into the page Custom: custom scale factor is used - Page: scale factor of page is used -Automatic: if the detail view is larger than the page, - it will be scaled down to fit into the page -Custom: custom scale factor is used + Oldal: az oldal léptékének a használata +Automatikus: ha az részletnézet nagyobb, mint az oldal, + akkor a részlet léptéke le lesz csökkentve, hogy elférjen az oldalon +Egyedi: egyedi lépték használata @@ -3748,7 +3748,7 @@ Custom: custom scale factor is used Scale Type - Scale Type + Lépték típusa @@ -3758,7 +3758,7 @@ Custom: custom scale factor is used Scale Factor - Scale Factor + Lépték @@ -3867,7 +3867,7 @@ Custom: custom scale factor is used Apply Hatch to Face - Apply Hatch to Face + Kitöltés alkalmazása a felületre @@ -4539,7 +4539,7 @@ using the given X/Y Spacing Scale factor for the section view - Scale factor for the section view + Metszet léptéke @@ -4601,7 +4601,7 @@ using the given X/Y Spacing Symbol - Symbol + Szimbólum diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.qm index d99aece9dd..eaeafbd56d 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_id.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.qm index 46350e22e6..395872a5be 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_it.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.qm index e321f51474..9033a45761 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ja.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_kab.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_kab.qm index 9346fa7673..3044bc8261 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_kab.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_kab.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.qm index 4211494542..2ac6f82b6b 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ko.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_lt.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_lt.qm index f9ab76a47b..bb2fc0eb4c 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_lt.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_lt.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.qm index b0e42fa891..62da971fe3 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_nl.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_no.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_no.qm index 1b0598155b..b6e01f4a62 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_no.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_no.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.qm index 0668e15ceb..838df37fd3 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts index 90953532ce..fa4f72ffb4 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pl.ts @@ -723,7 +723,7 @@ Turn View Frames On/Off - Turn View Frames On/Off + Włącz/Wyłącz wyświetlanie ramek @@ -1330,7 +1330,7 @@ Close active task dialog and try again. - Close active task dialog and try again. + Zamknij okno aktywnego zadania i spróbuj ponownie. @@ -1594,7 +1594,7 @@ Toggle KeepUpdated - Włącz KeepUpdated + Włącz/Wyłącz automatyczną aktualizacje @@ -3216,12 +3216,12 @@ Each unit is approx. 0.1 mm wide Toggle &Keep Updated - Włącz/wyłącz &automatyczną aktualizacje + Włącz/Wyłącz &automatyczną aktualizację Toggle &Frames - Włącz/wyłącz &Ramki + Włącz/Wyłącz &Ramki @@ -4169,7 +4169,7 @@ You can pick further points to get line segments. Projection - Rzut + Rzutowanie diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.qm index be1975ddc8..ebc11fefa4 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-BR.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.qm index cbed3ec391..8e2b2ea162 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_pt-PT.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.qm index f94a88e165..ea14a92d6f 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ro.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.qm index d83cf59d93..caa2ce4f01 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_ru.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sk.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sk.qm index 632f61bae9..bbb60da178 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sk.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sk.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.qm index 5f356fe57f..549ffc1c87 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts index 436353c161..fae16d4117 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sl.ts @@ -4554,7 +4554,7 @@ s pomočjo podanih X/Y odmikov Position from the 3D origin of the object in the view - Position from the 3D origin of the object in the view + Položaj od 3D izhodišča predmeta v pogledu diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.qm index cfc325c2a7..f1cbefd56b 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sr.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.qm index 9fdbda5ef3..26dbf8ac63 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.qm differ 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 7da970372c..3bba3e5bee 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_sv-SE.ts @@ -2253,7 +2253,7 @@ can be a performance penalty in complex models. Hide - Hide + Dölj diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.qm index 6a3452fb75..57336a1cce 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts index d8f6a950c6..05303be302 100644 --- a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts +++ b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_tr.ts @@ -1058,7 +1058,7 @@ No Shapes, Groups or Links in this selection - Seçim içinde şekil(ler) ya da Bağlantılar(lar) yok + Bu seçimde Şekil, Grup veya Bağlantı Yok @@ -1281,7 +1281,7 @@ No View of a Part in selection. - Seçimdeki Parçanın Görünümü Yok. + Seçimde Parça Görünümü Yok. @@ -1459,7 +1459,7 @@ No Part Views in this selection - Bu seçimde Bölüm görünümü yok + Bu seçimde Parça Görünümü yok @@ -1475,7 +1475,7 @@ At least 1 object in selection is not a part view - Seçimdeki en az bir nesne bölüm görünümü değil + Seçimdeki en az 1 nesne bir parça görünümü değil @@ -1681,7 +1681,7 @@ Create Cosmetic Line - Yardımcı doğru oluştur + Yardımcı çizgi oluştur @@ -1884,7 +1884,7 @@ the top and left view border Bounding box - Bounding box + Sınır kutusu @@ -2975,7 +2975,7 @@ for ProjectionGroups Show smooth lines - Düzgünleştirilmiş çizgileri göster + Düzgün çizgileri göster diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.qm index 5122da5f9e..e03a5d59a3 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_uk.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.qm index 43b1087836..8e7b95ce40 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_val-ES.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_vi.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_vi.qm index f898470469..410c3d3e23 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_vi.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_vi.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.qm index b887b488fe..2a674392a7 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-CN.qm differ diff --git a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.qm b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.qm index ae61ecced9..0febc9abc2 100644 Binary files a/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.qm and b/src/Mod/TechDraw/Gui/Resources/translations/TechDraw_zh-TW.qm differ diff --git a/src/Mod/TechDraw/Gui/Rez.h b/src/Mod/TechDraw/Gui/Rez.h index 5a03e8551f..ec91c3fb4d 100644 --- a/src/Mod/TechDraw/Gui/Rez.h +++ b/src/Mod/TechDraw/Gui/Rez.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -56,7 +56,7 @@ public: static QRectF guiRect(QRectF r); static QSize guiSize(QSize s); static QSize appSize(QSize s); - + private: static double m_rezFactor; }; diff --git a/src/Mod/TechDraw/Gui/SymbolChooser.cpp b/src/Mod/TechDraw/Gui/SymbolChooser.cpp index 6cc636663b..4a2371b214 100644 --- a/src/Mod/TechDraw/Gui/SymbolChooser.cpp +++ b/src/Mod/TechDraw/Gui/SymbolChooser.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -66,7 +66,7 @@ void SymbolChooser::setUiPrimary() } else { std::string resourceDir = App::Application::getResourceDir(); std::string defPath = "Mod/TechDraw/Symbols/Welding/AWS/"; - resourceDir = resourceDir + defPath; + resourceDir = resourceDir + defPath; QString defDir = QString::fromUtf8(resourceDir.c_str()); ui->fcSymbolDir->setFileName(defDir); loadSymbolNames(defDir); @@ -83,12 +83,12 @@ void SymbolChooser::setUiPrimary() void SymbolChooser::onOKClicked() { - QDialog::accept(); + QDialog::accept(); QListWidgetItem* sourceItem = ui->lwSymbols->currentItem(); if (!sourceItem) return; QString targetText = sourceItem->text(); - m_symbolPath = m_symbolDir + + m_symbolPath = m_symbolDir + targetText + QString::fromUtf8(".svg"); @@ -107,7 +107,7 @@ void SymbolChooser::onItemClicked(QListWidgetItem* item) //are item and currentItem() the same? should use item? QListWidgetItem* sourceItem = ui->lwSymbols->currentItem(); QString targetText = sourceItem->text(); - m_symbolPath = m_symbolDir + + m_symbolPath = m_symbolDir + targetText + QString::fromUtf8(".svg"); Q_EMIT symbolSelected(m_symbolPath, m_source); @@ -135,7 +135,7 @@ void SymbolChooser::loadSymbolNames(QString pathToSymbols) QFileInfo fi(fn); item->setText(fi.baseName()); QIcon symbolIcon(pathToSymbols + fn); - item->setIcon(symbolIcon); + item->setIcon(symbolIcon); ui->lwSymbols->addItem(item); } ui->lwSymbols->setCurrentRow(0); diff --git a/src/Mod/TechDraw/Gui/SymbolChooser.h b/src/Mod/TechDraw/Gui/SymbolChooser.h index dbd9fe7556..3f4bdec4b6 100644 --- a/src/Mod/TechDraw/Gui/SymbolChooser.h +++ b/src/Mod/TechDraw/Gui/SymbolChooser.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -35,7 +35,7 @@ class TechDrawGuiExport SymbolChooser : public QDialog Q_OBJECT public: - SymbolChooser(QWidget *parent = 0, + SymbolChooser(QWidget *parent = 0, QString startDir = QString(), QString source = QString()); diff --git a/src/Mod/TechDraw/Gui/TaskActiveView.cpp b/src/Mod/TechDraw/Gui/TaskActiveView.cpp index 86b426d1cb..d871bd8240 100644 --- a/src/Mod/TechDraw/Gui/TaskActiveView.cpp +++ b/src/Mod/TechDraw/Gui/TaskActiveView.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -143,7 +143,7 @@ TechDraw::DrawViewSymbol* TaskActiveView::createActiveView(void) std::string fileSpec = Base::Tools::toStdString(tempFile.fileName()); fileSpec = Base::Tools::escapeEncodeFilename(fileSpec); - //double estScale = + //double estScale = Grabber3d::copyActiveViewToSvgFile(appDoc, fileSpec, ui->qsbWidth->rawValue(), ui->qsbHeight->rawValue(), @@ -159,7 +159,7 @@ TechDraw::DrawViewSymbol* TaskActiveView::createActiveView(void) #endif Command::doCommand(Command::Doc,"svg = f.read()"); // Command::doCommand(Command::Doc,"print('length of svg: {}'.format(len(svg)))"); - + Command::doCommand(Command::Doc,"f.close()"); Command::doCommand(Command::Doc,"App.activeDocument().%s.Symbol = svg",symbolName.c_str()); @@ -193,7 +193,7 @@ void TaskActiveView::enableTaskButtons(bool b) bool TaskActiveView::accept() { // Base::Console().Message("TAV::accept()\n"); - Gui::Command::openCommand("Create ActiveView"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create ActiveView")); m_symbolFeat = createActiveView(); // m_symbolFeat->requestPaint(); m_symbolFeat->recomputeFeature(); @@ -208,7 +208,7 @@ bool TaskActiveView::accept() bool TaskActiveView::reject() { // Base::Console().Message("TAV::reject()\n"); - //nothing to remove. + //nothing to remove. Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp index 0ea4b05191..2906108dc2 100644 --- a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan rbAligned->setEnabled(false); else ui->rbAligned->setEnabled(true); - + Base::Quantity qVal; qVal.setUnit(Base::Unit::Length); qVal.setValue(m_cl->m_vShift); @@ -344,7 +344,7 @@ void TaskCenterLine::onFlipChanged() void TaskCenterLine::createCenterLine(void) { // Base::Console().Message("TCL::createCenterLine() - m_type: %d\n", m_type); - Gui::Command::openCommand("Create CenterLine"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create CenterLine")); // bool vertical = false; double hShift = ui->qsbHorizShift->rawValue(); double vShift = ui->qsbVertShift->rawValue(); @@ -389,7 +389,7 @@ void TaskCenterLine::createCenterLine(void) void TaskCenterLine::updateCenterLine(void) { // Base::Console().Message("TCL::updateCenterLine()\n"); - Gui::Command::openCommand("Edit CenterLine"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit CenterLine")); m_cl->m_format.m_color.setValue(ui->cpLineColor->color() ); m_cl->m_format.m_weight = ui->dsbWeight->value().getValue(); m_cl->m_format.m_style = ui->cboxStyle->currentIndex() + 1; @@ -431,11 +431,11 @@ void TaskCenterLine::enableTaskButtons(bool b) double TaskCenterLine::getCenterWidth() { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double width = lg->getWeight("Graphic"); - delete lg; + delete lg; Gui::ViewProvider* vp = QGIView::getViewProvider(m_partFeat); auto partVP = dynamic_cast(vp); if ( partVP != nullptr ) { @@ -491,7 +491,7 @@ bool TaskCenterLine::reject() if (getCreateMode() && (m_partFeat != nullptr) ) { // Base::Console().Message("TCL::reject - create Mode!!\n"); - //nothing to remove. + //nothing to remove. } if (!getCreateMode() && @@ -500,7 +500,7 @@ bool TaskCenterLine::reject() //nothing to un-update } - //make sure any dangling objects are cleaned up + //make sure any dangling objects are cleaned up Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TaskCosVertex.cpp b/src/Mod/TechDraw/Gui/TaskCosVertex.cpp index 89d33f0305..ad40355311 100644 --- a/src/Mod/TechDraw/Gui/TaskCosVertex.cpp +++ b/src/Mod/TechDraw/Gui/TaskCosVertex.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -106,7 +106,7 @@ TaskCosVertex::TaskCosVertex(TechDraw::DrawViewPart* baseFeat, m_view = m_mdi->getQGVPage(); setUiPrimary(); - + connect(ui->pbTracker, SIGNAL(clicked(bool)), this, SLOT(onTrackerClicked(bool))); @@ -164,7 +164,7 @@ void TaskCosVertex::addCosVertex(QPointF qPos) { // Base::Console().Message("TCV::addCosVertex(%s)\n", TechDraw::DrawUtil::formatVector(qPos).c_str()); Base::Vector3d pos(qPos.x(), -qPos.y()); -// int idx = +// int idx = (void) m_baseFeat->addCosmeticVertex(pos); m_baseFeat->requestPaint(); } @@ -350,7 +350,7 @@ bool TaskCosVertex::reject() m_mdi->setContextMenuPolicy(m_saveContextPolicy); } - //make sure any dangling objects are cleaned up + //make sure any dangling objects are cleaned up Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TaskCosmeticLine.cpp b/src/Mod/TechDraw/Gui/TaskCosmeticLine.cpp index 18b6e59d3d..b9dceb9bda 100644 --- a/src/Mod/TechDraw/Gui/TaskCosmeticLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskCosmeticLine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2020 Wandererfan qsby2->value().getValue(); z = ui->qsbz2->value().getValue(); Base::Vector3d p1(x, y, z); - + Base::Vector3d centroid = m_partFeat->getOriginalCentroid(); if (ui->rb3d1->isChecked()) { p0 = p0 - centroid; p0 = DrawUtil::invertY(m_partFeat->projectPoint(p0)); - } - + } + if (ui->rb3d2->isChecked()) { p1 = p1 - centroid; p1 = DrawUtil::invertY(m_partFeat->projectPoint(p1)); @@ -269,7 +269,7 @@ bool TaskCosmeticLine::accept() m_partFeat->requestPaint(); } else { //update mode - Gui::Command::openCommand("Update CosmeticLine"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Update CosmeticLine")); updateCosmeticLine(); m_partFeat->refreshCEGeoms(); m_partFeat->requestPaint(); @@ -284,7 +284,7 @@ bool TaskCosmeticLine::accept() bool TaskCosmeticLine::reject() { - //there's nothing to do. + //there's nothing to do. Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); return false; } diff --git a/src/Mod/TechDraw/Gui/TaskDetail.cpp b/src/Mod/TechDraw/Gui/TaskDetail.cpp index 4cae566077..95e18826d9 100644 --- a/src/Mod/TechDraw/Gui/TaskDetail.cpp +++ b/src/Mod/TechDraw/Gui/TaskDetail.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2020 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -192,7 +192,7 @@ TaskDetail::TaskDetail(TechDraw::DrawViewDetail* detailFeat): m_baseFeat = dynamic_cast(baseObj); if (m_baseFeat != nullptr) { m_baseName = m_baseFeat->getNameInDocument(); - } else { + } else { Base::Console().Error("TaskDetail - no BaseView. Can not proceed.\n"); return; } @@ -286,8 +286,8 @@ void TaskDetail::setUiFromFeat() Base::Vector3d anchor; TechDraw::DrawViewDetail* detailFeat = getDetailFeat(); - QString detailDisplay = QString::fromUtf8(detailFeat->getNameInDocument()) + - QString::fromUtf8(" / ") + + QString detailDisplay = QString::fromUtf8(detailFeat->getNameInDocument()) + + QString::fromUtf8(" / ") + QString::fromUtf8(detailFeat->Label.getValue()); ui->leDetailView->setText(detailDisplay); anchor = detailFeat->AnchorPoint.getValue(); @@ -419,7 +419,7 @@ void TaskDetail::editByHighlight() } //dragEnd is in scene coords. -void TaskDetail::onHighlightMoved(QPointF dragEnd) +void TaskDetail::onHighlightMoved(QPointF dragEnd) { // Base::Console().Message("TD::onHighlightMoved(%s) - highlight: %X\n", // DrawUtil::formatVector(dragEnd).c_str(), m_ghost); @@ -470,7 +470,7 @@ void TaskDetail::enableTaskButtons(bool b) void TaskDetail::createDetail() { // Base::Console().Message("TD::createDetail()\n"); - Gui::Command::openCommand("Create Detail View"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create Detail View")); m_detailName = m_doc->getUniqueObjectName("Detail"); @@ -507,7 +507,7 @@ void TaskDetail::updateDetail() { // Base::Console().Message("TD::updateDetail()\n"); try { - Gui::Command::openCommand("Update Detail"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Update Detail")); double x = ui->qsbX->rawValue(); double y = ui->qsbY->rawValue(); Base::Vector3d temp(x, y, 0.0); @@ -551,7 +551,7 @@ QPointF TaskDetail::getAnchorScene() basePos = Base::Vector3d (x, -y, 0.0); scale = dvp->getScale(); } else { //part of projection group - + DrawProjGroup* dpg = dpgi->getPGroup(); if (dpg == nullptr) { Base::Console().Message("TD::getAnchorScene - projection group is confused\n"); @@ -568,7 +568,7 @@ QPointF TaskDetail::getAnchorScene() Base::Vector3d xyScene = Rez::guiX(basePos); Base::Vector3d anchorOffsetScene = Rez::guiX(anchorPos) * scale; - Base::Vector3d netPos = xyScene + anchorOffsetScene; + Base::Vector3d netPos = xyScene + anchorOffsetScene; QPointF qAnchor(netPos.x, netPos.y); return qAnchor; } diff --git a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp index a3f56ac17a..b44943ab08 100644 --- a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -204,7 +204,7 @@ TaskLeaderLine::TaskLeaderLine(TechDraw::DrawView* baseFeat, m_qgParent = nullptr; m_haveMdi = true; m_mdi = vpp->getMDIViewPage(); - if (m_mdi != nullptr) { + if (m_mdi != nullptr) { m_scene = m_mdi->m_scene; m_view = m_mdi->getQGVPage(); if (baseFeat != nullptr) { @@ -217,7 +217,7 @@ TaskLeaderLine::TaskLeaderLine(TechDraw::DrawView* baseFeat, ui->setupUi(this); setUiPrimary(); - + connect(ui->pbTracker, SIGNAL(clicked(bool)), this, SLOT(onTrackerClicked(bool))); connect(ui->pbCancelEdit, SIGNAL(clicked(bool)), @@ -398,7 +398,7 @@ void TaskLeaderLine::createLeaderFeature(std::vector converted) std::string PageName = m_basePage->getNameInDocument(); - Gui::Command::openCommand("Create Leader"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create Leader")); Command::doCommand(Command::Doc,"App.activeDocument().addObject('%s','%s')", m_leaderType.c_str(),m_leaderName.c_str()); Command::doCommand(Command::Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)", @@ -452,7 +452,7 @@ void TaskLeaderLine::createLeaderFeature(std::vector converted) void TaskLeaderLine::updateLeaderFeature(void) { // Base::Console().Message("TTL::updateLeaderFeature()\n"); - Gui::Command::openCommand("Edit Leader"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit Leader")); //waypoints & x,y are updated by QGILeaderLine (for edits only!) commonFeatureUpdate(); App::Color ac; @@ -515,7 +515,7 @@ void TaskLeaderLine::onTrackerClicked(bool b) Base::Console().Message("TLL::onTrackerClicked - no Mdi, no Tracker!\n"); return; } - + if ( (m_pbTrackerState == TRACKERSAVE) && (getCreateMode()) ){ if (m_tracker != nullptr) { @@ -568,7 +568,7 @@ void TaskLeaderLine::onTrackerClicked(bool b) QGVPage* qgvp = m_mdi->getQGVPage(); QGIView* qgiv = qgvp->findQViewForDocObj(m_lineFeat); QGILeaderLine* qgLead = dynamic_cast(qgiv); - + if (qgLead == nullptr) { //tarfu Base::Console().Error("TaskLeaderLine - can't find leader graphic\n"); @@ -635,7 +635,7 @@ void TaskLeaderLine::startTracker(void) void TaskLeaderLine::onTrackerFinished(std::vector pts, QGIView* qgParent) { - //in this case, we already know who the parent is. We don't need QGTracker to tell us. + //in this case, we already know who the parent is. We don't need QGTracker to tell us. (void) qgParent; // Base::Console().Message("TTL::onTrackerFinished() - parent: %X\n",qgParent); if (pts.empty()) { @@ -742,7 +742,7 @@ void TaskLeaderLine::onPointEditComplete(void) { // Base::Console().Message("TTL::onPointEditComplete()\n"); m_inProgressLock = false; - + m_pbTrackerState = TRACKEREDIT; ui->pbTracker->setText(QString::fromUtf8("Edit points")); ui->pbTracker->setEnabled(true); @@ -789,8 +789,8 @@ int TaskLeaderLine::getPrefArrowStyle() double TaskLeaderLine::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return weight; @@ -843,7 +843,7 @@ bool TaskLeaderLine::reject() removeTracker(); return false; } - + Gui::Document* doc = Gui::Application::Instance->getDocument(m_basePage->getDocument()); if (!doc) return false; @@ -860,7 +860,7 @@ bool TaskLeaderLine::reject() m_trackerMode = QGTracker::TrackerMode::None; removeTracker(); - //make sure any dangling objects are cleaned up + //make sure any dangling objects are cleaned up Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TaskLinkDim.cpp b/src/Mod/TechDraw/Gui/TaskLinkDim.cpp index f6e5db6177..19339bbff7 100644 --- a/src/Mod/TechDraw/Gui/TaskLinkDim.cpp +++ b/src/Mod/TechDraw/Gui/TaskLinkDim.cpp @@ -99,12 +99,7 @@ void TaskLinkDim::loadAvailDims() std::vector pageViews = m_page->Views.getValues(); std::vector::iterator itView = pageViews.begin(); std::string result; - int selRefType = 0; //invalidRef; - if (m_subs.size() == 1) { - selRefType = TechDraw::DrawViewDimension::getRefType1(m_subs[0]); - } else { - selRefType = TechDraw::DrawViewDimension::getRefType2(m_subs[0],m_subs[1]); - } + int selRefType = TechDraw::DrawViewDimension::getRefTypeSubElements(m_subs); int found = 0; for (; itView != pageViews.end(); itView++) { if ((*itView)->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp index a23d30fa62..cdfe743492 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2014 Joe Dowsett * - * Copyright (c) 2014 Luke Parry * + * Copyright (c) 2014 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * @@ -75,8 +75,8 @@ TaskProjGroup::TaskProjGroup(TechDraw::DrawProjGroup* featView, bool mode) : setFractionalScale(multiView->getScale()); ui->cmbScaleType->setCurrentIndex(multiView->ScaleType.getValue()); - - //Allow or prevent scale changing initially + + //Allow or prevent scale changing initially if (multiView->ScaleType.isValue("Custom")) { ui->sbScaleNum->setEnabled(true); ui->sbScaleDen->setEnabled(true); @@ -170,7 +170,7 @@ void TaskProjGroup::restoreGroupState() Base::Console().Message("TPG::restoreGroupState()\n"); if (multiView != nullptr) { multiView->ProjectionType.setValue(m_saveProjType.c_str()); - multiView->ScaleType.setValue(m_saveScaleType.c_str()); + multiView->ScaleType.setValue(m_saveScaleType.c_str()); multiView->Scale.setValue(m_saveScale); multiView->AutoDistribute.setValue(m_saveAutoDistribute); multiView->spacingX.setValue(m_saveSpacingX); @@ -224,7 +224,7 @@ void TaskProjGroup::rotateButtonClicked(void) multiView->rotateRight(); } else if ( clicked == ui->butLeftRotate) { multiView->rotateLeft(); - } else if ( clicked == ui->butCWRotate ) { + } else if ( clicked == ui->butCWRotate ) { multiView->spinCW(); } else if ( clicked == ui->butCCWRotate) { multiView->spinCCW(); @@ -257,7 +257,7 @@ void TaskProjGroup::scaleTypeChanged(int index) if (blockUpdate) return; - //defaults to prevent scale changing + //defaults to prevent scale changing ui->sbScaleNum->setEnabled(false); ui->sbScaleDen->setEnabled(false); diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.h b/src/Mod/TechDraw/Gui/TaskProjGroup.h index 0f50bfdd74..f38103b185 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.h +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2011 Joe Dowsett * - * Copyright (c) 2014 Luke Parry * + * Copyright (c) 2014 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * @@ -143,7 +143,7 @@ public: const ViewProviderProjGroup * getViewProvider() const { return viewProvider; } TechDraw::DrawProjGroup * getMultiView() const { return multiView; } - + virtual QDialogButtonBox::StandardButtons getStandardButtons() const { return QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel; } virtual void modifyStandardButtons(QDialogButtonBox* box); diff --git a/src/Mod/TechDraw/Gui/TaskRichAnno.cpp b/src/Mod/TechDraw/Gui/TaskRichAnno.cpp index 88c3fd8f5e..313a8e71fb 100644 --- a/src/Mod/TechDraw/Gui/TaskRichAnno.cpp +++ b/src/Mod/TechDraw/Gui/TaskRichAnno.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -108,7 +108,7 @@ TaskRichAnno::TaskRichAnno(TechDrawGui::ViewProviderRichAnno* annoVP) : return; } - //m_baseFeat can be null + //m_baseFeat can be null App::DocumentObject* obj = m_annoFeat->AnnoParent.getValue(); if (obj != nullptr) { if ( obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) { @@ -123,7 +123,7 @@ TaskRichAnno::TaskRichAnno(TechDrawGui::ViewProviderRichAnno* annoVP) : m_mdi = dvp->getMDIViewPage(); m_qgParent = nullptr; m_haveMdi = true; - if (m_mdi != nullptr) { + if (m_mdi != nullptr) { m_view = m_mdi->getQGVPage(); if (m_baseFeat != nullptr) { m_qgParent = m_view->findQViewForDocObj(m_baseFeat); @@ -183,7 +183,7 @@ TaskRichAnno::TaskRichAnno(TechDraw::DrawView* baseFeat, m_qgParent = nullptr; m_haveMdi = true; m_mdi = dvp->getMDIViewPage(); - if (m_mdi != nullptr) { + if (m_mdi != nullptr) { m_view = m_mdi->getQGVPage(); if (baseFeat != nullptr) { m_qgParent = m_view->findQViewForDocObj(baseFeat); @@ -244,7 +244,7 @@ void TaskRichAnno::setUiPrimary() #endif } -void TaskRichAnno::enableTextUi(bool b) +void TaskRichAnno::enableTextUi(bool b) { ui->pbEditor->setEnabled(b); ui->teAnnoText->setEnabled(b); @@ -266,7 +266,7 @@ void TaskRichAnno::setUiEdit() enableVPUi(true); setWindowTitle(m_title); enableTextUi(true); - + if (m_annoFeat != nullptr) { std::string baseName("None"); App::DocumentObject* docObj = m_annoFeat->AnnoParent.getValue(); @@ -333,8 +333,8 @@ void TaskRichAnno::onEditorExit(void) double TaskRichAnno::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Graphic"); delete lg; //Coverity CID 174670 return weight; @@ -355,7 +355,7 @@ void TaskRichAnno::createAnnoFeature() std::string PageName = m_basePage->getNameInDocument(); - Gui::Command::openCommand("Create Anno"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create Anno")); Command::doCommand(Command::Doc,"App.activeDocument().addObject('%s','%s')", annoType.c_str(),annoName.c_str()); Command::doCommand(Command::Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)", @@ -414,7 +414,7 @@ void TaskRichAnno::createAnnoFeature() void TaskRichAnno::updateAnnoFeature() { // Base::Console().Message("TRA::updateAnnoFeature()\n"); - Gui::Command::openCommand("Edit Anno"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit Anno")); commonFeatureUpdate(); App::Color ac; ac.setValue(ui->cpFrameColor->color()); @@ -430,7 +430,7 @@ void TaskRichAnno::commonFeatureUpdate(void) { // Base::Console().Message("TRA::commonFeatureUpdate()\n"); m_annoFeat->setPosition(Rez::appX(m_attachPoint.x),Rez::appX(- m_attachPoint.y), true); - m_annoFeat->AnnoText.setValue(ui->teAnnoText->toHtml().toUtf8()); + m_annoFeat->AnnoText.setValue(ui->teAnnoText->toHtml().toUtf8()); m_annoFeat->MaxWidth.setValue(ui->dsbMaxWidth->value().getValue()); m_annoFeat->ShowFrame.setValue(ui->cbShowFrame->isChecked()); } @@ -565,7 +565,7 @@ bool TaskRichAnno::reject() // Base::Console().Message("TRA::reject - edit in progress!!\n"); return false; } - + if (m_basePage != nullptr) { Gui::Document* doc = Gui::Application::Instance->getDocument(m_basePage->getDocument()); if (!doc) { @@ -577,7 +577,7 @@ bool TaskRichAnno::reject() } } - //make sure any dangling objects are cleaned up + //make sure any dangling objects are cleaned up Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.cpp b/src/Mod/TechDraw/Gui/TaskSectionView.cpp index fe1eb91099..33b09df208 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.cpp +++ b/src/Mod/TechDraw/Gui/TaskSectionView.cpp @@ -352,7 +352,7 @@ bool TaskSectionView::apply(void) void TaskSectionView::applyQuick(std::string dir) { // Base::Console().Message("TSV::applyQuick(%s)\n", dir.c_str()); - Gui::Command::openCommand("Apply Quick"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Apply Quick")); m_dirName = dir; if (m_section == nullptr) { createSectionView(); @@ -378,7 +378,7 @@ void TaskSectionView::applyQuick(std::string dir) void TaskSectionView::applyAligned(void) { Base::Console().Message("TSV::applyAligned() - not implemented yet\n"); - Gui::Command::openCommand("Apply Aligned"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Apply Aligned")); m_dirName = "Aligned"; //fiddle with directions here @@ -401,7 +401,7 @@ void TaskSectionView::createSectionView(void) std::string baseName = m_base->getNameInDocument(); double baseScale = m_base->getScale(); - Gui::Command::openCommand("Create SectionView"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create SectionView")); if (m_section == nullptr) { m_sectionName = m_base->getDocument()->getUniqueObjectName("SectionView"); std::string sectionType = "TechDraw::DrawViewSection"; diff --git a/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp b/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp index af3b2f06b9..9952a12bdf 100644 --- a/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp +++ b/src/Mod/TechDraw/Gui/TaskWeldingSymbol.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2019 Wandererfan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -132,7 +132,7 @@ TaskWeldingSymbol::TaskWeldingSymbol(TechDraw::DrawWeldSymbol* weld) : Base::Console().Error("TaskWeldingSymbol - bad parameters. Can not proceed.\n"); return; } - + App::DocumentObject* obj = m_weldFeat->Leader.getValue(); if ( (obj != nullptr) && (obj->isDerivedFrom(TechDraw::DrawLeaderLine::getClassTypeId())) ) { @@ -429,7 +429,7 @@ void TaskWeldingSymbol::onDirectorySelected(const QString& newDir) void TaskWeldingSymbol::onSymbolSelected(QString symbolPath, QString source) { -// Base::Console().Message("TWS::onSymbolSelected(%s) - source: %s\n", +// Base::Console().Message("TWS::onSymbolSelected(%s) - source: %s\n", // qPrintable(symbolPath), qPrintable(source)); QIcon targetIcon(symbolPath); QSize iconSize(32,32); @@ -483,12 +483,12 @@ void TaskWeldingSymbol::getTileFeats(void) std::vector tiles = m_weldFeat->getTiles(); m_arrowFeat = nullptr; m_otherFeat = nullptr; - + if (!tiles.empty()) { TechDraw::DrawTileWeld* tempTile = tiles.at(0); if (tempTile->TileRow.getValue() == 0) { m_arrowFeat = tempTile; - } else { + } else { m_otherFeat = tempTile; } } @@ -496,7 +496,7 @@ void TaskWeldingSymbol::getTileFeats(void) TechDraw::DrawTileWeld* tempTile = tiles.at(1); if (tempTile->TileRow.getValue() == 0) { m_arrowFeat = tempTile; - } else { + } else { m_otherFeat = tempTile; } } @@ -506,7 +506,7 @@ void TaskWeldingSymbol::getTileFeats(void) TechDraw::DrawWeldSymbol* TaskWeldingSymbol::createWeldingSymbol(void) { // Base::Console().Message("TWS::createWeldingSymbol()\n"); - + std::string symbolName = m_leadFeat->getDocument()->getUniqueObjectName("WeldSymbol"); std::string symbolType = "TechDraw::DrawWeldSymbol"; @@ -650,7 +650,7 @@ bool TaskWeldingSymbol::accept() { // Base::Console().Message("TWS::accept()\n"); if (m_createMode) { - Gui::Command::openCommand("Create WeldSymbol"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Create WeldSymbol")); m_weldFeat = createWeldingSymbol(); updateTiles(); Gui::Command::updateActive(); @@ -658,7 +658,7 @@ bool TaskWeldingSymbol::accept() m_weldFeat->recomputeFeature(); // m_weldFeat->requestPaint(); //not a dv! } else { - Gui::Command::openCommand("Edit WeldSymbol"); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Edit WeldSymbol")); try { updateWeldingSymbol(); updateTiles(); @@ -680,7 +680,7 @@ bool TaskWeldingSymbol::accept() bool TaskWeldingSymbol::reject() { // Base::Console().Message("TWS::reject()\n"); - //nothing to remove. + //nothing to remove. Gui::Command::doCommand(Gui::Command::Gui,"App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()"); diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.cpp b/src/Mod/TechDraw/Gui/TemplateTextField.cpp index 4f0d751815..a141935e2f 100644 --- a/src/Mod/TechDraw/Gui/TemplateTextField.cpp +++ b/src/Mod/TechDraw/Gui/TemplateTextField.cpp @@ -66,7 +66,7 @@ void TemplateTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) ui.setFieldContent(tmplte->EditableTexts[fieldNameStr]); if (ui.exec() == QDialog::Accepted) { - //WF: why is this escaped? + //WF: why is this escaped? // "<" is converted elsewhere and no other characters cause problems. // escaping causes "&" to appear as "&" etc //#if QT_VERSION >= 0x050000 diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index e7ad512ce5..f88dbb6f09 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -70,13 +70,13 @@ ViewProviderBalloon::ViewProviderBalloon() ADD_PROPERTY_TYPE(Font,(Preferences::labelFont().c_str()),group,App::Prop_None, "The name of the font to use"); ADD_PROPERTY_TYPE(Fontsize,(Preferences::dimFontSizeMM()), group,(App::PropertyType)(App::Prop_None),"Balloon text size in units"); - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 ADD_PROPERTY_TYPE(LineWidth,(weight),group,(App::PropertyType)(App::Prop_None),"Leader line width"); - ADD_PROPERTY_TYPE(Color,(PreferencesGui::dimColor()), + ADD_PROPERTY_TYPE(Color,(PreferencesGui::dimColor()), group,App::Prop_None,"Color of the balloon"); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index ed429f6802..adc0940ae2 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -167,12 +167,12 @@ TechDraw::DrawViewDimension* ViewProviderDimension::getViewObject() const } App::Color ViewProviderDimension::prefColor() const -{ +{ return PreferencesGui::dimColor(); } std::string ViewProviderDimension::prefFont() const -{ +{ return Preferences::labelFont(); } @@ -183,8 +183,8 @@ double ViewProviderDimension::prefFontSize() const double ViewProviderDimension::prefWeight() const { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return weight; diff --git a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp index 53bee35a91..7f8adc1165 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2004 Jürgen Riegel * - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -186,8 +186,8 @@ void ViewProviderGeomHatch::updateGraphic(void) void ViewProviderGeomHatch::getParameters(void) { - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Graphic"); delete lg; //Coverity CID 174667 WeightPattern.setValue(weight); diff --git a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.h b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.h index 929d73b734..1b5ae16a0a 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.h +++ b/src/Mod/TechDraw/Gui/ViewProviderGeomHatch.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2004 Jürgen Riegel * - * Copyright (c) 2017 Wandererfan * + * Copyright (c) 2017 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp b/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp index 09aeba1fd8..b1a0266623 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderHatch.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2004 Jürgen Riegel * - * Copyright (c) 2015 Wandererfan * + * Copyright (c) 2015 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderHatch.h b/src/Mod/TechDraw/Gui/ViewProviderHatch.h index 07062c0107..cbe9947d3f 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderHatch.h +++ b/src/Mod/TechDraw/Gui/ViewProviderHatch.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2004 Jürgen Riegel * - * Copyright (c) 2015 Wandererfan * + * Copyright (c) 2015 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * @@ -62,7 +62,7 @@ public: TechDraw::DrawHatch* getViewObject() const; virtual Gui::MDIView *getMDIView() const override; - + private: static App::PropertyFloatConstraint::Constraints scaleRange; diff --git a/src/Mod/TechDraw/Gui/ViewProviderImage.cpp b/src/Mod/TechDraw/Gui/ViewProviderImage.cpp index d482790773..7f24b81bad 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderImage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderImage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderImage.h b/src/Mod/TechDraw/Gui/ViewProviderImage.h index ea40cbb0d8..9a60c7d2f4 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderImage.h +++ b/src/Mod/TechDraw/Gui/ViewProviderImage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 WandererFan (wandererfan@gmail.com) * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp index 3e4755eb84..434e89a189 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp @@ -200,8 +200,8 @@ TechDraw::DrawLeaderLine* ViewProviderLeader::getFeature() const double ViewProviderLeader::getDefLineWeight(void) { double result = 0.0; - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); result = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 return result; diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 2fe978b40e..524df6912a 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2004 Jürgen Riegel * - * Copyright (c) 2012 Luke Parry * + * Copyright (c) 2012 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * @@ -179,18 +179,18 @@ void ViewProviderPage::updateData(const App::Property* prop) signalChangeIcon(); //if the template is changed, rebuild the visual } else if (prop == &(page->Template)) { - if (m_mdiView && + if (m_mdiView && !page->isUnsetting()) { m_mdiView->matchSceneRectToTemplate(); m_mdiView->updateTemplate(); } } else if (prop == &(page->Label)) { - if (m_mdiView && + if (m_mdiView && !page->isUnsetting()) { m_mdiView->setTabText(page->Label.getValue()); } } else if (prop == &page->Views) { - if (m_mdiView && !page->isUnsetting()) + if (m_mdiView && !page->isUnsetting()) m_mdiView->fixOrphans(); } @@ -232,7 +232,7 @@ bool ViewProviderPage::onDelete(const std::vector &) qApp->translate("Std_Delete", "Object dependencies"), bodyMessage, QMessageBox::Yes, QMessageBox::No); if (DialogResult == QMessageBox::Yes) { - removeMDIView(); + removeMDIView(); return true; } else return false; @@ -328,7 +328,7 @@ std::vector ViewProviderPage::claimChildren(void) const // DrawViewDimension // DrawViewBalloon // DrawLeaderLine - // DrawRichAnno + // DrawRichAnno // any FeatuerView in a DrawViewClip // DrawHatch // DrawWeldSymbol @@ -476,7 +476,7 @@ bool ViewProviderPage::canDelete(App::DocumentObject *obj) const } //! Redo the whole visual page -void ViewProviderPage::onGuiRepaint(const TechDraw::DrawPage* dp) +void ViewProviderPage::onGuiRepaint(const TechDraw::DrawPage* dp) { if (dp == getDrawPage()) { if (!m_mdiView.isNull() && diff --git a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp index 6581226794..c857da2fd0 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2013 Luke Parry * + * Copyright (c) 2013 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * @@ -161,7 +161,7 @@ bool ViewProviderProjGroup::onDelete(const std::vector &) // get the items in the group auto objs = claimChildren(); - + // iterate over all item to check which ones have a section or detail view for (auto ObjectIterator : objs) { // get item diff --git a/src/Mod/TechDraw/Gui/ViewProviderProjGroupItem.cpp b/src/Mod/TechDraw/Gui/ViewProviderProjGroupItem.cpp index 49a4329dd7..e7f2de4421 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderProjGroupItem.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderProjGroupItem.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2014 Luke Parry * + * Copyright (c) 2014 Luke Parry * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp index a81a2711ad..63e4ea828d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp @@ -189,8 +189,8 @@ double ViewProviderRichAnno::getDefFontSize() double ViewProviderRichAnno::getDefLineWeight(void) { double result = 0.0; - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); result = lg->getWeight("Graphics"); delete lg; return result; diff --git a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp index f14d20c860..a8f2b1beab 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h index 885abb0e86..0ee43c0ac0 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h +++ b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2016 wandererfan * + * Copyright (c) 2016 WandererFan * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index b583a5b7fc..052f891d53 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -88,8 +88,8 @@ ViewProviderViewPart::ViewProviderViewPart() static const char *hgroup = "Highlight"; //default line weights - std::string lgName = Preferences::lineGroup(); - auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); + int lgNumber = Preferences::lineGroup(); + auto lg = TechDraw::LineGroup::lineGroupFactory(lgNumber); double weight = lg->getWeight("Thick"); ADD_PROPERTY_TYPE(LineWidth,(weight),group,App::Prop_None,"The thickness of visible lines (line groups xx.2"); diff --git a/src/Mod/TechDraw/Gui/Workbench.cpp b/src/Mod/TechDraw/Gui/Workbench.cpp index a314a304a7..17b095bd9c 100644 --- a/src/Mod/TechDraw/Gui/Workbench.cpp +++ b/src/Mod/TechDraw/Gui/Workbench.cpp @@ -53,29 +53,39 @@ Gui::MenuItem* Workbench::setupMenuBar() const // dimensions Gui::MenuItem* dimensions = new Gui::MenuItem; dimensions->setCommand("Dimensions"); - *dimensions << "TechDraw_LengthDimension" << "TechDraw_HorizontalDimension" << "TechDraw_VerticalDimension" - << "TechDraw_RadiusDimension" << "TechDraw_DiameterDimension" << "TechDraw_AngleDimension" - << "TechDraw_HorizontalExtentDimension" << "TechDraw_VerticalExtentDimension" << "TechDraw_LinkDimension" - << "TechDraw_LandmarkDimension" -; + *dimensions << "TechDraw_LengthDimension"; + *dimensions << "TechDraw_HorizontalDimension"; + *dimensions << "TechDraw_VerticalDimension"; + *dimensions << "TechDraw_RadiusDimension"; + *dimensions << "TechDraw_DiameterDimension"; + *dimensions << "TechDraw_AngleDimension"; + *dimensions << "TechDraw_HorizontalExtentDimension"; + *dimensions << "TechDraw_VerticalExtentDimension"; + *dimensions << "TechDraw_LinkDimension"; + *dimensions << "TechDraw_LandmarkDimension"; // annotations Gui::MenuItem* annotations = new Gui::MenuItem; annotations->setCommand("Annotations"); - *annotations << "TechDraw_Annotation" << "TechDraw_RichTextAnnotation" << "TechDraw_Balloon"; + *annotations << "TechDraw_Annotation"; + *annotations << "TechDraw_RichTextAnnotation"; + *annotations << "TechDraw_Balloon"; // lines Gui::MenuItem* lines = new Gui::MenuItem; lines->setCommand("Add Lines"); - *lines << "TechDraw_LeaderLine" << "TechDraw_FaceCenterLine" - << "TechDraw_2LineCenterLine" << "TechDraw_2PointCenterLine"; + *lines << "TechDraw_LeaderLine"; + *lines << "TechDraw_FaceCenterLine"; + *lines << "TechDraw_2LineCenterLine"; + *lines << "TechDraw_2PointCenterLine"; *lines << "TechDraw_2PointCosmeticLine"; // vertices Gui::MenuItem* vertices = new Gui::MenuItem; vertices->setCommand("Add Vertices"); - *vertices << "TechDraw_CosmeticVertex" << "TechDraw_Midpoints" - << "TechDraw_Quadrants"; + *vertices << "TechDraw_CosmeticVertex"; + *vertices << "TechDraw_Midpoints"; + *vertices << "TechDraw_Quadrants"; // main menu draw->setCommand("TechDraw"); diff --git a/src/Mod/TechDraw/Gui/mrichtextedit.cpp b/src/Mod/TechDraw/Gui/mrichtextedit.cpp index 9ea19fc268..4274d37daa 100644 --- a/src/Mod/TechDraw/Gui/mrichtextedit.cpp +++ b/src/Mod/TechDraw/Gui/mrichtextedit.cpp @@ -355,7 +355,8 @@ void MRichTextEdit::textLink(bool checked) { QString newUrl = QInputDialog::getText(this, tr("Create a link"), tr("Link URL:"), QLineEdit::Normal, url, - &ok); + &ok, + Qt::MSWindowsFixedSizeDialogHint); if (ok) { fmt.setAnchor(true); fmt.setAnchorHref(newUrl); diff --git a/src/Mod/TechDraw/Init.py b/src/Mod/TechDraw/Init.py index 4a21cb375e..041dbd7820 100644 --- a/src/Mod/TechDraw/Init.py +++ b/src/Mod/TechDraw/Init.py @@ -1,8 +1,5 @@ -# FreeCAD init script of the TechDraw module -# (c) 2001 Juergen Riegel - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2002 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -22,7 +19,8 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ +# FreeCAD init script of the TechDraw module + FreeCAD.__unit_test__ += [ "TestTechDrawApp" ] diff --git a/src/Mod/TechDraw/InitGui.py b/src/Mod/TechDraw/InitGui.py index 072eee4000..a57eb1b2fc 100644 --- a/src/Mod/TechDraw/InitGui.py +++ b/src/Mod/TechDraw/InitGui.py @@ -1,12 +1,5 @@ -# TechDraw gui init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** -#* (c) 2002 Juergen Riegel * +#* Copyright (c) 2002,2003 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -26,9 +19,14 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ +# TechDraw gui init module +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up + class TechDrawWorkbench (Workbench): "Technical Drawing workbench object" diff --git a/src/Mod/TechDraw/TestTechDrawApp.py b/src/Mod/TechDraw/TestTechDrawApp.py index 743b0e6fd8..0fef944903 100644 --- a/src/Mod/TechDraw/TestTechDrawApp.py +++ b/src/Mod/TechDraw/TestTechDrawApp.py @@ -1,3 +1,4 @@ +#************************************************************************** # Copyright (c) 2015 WandererFan * # * # This file is part of the FreeCAD CAx development system. * diff --git a/src/Mod/TechDraw/moveViews.py b/src/Mod/TechDraw/moveViews.py index 08cd01c37a..443cf3f5bf 100644 --- a/src/Mod/TechDraw/moveViews.py +++ b/src/Mod/TechDraw/moveViews.py @@ -1,10 +1,32 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +#************************************************************************** +# Copyright (c) 2018 WandererFan * +# * +# This file is part of the FreeCAD CAx development system. * +# * +# 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. * +# * +# 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 Library General Public License for more details. * +# * +# You should have received a copy of the GNU Library General Public * +# License along with FreeCAD; if not, write to the Free Software * +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# USA * +#************************************************************************** -# move Views from Drawing Page to TechDraw Page in the current document -# usage: select 1 Drawing Page and 1 TechDraw Page, run moveViews macro -# outcome: Content of Drawing Page will be inserted into TechDraw Page as DrawViewSymbol -# (ie an SVG symbol) +# Name: moveView macro +# About: move Views from Drawing Page to TechDraw Page in the current doc +# Usage: select 1 Drawing Page and 1 TechDraw Page, run moveViews macro +# Outcome: Content of Drawing Page will be inserted into TechDraw Page as +# DrawViewSymbol (ie an SVG symbol) import FreeCAD import FreeCADGui diff --git a/src/Mod/Test/BaseTests.py b/src/Mod/Test/BaseTests.py index ffc7cb364b..d7bdd0c7a4 100644 --- a/src/Mod/Test/BaseTests.py +++ b/src/Mod/Test/BaseTests.py @@ -1,5 +1,5 @@ #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2004 * +#* Copyright (c) 2004 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -10,16 +10,15 @@ #* for detail see the LICENCE text file. * #* * #* FreeCAD is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* 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 FreeCAD; if not, write to the Free Software * +#* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2004 * #***************************************************************************/ import FreeCAD, os, unittest, tempfile, math @@ -105,7 +104,7 @@ class ConsoleTestCase(unittest.TestCase): class ParameterTestCase(unittest.TestCase): def setUp(self): self.TestPar = FreeCAD.ParamGet("System parameter:Test") - + def testGroup(self): #FreeCAD.Console.PrintLog("Base::ParameterTestCase::testGroup\n") # check on Group creation @@ -116,7 +115,7 @@ class ParameterTestCase(unittest.TestCase): self.failUnless(self.TestPar.HasGroup("44"),"A referenced group must not be deleted") Temp = 0 - #check on special conditions + # check on special conditions def testInt(self): #FreeCAD.Console.PrintLog("Base::ParameterTestCase::testInt\n") #Temp = FreeCAD.ParamGet("System parameter:Test/44") @@ -126,7 +125,7 @@ class ParameterTestCase(unittest.TestCase): # check on Deletion self.TestPar.RemInt("44") self.failUnless(self.TestPar.GetInt("44",1) == 1,"Deletion error at Int") - + def testBool(self): #FreeCAD.Console.PrintLog("Base::ParameterTestCase::testBool\n") @@ -263,7 +262,7 @@ class ParameterTestCase(unittest.TestCase): Temp.SetInt(str(l),4711) Temp.SetBool(str(l),1) Temp = 0 - + def testExportImport(self): # Parameter testing #FreeCAD.Console.PrintLog("Base::ParameterTestCase::testNesting\n") @@ -283,7 +282,7 @@ class ParameterTestCase(unittest.TestCase): Temp.Import(TempPath) self.failUnless(Temp.GetFloat("ExTest") == 4711.4711,"ExportImport error") Temp = 0 - + def tearDown(self): #remove all TestPar = FreeCAD.ParamGet("System parameter:Test") diff --git a/src/Mod/Test/Document.py b/src/Mod/Test/Document.py index 2dacc4f23a..0f285314b6 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -1,5 +1,5 @@ #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2003 * +#* Copyright (c) 2003 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -19,7 +19,6 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2003 * #***************************************************************************/ import FreeCAD, os, unittest, tempfile @@ -1416,28 +1415,28 @@ class DocumentExpressionCases(unittest.TestCase): class DocumentObserverCases(unittest.TestCase): class Observer(): - + def __init__(self): self.signal = [] self.parameter = [] self.parameter2 = [] - + def slotCreatedDocument(self, doc): self.signal.append('DocCreated'); self.parameter.append(doc); - + def slotDeletedDocument(self, doc): self.signal.append('DocDeleted'); self.parameter.append(doc); - + def slotRelabelDocument(self, doc): self.signal.append('DocRelabled'); self.parameter.append(doc); - + def slotActivateDocument(self, doc): self.signal.append('DocActivated'); self.parameter.append(doc); - + def slotRecomputedDocument(self, doc): self.signal.append('DocRecomputed'); self.parameter.append(doc); @@ -1445,7 +1444,7 @@ class DocumentObserverCases(unittest.TestCase): def slotUndoDocument(self, doc): self.signal.append('DocUndo'); self.parameter.append(doc); - + def slotRedoDocument(self, doc): self.signal.append('DocRedo'); self.parameter.append(doc); @@ -1454,25 +1453,25 @@ class DocumentObserverCases(unittest.TestCase): self.signal.append('DocOpenTransaction'); self.parameter.append(doc); self.parameter2.append(name); - + def slotCommitTransaction(self, doc): self.signal.append('DocCommitTransaction'); self.parameter.append(doc); - + def slotAbortTransaction(self, doc): self.signal.append('DocAbortTransaction'); self.parameter.append(doc); - + def slotBeforeChangeDocument(self, doc, prop): self.signal.append('DocBeforeChange') self.parameter.append(doc) self.parameter2.append(prop) - + def slotChangedDocument(self, doc, prop): self.signal.append('DocChanged') self.parameter.append(doc) self.parameter2.append(prop) - + def slotCreatedObject(self, obj): self.signal.append('ObjCreated'); self.parameter.append(obj); @@ -1485,7 +1484,7 @@ class DocumentObserverCases(unittest.TestCase): self.signal.append('ObjChanged'); self.parameter.append(obj) self.parameter2.append(prop) - + def slotBeforeChangeObject(self, obj, prop): self.signal.append('ObjBeforeChange'); self.parameter.append(obj) @@ -1494,17 +1493,17 @@ class DocumentObserverCases(unittest.TestCase): def slotRecomputedObject(self, obj): self.signal.append('ObjRecomputed'); self.parameter.append(obj) - + def slotAppendDynamicProperty(self, obj, prop): self.signal.append('ObjAddDynProp'); self.parameter.append(obj) self.parameter2.append(prop) - + def slotRemoveDynamicProperty(self, obj, prop): self.signal.append('ObjRemoveDynProp'); self.parameter.append(obj) self.parameter2.append(prop) - + def slotChangePropertyEditor(self, obj, prop): self.signal.append('ObjChangePropEdit'); self.parameter.append(obj) @@ -1519,44 +1518,44 @@ class DocumentObserverCases(unittest.TestCase): self.signal.append('DocFinishSave') self.parameter.append(obj) self.parameter2.append(name) - + def slotBeforeAddingDynamicExtension(self, obj, extension): self.signal.append('ObjBeforeDynExt') self.parameter.append(obj) self.parameter2.append(extension) - + def slotAddedDynamicExtension(self, obj, extension): self.signal.append('ObjDynExt') self.parameter.append(obj) self.parameter2.append(extension) class GuiObserver(): - + def __init__(self): self.signal = [] self.parameter = [] self.parameter2 = [] - + def slotCreatedDocument(self, doc): self.signal.append('DocCreated'); self.parameter.append(doc); - + def slotDeletedDocument(self, doc): self.signal.append('DocDeleted'); self.parameter.append(doc); - + def slotRelabelDocument(self, doc): self.signal.append('DocRelabled'); self.parameter.append(doc); - + def slotRenameDocument(self, doc): self.signal.append('DocRenamed'); self.parameter.append(doc); - + def slotActivateDocument(self, doc): self.signal.append('DocActivated'); self.parameter.append(doc); - + def slotCreatedObject(self, obj): self.signal.append('ObjCreated'); self.parameter.append(obj); @@ -1569,15 +1568,15 @@ class DocumentObserverCases(unittest.TestCase): self.signal.append('ObjChanged'); self.parameter.append(obj) self.parameter2.append(prop) - + def slotInEdit(self, obj): self.signal.append('ObjInEdit'); - self.parameter.append(obj) - + self.parameter.append(obj) + def slotResetEdit(self, obj): self.signal.append('ObjResetEdit'); - self.parameter.append(obj) - + self.parameter.append(obj) + def setUp(self): self.Obs = self.Observer(); FreeCAD.addDocumentObserver(self.Obs); @@ -1612,7 +1611,7 @@ class DocumentObserverCases(unittest.TestCase): return # testing document level signals - self.Doc1 = FreeCAD.newDocument("Observer1"); + self.Doc1 = FreeCAD.newDocument("Observer1"); if FreeCAD.GuiUp: self.assertEqual(self.Obs.signal.pop(0), 'DocActivated') self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1) @@ -1627,7 +1626,7 @@ class DocumentObserverCases(unittest.TestCase): self.assertEqual(self.Obs.signal.pop(0), 'DocRelabled') self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1) self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + self.Doc2 = FreeCAD.newDocument("Observer2"); if FreeCAD.GuiUp: self.assertEqual(self.Obs.signal.pop(0), 'DocActivated') @@ -1643,7 +1642,7 @@ class DocumentObserverCases(unittest.TestCase): self.assertEqual(self.Obs.signal.pop(0), 'DocRelabled') self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2) self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + FreeCAD.setActiveDocument('Observer1') self.assertEqual(self.Obs.signal.pop(), 'DocActivated') self.assertTrue(self.Obs.parameter.pop() is self.Doc1) @@ -1651,7 +1650,7 @@ class DocumentObserverCases(unittest.TestCase): #undo/redo is not enabled in cmd line mode by default self.Doc2.UndoMode = 1 - + # Must set Doc2 as active document before start transaction test. If not, # then a transaction will be auto created inside the active document if a # new transaction is triggered from a non active document @@ -1671,12 +1670,12 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + self.Doc2.commitTransaction() self.assertEqual(self.Obs.signal.pop(), 'DocCommitTransaction') self.assertTrue(self.Obs.parameter.pop() is self.Doc2) self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + self.Doc2.openTransaction('test2') # openTransaction() now only setup pending transaction, which will only be # created when there is actual change @@ -1689,7 +1688,7 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + self.Doc2.abortTransaction() self.assertEqual(self.Obs.signal.pop(), 'DocAbortTransaction') self.assertTrue(self.Obs.parameter.pop() is self.Doc2) @@ -1697,7 +1696,7 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + self.Doc2.undo() self.assertEqual(self.Obs.signal.pop(), 'DocUndo') self.assertTrue(self.Obs.parameter.pop() is self.Doc2) @@ -1705,7 +1704,7 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + self.Doc2.redo() self.assertEqual(self.Obs.signal.pop(), 'DocRedo') self.assertTrue(self.Obs.parameter.pop() is self.Doc2) @@ -1713,7 +1712,7 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + self.Doc1.Comment = 'test comment' self.assertEqual(self.Obs.signal.pop(0), 'DocBeforeChange') self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1) @@ -1721,7 +1720,7 @@ class DocumentObserverCases(unittest.TestCase): self.assertEqual(self.Obs.signal.pop(0), 'DocChanged') self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1) self.assertEqual(self.Obs.parameter2.pop(0), 'Comment') - + FreeCAD.closeDocument(self.Doc2.Name) self.assertEqual(self.Obs.signal.pop(), 'DocDeleted') self.assertTrue(self.Obs.parameter.pop() is self.Doc2) @@ -1735,15 +1734,15 @@ class DocumentObserverCases(unittest.TestCase): self.assertEqual(self.Obs.signal.pop(), 'DocDeleted') self.assertEqual(self.Obs.parameter.pop(), self.Doc1) self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + def testObject(self): #testing signal on object changes - + self.Doc1 = FreeCAD.newDocument("Observer1") self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + obj = self.Doc1.addObject("App::DocumentObject","obj") self.failUnless(self.Obs.signal.pop() == 'ObjCreated') self.failUnless(self.Obs.parameter.pop() is obj) @@ -1751,7 +1750,7 @@ class DocumentObserverCases(unittest.TestCase): self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + obj.Label = "myobj" self.failUnless(self.Obs.signal.pop(0) == 'ObjBeforeChange') self.failUnless(self.Obs.parameter.pop(0) is obj) @@ -1760,13 +1759,13 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.Obs.parameter.pop(0) is obj) self.failUnless(self.Obs.parameter2.pop(0) == "Label") self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + obj.enforceRecompute() obj.recompute() self.failUnless(self.Obs.signal.pop(0) == 'ObjRecomputed') self.failUnless(self.Obs.parameter.pop(0) is obj) self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + obj.enforceRecompute() self.Doc1.recompute() self.failUnless(self.Obs.signal.pop(0) == 'ObjRecomputed') @@ -1774,12 +1773,12 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.Obs.signal.pop(0) == 'DocRecomputed') self.failUnless(self.Obs.parameter.pop(0) is self.Doc1) self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + FreeCAD.ActiveDocument.removeObject(obj.Name) self.failUnless(self.Obs.signal.pop(0) == 'ObjDeleted') self.failUnless(self.Obs.parameter.pop(0) is obj) self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + pyobj = self.Doc1.addObject("App::FeaturePython","pyobj") self.Obs.signal = [] self.Obs.parameter = [] @@ -1789,19 +1788,19 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.Obs.parameter.pop() is pyobj) self.failUnless(self.Obs.parameter2.pop() == 'Prop') self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + pyobj.setEditorMode('Prop', ['ReadOnly']) self.failUnless(self.Obs.signal.pop() == 'ObjChangePropEdit') self.failUnless(self.Obs.parameter.pop() is pyobj) self.failUnless(self.Obs.parameter2.pop() == 'Prop') self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + pyobj.removeProperty('Prop') self.failUnless(self.Obs.signal.pop() == 'ObjRemoveDynProp') self.failUnless(self.Obs.parameter.pop() is pyobj) self.failUnless(self.Obs.parameter2.pop() == 'Prop') self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + pyobj.addExtension("App::GroupExtensionPython", None) self.failUnless(self.Obs.signal.pop() == 'ObjDynExt') self.failUnless(self.Obs.parameter.pop() is pyobj) @@ -1809,38 +1808,38 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.Obs.signal.pop(0) == 'ObjBeforeDynExt') self.failUnless(self.Obs.parameter.pop(0) is pyobj) self.failUnless(self.Obs.parameter2.pop(0) == 'App::GroupExtensionPython') - #a proxy property was changed, hence those events are also in the signal list + #a proxy property was changed, hence those events are also in the signal list self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + FreeCAD.closeDocument(self.Doc1.Name) self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + def testUndoDisabledDocument(self): # testing document level signals - self.Doc1 = FreeCAD.newDocument("Observer1"); + self.Doc1 = FreeCAD.newDocument("Observer1"); self.Doc1.UndoMode = 0 self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - - self.Doc1.openTransaction('test') + + self.Doc1.openTransaction('test') self.Doc1.commitTransaction() self.Doc1.undo() - self.Doc1.redo() + self.Doc1.redo() self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) - + FreeCAD.closeDocument(self.Doc1.Name) self.Obs.signal = [] self.Obs.parameter = [] self.Obs.parameter2 = [] - + def testGuiObserver(self): - + if not FreeCAD.GuiUp: return @@ -1863,7 +1862,7 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.GuiObs.signal.pop(0) == 'DocRelabled') self.failUnless(self.GuiObs.parameter.pop(0) is self.GuiDoc1) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + self.Doc1.Label = "test" self.failUnless(self.Obs.signal.pop() == 'DocRelabled') self.failUnless(self.Obs.parameter.pop() is self.Doc1) @@ -1874,7 +1873,7 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.GuiObs.signal.pop(0) == 'DocRelabled') self.failUnless(self.GuiObs.parameter.pop(0) is self.GuiDoc1) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + FreeCAD.setActiveDocument(self.Doc1.Name) self.failUnless(self.Obs.signal.pop() == 'DocActivated') self.failUnless(self.Obs.parameter.pop() is self.Doc1) @@ -1882,14 +1881,14 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.GuiObs.signal.pop() == 'DocActivated') self.failUnless(self.GuiObs.parameter.pop() is self.GuiDoc1) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + obj = self.Doc1.addObject("App::FeaturePython","obj") self.failUnless(self.Obs.signal.pop() == 'ObjCreated') self.failUnless(self.Obs.parameter.pop() is obj) #there are multiple object change signals self.Obs.signal = [] self.Obs.parameter = [] - self.Obs.parameter2 = [] + self.Obs.parameter2 = [] self.failUnless(self.GuiObs.signal.pop() == "ObjCreated") self.failUnless(self.GuiObs.parameter.pop() is obj.ViewObject) @@ -1910,21 +1909,21 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.GuiObs.parameter.pop(0) is obj.ViewObject) self.failUnless(self.GuiObs.parameter2.pop(0) == "Visibility") self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + obj.ViewObject.addProperty("App::PropertyLength","Prop","Group","test property") self.failUnless(self.Obs.signal.pop() == 'ObjAddDynProp') self.failUnless(self.Obs.parameter.pop() is obj.ViewObject) self.failUnless(self.Obs.parameter2.pop() == 'Prop') self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + obj.ViewObject.setEditorMode('Prop', ['ReadOnly']) self.failUnless(self.Obs.signal.pop() == 'ObjChangePropEdit') self.failUnless(self.Obs.parameter.pop() is obj.ViewObject) self.failUnless(self.Obs.parameter2.pop() == 'Prop') self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + obj.ViewObject.removeProperty('Prop') self.failUnless(self.Obs.signal.pop() == 'ObjRemoveDynProp') self.failUnless(self.Obs.parameter.pop() is obj.ViewObject) @@ -1943,7 +1942,7 @@ class DocumentObserverCases(unittest.TestCase): self.failUnless(self.GuiObs.signal.pop(0) == 'ObjResetEdit') self.failUnless(self.GuiObs.parameter.pop(0) is obj.ViewObject) self.failUnless(not self.GuiObs.signal and not self.GuiObs.parameter and not self.GuiObs.parameter2) - + obj.ViewObject.addExtension("Gui::ViewProviderGroupExtensionPython", None) self.failUnless(self.Obs.signal.pop() == 'ObjDynExt') self.failUnless(self.Obs.parameter.pop() is obj.ViewObject) @@ -1955,7 +1954,7 @@ class DocumentObserverCases(unittest.TestCase): self.GuiObs.signal = [] self.GuiObs.parameter = [] self.GuiObs.parameter2 = [] - + vo = obj.ViewObject FreeCAD.ActiveDocument.removeObject(obj.Name) self.failUnless(self.Obs.signal.pop(0) == 'ObjDeleted') diff --git a/src/Mod/Test/Gui/AppTestGui.cpp b/src/Mod/Test/Gui/AppTestGui.cpp index 277569aef9..f8c90e45f6 100644 --- a/src/Mod/Test/Gui/AppTestGui.cpp +++ b/src/Mod/Test/Gui/AppTestGui.cpp @@ -45,7 +45,7 @@ public: add_varargs_method("addTest",&Module::addTest,"addTest"); initialize("This module is the QtUnitGui module"); // register with Python } - + virtual ~Module() {} private: diff --git a/src/Mod/Test/Gui/PreCompiled.cpp b/src/Mod/Test/Gui/PreCompiled.cpp index 8dd161cbfd..285f33c03f 100644 --- a/src/Mod/Test/Gui/PreCompiled.cpp +++ b/src/Mod/Test/Gui/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Test/Gui/PreCompiled.h b/src/Mod/Test/Gui/PreCompiled.h index 44a04de6ad..a916e52897 100644 --- a/src/Mod/Test/Gui/PreCompiled.h +++ b/src/Mod/Test/Gui/PreCompiled.h @@ -70,4 +70,4 @@ #endif //_PreComp_ -#endif // __PRECOMPILED_GUI__ +#endif // __PRECOMPILED_GUI__ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_af.qm b/src/Mod/Test/Gui/Resources/translations/Test_af.qm index a96afd7098..5ef199f718 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_af.qm and b/src/Mod/Test/Gui/Resources/translations/Test_af.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ar.qm b/src/Mod/Test/Gui/Resources/translations/Test_ar.qm index f46252a3a3..04a7b370a6 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ar.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ar.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ca.qm b/src/Mod/Test/Gui/Resources/translations/Test_ca.qm index 1818a7dafe..265990f49c 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ca.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ca.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_cs.qm b/src/Mod/Test/Gui/Resources/translations/Test_cs.qm index 261bf7a5d6..bc70b32bbc 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_cs.qm and b/src/Mod/Test/Gui/Resources/translations/Test_cs.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_de.qm b/src/Mod/Test/Gui/Resources/translations/Test_de.qm index 5524b0dd22..c4d76a96a8 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_de.qm and b/src/Mod/Test/Gui/Resources/translations/Test_de.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_el.qm b/src/Mod/Test/Gui/Resources/translations/Test_el.qm index bfc6c8db88..351354dfea 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_el.qm and b/src/Mod/Test/Gui/Resources/translations/Test_el.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_es-ES.qm b/src/Mod/Test/Gui/Resources/translations/Test_es-ES.qm index 749c577e9c..120f52fd0f 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_es-ES.qm and b/src/Mod/Test/Gui/Resources/translations/Test_es-ES.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_eu.qm b/src/Mod/Test/Gui/Resources/translations/Test_eu.qm index 5990a6d073..24183519b3 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_eu.qm and b/src/Mod/Test/Gui/Resources/translations/Test_eu.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_eu.ts b/src/Mod/Test/Gui/Resources/translations/Test_eu.ts index 91524d2b48..f14d8e861b 100644 --- a/src/Mod/Test/Gui/Resources/translations/Test_eu.ts +++ b/src/Mod/Test/Gui/Resources/translations/Test_eu.ts @@ -86,7 +86,7 @@ Run: - Exekutatu: + Distantzia: diff --git a/src/Mod/Test/Gui/Resources/translations/Test_fi.qm b/src/Mod/Test/Gui/Resources/translations/Test_fi.qm index 2bde703af0..735681de19 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_fi.qm and b/src/Mod/Test/Gui/Resources/translations/Test_fi.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_fil.qm b/src/Mod/Test/Gui/Resources/translations/Test_fil.qm index 94cc8dba53..b5c5921764 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_fil.qm and b/src/Mod/Test/Gui/Resources/translations/Test_fil.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_fr.qm b/src/Mod/Test/Gui/Resources/translations/Test_fr.qm index 7946e375c7..2e7dfe7836 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_fr.qm and b/src/Mod/Test/Gui/Resources/translations/Test_fr.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_gl.qm b/src/Mod/Test/Gui/Resources/translations/Test_gl.qm index ddce251c33..235f11eb6f 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_gl.qm and b/src/Mod/Test/Gui/Resources/translations/Test_gl.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_hr.qm b/src/Mod/Test/Gui/Resources/translations/Test_hr.qm index 723ff32dc3..77d1005694 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_hr.qm and b/src/Mod/Test/Gui/Resources/translations/Test_hr.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_hu.qm b/src/Mod/Test/Gui/Resources/translations/Test_hu.qm index fefc8141a7..6a4f33521d 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_hu.qm and b/src/Mod/Test/Gui/Resources/translations/Test_hu.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_id.qm b/src/Mod/Test/Gui/Resources/translations/Test_id.qm index 5fc7399498..079ffef4e4 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_id.qm and b/src/Mod/Test/Gui/Resources/translations/Test_id.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_it.qm b/src/Mod/Test/Gui/Resources/translations/Test_it.qm index 07a01e2e31..a1132dfe04 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_it.qm and b/src/Mod/Test/Gui/Resources/translations/Test_it.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ja.qm b/src/Mod/Test/Gui/Resources/translations/Test_ja.qm index 218d62079d..696665fa23 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ja.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ja.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_kab.qm b/src/Mod/Test/Gui/Resources/translations/Test_kab.qm index 6fa5188c36..91a1f98f5d 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_kab.qm and b/src/Mod/Test/Gui/Resources/translations/Test_kab.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ko.qm b/src/Mod/Test/Gui/Resources/translations/Test_ko.qm index f93cea3e66..2f41ddc6a0 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ko.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ko.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_lt.qm b/src/Mod/Test/Gui/Resources/translations/Test_lt.qm index ec9d2ccc65..8d57647364 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_lt.qm and b/src/Mod/Test/Gui/Resources/translations/Test_lt.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_nl.qm b/src/Mod/Test/Gui/Resources/translations/Test_nl.qm index 5f6d6e6cb6..8cce4b0872 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_nl.qm and b/src/Mod/Test/Gui/Resources/translations/Test_nl.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_no.qm b/src/Mod/Test/Gui/Resources/translations/Test_no.qm index 1034825cdf..4880b82964 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_no.qm and b/src/Mod/Test/Gui/Resources/translations/Test_no.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_pl.qm b/src/Mod/Test/Gui/Resources/translations/Test_pl.qm index 96040c55b1..c5726caf58 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_pl.qm and b/src/Mod/Test/Gui/Resources/translations/Test_pl.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_pt-BR.qm b/src/Mod/Test/Gui/Resources/translations/Test_pt-BR.qm index c7a98b4bb7..2b2f40f34d 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_pt-BR.qm and b/src/Mod/Test/Gui/Resources/translations/Test_pt-BR.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_pt-PT.qm b/src/Mod/Test/Gui/Resources/translations/Test_pt-PT.qm index a08f94e519..da9f0d6884 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_pt-PT.qm and b/src/Mod/Test/Gui/Resources/translations/Test_pt-PT.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ro.qm b/src/Mod/Test/Gui/Resources/translations/Test_ro.qm index 7ab55747dc..6494f11fd2 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ro.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ro.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_ru.qm b/src/Mod/Test/Gui/Resources/translations/Test_ru.qm index d11228ce79..39e4e91619 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_ru.qm and b/src/Mod/Test/Gui/Resources/translations/Test_ru.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_sk.qm b/src/Mod/Test/Gui/Resources/translations/Test_sk.qm index dfd3eaa903..b3bad8e02e 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_sk.qm and b/src/Mod/Test/Gui/Resources/translations/Test_sk.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_sl.qm b/src/Mod/Test/Gui/Resources/translations/Test_sl.qm index 6d3ae96f4e..9220c12abf 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_sl.qm and b/src/Mod/Test/Gui/Resources/translations/Test_sl.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_sr.qm b/src/Mod/Test/Gui/Resources/translations/Test_sr.qm index e8ae7b0be8..08bca8529a 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_sr.qm and b/src/Mod/Test/Gui/Resources/translations/Test_sr.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_sv-SE.qm b/src/Mod/Test/Gui/Resources/translations/Test_sv-SE.qm index 26d41551db..dabcae446f 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_sv-SE.qm and b/src/Mod/Test/Gui/Resources/translations/Test_sv-SE.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_tr.qm b/src/Mod/Test/Gui/Resources/translations/Test_tr.qm index c90265f368..bffbc458cf 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_tr.qm and b/src/Mod/Test/Gui/Resources/translations/Test_tr.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_uk.qm b/src/Mod/Test/Gui/Resources/translations/Test_uk.qm index ef30c97d3c..7501174682 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_uk.qm and b/src/Mod/Test/Gui/Resources/translations/Test_uk.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_val-ES.qm b/src/Mod/Test/Gui/Resources/translations/Test_val-ES.qm index abe6b23540..ea08749289 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_val-ES.qm and b/src/Mod/Test/Gui/Resources/translations/Test_val-ES.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_vi.qm b/src/Mod/Test/Gui/Resources/translations/Test_vi.qm index b15bb45af8..766399c5c3 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_vi.qm and b/src/Mod/Test/Gui/Resources/translations/Test_vi.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_zh-CN.qm b/src/Mod/Test/Gui/Resources/translations/Test_zh-CN.qm index 8daa49ecc3..8c784e70b8 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_zh-CN.qm and b/src/Mod/Test/Gui/Resources/translations/Test_zh-CN.qm differ diff --git a/src/Mod/Test/Gui/Resources/translations/Test_zh-TW.qm b/src/Mod/Test/Gui/Resources/translations/Test_zh-TW.qm index 476749fd3c..a88c44353d 100644 Binary files a/src/Mod/Test/Gui/Resources/translations/Test_zh-TW.qm and b/src/Mod/Test/Gui/Resources/translations/Test_zh-TW.qm differ diff --git a/src/Mod/Test/Gui/UnitTestImp.cpp b/src/Mod/Test/Gui/UnitTestImp.cpp index 0855c93742..aa7f4298c5 100644 --- a/src/Mod/Test/Gui/UnitTestImp.cpp +++ b/src/Mod/Test/Gui/UnitTestImp.cpp @@ -173,7 +173,7 @@ void UnitTestDialog::on_helpButton_clicked() */ void UnitTestDialog::on_aboutButton_clicked() { - QMessageBox::information(this, tr("About FreeCAD UnitTest"), tr( + QMessageBox::information(this, tr("About FreeCAD UnitTest"), tr( "Copyright (c) Werner Mayer\n\n" "FreeCAD UnitTest is part of FreeCAD and supports writing Unit Tests for " "ones own modules.")); @@ -291,7 +291,7 @@ void UnitTestDialog::setStatusText(const QString& text) /** * Sets the progress of the progress bar whereas fraction is in between 0.0 and 1.0. - * It also sets the color of the progress bar to red if a failure or error in the unit + * It also sets the color of the progress bar to red if a failure or error in the unit * test occurred. */ void UnitTestDialog::setProgressFraction(float fraction, const QString& color) diff --git a/src/Mod/Test/Gui/qtunittest.py b/src/Mod/Test/Gui/qtunittest.py index 5dd674d114..b6412dca59 100755 --- a/src/Mod/Test/Gui/qtunittest.py +++ b/src/Mod/Test/Gui/qtunittest.py @@ -1,9 +1,5 @@ -# Qt Unit test module -# (c) 2006 Werner Mayer -# - #*************************************************************************** -#* (c) Werner Mayer 2006 * +#* Copyright (c) 2006 Werner Mayer * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -22,10 +18,10 @@ #* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * -#* * -#* Werner Mayer 2006 * #***************************************************************************/ +# Qt Unit test module + __author__ = "Werner Mayer (werner.wm.mayer@gmx.de)" import string @@ -161,7 +157,7 @@ class RollbackImporter: """ def __init__(self): self.previousModules = sys.modules.copy() - + def rollbackImports(self): for modname in sys.modules.keys(): if modname not in self.previousModules: diff --git a/src/Mod/Test/Init.py b/src/Mod/Test/Init.py index 1a249c7d2b..f9d3759960 100644 --- a/src/Mod/Test/Init.py +++ b/src/Mod/Test/Init.py @@ -1,8 +1,5 @@ -# FreeCAD init script of the test module -# (c) 2001 Juergen Riegel - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2001,2002 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -22,9 +19,10 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ +# FreeCAD init script of the test module + # Base system tests FreeCAD.__unit_test__ += [ "BaseTests", "UnitTests", diff --git a/src/Mod/Test/InitGui.py b/src/Mod/Test/InitGui.py index ddee8219ea..cbb18f8588 100644 --- a/src/Mod/Test/InitGui.py +++ b/src/Mod/Test/InitGui.py @@ -1,9 +1,5 @@ -# Test gui init module -# (c) 2003 Juergen Riegel -# - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2002,2003 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -23,10 +19,9 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ - +# Test gui init module class TestWorkbench ( Workbench ): "Test workbench object" diff --git a/src/Mod/Test/Menu.py b/src/Mod/Test/Menu.py index c37a803497..d24585a2dc 100644 --- a/src/Mod/Test/Menu.py +++ b/src/Mod/Test/Menu.py @@ -1,9 +1,5 @@ -# Menu test module -# (c) 2005 Werner Mayer -# - #*************************************************************************** -#* (c) Werner Mayer 2005 * +#* Copyright (c) 2005 Werner Mayer * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -26,6 +22,8 @@ #* Werner Mayer 2005 * #***************************************************************************/ +# Menu test module + import FreeCAD, os, unittest, FreeCADGui diff --git a/src/Mod/Test/TestApp.py b/src/Mod/Test/TestApp.py index ab09b13cb4..74f00a4619 100644 --- a/src/Mod/Test/TestApp.py +++ b/src/Mod/Test/TestApp.py @@ -1,5 +1,5 @@ #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2002 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -19,7 +19,6 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ import FreeCAD @@ -70,7 +69,7 @@ def TestText(s): r = unittest.TextTestRunner(stream=sys.stdout, verbosity=2) retval = r.run(s) # Flushing to make sure the stream is written to the console - # before the wrapping process stops executing. Without this line + # before the wrapping process stops executing. Without this line # executing the tests from command line did not show stats # and proper tarceback in some cases. sys.stdout.flush() diff --git a/src/Mod/Test/TestGui.py b/src/Mod/Test/TestGui.py index f36a19774c..ab745a7205 100644 --- a/src/Mod/Test/TestGui.py +++ b/src/Mod/Test/TestGui.py @@ -1,10 +1,5 @@ -# FreeCAD Part module -# (c) 2001 Juergen Riegel -# -# Part design module - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2001,2002 Juergen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -24,9 +19,12 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ +# FreeCAD Part module +# +# Part design module + # import FreeCAD modules import FreeCAD,FreeCADGui # import the App Test module diff --git a/src/Mod/Test/TestPythonSyntax.py b/src/Mod/Test/TestPythonSyntax.py index f305366898..b57cd287c6 100644 --- a/src/Mod/Test/TestPythonSyntax.py +++ b/src/Mod/Test/TestPythonSyntax.py @@ -1,3 +1,27 @@ +#*************************************************************************** +#* Copyright (c) 2018 looooo * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* 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. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#***************************************************************************/ + + import sys import os import ast @@ -37,7 +61,7 @@ class PythonSyntaxTestCase(unittest.TestCase): self.whitelist += ["automotive_design.py"] self.whitelist += ["ifc2x3.py"] self.whitelist += ["ifc4.py"] - + def testAll(self): mod_dir = os.path.join(App.getHomePath(), "Mod") diff --git a/src/Mod/Test/UnicodeTests.py b/src/Mod/Test/UnicodeTests.py index b20ad99991..6d505d057c 100644 --- a/src/Mod/Test/UnicodeTests.py +++ b/src/Mod/Test/UnicodeTests.py @@ -1,5 +1,26 @@ # -*- coding: utf-8 -*- -# (c) Juergen Riegel (juergen.riegel@web.de) 2007 LGPL +#*************************************************************************** +#* Copyright (c) 2007 Juergen Riegel * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* 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. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#***************************************************************************/ # Open and edit only in UTF-8 !!!!!! @@ -29,9 +50,9 @@ class DocumentSaveRestoreCases(unittest.TestCase): self.Doc = FreeCAD.newDocument("SaveRestoreTests") L1 = self.Doc.addObject("App::FeatureTest","Label_1") L1.Label = u"हिन्दी" - self.TempPath = tempfile.gettempdir() + self.TempPath = tempfile.gettempdir() FreeCAD.Console.PrintLog( ' Using temp path: ' + self.TempPath + '\n') - + def testSaveAndRestore(self): # saving and restoring SaveName = self.TempPath + os.sep + "UnicodeTest.FCStd" @@ -41,10 +62,10 @@ class DocumentSaveRestoreCases(unittest.TestCase): self.failUnless(self.Doc.Label_1.Label == u"हिन्दी") FreeCAD.closeDocument("UnicodeTest") FreeCAD.newDocument("SaveRestoreTests") - - + + def tearDown(self): #closing doc FreeCAD.closeDocument("SaveRestoreTests") - + diff --git a/src/Mod/Test/UnitTests.py b/src/Mod/Test/UnitTests.py index 48b1b9ef75..5b896da80f 100644 --- a/src/Mod/Test/UnitTests.py +++ b/src/Mod/Test/UnitTests.py @@ -1,4 +1,26 @@ -# (c) Juergen Riegel (juergen.riegel@web.de) 20010 LGPL +# -*- coding: utf-8 -*- +#*************************************************************************** +#* Copyright (c) 2010 Juergen Riegel * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* 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. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#***************************************************************************/ import FreeCAD import unittest diff --git a/src/Mod/Test/Workbench.py b/src/Mod/Test/Workbench.py index 2e7a40c2c5..bd5d1723e4 100755 --- a/src/Mod/Test/Workbench.py +++ b/src/Mod/Test/Workbench.py @@ -1,9 +1,5 @@ -# Workbench test module -# (c) 2006 Werner Mayer -# - #*************************************************************************** -#* (c) Werner Mayer 2006 * +#* Copyright (c) 2006 Werner Mayer * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -23,9 +19,10 @@ #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Werner Mayer 2006 * #***************************************************************************/ +# Workbench test module + import FreeCAD, FreeCADGui, os, unittest class WorkbenchTestCase(unittest.TestCase): diff --git a/src/Mod/Test/test.dox b/src/Mod/Test/test.dox index 3acfd21a30..cdc546a174 100644 --- a/src/Mod/Test/test.dox +++ b/src/Mod/Test/test.dox @@ -1,5 +1,8 @@ /** \defgroup TEST Test - * \ingroup CWORKBENCHES + * \ingroup CWORKBENCHES * \brief Test framework of FreeCAD + +See \ref src/Mod/Draft/draft.dox for example on how to populate a .dox file. + */ diff --git a/src/Mod/Test/testPathArray.py b/src/Mod/Test/testPathArray.py index dabd0c1352..327748e45c 100644 --- a/src/Mod/Test/testPathArray.py +++ b/src/Mod/Test/testPathArray.py @@ -1,9 +1,31 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +#*************************************************************************** +#* Copyright (c) 2013 WandererFan * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* 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. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#***************************************************************************/ -# tester for Draft makePathArray - shapes on a path - without subelements (see testPathArraySel.py) +# Tester for Draft makePathArray - shapes on a path - without subelements (see testPathArraySel.py) # Usage: in FC gui, select a "shape" document object (sphere, box, etc) (!!select in -# tree, not document view!!), then a "wire" document object (Wire, Circle, Rectangle, +# tree, not document view!!), then a "wire" document object (Wire, Circle, Rectangle, # DWire, etc) then run this macro. import FreeCAD @@ -16,7 +38,7 @@ items = 4 # count centretrans = FreeCAD.Vector(0,0,0) # no translation #centretrans = FreeCAD.Vector(-5,-5,0) # translation orient = True # align to curve -#orient = False # don't align to curve +#orient = False # don't align to curve s = FreeCADGui.Selection.getSelection() print("testPathArray: Objects in selection: ", len(s)) @@ -24,12 +46,9 @@ print("First object in selection is a: ", s[0].Shape.ShapeType) print("Second object in selection is a: ", s[1].Shape.ShapeType) base = s[0] path = s[1] -pathsubs = [] +pathsubs = [] -#o = Draft.makePathArray(base,path,items) # test with defaults -o = Draft.makePathArray(base,path,items,centretrans,orient,pathsubs) # test with non-defaults +#o = Draft.makePathArray(base,path,items) # test with defaults +o = Draft.makePathArray(base,path,items,centretrans,orient,pathsubs) # test with non-defaults print("testPathArray ended") - - - diff --git a/src/Mod/Test/testPathArraySel.py b/src/Mod/Test/testPathArraySel.py index b6a27975f4..9cfbd572be 100644 --- a/src/Mod/Test/testPathArraySel.py +++ b/src/Mod/Test/testPathArraySel.py @@ -1,7 +1,29 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +#*************************************************************************** +#* Copyright (c) 2013 WandererFan * +#* * +#* This file is part of the FreeCAD CAx development system. * +#* * +#* 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. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with FreeCAD; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#***************************************************************************/ -# tester for Draft makePathArray - shapes on a path - with selected subobjects +# Tester for Draft makePathArray - shapes on a path - with selected subobjects # Usage: in FC gui, select a "shape" document object (sphere, box, etc) (!select in # tree, not document view!!), then select edges from the "wire" object. diff --git a/src/Mod/Test/testmakeWireString.py b/src/Mod/Test/testmakeWireString.py index 717bccccbb..325d4a2447 100644 --- a/src/Mod/Test/testmakeWireString.py +++ b/src/Mod/Test/testmakeWireString.py @@ -1,5 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +# *************************************************************************** +# * Copyright (c) 2013 WandererFan * +# * * +# * This file is part of the FreeCAD CAx development system. * +# * * +# * 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 * +# * * +# *************************************************************************** + # tester for Part.makeWireString @@ -9,38 +32,38 @@ import PartDesign print("testWire started") -# test strings -# if string contains funky characters, it has to be declared as Unicode or it +# test strings +# if string contains funky characters, it has to be declared as Unicode or it # turns into the default encoding (usually utf8). FT2 doesn't do utf8. #String = 'Wide WMA_' # wide glyphs for tracking #String = 'Big' -#String = u'ecAnO' # UCS-2 w/ only ASCII -#String = u'ucs2uéçÄñØ' # UCS-2 -#String = 'utf8!uéçÄñØ' # UTF-8 +#String = u'ecAnO' # UCS-2 w/ only ASCII +#String = u'ucs2uéçÄñØ' # UCS-2 +#String = 'utf8!uéçÄñØ' # UTF-8 #String = 'abcdefghijklmnopqrstuvwxyz0123456789' #String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' -#String = 'Big Daddy' # white space -#String = 'AVWAIXA.V' # kerning -String = 'FreeCAD' # ASCII +#String = 'Big Daddy' # white space +#String = 'AVWAIXA.V' # kerning +String = 'FreeCAD' # ASCII -#FontPath = '/usr/share/fonts/truetype/msttcorefonts/' -#FontName = 'Times_New_Roman_Italic.ttf' +#FontPath = '/usr/share/fonts/truetype/msttcorefonts/' +#FontName = 'Times_New_Roman_Italic.ttf' FontPath = '/usr/share/fonts/truetype/msttcorefonts/' -FontName = 'Arial.ttf' -#FontName = 'NOTArial.ttf' # font file not found error -#FontPath = '/usr/share/fonts/truetype/msttcorefonts/' -#FontName = 'ariali.ttf' #symlink to ttf -#FontPath = '/usr/share/fonts/truetype/' +FontName = 'Arial.ttf' +#FontName = 'NOTArial.ttf' # font file not found error +#FontPath = '/usr/share/fonts/truetype/msttcorefonts/' +#FontName = 'ariali.ttf' # symlink to ttf +#FontPath = '/usr/share/fonts/truetype/' #FontName = 'Peterbuilt.ttf' # overlapping script font -#FontPath = '/usr/share/fonts/truetype/' +#FontPath = '/usr/share/fonts/truetype/' #FontName = 'dyspepsia.ttf' # overlapping script font # :) Height = 2000 # out string height FCunits Track = 0 # intercharacter spacing - + print("testWire.py input String contains ", len(String), " characters.") - -s = Part.makeWireString(String,FontPath,FontName,Height,Track) + +s = Part.makeWireString(String,FontPath,FontName,Height,Track) print("returned from makeWireString") print("testWire.py output contains ", len(s), " WireChars.") @@ -48,5 +71,5 @@ print("testWire.py output contains ", len(s), " WireChars.") for char in s: for contour in char: Part.show(contour) - + print("testWire ended.") diff --git a/src/Mod/Tux/Resources/translations/Tux_af.qm b/src/Mod/Tux/Resources/translations/Tux_af.qm index 48f6728313..044f098f43 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_af.qm and b/src/Mod/Tux/Resources/translations/Tux_af.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ar.qm b/src/Mod/Tux/Resources/translations/Tux_ar.qm index 0edf4f63f2..bdfc3d2d4f 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ar.qm and b/src/Mod/Tux/Resources/translations/Tux_ar.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ca.qm b/src/Mod/Tux/Resources/translations/Tux_ca.qm index f6c4824dc3..bef3c0a645 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ca.qm and b/src/Mod/Tux/Resources/translations/Tux_ca.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_cs.qm b/src/Mod/Tux/Resources/translations/Tux_cs.qm index 1197c9d241..6db5a7c600 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_cs.qm and b/src/Mod/Tux/Resources/translations/Tux_cs.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_de.qm b/src/Mod/Tux/Resources/translations/Tux_de.qm index 7e0420c38d..ed070f985c 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_de.qm and b/src/Mod/Tux/Resources/translations/Tux_de.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_el.qm b/src/Mod/Tux/Resources/translations/Tux_el.qm index 9924b30ec6..416640cf85 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_el.qm and b/src/Mod/Tux/Resources/translations/Tux_el.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_es-ES.qm b/src/Mod/Tux/Resources/translations/Tux_es-ES.qm index 50c0e2f38f..57ff307fd3 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_eu.qm b/src/Mod/Tux/Resources/translations/Tux_eu.qm index d683ebb743..08aadc596f 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_eu.qm and b/src/Mod/Tux/Resources/translations/Tux_eu.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_fi.qm b/src/Mod/Tux/Resources/translations/Tux_fi.qm index bbb77711b4..a101a29d5d 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_fi.qm and b/src/Mod/Tux/Resources/translations/Tux_fi.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_fil.qm b/src/Mod/Tux/Resources/translations/Tux_fil.qm index 30377b3b73..ce11af9e47 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_fil.qm and b/src/Mod/Tux/Resources/translations/Tux_fil.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_fr.qm b/src/Mod/Tux/Resources/translations/Tux_fr.qm index 1aaf186976..b8b8a1f468 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_gl.qm b/src/Mod/Tux/Resources/translations/Tux_gl.qm index aec5f3241b..3d3cd929ff 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_gl.qm and b/src/Mod/Tux/Resources/translations/Tux_gl.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_hr.qm b/src/Mod/Tux/Resources/translations/Tux_hr.qm index f58c7189f8..503b3f141f 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_hr.qm and b/src/Mod/Tux/Resources/translations/Tux_hr.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_hu.qm b/src/Mod/Tux/Resources/translations/Tux_hu.qm index 94e85ba915..02c710bf13 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_hu.qm and b/src/Mod/Tux/Resources/translations/Tux_hu.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_id.qm b/src/Mod/Tux/Resources/translations/Tux_id.qm index 31fc9b91a0..d91123ca9b 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_id.qm and b/src/Mod/Tux/Resources/translations/Tux_id.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_it.qm b/src/Mod/Tux/Resources/translations/Tux_it.qm index 5238377894..d1fdc720cf 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_it.qm and b/src/Mod/Tux/Resources/translations/Tux_it.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ja.qm b/src/Mod/Tux/Resources/translations/Tux_ja.qm index bbdfa88b9c..4bd70c22a9 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ja.qm and b/src/Mod/Tux/Resources/translations/Tux_ja.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_kab.qm b/src/Mod/Tux/Resources/translations/Tux_kab.qm index 10c6b39433..522f0185ed 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_kab.qm and b/src/Mod/Tux/Resources/translations/Tux_kab.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ko.qm b/src/Mod/Tux/Resources/translations/Tux_ko.qm index 9c9be12f34..cb66442993 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ko.qm and b/src/Mod/Tux/Resources/translations/Tux_ko.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_lt.qm b/src/Mod/Tux/Resources/translations/Tux_lt.qm index f8f3282bd0..8435dc704d 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_lt.qm and b/src/Mod/Tux/Resources/translations/Tux_lt.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_nl.qm b/src/Mod/Tux/Resources/translations/Tux_nl.qm index 9d1806753f..26dc1a865d 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_nl.qm and b/src/Mod/Tux/Resources/translations/Tux_nl.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_no.qm b/src/Mod/Tux/Resources/translations/Tux_no.qm index 6b894d30e2..33c409cb3c 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_no.qm and b/src/Mod/Tux/Resources/translations/Tux_no.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_pl.qm b/src/Mod/Tux/Resources/translations/Tux_pl.qm index 37dfbb290a..2831d671dc 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_pl.qm and b/src/Mod/Tux/Resources/translations/Tux_pl.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_pt-BR.qm b/src/Mod/Tux/Resources/translations/Tux_pt-BR.qm index 1238976aae..6a6d484f1c 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_pt-BR.qm and b/src/Mod/Tux/Resources/translations/Tux_pt-BR.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_pt-PT.qm b/src/Mod/Tux/Resources/translations/Tux_pt-PT.qm index 45a99fe44e..a148b501e0 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_pt-PT.qm and b/src/Mod/Tux/Resources/translations/Tux_pt-PT.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ro.qm b/src/Mod/Tux/Resources/translations/Tux_ro.qm index 9e02ca6988..d43fad4018 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ro.qm and b/src/Mod/Tux/Resources/translations/Tux_ro.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_ru.qm b/src/Mod/Tux/Resources/translations/Tux_ru.qm index faa02f25f4..87a5726978 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_ru.qm and b/src/Mod/Tux/Resources/translations/Tux_ru.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_sk.qm b/src/Mod/Tux/Resources/translations/Tux_sk.qm index ec8dcab3c0..5af7f9c7fc 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_sk.qm and b/src/Mod/Tux/Resources/translations/Tux_sk.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_sl.qm b/src/Mod/Tux/Resources/translations/Tux_sl.qm index 3581531ff1..4c9de70463 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_sl.qm and b/src/Mod/Tux/Resources/translations/Tux_sl.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_sr.qm b/src/Mod/Tux/Resources/translations/Tux_sr.qm index 5de182a525..3041f008f7 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_sr.qm and b/src/Mod/Tux/Resources/translations/Tux_sr.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_sr.ts b/src/Mod/Tux/Resources/translations/Tux_sr.ts index 7082606805..2ae7d2f8e0 100644 --- a/src/Mod/Tux/Resources/translations/Tux_sr.ts +++ b/src/Mod/Tux/Resources/translations/Tux_sr.ts @@ -11,7 +11,7 @@ Zoom - Zoom + Приближити @@ -21,37 +21,37 @@ Pan - Pan + Померити Tilt - Tilt + Нагнути Navigation style - Navigation style + Стил навигације Page Up or Page Down key. - Page Up or Page Down key. + Page Up или Page Down дугме. Rotation focus - Rotation focus + Фокус ротације Middle mouse button. - Middle mouse button. + Средње дугме миша. Navigation style not recognized. - Navigation style not recognized. + Стил навигације није препознат. @@ -66,12 +66,12 @@ Compact - Compact + Компактно Tooltip - Tooltip + Објашњење @@ -91,7 +91,7 @@ Middle mouse button or H key. - Middle mouse button or H key. + Средње дугме миша или H дугме. diff --git a/src/Mod/Tux/Resources/translations/Tux_sv-SE.qm b/src/Mod/Tux/Resources/translations/Tux_sv-SE.qm index 1b65511a66..f6d1165f0b 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_sv-SE.qm and b/src/Mod/Tux/Resources/translations/Tux_sv-SE.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_tr.qm b/src/Mod/Tux/Resources/translations/Tux_tr.qm index ec9c2a0c30..38adee962a 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_tr.qm and b/src/Mod/Tux/Resources/translations/Tux_tr.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_uk.qm b/src/Mod/Tux/Resources/translations/Tux_uk.qm index 81043e6c25..b81cffac08 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_uk.qm and b/src/Mod/Tux/Resources/translations/Tux_uk.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_val-ES.qm b/src/Mod/Tux/Resources/translations/Tux_val-ES.qm index 5948658f6e..794721616b 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_val-ES.qm and b/src/Mod/Tux/Resources/translations/Tux_val-ES.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_vi.qm b/src/Mod/Tux/Resources/translations/Tux_vi.qm index 3638ee449e..88ea9b3eb0 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_vi.qm and b/src/Mod/Tux/Resources/translations/Tux_vi.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_zh-CN.qm b/src/Mod/Tux/Resources/translations/Tux_zh-CN.qm index 7a1ea64e3f..db6cdd2f86 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_zh-CN.qm and b/src/Mod/Tux/Resources/translations/Tux_zh-CN.qm differ diff --git a/src/Mod/Tux/Resources/translations/Tux_zh-TW.qm b/src/Mod/Tux/Resources/translations/Tux_zh-TW.qm index 8bad014088..750264e75f 100644 Binary files a/src/Mod/Tux/Resources/translations/Tux_zh-TW.qm and b/src/Mod/Tux/Resources/translations/Tux_zh-TW.qm differ diff --git a/src/Mod/Web/App/PreCompiled.cpp b/src/Mod/Web/App/PreCompiled.cpp index d771f2b925..2e77e4de18 100644 --- a/src/Mod/Web/App/PreCompiled.cpp +++ b/src/Mod/Web/App/PreCompiled.cpp @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Web/App/Server.cpp b/src/Mod/Web/App/Server.cpp index 19610bb896..01624a8b6c 100644 --- a/src/Mod/Web/App/Server.cpp +++ b/src/Mod/Web/App/Server.cpp @@ -21,7 +21,7 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" #include #include diff --git a/src/Mod/Web/App/Server.h b/src/Mod/Web/App/Server.h index fb196a047a..674d402279 100644 --- a/src/Mod/Web/App/Server.h +++ b/src/Mod/Web/App/Server.h @@ -74,7 +74,7 @@ private: QByteArray text; }; -/** +/** * The Server class implements a simple TCP server. */ class AppServer : public QTcpServer diff --git a/src/Mod/Web/Gui/AppWebGui.cpp b/src/Mod/Web/Gui/AppWebGui.cpp index 016abf531e..c665318dff 100644 --- a/src/Mod/Web/Gui/AppWebGui.cpp +++ b/src/Mod/Web/Gui/AppWebGui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Web/Gui/BrowserView.cpp b/src/Mod/Web/Gui/BrowserView.cpp index a281c79f9c..c286ba8cde 100644 --- a/src/Mod/Web/Gui/BrowserView.cpp +++ b/src/Mod/Web/Gui/BrowserView.cpp @@ -544,7 +544,7 @@ void BrowserView::onLinkClicked (const QUrl & url) #if PY_MAJOR_VERSION < 3 Gui::Command::doCommand(Gui::Command::Gui,"exec(open(unicode('%s', 'utf-8')).read())",(const char*) filename.toUtf8()); #else - Gui::Command::doCommand(Gui::Command::Gui,"exec(open('%s').read())",(const char*) filename.toUtf8()); + Gui::Command::doCommand(Gui::Command::Gui,"with open('%s') as file:\n\texec(file.read())",(const char*) filename.toUtf8()); #endif } catch (const Base::Exception& e) { diff --git a/src/Mod/Web/Gui/Command.cpp b/src/Mod/Web/Gui/Command.cpp index e97429fe82..9052830378 100644 --- a/src/Mod/Web/Gui/Command.cpp +++ b/src/Mod/Web/Gui/Command.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Web/Gui/CookieJar.h b/src/Mod/Web/Gui/CookieJar.h index daba283097..d6c45ddbbe 100644 --- a/src/Mod/Web/Gui/CookieJar.h +++ b/src/Mod/Web/Gui/CookieJar.h @@ -31,22 +31,22 @@ class QNetworkCookieJar; namespace WebGui { class WebGuiExport FcCookieJar : public QNetworkCookieJar { - + Q_OBJECT - + public: FcCookieJar(QObject* parent = 0); virtual ~FcCookieJar(); virtual bool setCookiesFromUrl(const QList&, const QUrl&); - + public Q_SLOTS: void scheduleSaveToDisk(); void loadFromDisk(); void reset(); - + private Q_SLOTS: void saveToDisk(); - + private: void extractRawCookies(); QList m_rawCookies; diff --git a/src/Mod/Web/Gui/PreCompiled.cpp b/src/Mod/Web/Gui/PreCompiled.cpp index 46269e9671..7cd1cae80f 100644 --- a/src/Mod/Web/Gui/PreCompiled.cpp +++ b/src/Mod/Web/Gui/PreCompiled.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -21,4 +21,4 @@ ***************************************************************************/ -#include "PreCompiled.h" +#include "PreCompiled.h" diff --git a/src/Mod/Web/Gui/PreCompiled.h b/src/Mod/Web/Gui/PreCompiled.h index 6d2a4ee6df..8d7b8b9c5c 100644 --- a/src/Mod/Web/Gui/PreCompiled.h +++ b/src/Mod/Web/Gui/PreCompiled.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * Copyright (c) 2008 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/Mod/Web/Gui/Resources/translations/Web_af.qm b/src/Mod/Web/Gui/Resources/translations/Web_af.qm index fc8315f65e..f68f8507be 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_af.qm and b/src/Mod/Web/Gui/Resources/translations/Web_af.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ar.qm b/src/Mod/Web/Gui/Resources/translations/Web_ar.qm index abed6db639..fe8e41ccbc 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ar.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ar.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ca.qm b/src/Mod/Web/Gui/Resources/translations/Web_ca.qm index 97e2c35770..b2842488c9 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ca.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ca.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_cs.qm b/src/Mod/Web/Gui/Resources/translations/Web_cs.qm index 1657ec8195..36e1d569c6 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_cs.qm and b/src/Mod/Web/Gui/Resources/translations/Web_cs.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_de.qm b/src/Mod/Web/Gui/Resources/translations/Web_de.qm index d0257592c6..bc7aa68475 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_de.qm and b/src/Mod/Web/Gui/Resources/translations/Web_de.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_el.qm b/src/Mod/Web/Gui/Resources/translations/Web_el.qm index 8cd6443880..34bd89188d 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_el.qm and b/src/Mod/Web/Gui/Resources/translations/Web_el.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_es-ES.qm b/src/Mod/Web/Gui/Resources/translations/Web_es-ES.qm index effc1d8af4..6459310617 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_es-ES.qm and b/src/Mod/Web/Gui/Resources/translations/Web_es-ES.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_eu.qm b/src/Mod/Web/Gui/Resources/translations/Web_eu.qm index 924a4441b2..a14eff6045 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_eu.qm and b/src/Mod/Web/Gui/Resources/translations/Web_eu.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_fi.qm b/src/Mod/Web/Gui/Resources/translations/Web_fi.qm index f60f1644b7..11e39809c7 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_fi.qm and b/src/Mod/Web/Gui/Resources/translations/Web_fi.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_fil.qm b/src/Mod/Web/Gui/Resources/translations/Web_fil.qm index f94fbf376b..5af8201eca 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_fil.qm and b/src/Mod/Web/Gui/Resources/translations/Web_fil.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_fr.qm b/src/Mod/Web/Gui/Resources/translations/Web_fr.qm index f633dee36f..6c0f5b423b 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_fr.qm and b/src/Mod/Web/Gui/Resources/translations/Web_fr.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_gl.qm b/src/Mod/Web/Gui/Resources/translations/Web_gl.qm index ee78d57ca0..4f3092e0f4 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_gl.qm and b/src/Mod/Web/Gui/Resources/translations/Web_gl.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_hr.qm b/src/Mod/Web/Gui/Resources/translations/Web_hr.qm index 2906602418..65f993595e 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_hr.qm and b/src/Mod/Web/Gui/Resources/translations/Web_hr.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_hu.qm b/src/Mod/Web/Gui/Resources/translations/Web_hu.qm index 2d3f643caf..5440b6a707 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_hu.qm and b/src/Mod/Web/Gui/Resources/translations/Web_hu.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_id.qm b/src/Mod/Web/Gui/Resources/translations/Web_id.qm index 68f19f9cf3..427040dd56 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_id.qm and b/src/Mod/Web/Gui/Resources/translations/Web_id.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_it.qm b/src/Mod/Web/Gui/Resources/translations/Web_it.qm index 43414e5641..7f8c668dc9 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_it.qm and b/src/Mod/Web/Gui/Resources/translations/Web_it.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ja.qm b/src/Mod/Web/Gui/Resources/translations/Web_ja.qm index 5fb4e927c3..7debddf5b1 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ja.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ja.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_kab.qm b/src/Mod/Web/Gui/Resources/translations/Web_kab.qm index 0a51f40bd3..d64292f60f 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_kab.qm and b/src/Mod/Web/Gui/Resources/translations/Web_kab.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ko.qm b/src/Mod/Web/Gui/Resources/translations/Web_ko.qm index b2852b084d..930fe3c956 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ko.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ko.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_lt.qm b/src/Mod/Web/Gui/Resources/translations/Web_lt.qm index 252e584079..06fb8ec51f 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_lt.qm and b/src/Mod/Web/Gui/Resources/translations/Web_lt.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_nl.qm b/src/Mod/Web/Gui/Resources/translations/Web_nl.qm index 8cef82ea86..1879960a5e 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_nl.qm and b/src/Mod/Web/Gui/Resources/translations/Web_nl.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_no.qm b/src/Mod/Web/Gui/Resources/translations/Web_no.qm index 93b26dbd18..6f2f12bbc8 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_no.qm and b/src/Mod/Web/Gui/Resources/translations/Web_no.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pl.qm b/src/Mod/Web/Gui/Resources/translations/Web_pl.qm index 14239348a0..9a96b6bbb2 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_pl.qm and b/src/Mod/Web/Gui/Resources/translations/Web_pl.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.qm b/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.qm index e3946d8956..ab3a191985 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.qm and b/src/Mod/Web/Gui/Resources/translations/Web_pt-BR.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.qm b/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.qm index d742f79621..a41d2551a5 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.qm and b/src/Mod/Web/Gui/Resources/translations/Web_pt-PT.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ro.qm b/src/Mod/Web/Gui/Resources/translations/Web_ro.qm index 8e382529d9..29bc27c41f 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ro.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ro.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_ru.qm b/src/Mod/Web/Gui/Resources/translations/Web_ru.qm index ea6bf1a93c..c03241d251 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_ru.qm and b/src/Mod/Web/Gui/Resources/translations/Web_ru.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sk.qm b/src/Mod/Web/Gui/Resources/translations/Web_sk.qm index b985bd3ab3..cf517b4260 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_sk.qm and b/src/Mod/Web/Gui/Resources/translations/Web_sk.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sl.qm b/src/Mod/Web/Gui/Resources/translations/Web_sl.qm index 5e40450ab6..903d55c8e7 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_sl.qm and b/src/Mod/Web/Gui/Resources/translations/Web_sl.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sr.qm b/src/Mod/Web/Gui/Resources/translations/Web_sr.qm index a8fa74bf79..0f6700b5bc 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_sr.qm and b/src/Mod/Web/Gui/Resources/translations/Web_sr.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.qm b/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.qm index ef00108599..c84298fb11 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.qm and b/src/Mod/Web/Gui/Resources/translations/Web_sv-SE.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_tr.qm b/src/Mod/Web/Gui/Resources/translations/Web_tr.qm index 81f9a53f8b..41ffb23f18 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_tr.qm and b/src/Mod/Web/Gui/Resources/translations/Web_tr.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_uk.qm b/src/Mod/Web/Gui/Resources/translations/Web_uk.qm index d121440bfd..6da17ffd4c 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_uk.qm and b/src/Mod/Web/Gui/Resources/translations/Web_uk.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_val-ES.qm b/src/Mod/Web/Gui/Resources/translations/Web_val-ES.qm index ede98fdae4..634c8a0348 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_val-ES.qm and b/src/Mod/Web/Gui/Resources/translations/Web_val-ES.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_vi.qm b/src/Mod/Web/Gui/Resources/translations/Web_vi.qm index 35ccc2f3f1..924c871299 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_vi.qm and b/src/Mod/Web/Gui/Resources/translations/Web_vi.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.qm b/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.qm index 942562273c..4ab60d9818 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.qm and b/src/Mod/Web/Gui/Resources/translations/Web_zh-CN.qm differ diff --git a/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.qm b/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.qm index 62e39a6aa6..7bb6cf6edc 100644 Binary files a/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.qm and b/src/Mod/Web/Gui/Resources/translations/Web_zh-TW.qm differ diff --git a/src/Mod/Web/Gui/Workbench.cpp b/src/Mod/Web/Gui/Workbench.cpp index 950549f897..e20a392040 100644 --- a/src/Mod/Web/Gui/Workbench.cpp +++ b/src/Mod/Web/Gui/Workbench.cpp @@ -73,13 +73,13 @@ void Workbench::setupContextMenu(const char* recipient,Gui::MenuItem* item) cons // << "Separator" << "Std_ViewDockUndockFullscreen"; // if ( Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0 ) - // *item << "Separator" << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_TreeSelection" + // *item << "Separator" << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_TreeSelection" // << "Std_RandomColor" << "Separator" << "Std_Delete"; //} //else if (strcmp(recipient,"Tree") == 0) //{ // if ( Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0 ) - // *item << "Std_SetAppearance" << "Std_ToggleVisibility" + // *item << "Std_SetAppearance" << "Std_ToggleVisibility" // << "Std_RandomColor" << "Separator" << "Std_Delete"; //} } @@ -96,7 +96,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const // file->setCommand("&File"); // *file << "Std_New" << "Std_Open" << "Separator" << "Std_CloseActiveWindow" // << "Std_CloseAllWindows" << "Separator" << "Std_Save" << "Std_SaveAs" -// << "Separator" << "Std_Import" << "Std_Export" << "Std_ProjectInfo" +// << "Separator" << "Std_Import" << "Std_Export" << "Std_ProjectInfo" // //<< "Separator" << "Std_Print" << "Std_PrintPdf" // << "Separator" << "Std_RecentFiles" << "Separator" << "Std_Quit"; // @@ -113,14 +113,14 @@ Gui::MenuItem* Workbench::setupMenuBar() const // stdviews->setCommand("Standard views"); // *stdviews << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewAxo" // << "Separator" << "Std_ViewFront" << "Std_ViewRight" -// << "Std_ViewTop" << "Separator" << "Std_ViewRear" +// << "Std_ViewTop" << "Separator" << "Std_ViewRear" // << "Std_ViewLeft" << "Std_ViewBottom"; // // // stereo // Gui::MenuItem* view3d = new Gui::MenuItem; // view3d->setCommand("&Stereo"); -// *view3d << "Std_ViewIvStereoRedGreen" << "Std_ViewIvStereoQuadBuff" -// << "Std_ViewIvStereoInterleavedRows" << "Std_ViewIvStereoInterleavedColumns" +// *view3d << "Std_ViewIvStereoRedGreen" << "Std_ViewIvStereoQuadBuff" +// << "Std_ViewIvStereoInterleavedRows" << "Std_ViewIvStereoInterleavedColumns" // << "Std_ViewIvStereoOff" << "Separator" << "Std_ViewIvIssueCamPos"; // // // zoom @@ -137,19 +137,19 @@ Gui::MenuItem* Workbench::setupMenuBar() const // // View // Gui::MenuItem* view = new Gui::MenuItem( menuBar ); // view->setCommand("&View"); -// *view << "Std_ViewCreate" << "Std_OrthographicCamera" << "Std_PerspectiveCamera" << "Separator" +// *view << "Std_ViewCreate" << "Std_OrthographicCamera" << "Std_PerspectiveCamera" << "Separator" // << stdviews << "Std_FreezeViews" << "Separator" << view3d << zoom // << "Std_ViewDockUndockFullscreen" << "Std_ToggleClipPlane" << "Separator" << visu -// << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_RandomColor" << "Separator" -// //<< "Std_MeasureDistance" << "Separator" -// << "Std_Workbench" << "Std_ToolBarMenu" << "Std_DockViewMenu" << "Separator" +// << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_RandomColor" << "Separator" +// //<< "Std_MeasureDistance" << "Separator" +// << "Std_Workbench" << "Std_ToolBarMenu" << "Std_DockViewMenu" << "Separator" // << "Std_ViewStatusBar" << "Std_UserInterface"; // // // Tools // Gui::MenuItem* tool = new Gui::MenuItem( menuBar ); // tool->setCommand("&Tools"); // *tool << "Std_CommandLine" << "Std_DlgParameter" << "Separator" << "Std_DlgMacroRecord" -// << "Std_MacroStopRecord" << "Std_DlgMacroExecute" << "Std_DlgMacroExecuteDirect" +// << "Std_MacroStopRecord" << "Std_DlgMacroExecute" << "Std_DlgMacroExecuteDirect" // << "Separator" << "Std_ViewScreenShot" << "Separator" << "Std_DlgCustomize"; // // // Mesh **************************************************************************************************** @@ -158,40 +158,40 @@ Gui::MenuItem* Workbench::setupMenuBar() const // // submenu analyze // Gui::MenuItem* analyze = new Gui::MenuItem(); // analyze->setCommand("Analyze"); -// *analyze << "Mesh_Evaluation" -// << "Mesh_EvaluateFacet" -// << "Mesh_CurvatureInfo" -// << "Separator" -// << "Mesh_EvaluateSolid" +// *analyze << "Mesh_Evaluation" +// << "Mesh_EvaluateFacet" +// << "Mesh_CurvatureInfo" +// << "Separator" +// << "Mesh_EvaluateSolid" // << "Mesh_BoundingBox"; // // // submenu boolean // Gui::MenuItem* boolean = new Gui::MenuItem(); // boolean->setCommand("Boolean"); -// *boolean << "Mesh_Union" -// << "Mesh_Intersection" +// *boolean << "Mesh_Union" +// << "Mesh_Intersection" // << "Mesh_Difference"; // // mesh->setCommand("&Meshes"); -// *mesh << "Mesh_Import" -// << "Mesh_Export" -// << "Mesh_FromGeometry" +// *mesh << "Mesh_Import" +// << "Mesh_Export" +// << "Mesh_FromGeometry" // << "Separator" -// << analyze -// << "Mesh_HarmonizeNormals" -// << "Mesh_FlipNormals" -// << "Separator" -// << "Mesh_FillupHoles" -// << "Mesh_FillInteractiveHole" +// << analyze +// << "Mesh_HarmonizeNormals" +// << "Mesh_FlipNormals" +// << "Separator" +// << "Mesh_FillupHoles" +// << "Mesh_FillInteractiveHole" // << "Mesh_RemoveComponents" -// << "Mesh_RemoveCompByHand" -// << "Separator" -// << "Mesh_BuildRegularSolid" -// << boolean << "Separator" +// << "Mesh_RemoveCompByHand" +// << "Separator" +// << "Mesh_BuildRegularSolid" +// << boolean << "Separator" // << "Mesh_PolyCut" -// << "Mesh_PolySplit" -// << "Mesh_PolySegm" -// << "Mesh_ToolMesh" +// << "Mesh_PolySplit" +// << "Mesh_PolySegm" +// << "Mesh_ToolMesh" // << "Mesh_VertexCurvature"; // // // Part **************************************************************************************************** @@ -218,10 +218,10 @@ Gui::MenuItem* Workbench::setupMenuBar() const // if (mgr.getCommandByName("Sketcher_NewSketch")) { // Gui::MenuItem* sketch = new Gui::MenuItem(menuBar); // sketch->setCommand("Ske&tch"); -// *sketch +// *sketch // << "Sketcher_NewSketch" -// << "Separator" -// << "PartDesign_Pad" +// << "Separator" +// << "PartDesign_Pad" // << "PartDesign_Fillet" // ; // } @@ -233,10 +233,10 @@ Gui::MenuItem* Workbench::setupMenuBar() const // // drawing->setCommand("&Drawing"); // *drawing -// << "Drawing_Open" -// << "Separator" -// << "Drawing_NewA3Landscape" -// << "Drawing_NewView" +// << "Drawing_Open" +// << "Separator" +// << "Drawing_NewA3Landscape" +// << "Drawing_NewView" // << "Drawing_ExportPage" // ; // @@ -245,10 +245,10 @@ Gui::MenuItem* Workbench::setupMenuBar() const // Gui::MenuItem* raytracing = new Gui::MenuItem(menuBar); // // raytracing->setCommand("&Raytracing"); -// *raytracing -// << "Raytracing_WriteView" -// << "Raytracing_WriteCamera" -// << "Raytracing_WritePart"; +// *raytracing +// << "Raytracing_WriteView" +// << "Raytracing_WriteCamera" +// << "Raytracing_WritePart"; // ; // // // Drafting **************************************************************************************************** @@ -257,7 +257,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const // Gui::MenuItem* Drafting = new Gui::MenuItem(menuBar); // // Drafting->setCommand("&Drafting"); -// *Drafting +// *Drafting // << "Draft_SelectPlane" // << "Draft_Line" // << "Draft_Polyline" @@ -266,15 +266,15 @@ Gui::MenuItem* Workbench::setupMenuBar() const // << "Draft_Rectangle" // << "Draft_Text" // << "Draft_Dimension" -// << "Separator" -// << "Draft_Move" -// << "Draft_Rotate" -// << "Draft_Offset" -// << "Draft_Trimex" -// << "Draft_Upgrade" -// << "Draft_Downgrade" -// << "Draft_Scale" -// << "Separator" +// << "Separator" +// << "Draft_Move" +// << "Draft_Rotate" +// << "Draft_Offset" +// << "Draft_Trimex" +// << "Draft_Upgrade" +// << "Draft_Downgrade" +// << "Draft_Scale" +// << "Separator" // << "Draft_ApplyStyle" // ; // } @@ -289,7 +289,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const // *wnd << "Std_ActivateNextWindow" << "Std_ActivatePrevWindow" << "Separator" // << "Std_TileWindows" << "Std_CascadeWindows" // << "Std_ArrangeIcons" << "Separator" << "Std_WindowsMenu" << "Std_Windows"; -// +// // // help **************************************************************************************************** // // Separator // Gui::MenuItem* sep = new Gui::MenuItem( menuBar ); @@ -298,21 +298,21 @@ Gui::MenuItem* Workbench::setupMenuBar() const // // Help // Gui::MenuItem* helpWebsites = new Gui::MenuItem; // helpWebsites->setCommand("&Online-help"); -// *helpWebsites << "Std_OnlineHelpWebsite" -// << "Std_FreeCADWebsite" +// *helpWebsites << "Std_OnlineHelpWebsite" +// << "Std_FreeCADWebsite" // << "Std_PythonWebsite"; // // Gui::MenuItem* help = new Gui::MenuItem( menuBar ); // help->setCommand("&Help"); -// *help << "Std_OnlineHelp" +// *help << "Std_OnlineHelp" // << "Std_PythonHelp" -// << helpWebsites -// << "Separator" -// << "Test_Test" -// << "Separator" +// << helpWebsites +// << "Separator" +// << "Test_Test" +// << "Separator" // << "Std_About" -// << "Std_AboutQt" -// << "Separator" +// << "Std_AboutQt" +// << "Separator" // << "Std_WhatsThis" ; // // return menuBar; @@ -328,9 +328,9 @@ Gui::ToolBarItem* Workbench::setupToolBars() const *navigation << "Web_BrowserSetURL" << "Separator" << "Web_OpenWebsite" - << "Separator" - << "Web_BrowserBack" - << "Web_BrowserNext" + << "Separator" + << "Web_BrowserBack" + << "Web_BrowserNext" << "Web_BrowserRefresh" << "Web_BrowserStop" << "Separator" diff --git a/src/Mod/Web/Gui/Workbench.h b/src/Mod/Web/Gui/Workbench.h index cec3e02e8f..9cf19651b5 100644 --- a/src/Mod/Web/Gui/Workbench.h +++ b/src/Mod/Web/Gui/Workbench.h @@ -56,4 +56,4 @@ protected: }; // namespace WebGui } -#endif // WEB_WORKBENCH_H +#endif // WEB_WORKBENCH_H diff --git a/src/Mod/Web/Init.py b/src/Mod/Web/Init.py index 467462446c..45cc57a7fd 100644 --- a/src/Mod/Web/Init.py +++ b/src/Mod/Web/Init.py @@ -1,8 +1,5 @@ -# FreeCAD init script of the Web module -# (c) 2001 Juergen Riegel - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2001,2002 Jürgen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -13,14 +10,15 @@ #* for detail see the LICENCE text file. * #* * #* FreeCAD is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * #* GNU Lesser General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * -#* License along with FreeCAD; if not, write to the Free Software * +#* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * -#* Juergen Riegel 2002 * #***************************************************************************/ + +# FreeCAD init script of the Web module diff --git a/src/Mod/Web/InitGui.py b/src/Mod/Web/InitGui.py index a3daa1455f..5c708f32af 100644 --- a/src/Mod/Web/InitGui.py +++ b/src/Mod/Web/InitGui.py @@ -1,12 +1,5 @@ -# Web gui init module -# (c) 2003 Juergen Riegel -# -# Gathering all the information to start FreeCAD -# This is the second one of three init scripts, the third one -# runs when the gui is up - #*************************************************************************** -#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 * +#* Copyright (c) 2002,2003 Jürgen Riegel * #* * #* This file is part of the FreeCAD CAx development system. * #* * @@ -25,10 +18,13 @@ #* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * -#* * -#* Juergen Riegel 2002 * #***************************************************************************/ +# Web gui init module +# +# Gathering all the information to start FreeCAD +# This is the second one of three init scripts, the third one +# runs when the gui is up class WebWorkbench ( Workbench ): diff --git a/src/Mod/Web/TestWebGui.py b/src/Mod/Web/TestWebGui.py index a8da0f46b4..616bfe55fd 100644 --- a/src/Mod/Web/TestWebGui.py +++ b/src/Mod/Web/TestWebGui.py @@ -1,3 +1,4 @@ +#************************************************************************** # Copyright (c) 2018 Werner Mayer * # * # This file is part of the FreeCAD CAx development system. * diff --git a/src/Mod/Web/web.dox b/src/Mod/Web/web.dox index bc50f1606b..778cb5edcd 100644 --- a/src/Mod/Web/web.dox +++ b/src/Mod/Web/web.dox @@ -1,5 +1,8 @@ /** \defgroup WEB Web * \ingroup CWORKBENCHES * \brief The webkit-based web browser of FreeCAD + +See \ref src/Mod/Draft/draft.dox as an example of how to populate this page + */ diff --git a/src/Tools/freecad-thumbnailer b/src/Tools/freecad-thumbnailer new file mode 100644 index 0000000000..8e3a439b0a --- /dev/null +++ b/src/Tools/freecad-thumbnailer @@ -0,0 +1,67 @@ +#!/usr/bin/python +"""Support file to show FreeCAD thumbnails on Free Desktop Environments (like GNOME or KDE) + +Installation: +- This executable file should be on the PATH so it can be found + "$ sudo cp freecad-thumbnailer /usr/bin" + and must have execution rights + "$ sudo chmod +x /usr/bin/freecad-thumbnailer" + +- If a FreeCAD project file doesn't include a thumbnail the file freecad.png is used. + Thus, the file src/Gui/Icons/freecad-icon-48.png must be installed. + "$ sudo cp freecad-icon-48.png /usr/share/icons/hicolor/48x48/apps/freecad.png" + +- The application/x-extension-fcstd MIME type should be registered + Check that a corresponding /usr/share/mime/packages/freecad.xml file exists + Make sure the MIME database is up to date + "$ sudo update-mime-database /usr/share/mime" + +- Register this thumbnailer + Adding a file /usr/share/thumbnailers/FreeCAD.thumbnailer with the following content: + + [Thumbnailer Entry] + TryExec=freecad-thumbnailer + Exec=freecad-thumbnailer -s %s %i %o + MimeType=application/x-extension-fcstd; + +HINT: Make sure that the symlink /usr/bin/python exists and points to the Python executable + +NOTE: To make sure FreeCAD saves thumbnail information: + + Edit -> Preferences... -> Document -> Save thumbnail into project when saving document +""" +import sys +import zipfile +import getopt + +opt, par = getopt.getopt(sys.argv[1:], '-s:') +input_file = par[0] +output_file = par[1] + +try: + # Read compressed file + zfile = zipfile.ZipFile(input_file) + files = zfile.namelist() + + # Check whether we have a FreeCAD document + if "Document.xml" not in files: + print(input_file, " doesn't look like a FreeCAD file") + sys.exit(1) + + # Read thumbnail from file or use default icon + image = "thumbnails/Thumbnail.png" + if image in files: + image = zfile.read(image) + else: + # apps should have at least 48x48 icons + freecad = open("/usr/share/icons/hicolor/48x48/apps/freecad.png", "rb") + image = freecad.read() + + # Write icon to output_file + thumb = open(output_file, "wb") + thumb.write(image) + thumb.close() + +except: + print("Error creating FreeCAD thumbnail for file ", input_file) + sys.exit(1) diff --git a/src/Tools/freecad-thumbnailer.py b/src/Tools/freecad-thumbnailer.py deleted file mode 100755 index 6ac97e892b..0000000000 --- a/src/Tools/freecad-thumbnailer.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/python - -import sys, zipfile, md5 -import getopt -import gnomevfs - -opt,par = getopt.getopt(sys.argv[1:],'-s:') -inpfile = gnomevfs.get_local_path_from_uri(par[0]) -#inpfile = par[0] -outfile = par[1] - -#print "fcthumbnailer" -#print inpfile, outfile - -try: - zfile=zipfile.ZipFile(inpfile) - files=zfile.namelist() - #print files - # check for meta-file if it's really a FreeCAD document - if files[0] != "Document.xml": - sys.exit(1) - - image="thumbnails/Thumbnail.png" - if image in files: - image=zfile.read(image) - else: - freecad=open("/usr/share/freecad/freecad-doc.png") - image=freecad.read() - - thumb=open(outfile,"wb") - thumb.write(image) - thumb.close() - -except: - sys.exit(1) - diff --git a/src/XDGData/CMakeLists.txt b/src/XDGData/CMakeLists.txt index 3c68ad11c1..9c70207f59 100644 --- a/src/XDGData/CMakeLists.txt +++ b/src/XDGData/CMakeLists.txt @@ -38,3 +38,8 @@ install( FILES org.freecadweb.FreeCAD.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages ) + +install( + FILES FreeCAD.thumbnailer + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers +) diff --git a/src/XDGData/FreeCAD.thumbnailer b/src/XDGData/FreeCAD.thumbnailer new file mode 100644 index 0000000000..005dd0ae28 --- /dev/null +++ b/src/XDGData/FreeCAD.thumbnailer @@ -0,0 +1,4 @@ +[Thumbnailer Entry] +TryExec=freecad-thumbnailer +Exec=freecad-thumbnailer -s %s %i %o +MimeType=application/x-extension-fcstd;