App::Link: the big merge

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Syres
Posts: 352
Joined: Thu Aug 09, 2018 11:14 am

Re: App::Link: the big merge

Postby Syres » Fri Aug 23, 2019 9:06 am

realthunder wrote:
Fri Aug 23, 2019 8:48 am
Possible Sketcher Regression
Would you mind having a look through https://forum.freecadweb.org/viewtopic.php?f=19&t=38746 and please give some feedback as to whether this is a regression.
chrisb
Posts: 18177
Joined: Tue Mar 17, 2015 9:14 am

Re: App::Link: the big merge

Postby chrisb » Fri Aug 23, 2019 10:54 am

realthunder wrote:
Fri Aug 23, 2019 8:48 am
The abortion is not very responsive, due to the nature of recomputing. It only checks for abortion after finish recomputing one object, so is GUI update. In other words, the application can still freeze if some object takes a long time to recompute.
This is a good way to handle abortion, because it leaves the model in a reasonable state.
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Fri Aug 23, 2019 2:11 pm

realthunder wrote:
Fri Aug 23, 2019 8:48 am
I will be changing the behavior of the part container soon, including this auto link behavior.
Hello!

I sync the LinkMerge branch.
realthunder wrote:
Fri Aug 23, 2019 8:48 am
Well, before the merge, recompute will freeze the application until all is finished. What I have changed now is to show a progress bar while recomputing, and the user can abort it, by pressing the 'ESC' key. Other key or mouse press are ignored. The abortion is not very responsive, due to the nature of recomputing. It only checks for abortion after finish recomputing one object, so is GUI update. In other words, the application can still freeze if some object takes a long time to recompute.
chrisb wrote:
Fri Aug 23, 2019 10:54 am
This is a good way to handle abortion, because it leaves the model in a reasonable state.
+1 , i think that is the best way to handle it. And it seems also to work, except if you are open a file with links (assembly). Maybe while loading a file, if you press ESC, FreeCAD should stop loading. But this is really only a minor issue. And the people that have so big files know that it takes time.

realthunder wrote:
Fri Aug 23, 2019 8:48 am
Oh, I just remember that you mentioned trouble creating external link ..... Just unselect the 'Sync view' option, also shown below.
Sync view did the trick, thanks!

realthunder wrote:
Fri Aug 23, 2019 8:48 am
I will be changing the behavior of the part container soon, including this auto link behavior.
I will look on that!

realthunder wrote:
Fri Aug 23, 2019 8:48 am
user1234 wrote: <class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
Did this happen when you edit some datum?
I have no idea. This was surprisingly on report view and in the console.

realthunder wrote:
Fri Aug 23, 2019 8:48 am
user1234 wrote: Also the testfile above still have the update issue. When you open it and you change something in the sketch, the updates does no work correct. But i think that is only a graphical issue.
It's fixed, please sync my branch.
Confirm that it works now. Thanks!

I found also two issues. One error and one crash. I will report as soon as possible.

All tested with:

Code: Select all

OS: Debian GNU/Linux 10 (buster) (X-Cinnamon/lightdm-xsession)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.17899 (Git)
Build type: DebWithRelInfo
Branch: LinkMerge
Hash: a17196cdbe868c57e5cdee92b986f730d9956878
Python version: 3.7.3
Qt version: 5.11.3
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

Thank you for your hard work!

Greetings
user
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Fri Aug 23, 2019 3:59 pm

So here the next two (four) issues.

Starting point for all issues: when you have an assembly, where the linked original files are not open in the task tab on the bottom.

1. When you right click on the linked part and left click on Toggle active Part, you get

Code: Select all

Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'NoneType' object has no attribute 'setActiveObject'
. Then after a while, sometimes after that i get

Code: Select all

Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
in the console in white, but not in red. Also this is not viewed in the in the report view.
_console_vs_reportview.png
_console_vs_reportview.png (26.21 KiB) Viewed 587 times
2. When you double click on the liked part, you get

Code: Select all

Traceback (most recent call last):
  File "<string>", line 2, in <module>
<class 'AttributeError'>: 'NoneType' object has no attribute 'setActiveObject'
.
_part_error.webm
(116.62 KiB) Downloaded 9 times

3. When you right click on the linked part and left click on Toggle active body, FreeCAD crashes with

Code: Select all

Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7f146e5e0840]
#1  0x7f1473d1ee88 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::_M_begin() const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xc
#2  0x7f1473d1e772 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x2c
#3  0x7f1473d1dd5d in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gui::ActiveObjectList::ObjectInfo, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x23
#4  0x7f13bf598563 in App::Part* Gui::ActiveObjectList::getObject<App::Part*>(char const*, App::DocumentObject**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) const from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x4f
#5  0x7f13bf597356 in App::Part* Gui::MDIView::getActiveObject<App::Part*>(char const*, App::DocumentObject**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) const from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x34
#6  0x7f13bf671d99 in PartDesignGui::ViewProviderBody::doubleClicked() from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x13b
#7  0x7f13bf679563 in boost::_mfi::mf0<bool, PartDesignGui::ViewProviderBody>::operator()(PartDesignGui::ViewProviderBody*) const from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x65
#8  0x7f13bf6779be in bool boost::_bi::list1<boost::_bi::value<PartDesignGui::ViewProviderBody*> >::operator()<bool, boost::_mfi::mf0<bool, PartDesignGui::ViewProviderBody>, boost::_bi::list0>(boost::_bi::type<bool>, boost::_mfi::mf0<bool, PartDesignGui::ViewProviderBody>&, boost::_bi::list0&, long) from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x4e
#9  0x7f13bf6765d9 in boost::_bi::bind_t<bool, boost::_mfi::mf0<bool, PartDesignGui::ViewProviderBody>, boost::_bi::list1<boost::_bi::value<PartDesignGui::ViewProviderBody*> > >::operator()() from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x35
#10  0x7f13bf6757be in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<bool, boost::_mfi::mf0<bool, PartDesignGui::ViewProviderBody>, boost::_bi::list1<boost::_bi::value<PartDesignGui::ViewProviderBody*> > >, void>::invoke(boost::detail::function::function_buffer&) from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x20
#11  0x7f14738faef0 in boost::function0<void>::operator()() const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x52
#12  0x7f147396c35c in Gui::ActionFunction::triggered() from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x86
#13  /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so(+0xf46938) [0x7f147396c938]
#14  0x7f146ef89906 in QMetaObject::activate(QObject*, int, int, void**) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x766
#15  0x7f146f8d6f02 in QAction::triggered(bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x42
#16  0x7f146f8d9510 in QAction::activate(QAction::ActionEvent) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0xf0
#17  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x2cba7c) [0x7f146fa49a7c]
#18  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x2d2fa0) [0x7f146fa50fa0]
#19  0x7f146fa51f2b in QMenu::mouseReleaseEvent(QMouseEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x26b
#20  0x7f146f91b588 in QWidget::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1d8
#21  0x7f146fa5438b in QMenu::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x11b
#22  0x7f146f8dd4b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
#23  0x7f146f8e4b98 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x458
#24  0x7f147393871d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#25  0x7f146ef605a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#26  0x7f146f8e3ec9 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1a9
#27  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1b83d3) [0x7f146f9363d3]
#28  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1bab9e) [0x7f146f938b9e]
#29  0x7f146f8dd4b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
#30  0x7f146f8e4950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
#31  0x7f147393871d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#32  0x7f146ef605a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#33  0x7f146f30dfe3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x703
#34  0x7f146f30fe25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x135
#35  0x7f146f2ea06b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0xab
#36  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0xdd3eb) [0x7f14694a23eb]
#37  0x7f146ef5f27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x13b
#38  0x7f146fa4ec4d in QMenu::exec(QPoint const&, QAction*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x6d
#39  0x7f1473b19c6f in Gui::TreeWidget::contextMenuEvent(QContextMenuEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xd77
#40  0x7f146f91b588 in QWidget::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1d8
#41  0x7f146f9bed1e in QFrame::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1e
#42  0x7f146fb301bb in QAbstractItemView::viewportEvent(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1ab
#43  0x7f146fb9840b in QTreeView::viewportEvent(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3b
#44  0x7f146ef602bb in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x9b
#45  0x7f146f8dd4a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x71
#46  0x7f146f8e4dfe in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x6be
#47  0x7f147393871d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#48  0x7f146ef605a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#49  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1b8801) [0x7f146f936801]
#50  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1bab9e) [0x7f146f938b9e]
#51  0x7f146f8dd4b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
#52  0x7f146f8e4950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
#53  0x7f147393871d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#54  0x7f146ef605a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#55  0x7f146f30dfe3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x703
#56  0x7f146f30fe25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x135
#57  0x7f146f2ea06b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0xab
#58  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0xdd3eb) [0x7f14694a23eb]
#59  0x7f146ef5f27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x13b
#60  0x7f146ef67262 in QCoreApplication::exec() from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x92
#61  0x7f1473824cbb in Gui::Application::runApplication() from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x228f
#62  ./FreeCAD(main+0xae7) [0x55cbafb250d6]
#63  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f146e5cd09b]
#64  ./FreeCAD(_start+0x2a) [0x55cbafb244ba]
.
_body_toggle_error.webm
(763.01 KiB) Downloaded 8 times

4. When you double click on the body of a liked part, FreeCAD crashes with

Code: Select all

Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7f1f3c697840]
#1  0x7f1f41dd5e88 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::_M_begin() const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xc
#2  0x7f1f41dd5772 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x2c
#3  0x7f1f41dd4d5d in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gui::ActiveObjectList::ObjectInfo, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Gui::ActiveObjectList::ObjectInfo> > >::find(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x23
#4  0x7f1e8d639563 in App::Part* Gui::ActiveObjectList::getObject<App::Part*>(char const*, App::DocumentObject**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) const from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x4f
#5  0x7f1e8d638356 in App::Part* Gui::MDIView::getActiveObject<App::Part*>(char const*, App::DocumentObject**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) const from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x34
#6  0x7f1e8d712d99 in PartDesignGui::ViewProviderBody::doubleClicked() from /home/pc/Programs/FreeCAD_Link/Mod/PartDesign/PartDesignGui.so+0x13b
#7  0x7f1f41bd35bc in Gui::TreeWidget::mouseDoubleClickEvent(QMouseEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x2c6
#8  0x7f1f3d9d30bf in QWidget::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0xd0f
#9  0x7f1f3da75d1e in QFrame::event(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1e
#10  0x7f1f3dbe71bb in QAbstractItemView::viewportEvent(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1ab
#11  0x7f1f3dc4f40b in QTreeView::viewportEvent(QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3b
#12  0x7f1f3d0172bb in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x9b
#13  0x7f1f3d9944a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x71
#14  0x7f1f3d99bb98 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x458
#15  0x7f1f419ef71d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#16  0x7f1f3d0175a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#17  0x7f1f3d99aec9 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1a9
#18  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1b8014) [0x7f1f3d9ed014]
#19  /lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1bab9e) [0x7f1f3d9efb9e]
#20  0x7f1f3d9944b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x81
#21  0x7f1f3d99b950 in QApplication::notify(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x210
#22  0x7f1f419ef71d in Gui::GUIApplication::notify(QObject*, QEvent*) from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0xff
#23  0x7f1f3d0175a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x179
#24  0x7f1f3d3c4f7c in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x69c
#25  0x7f1f3d3c6e25 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0x135
#26  0x7f1f3d3a106b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Gui.so.5+0xab
#27  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0xdd3eb) [0x7f1f375593eb]
#28  0x7f1f3d01627b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x13b
#29  0x7f1f3d01e262 in QCoreApplication::exec() from /lib/x86_64-linux-gnu/libQt5Core.so.5+0x92
#30  0x7f1f418dbcbb in Gui::Application::runApplication() from /home/pc/Programs/FreeCAD_Link/lib/libFreeCADGui.so+0x228f
#31  ./FreeCAD(main+0xae7) [0x55a69db7a0d6]
#32  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f1f3c68409b]
#33  ./FreeCAD(_start+0x2a) [0x55a69db794ba]
.
_body_doubleclick_error.webm
(751.7 KiB) Downloaded 6 times

All done with:

Code: Select all

OS: Debian GNU/Linux 10 (buster) (X-Cinnamon/lightdm-xsession)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.17899 (Git)
Build type: DebWithRelInfo
Branch: LinkMerge
Hash: a17196cdbe868c57e5cdee92b986f730d9956878
Python version: 3.7.3
Qt version: 5.11.3
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

Minimum test file:
test.tar.gz
(46.58 KiB) Downloaded 9 times


I hope that helps.

Greetings
user
realthunder
Posts: 1166
Joined: Tue Jan 03, 2017 10:55 am

Re: App::Link: the big merge

Postby realthunder » Sat Aug 24, 2019 2:46 am

user1234 wrote:
Fri Aug 23, 2019 3:59 pm
So here the next two (four) issues.
These are all kind of related. It should have been fixed. Please sync and test.
Try Assembly3 (latest version 0.10.2) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Sat Aug 24, 2019 5:35 pm

Hello!
realthunder wrote:
Sat Aug 24, 2019 2:46 am
It should have been fixed. Please sync and test.
Sync and tested, works fine, thanks!

fyI, one more bug from @DeepSOIC: https://forum.freecadweb.org/viewtopic.php?f=3&t=38798 . But i also found some expressions bugs since LinkMerge. But i will report them here.

Thank you for heavy and fast working on that, that is really superior!

Greetings
user
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Sat Aug 24, 2019 5:47 pm

By the way: Your PR 2499 and a other PR 2451 (from @sgrogan) have the same Path test correcting commit in it.

Greetings
user
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Sat Aug 24, 2019 10:54 pm

Hello!

The expression issue:

Before LinkMerge
When you make a Spreadsheet with a label and cell alias, the ExpressionCompleter lists objects with theirs name and theirs property label (the screencast is very weird, i gave the label a "_name" ). Both perform, the expression cell is maybe a little confusing, because you do not know if that is a name or a label.
_preLink.webm
(247 KiB) Downloaded 7 times


After LinkMerge
When you make a Spreadsheet with a label and cell alias, the ExpressionCompleter lists objects with theirs name and not theirs property label (the screencast is also very weird, i gave the label also a "_name" ). But when you write the object property label complete, it works again. Here again, both perform, but the label one gets angle brackets.
_afterLink.webm
(231.39 KiB) Downloaded 10 times
I think, that the brackets are good to distinguish name or label. But in my opinion the name should get the brackets, because it is very common, that the label is used in the expression. But more users or developers should say, how it should perform. (Means, the error is only the ExpressionCompleter).


Greetings
user
user1234
Posts: 181
Joined: Mon Jul 11, 2016 5:08 pm

Re: App::Link: the big merge

Postby user1234 » Sun Aug 25, 2019 12:02 am

Hello!

@realthunder, i have one question: i have opened my assembly and saw, that one document was grayed out. When i right click on the document, i also see, that it has an option reload document . I read your docs some time ago and saw, that such an option is planned. But today i have not found it (i also could missunderstood this before). Do you know something about this? When yes, how did i did that.
_reload.png
_reload.png (372.78 KiB) Viewed 409 times

Greetings
user
realthunder
Posts: 1166
Joined: Tue Jan 03, 2017 10:55 am

Re: App::Link: the big merge

Postby realthunder » Sun Aug 25, 2019 12:28 am

user1234 wrote:
Sat Aug 24, 2019 10:54 pm
When you make a Spreadsheet with a label and cell alias, the ExpressionCompleter lists objects with theirs name and not theirs property label (the screencast is also very weird, i gave the label also a "_name" ). But when you write the object property label complete, it works again. Here again, both perform, but the label one gets angle
I included some work on disambiguation in the Expression. The user must now explicitly uses the double angle bracket to indicate that you are referring by a label, either document label or object label. Label is user changeable, and is what you see in the tree view. Each document and object also have an internal name, which cannot be changed. The user refers to the object by its internal name without the angle bracket. You can find out the internal name by mouse over the tree item, and see the name in status bar. The completer does not do auto correction (yet), it just suggests matching entries based on your typing. To get label suggestions, just type the angle bracket. The expression parser, on the other hand, does perform some form of auto correction to reduce ambiguity, which is what you have seen here.

user1234 wrote:
Sun Aug 25, 2019 12:02 am
@realthunder, i have one question: i have opened my assembly and saw, that one document was grayed out. When i right click on the document, i also see, that it has an option reload document . I read your docs some time ago and saw, that such an option is planned. But today i have not found it (i also could missunderstood this before). Do you know something about this? When yes, how did i did that.
The grey button indicates the document is only partial loaded, which is a feature, not an error. For example, if your top level assembly file refers to a sub assembly in some document. And there is a drawing inside that same sub assembly document referring to some geometries. When you open the top assembly document, the sub assembly document will only load the sub assembly, but not the drawings.

You previously stored drawings inside the sub-assembly container, making the sub-assembly depending on the drawings. As I mentioned in previous post, this is not a desirable structure. The partial loading feature won't work this way.

When partial loading is activated, the load time will be reduced, but the cost is that any modification to the grey out document will result in warning, and the changes cannot be saved. You'll have to reload it. You can reload any individual grey out document by simply double click it. Or, you can reload the top level document by right click and select 'Reload document' command. This will reload all linked partial loaded documents.
Try Assembly3 (latest version 0.10.2) along with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal