Accepting request 605255 from science
drop med-tools from adi project - temporary disable FEM module * it works fine, but requires hdf5 version 1.8 via med-tools, which currently conflicts in openSUSE distro. - Fix draft module crash (got merged upstream for 0.18 fix-draft-module-with-python3.patch) - apply current 0.17 branch (branch_update.patch) In first place for occt 7.2 fixes - fix crash in Draft module with python 3 - cleanup python qt deps (pyside2 only now) - update to version 0.17 2 years of work: https://www.freecadweb.org/wiki/Release_notes_0.17 - switching to Qt5 (fix-build.diff 0001-find-openmpi2-include-files.patch) (the old 0.16 fork had obsolete temporary patches remove-qtwebkit.patch and remove-webgui.patch) OBS-URL: https://build.opensuse.org/request/show/605255 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/FreeCAD?expand=0&rev=6
This commit is contained in:
commit
1d27eba39c
13
0001-find-openmpi2-include-files.patch
Normal file
13
0001-find-openmpi2-include-files.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3ecfe23a6..1db9bf33e 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -717,7 +717,7 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
add_compile_options(${OPENMPI_CFLAGS})
|
||||
link_directories(${OPENMPI_LIBRARY_DIRS})
|
||||
link_libraries(${OPENMPI_LIBRARIES})
|
||||
- find_file(MpidotH mpi.h PATHS ${OPENMPI_INCLUDE_DIRS} NO_DEFAULT_PATH)
|
||||
+ find_file(MpidotH mpi.h PATHS ${OPENMPI_INCLUDE_DIRS} /usr/lib64/mpi/gcc/openmpi2/include NO_DEFAULT_PATH)
|
||||
if(NOT MpidotH)
|
||||
message( WARNING "mpi.h was not found. Check for error above.")
|
||||
endif()
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66891dd8a208daa48024216e1dca6627b8ec90c6105cce7d33eaffc066b307ef
|
||||
size 241548815
|
3
FreeCAD-0.17.obscpio
Normal file
3
FreeCAD-0.17.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:15bf621edb984b0914fd7e5c1ce2e2469b3f031fbb4d2bd1f86c90f634e0829b
|
||||
size 385050127
|
@ -1,3 +1,38 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue May 8 06:33:56 UTC 2018 - adrian@suse.de
|
||||
|
||||
- temporary disable FEM module
|
||||
* it works fine, but requires hdf5 version 1.8 via med-tools,
|
||||
which currently conflicts in openSUSE distro.
|
||||
- Fix draft module crash
|
||||
(got merged upstream for 0.18 fix-draft-module-with-python3.patch)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 27 12:55:30 UTC 2018 - adrian@suse.de
|
||||
|
||||
- apply current 0.17 branch (branch_update.patch)
|
||||
In first place for occt 7.2 fixes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 17 06:46:23 UTC 2018 - adrian@suse.de
|
||||
|
||||
- fix crash in Draft module with python 3
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 16 06:51:06 UTC 2018 - adrian@suse.de
|
||||
|
||||
- cleanup python qt deps (pyside2 only now)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 10 11:33:35 UTC 2018 - adrian@suse.de
|
||||
|
||||
- update to version 0.17
|
||||
2 years of work: https://www.freecadweb.org/wiki/Release_notes_0.17
|
||||
- switching to Qt5
|
||||
(fix-build.diff 0001-find-openmpi2-include-files.patch)
|
||||
(the old 0.16 fork had obsolete temporary patches remove-qtwebkit.patch and
|
||||
remove-webgui.patch)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 4 15:36:57 UTC 2018 - wbauer@tmo.at
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: FreeCAD
|
||||
version: 0.16.6712
|
||||
mtime: 1500312467
|
||||
commit: da2d364457257a7a8c6fb2137cea12c45becd71a
|
||||
version: 0.17
|
||||
mtime: 1523004517
|
||||
commit: 0258808ccb6ba3bd5ea9312f79cd023f1a8671b7
|
||||
|
||||
|
5
FreeCAD.sh
Normal file
5
FreeCAD.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
# let Python pick up /usr/lib64/FreeCAD/bin/PySide
|
||||
cd /usr/lib64/FreeCAD/bin
|
||||
# temporary workaround for a bug somewhere around python3 in Factory leading to memory corruption
|
||||
LC_ALL=C ./FreeCAD $@
|
177
FreeCAD.spec
177
FreeCAD.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package FreeCAD
|
||||
#
|
||||
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -19,20 +19,33 @@
|
||||
%define x_prefix %{_libdir}/%{name}
|
||||
|
||||
Name: FreeCAD
|
||||
Version: 0.16.6712
|
||||
Version: 0.17
|
||||
Release: 0
|
||||
Summary: General Purpose 3D CAD Modeler
|
||||
License: LGPL-2.0+ and GPL-2.0+
|
||||
License: LGPL-2.0-or-later AND GPL-2.0-or-later
|
||||
Group: Productivity/Graphics/CAD
|
||||
Url: http://www.freecadweb.org/
|
||||
Source0: %{name}-%{version}.tar.xz
|
||||
Source2: FreeCAD_shared_mimeinfo
|
||||
# PATCH-FIX-OPENSUSE remove-qtwebkit.patch -- fix build without QtWebKit
|
||||
Patch0: remove-qtwebkit.patch
|
||||
# PATCH-FIX-OPENSUSE remove-webgui.patch -- remove browser view that would need QtWebKit
|
||||
Patch1: remove-webgui.patch
|
||||
Source0: %{name}-%version.tar.xz
|
||||
Source1: FreeCAD.sh
|
||||
Source2: FreeCADCmd.sh
|
||||
Source3: FreeCAD_shared_mimeinfo
|
||||
Patch0: branch_update.patch
|
||||
# python3 and generic compile fixes
|
||||
Patch1: fix-build.diff
|
||||
# support for openmpi2 suse package
|
||||
Patch2: 0001-find-openmpi2-include-files.patch
|
||||
# runtime fix, submitted upstream
|
||||
Patch3: fix-draft-module-with-python3.patch
|
||||
BuildRequires: Coin-devel
|
||||
BuildRequires: SoQt-devel
|
||||
#BuildRequires: SoQt-devel
|
||||
#BuildRequires: libmed-devel # needed for FEM module, but requires older hdf5 lib
|
||||
# we use upstream OpenCASCADE instead of oce atm
|
||||
BuildRequires: occt-devel
|
||||
BuildRequires: vtk-devel
|
||||
BuildRequires: vtk-java
|
||||
BuildRequires: vtk-tcl
|
||||
#BuildRequires: smesh-devel
|
||||
|
||||
%if 0%{?suse_version} >= 1330
|
||||
BuildRequires: libboost_filesystem-devel >= 1.55
|
||||
BuildRequires: libboost_graph-devel >= 1.55
|
||||
@ -45,6 +58,7 @@ BuildRequires: libboost_thread-devel >= 1.55
|
||||
%else
|
||||
BuildRequires: boost-devel >= 1.55
|
||||
%endif
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: doxygen
|
||||
@ -53,46 +67,74 @@ BuildRequires: fdupes
|
||||
BuildRequires: freeglut-devel
|
||||
BuildRequires: gcc-fortran
|
||||
BuildRequires: git
|
||||
BuildRequires: hdf5-devel
|
||||
BuildRequires: libXerces-c-devel
|
||||
BuildRequires: libeigen3-devel
|
||||
BuildRequires: libqt4-devel
|
||||
BuildRequires: pkg-config
|
||||
|
||||
# reported to break FreeCAD here
|
||||
# https://forum.freecadweb.org/viewtopic.php?t=24610
|
||||
Conflicts: python-pivy
|
||||
|
||||
%if 0%{?suse_version} >= 1330
|
||||
# Qt5 & python3
|
||||
BuildRequires: openmpi2-devel
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-matplotlib
|
||||
BuildRequires: python3-pyside2-devel
|
||||
BuildRequires: python3-vtk
|
||||
BuildRequires: python3-xml
|
||||
BuildRequires: pkgconfig(Qt5Concurrent)
|
||||
BuildRequires: pkgconfig(Qt5OpenGL)
|
||||
BuildRequires: pkgconfig(Qt5PrintSupport)
|
||||
BuildRequires: pkgconfig(Qt5ScriptTools)
|
||||
BuildRequires: pkgconfig(Qt5Svg)
|
||||
BuildRequires: pkgconfig(Qt5UiTools)
|
||||
BuildRequires: pkgconfig(Qt5WebKit)
|
||||
BuildRequires: pkgconfig(Qt5WebKitWidgets)
|
||||
Requires: python3-pyside2
|
||||
# For Arch & Draft workbench
|
||||
Requires: python3-pivy
|
||||
# core dump if PySide is installed
|
||||
Conflicts: python3-pyside
|
||||
Conflicts: python-pyside
|
||||
%else
|
||||
BuildRequires: libshiboken-devel
|
||||
BuildRequires: libspnav-devel
|
||||
BuildRequires: oce-devel
|
||||
BuildRequires: opencv-devel
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: python-CXX-devel
|
||||
BuildRequires: python-devel
|
||||
BuildRequires: python-matplotlib
|
||||
BuildRequires: python-pyside
|
||||
BuildRequires: python-pyside-devel
|
||||
BuildRequires: python-pyside-tools
|
||||
BuildRequires: pkgconfig(QtWebKit)
|
||||
%if 0%{?suse_version} > 0
|
||||
# Qt4 & python2
|
||||
BuildRequires: libqt4-devel
|
||||
BuildRequires: python-xml
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?fedora} > 18
|
||||
BuildRequires: eigen3-devel
|
||||
BuildRequires: qt5-qtbase-devel
|
||||
%endif
|
||||
|
||||
BuildRequires: libspnav-devel
|
||||
BuildRequires: opencv-devel
|
||||
BuildRequires: swig
|
||||
%if 0%{?suse_version}
|
||||
BuildRequires: libeigen3-devel
|
||||
BuildRequires: update-desktop-files
|
||||
%endif
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: make
|
||||
BuildRequires: unzip
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: zlib-devel
|
||||
%if 0%{?suse_version} < 1500
|
||||
BuildRequires: pkgconfig(QtWebKit)
|
||||
%endif
|
||||
Requires: python-CXX
|
||||
Requires: python-pyside
|
||||
%if 0%{?suse_version} <= 1320
|
||||
Requires(post): shared-mime-info
|
||||
Requires(postun): shared-mime-info
|
||||
%endif
|
||||
Recommends: python-pivy
|
||||
|
||||
Recommends: ccx
|
||||
|
||||
%description
|
||||
Note: This package contains the current development version and thus might
|
||||
be unstable!
|
||||
FreeCAD is a parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by going back into your model history and changing its parameters. FreeCAD is open-source and highly customizable, scriptable and extensible.
|
||||
|
||||
FreeCAD is a general purpose 3D CAD modeler. The development will be completely
|
||||
Open Source. As with many modern 3D CAD modelers it will have a 2D component in
|
||||
order to extract design detail from the 3D model to create 2D production
|
||||
drawings, although 2D (e.g. AutoCAD LT) is not the focus, neither are animation
|
||||
and organic shapes (e.g. Maya, 3D StudioMAX and Cinema 4D).
|
||||
|
||||
%package devel
|
||||
Summary: Development Files for %{name}
|
||||
@ -104,15 +146,18 @@ This package contains the files needed for development with FreeCAD.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%if 0%{?suse_version} >= 1500
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%endif
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
# fix env-script-interpreter
|
||||
sed -i '1c#!%{__python2}' \
|
||||
src/Mod/Test/testmakeWireString.py \
|
||||
src/Mod/Test/unittestgui.py
|
||||
|
||||
# Fix "wrong-file-end-of-line-encoding" rpmlint warning
|
||||
sed -i 's/\r$//' ChangeLog.txt
|
||||
sed -i 's/\r$//' copying.lib
|
||||
|
||||
# Fix "wrong-script-end-of-line-encoding" rpmlint warning
|
||||
sed -i 's/\r$//' src/Mod/PartDesign/Scripts/Spring.py
|
||||
@ -122,36 +167,41 @@ sed -i 's/\r$//' src/Mod/Robot/MovieTool.py
|
||||
rm src/3rdparty/Pivy -fr
|
||||
rm src/3rdparty/Pivy-0.5 -fr
|
||||
|
||||
# fix env-script-interpreter
|
||||
sed -i '1c#!%{__python2}' \
|
||||
src/Mod/Test/testmakeWireString.py \
|
||||
src/Mod/Test/unittestgui.py
|
||||
|
||||
%build
|
||||
mkdir build && cd build
|
||||
# cmake macro would set standard libdir
|
||||
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
|
||||
# it needs an older specific zipios version -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE
|
||||
|
||||
# -fpermissive should become $RPM_OPT_FLAGS , but bugs ...
|
||||
printenv
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
|
||||
-DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \
|
||||
-DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \
|
||||
-DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}/%{name} \
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
|
||||
-DOCC_INCLUDE_DIR=%{_includedir}/oce \
|
||||
-DOCC_INCLUDE_DIR=%{_includedir}/opencascade \
|
||||
-DRESOURCEDIR=%{_datadir}/%{name} \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
%if %{with netgen}
|
||||
-DBUILD_FEM_NETGEN=ON \
|
||||
-DCMAKE_CXX_FLAGS="-fpermissive -fno-strict-aliasing" \
|
||||
%if 0%{?suse_version} >= 1330
|
||||
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
|
||||
-DSHIBOKEN_INCLUDE_DIR=/usr/include/shiboken2/ \
|
||||
-DPYSIDE_INCLUDE_DIR=/usr/include/PySide2/ \
|
||||
-DBUILD_QT5=ON \
|
||||
%else
|
||||
-DBUILD_FEM_NETGEN=OFF \
|
||||
-DPYCXX_INCLUDE_DIR:PATH=%{_includedir}/python2.7 \
|
||||
-DPYCXX_SOURCE_DIR:PATH=%{_datadir}/python2.7/CXX \
|
||||
%endif
|
||||
%if 0%{?suse_version} >= 1500
|
||||
-DBUILD_START=OFF \
|
||||
-DBUILD_WEB=OFF \
|
||||
%endif
|
||||
../
|
||||
-DFREECAD_USE_EXTERNAL_PIVY:BOOL=TRUE \
|
||||
-DBUILD_MESH_PART:BOOL=ON \
|
||||
-DBUILD_OPENSCAD:BOOL=ON \
|
||||
-DBUILD_FEM:BOOL=OFF \
|
||||
-DBUILD_FEM_NETGEN:BOOL=OFF \
|
||||
-DFREECAD_USE_EXTERNAL_SMESH=OFF \
|
||||
..
|
||||
|
||||
make VERBOSE=1 %{?_smp_mflags} all
|
||||
make VERBOSE=1 %{?_smp_mflags} all || make VERBOSE=1 all
|
||||
|
||||
# # Build documentation last, somehow
|
||||
# # this triggers a rebuild
|
||||
@ -182,9 +232,6 @@ popd
|
||||
# nice make VERBOSE=1 %%{?_smp_mflags} install DESTDIR=%%{buildroot}
|
||||
# popd
|
||||
|
||||
# Install the Qt plugin
|
||||
#install -Dpm 0755 src/Tools/plugins/widget/libFreeCAD_widgets.so %%{buildroot}/usr/%%{_lib}/qt4/plugins/designer/libFreeCAD_widgets.so
|
||||
|
||||
# Fix "non-executable-script" rpmlint warning
|
||||
chmod 755 %{buildroot}%{x_prefix}/Mod/Robot/MovieTool.py \
|
||||
%{buildroot}%{x_prefix}/Mod/Test/testmakeWireString.py \
|
||||
@ -195,12 +242,12 @@ mkdir -p %{buildroot}%{_datadir}/pixmaps
|
||||
mv %{buildroot}%{_datadir}/%{name}/freecad.xpm %{buildroot}%{_datadir}/pixmaps/freecad.xpm
|
||||
|
||||
# Install additional documentation files
|
||||
install -pm 0644 ChangeLog.txt copying.lib %{buildroot}%{_docdir}/%{name}/
|
||||
#install -pm 0644 ChangeLog.txt copying.lib %{buildroot}%{_docdir}/%{name}/
|
||||
|
||||
%suse_update_desktop_file -c %{name} "%{name}" "3D CAD Modeler" %{name} "freecad" Education Engineering
|
||||
|
||||
# Install mime type
|
||||
install -Dpm 0644 %{SOURCE2} %{buildroot}/%{_datadir}/mime/packages/%{name}.xml
|
||||
install -Dpm 0644 %{SOURCE3} %{buildroot}/usr/share/mime/packages/%{name}.xml
|
||||
|
||||
# Remove unneeded files
|
||||
find %{buildroot} -type f -name "*.la" -delete -print
|
||||
@ -219,9 +266,17 @@ dos2unix %{buildroot}%{x_prefix}/Mod/Test/unittestgui.py
|
||||
dos2unix %{buildroot}%{x_prefix}/Mod/Part/MakeBottle.py
|
||||
|
||||
# Link binaries
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
ln -s -t %{buildroot}%{_bindir} %{x_prefix}/bin/FreeCAD
|
||||
ln -s -t %{buildroot}%{_bindir} %{x_prefix}/bin/FreeCADCmd
|
||||
mkdir -p %{buildroot}/usr/bin
|
||||
%if 0%{?suse_version} >= 91330
|
||||
# disabled, hopefully not anymore needed
|
||||
cp %{S:1} %{buildroot}/usr/bin/FreeCAD
|
||||
chmod +x %{buildroot}/usr/bin/FreeCAD
|
||||
cp %{S:2} %{buildroot}/usr/bin/FreeCADCmd
|
||||
chmod +x %{buildroot}/usr/bin/FreeCADCmd
|
||||
%else
|
||||
ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCAD
|
||||
ln -s -t %{buildroot}/usr/bin %{x_prefix}/bin/FreeCADCmd
|
||||
%endif
|
||||
|
||||
%fdupes -s %{buildroot}
|
||||
|
||||
|
4
FreeCADCmd.sh
Normal file
4
FreeCADCmd.sh
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
# let Python pick up /usr/lib64/FreeCAD/bin/PySide
|
||||
cd /usr/lib64/FreeCAD/bin
|
||||
./FreeCADCmd
|
4
_service
4
_service
@ -2,8 +2,8 @@
|
||||
<service name="obs_scm" mode="disabled">
|
||||
<param name="url">https://github.com/FreeCAD/FreeCAD.git</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="revision">releases/FreeCAD-0-16</param>
|
||||
<param name="version">0.16.6712</param>
|
||||
<param name="revision">0.17</param>
|
||||
<param name="version">0.17</param>
|
||||
</service>
|
||||
<service name="set_version" mode="disabled"/>
|
||||
|
||||
|
554
branch_update.patch
Normal file
554
branch_update.patch
Normal file
@ -0,0 +1,554 @@
|
||||
diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp
|
||||
index 6f6fb6cba..471c07428 100644
|
||||
--- a/src/App/Expression.cpp
|
||||
+++ b/src/App/Expression.cpp
|
||||
@@ -897,16 +897,13 @@ Expression * FunctionExpression::evalAggregate() const
|
||||
throw Exception("Invalid property type for aggregate");
|
||||
} while (range.next());
|
||||
}
|
||||
- else if (args[i]->isDerivedFrom(App::VariableExpression::getClassTypeId())) {
|
||||
+ else {
|
||||
std::unique_ptr<Expression> e(args[i]->eval());
|
||||
NumberExpression * n(freecad_dynamic_cast<NumberExpression>(e.get()));
|
||||
|
||||
if (n)
|
||||
c->collect(n->getQuantity());
|
||||
}
|
||||
- else if (args[i]->isDerivedFrom(App::NumberExpression::getClassTypeId())) {
|
||||
- c->collect(static_cast<NumberExpression*>(args[i])->getQuantity());
|
||||
- }
|
||||
}
|
||||
|
||||
return new NumberExpression(owner, c->getQuantity());
|
||||
diff --git a/src/App/FeaturePython.cpp b/src/App/FeaturePython.cpp
|
||||
index 0a90b43a0..9d04fecad 100644
|
||||
--- a/src/App/FeaturePython.cpp
|
||||
+++ b/src/App/FeaturePython.cpp
|
||||
@@ -108,17 +108,21 @@ void FeaturePythonImp::onBeforeChange(const Property* prop)
|
||||
if (feature.hasAttr("__object__")) {
|
||||
Py::Callable method(feature.getAttr(std::string("onBeforeChange")));
|
||||
Py::Tuple args(1);
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(0, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(0, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
else {
|
||||
Py::Callable method(feature.getAttr(std::string("onBeforeChange")));
|
||||
Py::Tuple args(2);
|
||||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(1, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(1, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -141,17 +145,21 @@ void FeaturePythonImp::onChanged(const Property* prop)
|
||||
if (feature.hasAttr("__object__")) {
|
||||
Py::Callable method(feature.getAttr(std::string("onChanged")));
|
||||
Py::Tuple args(1);
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(0, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(0, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
else {
|
||||
Py::Callable method(feature.getAttr(std::string("onChanged")));
|
||||
Py::Tuple args(2);
|
||||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(1, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(1, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/Gui/ViewProviderPythonFeature.cpp b/src/Gui/ViewProviderPythonFeature.cpp
|
||||
index 927557068..2fe1c4fd1 100644
|
||||
--- a/src/Gui/ViewProviderPythonFeature.cpp
|
||||
+++ b/src/Gui/ViewProviderPythonFeature.cpp
|
||||
@@ -643,17 +643,21 @@ void ViewProviderPythonFeatureImp::onChanged(const App::Property* prop)
|
||||
if (vp.hasAttr("__object__")) {
|
||||
Py::Callable method(vp.getAttr(std::string("onChanged")));
|
||||
Py::Tuple args(1);
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(0, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(0, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
else {
|
||||
Py::Callable method(vp.getAttr(std::string("onChanged")));
|
||||
Py::Tuple args(2);
|
||||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
- std::string prop_name = object->getPropertyName(prop);
|
||||
- args.setItem(1, Py::String(prop_name));
|
||||
- method.apply(args);
|
||||
+ const char* prop_name = object->getPropertyName(prop);
|
||||
+ if (prop_name) {
|
||||
+ args.setItem(1, Py::String(prop_name));
|
||||
+ method.apply(args);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/Mod/Arch/ArchStructure.py b/src/Mod/Arch/ArchStructure.py
|
||||
index 1a442dff2..a0ec64d56 100644
|
||||
--- a/src/Mod/Arch/ArchStructure.py
|
||||
+++ b/src/Mod/Arch/ArchStructure.py
|
||||
@@ -152,7 +152,7 @@ class _CommandStructure:
|
||||
st = Draft.getObjectsOfType(sel,"Structure")
|
||||
ax = Draft.getObjectsOfType(sel,"Axis")
|
||||
if ax:
|
||||
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structural System")))
|
||||
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structural System"))
|
||||
FreeCADGui.addModule("Arch")
|
||||
if st:
|
||||
FreeCADGui.doCommand("obj = Arch.makeStructuralSystem(" + ArchCommands.getStringList(st) + "," + ArchCommands.getStringList(ax) + ")")
|
||||
@@ -164,7 +164,7 @@ class _CommandStructure:
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
return
|
||||
elif not(ax) and not(st):
|
||||
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structure")))
|
||||
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structure"))
|
||||
FreeCADGui.addModule("Arch")
|
||||
for obj in sel:
|
||||
FreeCADGui.doCommand("obj = Arch.makeStructure(FreeCAD.ActiveDocument." + obj.Name + ")")
|
||||
@@ -194,7 +194,7 @@ class _CommandStructure:
|
||||
self.tracker.finalize()
|
||||
if point == None:
|
||||
return
|
||||
- FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structure")))
|
||||
+ FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Structure"))
|
||||
FreeCADGui.addModule("Arch")
|
||||
if self.Profile is not None:
|
||||
if "Precast" in self.Profile:
|
||||
diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp
|
||||
index b83092d9e..6c20eb94c 100644
|
||||
--- a/src/Mod/Import/Gui/AppImportGuiPy.cpp
|
||||
+++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp
|
||||
@@ -541,7 +541,12 @@ private:
|
||||
// the App Code.
|
||||
std::vector< std::vector<App::Color> > Colors;
|
||||
get_parts_colors(hierarchical_part,FreeLabels,part_id,Colors);
|
||||
- ocaf.reallocateFreeShape(hierarchical_part,FreeLabels,part_id,Colors);
|
||||
+ ocaf.reallocateFreeShape(hierarchical_part,FreeLabels,part_id,Colors);
|
||||
+
|
||||
+#if OCC_VERSION_HEX >= 0x070200
|
||||
+ // Update is not performed automatically anymore: https://tracker.dev.opencascade.org/view.php?id=28055
|
||||
+ XCAFDoc_DocumentTool::ShapeTool(hDoc->Main())->UpdateAssemblies();
|
||||
+#endif
|
||||
|
||||
Base::FileInfo file(Utf8Name.c_str());
|
||||
if (file.hasExtension("stp") || file.hasExtension("step")) {
|
||||
diff --git a/src/Mod/Mesh/App/MeshPy.xml b/src/Mod/Mesh/App/MeshPy.xml
|
||||
index c71944df6..76bc4618a 100644
|
||||
--- a/src/Mod/Mesh/App/MeshPy.xml
|
||||
+++ b/src/Mod/Mesh/App/MeshPy.xml
|
||||
@@ -520,7 +520,7 @@ for p in mesh.Facets:
|
||||
</Attribute>
|
||||
<ClassDeclarations>private:
|
||||
friend class PropertyMeshKernel;
|
||||
- class PropertyMeshKernel* parentProperty;
|
||||
+ class PropertyMeshKernel* parentProperty = nullptr;
|
||||
</ClassDeclarations>
|
||||
</PythonExport>
|
||||
</GenerateModel>
|
||||
diff --git a/src/Mod/PartDesign/App/DatumPoint.cpp b/src/Mod/PartDesign/App/DatumPoint.cpp
|
||||
index 297d56276..5a65f09a6 100644
|
||||
--- a/src/Mod/PartDesign/App/DatumPoint.cpp
|
||||
+++ b/src/Mod/PartDesign/App/DatumPoint.cpp
|
||||
@@ -99,12 +99,12 @@ void Point::onChanged(const App::Property* prop)
|
||||
Superclass::onChanged(prop);
|
||||
}
|
||||
|
||||
-void Point::Restore(Base::XMLReader& r)
|
||||
+void Point::onDocumentRestored()
|
||||
{
|
||||
- Superclass::Restore(r);
|
||||
//fix for #0002758 Datum point moves to (0,0,0) when reopening the file.
|
||||
//recreate shape, as the restored one has old Placement burned into it.
|
||||
this->makeShape();
|
||||
+ Superclass::onDocumentRestored();
|
||||
}
|
||||
|
||||
void Point::makeShape()
|
||||
@@ -114,7 +114,9 @@ void Point::makeShape()
|
||||
BRepBuilderAPI_MakeVertex builder(gp_Pnt(0,0,0));
|
||||
if (!builder.IsDone())
|
||||
return;
|
||||
- Shape.setValue(builder.Shape());
|
||||
+ Part::TopoShape tshape(builder.Shape());
|
||||
+ tshape.setPlacement(this->Placement.getValue());
|
||||
+ Shape.setValue(tshape);
|
||||
}
|
||||
|
||||
Base::Vector3d Point::getPoint()
|
||||
diff --git a/src/Mod/PartDesign/App/DatumPoint.h b/src/Mod/PartDesign/App/DatumPoint.h
|
||||
index 19dfdbeb4..e00cf6434 100644
|
||||
--- a/src/Mod/PartDesign/App/DatumPoint.h
|
||||
+++ b/src/Mod/PartDesign/App/DatumPoint.h
|
||||
@@ -50,9 +50,11 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void onChanged(const App::Property* prop);
|
||||
- virtual void Restore(Base::XMLReader& r);
|
||||
+ virtual void onDocumentRestored() override;
|
||||
+
|
||||
private:
|
||||
void makeShape();
|
||||
+
|
||||
};
|
||||
|
||||
} //namespace PartDesign
|
||||
diff --git a/src/Mod/Path/PathScripts/post/grbl_post.py b/src/Mod/Path/PathScripts/post/grbl_post.py
|
||||
index 536c2cf54..9ad099243 100644
|
||||
--- a/src/Mod/Path/PathScripts/post/grbl_post.py
|
||||
+++ b/src/Mod/Path/PathScripts/post/grbl_post.py
|
||||
@@ -261,7 +261,7 @@ def parse(pathobj):
|
||||
if param in c.Parameters:
|
||||
if param == 'F':
|
||||
if command not in RAPID_MOVES:
|
||||
- outstring.append(param + format(c.Parameters['F'], '.2f'))
|
||||
+ outstring.append(param + format(c.Parameters['F'] * 60, '.2f'))
|
||||
elif param == 'T':
|
||||
outstring.append(param + str(c.Parameters['T']))
|
||||
else:
|
||||
diff --git a/src/Mod/Path/libarea/CMakeLists.txt b/src/Mod/Path/libarea/CMakeLists.txt
|
||||
index ef95c29d3..087c911dd 100644
|
||||
--- a/src/Mod/Path/libarea/CMakeLists.txt
|
||||
+++ b/src/Mod/Path/libarea/CMakeLists.txt
|
||||
@@ -16,13 +16,17 @@ OPTION(USE_BOOST_PYTHON "use BOOST_PYTHON, otherwise use PYBIND11" ON)
|
||||
|
||||
if(USE_BOOST_PYTHON)
|
||||
if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
|
||||
- if(NOT PYTHON_VERSION_MAJOR LESS 3)
|
||||
- find_package( Boost COMPONENTS python3)
|
||||
- if (NOT Boost_PYTHON3_FOUND)
|
||||
+ # boost-python >= 1.67 on some platforms has suffix
|
||||
+ set(BOOST_PY_SUFFIX ${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
|
||||
+
|
||||
+ find_package( Boost COMPONENTS python${BOOST_PY_SUFFIX} )
|
||||
+ if (NOT Boost_PYTHON${BOOST_PY_SUFFIX}_FOUND)
|
||||
+ # try just the major version
|
||||
+ find_package( Boost COMPONENTS python${PYTHON_VERSION_MAJOR} )
|
||||
+ if (NOT Boost_PYTHON${PYTHON_VERSION_MAJOR}_FOUND)
|
||||
+ # unversioned
|
||||
find_package( Boost COMPONENTS python REQUIRED)
|
||||
endif()
|
||||
- else()
|
||||
- find_package( Boost COMPONENTS python REQUIRED) # find BOOST and boost-python
|
||||
endif()
|
||||
|
||||
if(Boost_FOUND)
|
||||
diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
|
||||
index 83c6c6007..3d9709603 100644
|
||||
--- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
|
||||
+++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp
|
||||
@@ -4867,7 +4867,7 @@ CmdSketcherCreatePeriodicBSpline::CmdSketcherCreatePeriodicBSpline()
|
||||
void CmdSketcherCreatePeriodicBSpline::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
- ActivateHandler(getActiveGuiDocument(),new DrawSketchHandlerEllipse(1) );
|
||||
+ ActivateHandler(getActiveGuiDocument(),new DrawSketchHandlerBSpline(1) );
|
||||
}
|
||||
|
||||
bool CmdSketcherCreatePeriodicBSpline::isActive(void)
|
||||
diff --git a/src/Mod/Spreadsheet/TestSpreadsheet.py b/src/Mod/Spreadsheet/TestSpreadsheet.py
|
||||
index 56a0acf92..19ed6be8d 100644
|
||||
--- a/src/Mod/Spreadsheet/TestSpreadsheet.py
|
||||
+++ b/src/Mod/Spreadsheet/TestSpreadsheet.py
|
||||
@@ -851,6 +851,16 @@ class SpreadsheetCases(unittest.TestCase):
|
||||
self.assertEqual(sheet.getContents('B1'), '=A1 == 1 ? 11 : (A1 == 2 ? 12 : 13)')
|
||||
self.assertEqual(sheet.getContents('C1'), '=A1 == 1 ? (A1 == 2 ? 12 : 13) : 11')
|
||||
|
||||
+ def testIssue3432(self):
|
||||
+ """ Regression test for issue 3432; numbers with units are ignored from aggregates"""
|
||||
+ sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
|
||||
+ sheet.set('A1', '1mm')
|
||||
+ sheet.set('B1', '2mm')
|
||||
+ sheet.set('C1', '=max(A1:B1;3mm)')
|
||||
+ self.doc.recompute()
|
||||
+ self.assertEqual(sheet.get('C1'), Units.Quantity('3 mm'))
|
||||
+
|
||||
+
|
||||
def tearDown(self):
|
||||
#closing doc
|
||||
FreeCAD.closeDocument(self.doc.Name)
|
||||
diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp
|
||||
index 02f0103d2..de4f5ff8e 100644
|
||||
--- a/src/Mod/TechDraw/Gui/Command.cpp
|
||||
+++ b/src/Mod/TechDraw/Gui/Command.cpp
|
||||
@@ -78,6 +78,16 @@
|
||||
using namespace TechDrawGui;
|
||||
using namespace std;
|
||||
|
||||
+bool isArchSection(App::DocumentObject* obj)
|
||||
+{
|
||||
+ bool result = true;
|
||||
+ App::Property* prop1 = obj->getPropertyByName("Objects");
|
||||
+ App::Property* prop2 = obj->getPropertyByName("OnlySolids");
|
||||
+ if ( (!prop1) || (!prop2) ) {
|
||||
+ result = false;
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_NewPageDef (default template)
|
||||
@@ -92,7 +102,7 @@ CmdTechDrawNewPageDef::CmdTechDrawNewPageDef()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert new default drawing page");
|
||||
sToolTipText = QT_TR_NOOP("Insert new default drawing page");
|
||||
- sWhatsThis = "TechDraw_NewPageDef";
|
||||
+ sWhatsThis = "TechDraw_New_Default";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-new-default";
|
||||
}
|
||||
@@ -162,7 +172,7 @@ CmdTechDrawNewPage::CmdTechDrawNewPage()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert new drawing page from template");
|
||||
sToolTipText = QT_TR_NOOP("Insert new drawing page from template");
|
||||
- sWhatsThis = "TechDraw_NewPage";
|
||||
+ sWhatsThis = "TechDraw_New_Pick";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-new-pick";
|
||||
}
|
||||
@@ -302,7 +312,7 @@ CmdTechDrawNewViewSection::CmdTechDrawNewViewSection()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert section view in drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new Section View of a Part in the active drawing");
|
||||
- sWhatsThis = "TechDraw_NewViewSecton";
|
||||
+ sWhatsThis = "TechDraw_NewSection";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-viewsection";
|
||||
}
|
||||
@@ -371,7 +381,7 @@ CmdTechDrawNewViewDetail::CmdTechDrawNewViewDetail()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert detail view in drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new Detail View of a Part in the active drawing");
|
||||
- sWhatsThis = "TechDraw_NewViewDetail";
|
||||
+ sWhatsThis = "TechDraw_NewProjGroup";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-viewdetail";
|
||||
}
|
||||
@@ -562,7 +572,7 @@ CmdTechDrawAnnotation::CmdTechDrawAnnotation()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("&Annotation");
|
||||
sToolTipText = QT_TR_NOOP("Inserts an Annotation in the active drawing");
|
||||
- sWhatsThis = "TechDraw_Annotation";
|
||||
+ sWhatsThis = "TechDraw_NewAnnotation";
|
||||
sStatusTip = QT_TR_NOOP("Inserts an Annotation in the active drawing");
|
||||
sPixmap = "actions/techdraw-annotation";
|
||||
}
|
||||
@@ -855,7 +865,7 @@ CmdTechDrawDraftView::CmdTechDrawDraftView()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a DraftView");
|
||||
sToolTipText = QT_TR_NOOP("Inserts a Draft WB object into the active drawing");
|
||||
- sWhatsThis = "TechDraw_DraftView";
|
||||
+ sWhatsThis = "TechDraw_NewDraft";
|
||||
sStatusTip = QT_TR_NOOP("Inserts a Draft WB object into the active drawing");
|
||||
sPixmap = "actions/techdraw-draft-view";
|
||||
}
|
||||
@@ -869,6 +879,7 @@ void CmdTechDrawDraftView::activated(int iMsg)
|
||||
}
|
||||
|
||||
//TODO: shouldn't this be checking for a Draft object only?
|
||||
+// there is no obvious way of check for a Draft object. Could be App::FeaturePython, Part::Part2DObject, ???
|
||||
std::vector<App::DocumentObject*> objects = getSelection().getObjectsOfType(App::DocumentObject::getClassTypeId());
|
||||
if (objects.empty()) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
@@ -894,7 +905,6 @@ bool CmdTechDrawDraftView::isActive(void)
|
||||
return DrawGuiUtil::needPage(this);
|
||||
}
|
||||
|
||||
-//TODO: shouldn't this be checking for an Arch object only?
|
||||
//===========================================================================
|
||||
// TechDraw_ArchView
|
||||
//===========================================================================
|
||||
@@ -908,7 +918,7 @@ CmdTechDrawArchView::CmdTechDrawArchView()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert an ArchView");
|
||||
sToolTipText = QT_TR_NOOP("Inserts a view of an Arch Section Plane into the active drawing");
|
||||
- sWhatsThis = "TechDraw_ArchView";
|
||||
+ sWhatsThis = "TechDraw_NewArch";
|
||||
sStatusTip = QT_TR_NOOP("Inserts a view of an Arch Section Plane into the active drawing");
|
||||
sPixmap = "actions/techdraw-arch-view";
|
||||
}
|
||||
@@ -922,23 +932,33 @@ void CmdTechDrawArchView::activated(int iMsg)
|
||||
}
|
||||
|
||||
std::vector<App::DocumentObject*> objects = getSelection().getObjectsOfType(App::DocumentObject::getClassTypeId());
|
||||
- if (objects.size() != 1) {
|
||||
+ if (objects.empty()) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
- QObject::tr("Select exactly one Arch Section Plane object."));
|
||||
+ QObject::tr("Select at least one object."));
|
||||
return;
|
||||
}
|
||||
- App::Property* prop1 = objects[0]->getPropertyByName("Objects");
|
||||
- App::Property* prop2 = objects[0]->getPropertyByName("OnlySolids");
|
||||
- if ( (!prop1) || (!prop2) ) {
|
||||
+ int ifound = 0;
|
||||
+ bool found = false;
|
||||
+ for (auto& obj: objects) {
|
||||
+ if (isArchSection(obj)) {
|
||||
+ found = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ ifound++;
|
||||
+ }
|
||||
+ App::DocumentObject* archObj;
|
||||
+ if (found) {
|
||||
+ archObj = objects[ifound];
|
||||
+ } else {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
- QObject::tr("The selected object is not an Arch Section Plane."));
|
||||
+ QObject::tr("There is no Arch Section Plane in selection."));
|
||||
return;
|
||||
}
|
||||
|
||||
std::string PageName = page->getNameInDocument();
|
||||
|
||||
std::string FeatName = getUniqueObjectName("ArchView");
|
||||
- std::string SourceName = objects[0]->getNameInDocument();
|
||||
+ std::string SourceName = archObj->getNameInDocument();
|
||||
openCommand("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());
|
||||
@@ -1024,7 +1044,7 @@ CmdTechDrawExportPage::CmdTechDrawExportPage()
|
||||
sGroup = QT_TR_NOOP("File");
|
||||
sMenuText = QT_TR_NOOP("&Export page...");
|
||||
sToolTipText = QT_TR_NOOP("Export a page to an SVG file");
|
||||
- sWhatsThis = "TechDraw_ExportPage";
|
||||
+ sWhatsThis = "TechDraw_SaveSVG";
|
||||
sStatusTip = QT_TR_NOOP("Export a page to an SVG file");
|
||||
sPixmap = "actions/techdraw-saveSVG";
|
||||
}
|
||||
diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
|
||||
index f5324cc3b..5fa0b0bf9 100644
|
||||
--- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
|
||||
+++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp
|
||||
@@ -236,7 +236,7 @@ CmdTechDrawNewRadiusDimension::CmdTechDrawNewRadiusDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new radius dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new radius dimension feature for the selected view");
|
||||
- sWhatsThis = "TechDraw_NewRadiusDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Radius";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Radius";
|
||||
}
|
||||
@@ -323,7 +323,7 @@ CmdTechDrawNewDiameterDimension::CmdTechDrawNewDiameterDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new diameter dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new diameter dimension feature for the selected view");
|
||||
- sWhatsThis = "TechDraw_NewDiameterDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Diameter";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Diameter";
|
||||
}
|
||||
@@ -410,7 +410,7 @@ CmdTechDrawNewLengthDimension::CmdTechDrawNewLengthDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new length dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new length dimension");
|
||||
- sWhatsThis = "TechDraw_NewLengthDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Length";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Length";
|
||||
}
|
||||
@@ -518,7 +518,7 @@ CmdTechDrawNewDistanceXDimension::CmdTechDrawNewDistanceXDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new horizontal dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new horizontal-distance dimension");
|
||||
- sWhatsThis = "TechDraw_NewDistanceXDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Horizontal";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Horizontal";
|
||||
}
|
||||
@@ -626,7 +626,7 @@ CmdTechDrawNewDistanceYDimension::CmdTechDrawNewDistanceYDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new vertical dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new vertical distance dimension");
|
||||
- sWhatsThis = "TechDraw_NewDistanceYDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Vertical";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Vertical";
|
||||
}
|
||||
@@ -733,7 +733,7 @@ CmdTechDrawNewAngleDimension::CmdTechDrawNewAngleDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert a new angle dimension into the drawing");
|
||||
sToolTipText = QT_TR_NOOP("Insert a new angle dimension");
|
||||
- sWhatsThis = "TechDraw_NewAngleDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Angle";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Angle";
|
||||
}
|
||||
@@ -822,7 +822,7 @@ CmdTechDrawLinkDimension::CmdTechDrawLinkDimension()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Link a dimension to 3D geometry");
|
||||
sToolTipText = QT_TR_NOOP("Link a dimension to 3D geometry");
|
||||
- sWhatsThis = "TechDraw_LinkDimension";
|
||||
+ sWhatsThis = "TechDraw_Dimension_Link";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Dimension_Link";
|
||||
}
|
||||
diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp
|
||||
index 9edf97d00..b6cb5dab0 100644
|
||||
--- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp
|
||||
+++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp
|
||||
@@ -80,7 +80,7 @@ CmdTechDrawNewHatch::CmdTechDrawNewHatch()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Hatch a Face using image file");
|
||||
sToolTipText = QT_TR_NOOP("Hatch a Face using image file");
|
||||
- sWhatsThis = "TechDraw_NewHatch";
|
||||
+ sWhatsThis = "TechDraw_Hatch";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-hatch";
|
||||
}
|
||||
@@ -142,7 +142,7 @@ CmdTechDrawNewGeomHatch::CmdTechDrawNewGeomHatch()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Apply geometric hatch to a Face");
|
||||
sToolTipText = QT_TR_NOOP("Apply geometric hatch to a Face");
|
||||
- sWhatsThis = "TechDraw_NewGeomHatch";
|
||||
+ sWhatsThis = "TechDraw_GeomHatch";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-geomhatch";
|
||||
}
|
||||
@@ -264,7 +264,7 @@ CmdTechDrawToggleFrame::CmdTechDrawToggleFrame()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Turn View Frames on or off");
|
||||
sToolTipText = QT_TR_NOOP("Turn View Frames on or off");
|
||||
- sWhatsThis = "TechDraw_ToggleFrame";
|
||||
+ sWhatsThis = "TechDraw_Toggle";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/techdraw-toggleframe";
|
||||
}
|
||||
@@ -311,7 +311,7 @@ CmdTechDrawRedrawPage::CmdTechDrawRedrawPage()
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Redraw a page");
|
||||
sToolTipText = QT_TR_NOOP("Redraw a page");
|
||||
- sWhatsThis = "TechDraw_RedrawPage";
|
||||
+ sWhatsThis = "TechDraw_Redraw";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_Tree_Page_Sync";
|
||||
}
|
36
fix-build.diff
Normal file
36
fix-build.diff
Normal file
@ -0,0 +1,36 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3ecfe23a6..246bb15a8 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -445,7 +445,6 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
|
||||
|
||||
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677598
|
||||
# Acceptable versions of Python
|
||||
-set(Python_ADDITIONAL_VERSIONS "2.7")
|
||||
|
||||
# For building on OS X
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
diff --git a/src/3rdParty/salomesmesh/CMakeLists.txt b/src/3rdParty/salomesmesh/CMakeLists.txt
|
||||
index 303ae6e0a..9c10046e6 100644
|
||||
--- a/src/3rdParty/salomesmesh/CMakeLists.txt
|
||||
+++ b/src/3rdParty/salomesmesh/CMakeLists.txt
|
||||
@@ -379,6 +379,7 @@ if (BUILD_FEM_NETGEN)
|
||||
FILE(GLOB NETGENPlugin_source_files src/NETGENPlugin/*.cpp inc/NETGENPlugin_*.h* )
|
||||
ADD_LIBRARY(NETGENPlugin SHARED ${NETGENPlugin_source_files})
|
||||
TARGET_LINK_LIBRARIES(NETGENPlugin SMDS SMESHDS SMESH StdMeshers ${SMESH_LIBS} )
|
||||
+set_property(TARGET NETGENPlugin PROPERTY CXX_STANDARD 14)
|
||||
|
||||
SET_BIN_DIR(NETGENPlugin NETGENPlugin)
|
||||
if(WIN32)
|
||||
diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
|
||||
index 3b66ec663..3d4bc8afd 100644
|
||||
--- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
|
||||
+++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <GC_MakeSegment.hxx>
|
||||
#include <GeomAPI_ExtremaCurveCurve.hxx>
|
||||
#include <Geom_Line.hxx>
|
||||
+#include <Quantity_Parameter.hxx>
|
||||
#include <IntAna_IntConicQuad.hxx>
|
||||
#include <IntAna_Quadric.hxx>
|
||||
#include <gp_Lin.hxx>
|
48
fix-draft-module-with-python3.patch
Normal file
48
fix-draft-module-with-python3.patch
Normal file
@ -0,0 +1,48 @@
|
||||
commit 338630b951abab1e44b01c80fbe2d07aba415daf
|
||||
Author: Adrian Schröter <adrian@suse.de>
|
||||
Date: Tue Apr 17 08:39:39 2018 +0200
|
||||
|
||||
fix runtime error creating a wire from string with python3
|
||||
|
||||
Tested against version 0.17
|
||||
|
||||
diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py
|
||||
index 4c27018c4..da8db2895 100644
|
||||
--- a/src/Mod/Draft/Draft.py
|
||||
+++ b/src/Mod/Draft/Draft.py
|
||||
@@ -6133,8 +6133,10 @@ class _ShapeString(_DraftObject):
|
||||
ff8 = obj.FontFile.encode('utf8') # 1947 accents in filepath
|
||||
# TODO: change for Py3?? bytes?
|
||||
# Part.makeWireString uses FontFile as char* string
|
||||
-# CharList = Part.makeWireString(obj.String,obj.FontFile,obj.Size,obj.Tracking)
|
||||
- CharList = Part.makeWireString(obj.String,ff8,obj.Size,obj.Tracking)
|
||||
+ if sys.version_info.major < 3:
|
||||
+ CharList = Part.makeWireString(obj.String,ff8,obj.Size,obj.Tracking)
|
||||
+ else:
|
||||
+ CharList = Part.makeWireString(obj.String,obj.FontFile,obj.Size,obj.Tracking)
|
||||
if len(CharList) == 0:
|
||||
msg(translate("draft","ShapeString: string has no wires\n"), 'warning')
|
||||
return
|
||||
@@ -6142,8 +6144,7 @@ class _ShapeString(_DraftObject):
|
||||
|
||||
# test a simple letter to know if we have a sticky font or not
|
||||
sticky = False
|
||||
-# testWire = Part.makeWireString("L",obj.FontFile,obj.Size,obj.Tracking)[0][0]
|
||||
- testWire = Part.makeWireString("L",ff8,obj.Size,obj.Tracking)[0][0]
|
||||
+ testWire = Part.makeWireString("L",obj.FontFile,obj.Size,obj.Tracking)[0][0]
|
||||
if testWire.isClosed:
|
||||
try:
|
||||
testFace = Part.Face(testWire)
|
||||
diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py
|
||||
index a007d03e6..1de205bbf 100644
|
||||
--- a/src/Mod/Draft/DraftTools.py
|
||||
+++ b/src/Mod/Draft/DraftTools.py
|
||||
@@ -2204,7 +2204,7 @@ class ShapeString(Creator):
|
||||
#print("debug: D_T ShapeString.createObject type(self.SString): " str(type(self.SString)))
|
||||
|
||||
dquote = '"'
|
||||
- if type(self.SString) == unicode: # Python3: no more unicode
|
||||
+ if sys.version_info.major < 3: # Python3: no more unicode
|
||||
String = 'u' + dquote + self.SString.encode('unicode_escape') + dquote
|
||||
else:
|
||||
String = dquote + self.SString + dquote
|
@ -1,23 +0,0 @@
|
||||
diff -Naur FreeCAD-0.16.orig/src/Gui/DownloadManager.cpp FreeCAD-0.16/src/Gui/DownloadManager.cpp
|
||||
--- FreeCAD-0.16.orig/src/Gui/DownloadManager.cpp 2016-04-07 03:39:34.000000000 +0200
|
||||
+++ FreeCAD-0.16/src/Gui/DownloadManager.cpp 2017-02-07 17:05:51.753657498 +0100
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <QMetaEnum>
|
||||
#include <QSettings>
|
||||
#include <QFileIconProvider>
|
||||
-#include <QWebSettings>
|
||||
|
||||
#include "DownloadItem.h"
|
||||
#include "DownloadManager.h"
|
||||
@@ -224,11 +223,6 @@
|
||||
ui->downloadsView->setRowHeight(row, item->minimumSizeHint().height());
|
||||
|
||||
bool remove = false;
|
||||
- QWebSettings *globalSettings = QWebSettings::globalSettings();
|
||||
- if (!item->downloading()
|
||||
- && globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled))
|
||||
- remove = true;
|
||||
-
|
||||
if (item->downloadedSuccessfully()
|
||||
&& removePolicy() == DownloadManager::SuccessFullDownload) {
|
||||
remove = true;
|
@ -1,124 +0,0 @@
|
||||
diff -Naur FreeCAD-0.16.orig/src/Mod/Arch/ArchServer.py FreeCAD-0.16/src/Mod/Arch/ArchServer.py
|
||||
--- FreeCAD-0.16.orig/src/Mod/Arch/ArchServer.py 2016-04-07 03:39:34.000000000 +0200
|
||||
+++ FreeCAD-0.16/src/Mod/Arch/ArchServer.py 2017-02-07 18:55:34.918643280 +0100
|
||||
@@ -36,20 +36,6 @@
|
||||
__url__ = "http://www.freecadweb.org"
|
||||
|
||||
|
||||
-class _CommandBimserver:
|
||||
- "the Arch Bimserver command definition"
|
||||
- def GetResources(self):
|
||||
- return {'Pixmap' : 'Arch_Bimserver',
|
||||
- 'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Bimserver","BIM server"),
|
||||
- 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Bimserver","Opens a browser window and connects to a BIM server instance")}
|
||||
-
|
||||
- def Activated(self):
|
||||
- p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
- url = p.GetString("BimServerUrl","http://localhost:8082")
|
||||
- FreeCADGui.addModule("WebGui")
|
||||
- FreeCADGui.doCommand("WebGui.openBrowser(\""+url+"\")")
|
||||
-
|
||||
-
|
||||
class _CommandGit:
|
||||
"the Arch Git Commit command definition"
|
||||
def GetResources(self):
|
||||
@@ -161,5 +147,4 @@
|
||||
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
- FreeCADGui.addCommand('Arch_Bimserver',_CommandBimserver())
|
||||
FreeCADGui.addCommand('Arch_Git',_CommandGit())
|
||||
diff -Naur FreeCAD-0.16.orig/src/Mod/Arch/InitGui.py FreeCAD-0.16/src/Mod/Arch/InitGui.py
|
||||
--- FreeCAD-0.16.orig/src/Mod/Arch/InitGui.py 2016-04-07 03:39:34.000000000 +0200
|
||||
+++ FreeCAD-0.16/src/Mod/Arch/InitGui.py 2017-02-07 18:54:19.949158114 +0100
|
||||
@@ -44,7 +44,7 @@
|
||||
"Arch_SelectNonSolidMeshes","Arch_RemoveShape",
|
||||
"Arch_CloseHoles","Arch_MergeWalls","Arch_Check",
|
||||
"Arch_IfcExplorer","Arch_ToggleIfcBrepFlag","Arch_3Views",
|
||||
- "Arch_Bimserver","Arch_Git","Arch_IfcSpreadsheet"]
|
||||
+ "Arch_Git","Arch_IfcSpreadsheet"]
|
||||
|
||||
# draft tools
|
||||
self.drafttools = ["Draft_Line","Draft_Wire","Draft_Circle","Draft_Arc","Draft_Ellipse",
|
||||
diff -Naur FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Command.cpp FreeCAD-0.16/src/Mod/Drawing/Gui/Command.cpp
|
||||
--- FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Command.cpp 2016-04-07 03:39:34.000000000 +0200
|
||||
+++ FreeCAD-0.16/src/Mod/Drawing/Gui/Command.cpp 2017-02-07 18:52:19.077843909 +0100
|
||||
@@ -427,43 +427,6 @@
|
||||
|
||||
|
||||
//===========================================================================
|
||||
-// Drawing_OpenBrowserView
|
||||
-//===========================================================================
|
||||
-
|
||||
-DEF_STD_CMD_A(CmdDrawingOpenBrowserView);
|
||||
-
|
||||
-CmdDrawingOpenBrowserView::CmdDrawingOpenBrowserView()
|
||||
- : Command("Drawing_OpenBrowserView")
|
||||
-{
|
||||
- // seting the
|
||||
- sGroup = QT_TR_NOOP("Drawing");
|
||||
- sMenuText = QT_TR_NOOP("Open &browser view");
|
||||
- sToolTipText = QT_TR_NOOP("Opens the selected page in a browser view");
|
||||
- sWhatsThis = "Drawing_OpenBrowserView";
|
||||
- sStatusTip = QT_TR_NOOP("Opens the selected page in a browser view");
|
||||
- sPixmap = "actions/drawing-openbrowser";
|
||||
-}
|
||||
-
|
||||
-void CmdDrawingOpenBrowserView::activated(int iMsg)
|
||||
-{
|
||||
- unsigned int n = getSelection().countObjectsOfType(Drawing::FeaturePage::getClassTypeId());
|
||||
- if (n != 1) {
|
||||
- QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
- QObject::tr("Select one Page object."));
|
||||
- return;
|
||||
- }
|
||||
- std::vector<Gui::SelectionSingleton::SelObj> Sel = getSelection().getSelection();
|
||||
- doCommand(Doc,"PageName = App.activeDocument().%s.PageResult",Sel[0].FeatName);
|
||||
- doCommand(Doc,"import WebGui");
|
||||
- doCommand(Doc,"WebGui.openBrowser(PageName)");
|
||||
-}
|
||||
-
|
||||
-bool CmdDrawingOpenBrowserView::isActive(void)
|
||||
-{
|
||||
- return (getActiveGuiDocument() ? true : false);
|
||||
-}
|
||||
-
|
||||
-//===========================================================================
|
||||
// Drawing_Annotation
|
||||
//===========================================================================
|
||||
|
||||
@@ -786,7 +749,6 @@
|
||||
rcCmdMgr.addCommand(new CmdDrawingNewA3Landscape());
|
||||
rcCmdMgr.addCommand(new CmdDrawingNewView());
|
||||
rcCmdMgr.addCommand(new CmdDrawingOrthoViews());
|
||||
- rcCmdMgr.addCommand(new CmdDrawingOpenBrowserView());
|
||||
rcCmdMgr.addCommand(new CmdDrawingAnnotation());
|
||||
rcCmdMgr.addCommand(new CmdDrawingClip());
|
||||
rcCmdMgr.addCommand(new CmdDrawingSymbol());
|
||||
diff -Naur FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Workbench.cpp FreeCAD-0.16/src/Mod/Drawing/Gui/Workbench.cpp
|
||||
--- FreeCAD-0.16.orig/src/Mod/Drawing/Gui/Workbench.cpp 2016-04-07 03:39:34.000000000 +0200
|
||||
+++ FreeCAD-0.16/src/Mod/Drawing/Gui/Workbench.cpp 2017-02-07 19:10:18.512913826 +0100
|
||||
@@ -61,7 +61,6 @@
|
||||
*part << "Drawing_NewPage";
|
||||
*part << "Drawing_NewView";
|
||||
*part << "Drawing_OrthoViews";
|
||||
- *part << "Drawing_OpenBrowserView";
|
||||
*part << "Drawing_Annotation";
|
||||
*part << "Drawing_Clip";
|
||||
*part << "Drawing_Symbol";
|
||||
@@ -84,7 +83,6 @@
|
||||
*part << "Drawing_NewPage";
|
||||
*part << "Drawing_NewView";
|
||||
*part << "Drawing_OrthoViews";
|
||||
- *part << "Drawing_OpenBrowserView";
|
||||
*part << "Drawing_Annotation";
|
||||
*part << "Drawing_Clip";
|
||||
*part << "Drawing_Symbol";
|
||||
@@ -106,7 +104,6 @@
|
||||
//*img << "Drawing_NewA3Landscape";
|
||||
*img << "Drawing_NewPage";
|
||||
*img << "Drawing_OrthoViews";
|
||||
- *img << "Drawing_OpenBrowserView";
|
||||
*img << "Drawing_Annotation";
|
||||
*img << "Drawing_Clip";
|
||||
*img << "Drawing_DraftView";
|
Loading…
x
Reference in New Issue
Block a user