Giter Site home page Giter Site logo

freecad_assembly3's Introduction

Assembly3 Workbench for FreeCAD

Patreon Liberapay paypal

Assembly3 workbench is yet another attempt to bring assembly capability to FreeCAD. There is the original unfinished Assembly workbench in FreeCAD source tree, and Assembly2, which is an inspiration of this workbench, and with some code borrowed as well. The emphasis of Assembly3 is on full support of nested and multi-document assemblies.

You can find more details at Assembly3 wiki.

Update: I have added a donation button. Feel free to show your support, and thanks in advance!

Installation

Assembly3 workbench works with FreeCAD version 0.19 or higher. You can also try my fork of FreeCAD which bundles everything and with lots of extra enhancement to the official FreeCAD release. If you are using Linux, you can also choose the snap build which is updated more frequently.

If you want to build everything yourself, please check out the build instruction here.

If you are using one of the official FreeCAD pre-built images, then Assembly3 is already bundled inside. But it may not always contain the latest version. To install the latest version, just clone this repository to your FreeCAD user module directory. Depending on which platform you are on, the directory is located at

  • Windows: c:\Users\<your_user_name>\AppData\Roaming\FreeCAD\Mod
  • Linux: /home/<your_user_name>/.FreeCAD/Mod
  • MacOSX: /home/<your_user_name/Library/Preferences/FreeCAD/Mod

If you prefer zip file over git clone, you can download it here. and extract the archive to the above directory.

If you are not using any pre-built FreeCAD image, then in addition to clone the repository here, you'll also need to install the SolveSpace solver Python module.

For Windows, open a command prompt window, change directory to your FreeCAD installation directory, e.g. cd c:\Program Files\FreeCAD\bin. And install the solver by running command python.exe -m pip install py_slvs

IMPORTANT: For Linux and MacOSX, simply use your system Python to install the the solver, e.g. Python3 -m pip install py_slvs. The workspace will not function properly without a solver installed!

Design

The design of Assembly3 (and the fork of FreeCAD) partially follows the unfinished FreeCAD Assembly project plan, in particularly, the section Infrastructure and Object model. You can find more details at here.

Usage

Before starting to use the Assembly3 workbench, it is necessary for the user to be familiar with a few new concepts introduced by the forked FreeCAD.

You can find instructions on common operations along with some tutorials at here.

Comparing with Assembly2

This section is for those who have used Assembly2 before. Here is a brief list of comparison between Assembly2 to Assembly3.

  • Assembly2 supports only one assembly per document, so the document can be considered as the assembly container.

    Assembly3 has dedicated container for assembly and supports multiple nested assemblies per document.

  • Assembly2 has dedicated object for imported child feature. The child feature's geometry is imported as a compound, and can be updated by user in case of external modification of the geometry model.

    Assembly3 has no special object for imported feature, although the feature may be added through a link under some circumstances. Simply drag and drop feature into an Assembly container, even if the feature is in another document. Any modification of the feature is instantaneously visible to its parent assembly. The FreeCAD core provides various commands to help navigating among nested assemblies and the linked child features, import the external feature into the same document of the assembly, and export the child feature into external document.

  • In Assembly2, the imported child feature acts as a container to group related constraints. There is no visualization of the geometry element in the constraint.

    The Assembly3 constraints are grouped under the parent assembly, each constraint acts as a container of its referring geometry ElementLink, with enhanced visualization support. Simply right click the ElementLink and choose Link actions -> Select final linked object to jump to the actual geometry model object owning the geometry element.

  • Assembly2 has a dedicate task panel for degree of freedom animation.

    Assembly3 is currently lacking of similar functionality. However, it does allow you to interactively drag any part of the assembly under constraint in real time.

freecad_assembly3's People

Contributors

3nt3 avatar bgamari avatar chennes avatar cobaltcause avatar kuzma30 avatar lilal avatar looooo avatar luzpaz avatar maidenone avatar patola avatar realthunder avatar tomster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freecad_assembly3's Issues

addParamV() exception (Build Question?)

I've built LinkStage3 by myself and here is its "About" info:

OS: Debian GNU/Linux 8.4 (jessie)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.14929 (Git)
Build type: Unknown
Branch: LinkStage3
Hash: 87a1f78a31b5c1ff5e64838c82e79dc8963107c9
Python version: 2.7.9
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 7.1.0
Locale: English/UnitedStates (en_US)

Constraint solver is SolveSpace (which is also built by me)

Here is simple assembly I've tried:

unexpected-parameter

Error traceback is:

<asm3.gui> 18.47175 - gui.py(261): command "asm3CmdSolve" exception
Traceback (most recent call last):
  File "/opt/FreeCAD/Ext/freecad/asm3/FCADLogger.py", line 106, in report
    return func(*args,**kargs)
  File "/opt/FreeCAD/Ext/freecad/asm3/solver.py", line 404, in solve
    return _solve(*args,**kargs)
  File "/opt/FreeCAD/Ext/freecad/asm3/solver.py", line 374, in _solve
    Solver(assembly,reportFailed,dragPart,recompute,rollback)
  File "/opt/FreeCAD/Ext/freecad/asm3/solver.py", line 49, in __init__
    self.v0 = self.system.addParamV(0,group=self._fixedGroup)
TypeError: addParamV() got an unexpected keyword argument 'group'

Note that your 0.8.4 release has no such issue. Is it wrong approach to build against latest LinkStage3 commit?

Symoro as backend

Thank you for tackling the improvement of the assembly workbench!

I would like to suggest Symoro as alternative backend (https://github.com/symoro/symoro). Symoro is also based on Sympy. It may be easier to implement than Sympy directly because it uses the Khalil-Kleinfinger notation for serial/tree/closed chains (https://www.researchgate.net/publication/224729906_A_new_geometric_notation_for_open_and_closed-loop_robots).

The advantage of Symoro is that we could also export the kinematics/dynamics equations as symbolic expressions in C++.

FreeCAD crash

I don't know if this is somehow related with LinkStage3 branch or not, here is the most recent traceback output before the crash:

<Gui::Document> Document.cpp(367): cannot edit without active view
unfold successful
unfold successful
Exception (Fri Aug 31 22:37:58 2018): no view  
Exception (Fri Aug 31 22:38:10 2018): no view  
Exception (Fri Aug 31 22:38:13 2018): no view  
Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x35fc0) [0x7f8d8a26afc0]
#1  0x7f8d137b2d62 in PartGui::TaskAttacher::onSelectionChanged(Gui::SelectionChanges const&) from ././/lib/freecad-daily/lib/PartGui.so+0x162
#2  0x7f8d8cc9108f in Gui::SelectionObserver::_onSelectionChanged(Gui::SelectionChanges const&) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0xf
#3  0x7f8d8cca5a57 in boost::signal1<void, Gui::SelectionChanges const&, boost::last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)> >::operator()(Gui::SelectionChanges const&) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x507
#4  0x7f8d8cc94d27 in Gui::SelectionSingleton::slotSelectionChanged(Gui::SelectionChanges const&) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x1f7
#5  0x7f8d8cca5a57 in boost::signal1<void, Gui::SelectionChanges const&, boost::last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)> >::operator()(Gui::SelectionChanges const&) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x507
#6  0x7f8d8cca0798 in Gui::SelectionSingleton::addSelection(char const*, char const*, char const*, float, float, float, std::vector<Gui::SelectionSingleton::SelObj, std::allocator<Gui::SelectionSingleton::SelObj> > const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x808
#7  0x7f8d8cafa3a3 in Gui::SoFCUnifiedSelection::setSelection(std::vector<Gui::SoFCUnifiedSelection::PickedInfo, std::allocator<Gui::SoFCUnifiedSelection::PickedInfo> > const&, bool) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x6a3
#8  0x7f8d8cafb833 in Gui::SoFCUnifiedSelection::handleEvent(SoHandleEventAction*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x113
#9  0x7f8d89bbdc0c in SoNode::handleEventS(SoAction*, SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x4c
#10  0x7f8d89983c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#11  0x7f8d89ad3294 in SoChildList::traverse(SoAction*, int, int) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x174
#12  0x7f8d89bb366f in SoGroup::doAction(SoAction*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x3f
#13  0x7f8d89bd06d7 in SoSeparator::doAction(SoAction*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x27
#14  0x7f8d89bbdc0c in SoNode::handleEventS(SoAction*, SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x4c
#15  0x7f8d89983c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#16  0x7f8d8998e1aa in SoHandleEventAction::beginTraversal(SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x7a
#17  0x7f8d899847d2 in SoAction::apply(SoNode*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xd2
#18  0x7f8d89af10a9 in SoEventManager::actuallyProcessEvent(SoEvent const*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x69
#19  0x7f8d8cb6a0de in SIM::Coin3D::Quarter::QuarterWidget::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x1e
#20  0x7f8d8cb68283 in SIM::Coin3D::Quarter::SoQTQuarterAdaptor::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x43
#21  0x7f8d8cb9b7e9 in Gui::View3DInventorViewer::processSoEventBase(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x9
#22  0x7f8d8cb80b45 in Gui::BlenderNavigationStyle::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x215
#23  0x7f8d8cb7c162 in Gui::NavigationStyle::processEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x62
#24  0x7f8d8cb9b798 in Gui::View3DInventorViewer::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x88
#25  0x7f8d8cb698dc in SIM::Coin3D::Quarter::EventFilter::eventFilter(QObject*, QEvent*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x16c
#26  0x7f8d8a75b646 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x86
#27  0x7f8d8ac8ce0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x6c
#28  0x7f8d8ac935dd in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x3ad
#29  0x7f8d8c9856d1 in Gui::GUIApplication::notify(QObject*, QEvent*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x41
#30  0x7f8d8a75b4dd in QCoreApplication::notifyInternal(QObject*, QEvent*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x6d
#31  0x7f8d8ac92d93 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x153
#32  /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x2449cb) [0x7f8d8ad079cb]
#33  0x7f8d8ad07269 in QApplication::x11ProcessEvent(_XEvent*) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x1559
#34  /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x26bb02) [0x7f8d8ad2eb02]
#35  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x2e7) [0x7f8d84276287]
#36  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4c4c0) [0x7f8d842764c0]
#37  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7f8d8427654c]
#38  0x7f8d8a7887a1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x71
#39  /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x26bbb6) [0x7f8d8ad2ebb6]
#40  0x7f8d8a75a0af in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x2f
#41  0x7f8d8a75a3a5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x175
#42  0x7f8d8a75fb79 in QCoreApplication::exec() from /tmp/.mount_freeca9Qr3fD/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x89
#43  0x7f8d8c93e303 in Gui::Application::runApplication() from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x16a3
#44  freecad-daily(main+0x74b) [0x40355b]
#45  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f8d8a257b17]
#46  freecad-daily() [0x4044c7]

The last thing I was doing is as follows:

I changed some dimensions via Spreadsheet. Then went back in the history, then the crash happened.

How to perform assembly based modeling?

I need to cut the front panel of the enclosure to be able to plug the ethernet and usb cables, so I want to trigger appropriate cuts on the front-panel by moving it towards the device:

cut-front-panel

I even don't know the name of the operation but I think it's somehow related with assembly stage. Because when I define the cutting pattern and then move the electronic component, the cutting pattern should track the electronic part's movement.

Anyway, what is the name of the operation (so I could find some documentation about it) and if it is related with assembly, how can we do this in asm3?

FreeCAD crash while cancelling movement with escape key

Version

Release 0.8.6, Appimage on Debian 9

Reproduction

  1. Select an object inside an assembly container
  2. Start moving
  3. Press Esc key while dragging (with the intention of cancelling the drag operation)
  4. FreeCAD crashes.
FreeCAD 0.18, Libs: 0.18R14778 (Git)
ยฉ Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2018
  #####                 ####  ###   ####  
  #                    #      # #   #   # 
  #     ##  #### ####  #     #   #  #   # 
  ####  # # #  # #  #  #     #####  #   # 
  #     #   #### ####  #    #     # #   # 
  #     #   #    #     #    #     # #   #  ##  ##  ##
  #     #   #### ####   ### #     # ####   ##  ##  ##

Sheet Metal workbench loaded
Rebuilding Views for: Page/Page
Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x35fc0) [0x7fb01ac0efc0]
#1  0x7fb01a327bc5 in SoAction::traverse(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x15
#2  0x7fb01a477084 in SoChildList::traverseInPath(SoAction*, int, int const*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xa4
#3  0x7fb01a572b85 in SoSeparator::getMatrix(SoGetMatrixAction*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x55
#4  0x7fb01a327c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#5  0x7fb01a477084 in SoChildList::traverseInPath(SoAction*, int, int const*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xa4
#6  0x7fb01a572b85 in SoSeparator::getMatrix(SoGetMatrixAction*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x55
#7  0x7fb01a327c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#8  0x7fb01a477084 in SoChildList::traverseInPath(SoAction*, int, int const*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xa4
#9  0x7fb01a572b85 in SoSeparator::getMatrix(SoGetMatrixAction*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x55
#10  0x7fb01a327c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#11  0x7fb01a327604 in SoAction::apply(SoPath*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x144
#12  0x7fb01a5f69ce in SoDragger::updateDraggerCache(SoPath const*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xfe
#13  0x7fb01a5f76e7 in SoDragger::handleEvent(SoHandleEventAction*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x67
#14  0x7fb01a561c0c in SoNode::handleEventS(SoAction*, SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x4c
#15  0x7fb01a327c04 in SoAction::traverse(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x54
#16  0x7fb01a332193 in SoHandleEventAction::beginTraversal(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x63
#17  0x7fb01a3287d2 in SoAction::apply(SoNode*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0xd2
#18  0x7fb01a4950a9 in SoEventManager::actuallyProcessEvent(SoEvent const*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libCoin.so.80+0x69
#19  0x7fb01d50e0de in SIM::Coin3D::Quarter::QuarterWidget::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x1e
#20  0x7fb01d50c283 in SIM::Coin3D::Quarter::SoQTQuarterAdaptor::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x43
#21  0x7fb01d53f7db in Gui::View3DInventorViewer::processSoEvent(SoEvent const*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0xcb
#22  0x7fb01d50d8dc in SIM::Coin3D::Quarter::EventFilter::eventFilter(QObject*, QEvent*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x16c
#23  0x7fb01b0ff646 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x86
#24  0x7fb01b630e0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x6c
#25  0x7fb01b6386f1 in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x14c1
#26  0x7fb01d3296d1 in Gui::GUIApplication::notify(QObject*, QEvent*) from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x41
#27  0x7fb01b0ff4dd in QCoreApplication::notifyInternal(QObject*, QEvent*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x6d
#28  /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x268ff7) [0x7fb01b6cfff7]
#29  /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x269399) [0x7fb01b6d0399]
#30  0x7fb01b6aa3f7 in QApplication::x11ProcessEvent(_XEvent*) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4+0x6e7
#31  /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x26bb02) [0x7fb01b6d2b02]
#32  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x2e7) [0x7fb014c1a287]
#33  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4c4c0) [0x7fb014c1a4c0]
#34  /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7fb014c1a54c]
#35  0x7fb01b12c7a1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x71
#36  /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtGui.so.4(+0x26bbb6) [0x7fb01b6d2bb6]
#37  0x7fb01b0fe0af in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x2f
#38  0x7fb01b0fe3a5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x175
#39  0x7fb01b103b79 in QCoreApplication::exec() from /tmp/.mount_freecaljpCBK/usr/lib/x86_64-linux-gnu/libQtCore.so.4+0x89
#40  0x7fb01d2e2303 in Gui::Application::runApplication() from ././/lib/freecad-daily/lib/libFreeCADGui.so+0x16a3
#41  freecad-daily(main+0x74b) [0x40355b]
#42  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fb01abfbb17]
#43  freecad-daily() [0x4044c7]

TechDraw workbench dimensions don't work

Description

TechDraw module isn't able to draw dimensions.

Screencast/Reproduction

techdraw-not-working

Version

FC-Asm3 version: 0.8.3

OS: Debian GNU/Linux testing (buster)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.5235 (Git shallow) AppImage
Build type: None
Branch: LinkStage3
Hash: ccaa87e12aaadbd3106607fc503542a863b742da
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

Working Version

Screencast

techdraw-works

Version

FC-0.17 (compiled by myself)

OS: Debian GNU/Linux testing (buster)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.Unknown
Build type: Release
Python version: 2.7.15
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.9.1.oce-0.18
Locale: English/UnitedStates (en_US)

Isn't "Create Group" supported?

It seems "Create Group" is not supported. When objects are grouped they can not be moved or even their visibility can not be toggled (might be also related with #50 ). Does it have a meaning in Asm3 or is it already replaced by Assembly Containers?

Centering a point and a line with minimum distance

I needed to place the SD Card in the middle of Raspberry. The flow I could think of is:

  • Place a draft point (1) in the middle of SD Card to mark the middle point.
  • Create a draft plane in the middle of PCB
    • Mark the middle point (2) of the green line
    • Use PointOnLine coincident for point (2) and the DraftPlane
  • Use PointOnLine coincident for point (1) and the DraftPlane

image

How can I create such a DraftPlane? (or is there a more suitable way to achieve this?)

Building slvs

according to the wiki:

cd asm3
git submodule update --init slvs

but i found that i always ended up in detached state..

maiden@horse:~/projects/FreeCAD_assembly3/slvs/build$ git branch
* (HEAD detached at 665f4a6)
  python

running cmake would result in:

cmake -DBUILD_PYTHON=1 ..
CMake Error at cmake/GetGitCommitHash.cmake:8 (file):
  file failed to open for reading (Not a directory):

    /home/maiden/projects/FreeCAD_assembly3/slvs/.git/HEAD

running git checkout python after submodule update resolved this issue for me.

Incorrect "Exception: No view"

When GUI is in "Undocked mode", clicking some visual parts in the treeview causes this incorrect exception:

Exception (Fri Aug 31 22:37:58 2018): no view  

Bug when evaluating constraints with plane

In file utils.py in function getElementRotation(obj,reverse=False) return value, axis, is affected with an array instead of a FreeCAD.Vector.

the function fit_plane_to_surface1(face.Surface) return an array :

plane_norm, _plane_pos, error = \
                    fit_plane_to_surface1(face.Surface)

then plane_norm is affected to axis.

axis = plane_norm

At the end of function call to FreeCAD.Rotation fail because axis is not a FreeCAD.Vector.

return FreeCAD.Rotation(FreeCAD.Vector(0,0,-1 if reverse else 1),axis)

I fixed this by using following code

axis = FreeCAD.Vector(plane_norm)

I expect the same problem will occur with this code:

            axis_fitted, _center, error = \
                    fit_rotation_axis_to_surface1(face.Surface)
            error_normalized = error / face.BoundBox.DiagonalLength
            if error_normalized < 10**-6: #then good rotation_axis fix
                    axis = axis_fitted

I fixed this by using following code

axis = FreeCAD.Vector(axis_fitted)

Here is the full part of the code that fails

else: #numerically approximating surface
            plane_norm, _plane_pos, error = \
                    fit_plane_to_surface1(face.Surface)
            error_normalized = error / face.BoundBox.DiagonalLength
            if error_normalized < 10**-6: #then good plane fit
                axis = plane_norm
            axis_fitted, _center, error = \
                    fit_rotation_axis_to_surface1(face.Surface)
            error_normalized = error / face.BoundBox.DiagonalLength
            if error_normalized < 10**-6: #then good rotation_axis fix
                    axis = axis_fitted

I use latest build FreeCAD-asm3-20180630-7e5b3323-f5dd9d4.glibc2.17-x86_64.AppImage on Debian Stretch 64bit host.

Bug successfully debugged with winpdb.

This is my first ever github bug report sorry for any mistakes.

Center to plane constraint example

Is it currently possible to create a constraint between the center of the object's edge with a plane? This need is raised while creating a drawing from the following blueprint:

image

The closest option seems MidPoint constraint, but I couldn't make it work this way.

Same label can be assigned in treeview

In upstream, same label is not allowed in any case:

same-label-not-allowed-correctly

In LinkStage3, we can assign the same label in treeview erroneously:

same-label-allowed-erroneously

Reproduction

  1. Add a part, name it "myobject"
  2. Add another part, try to name it "myobject"
  3. The second part will be named as "myobject001"
  4. Try to rename "myobject001" as "myobject" again
  5. See the second object is renamed "succesfully" as "myobject" only in the treeview

FreeCAD freezes for a long period if STL is very big

While moving and rotating parts, FreeCAD window freezes for at least 30 seconds. I'm running 0.7-AppImage on Debian 64bit. At the freezing moment, last strace output is as follows:

stat("/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/mover", 0x7ffeb871dd50) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/mover.x86_64-linux-gnu.so", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/mover.so", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/movermodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/mover.py", O_RDONLY) = 13
fstat(13, {st_mode=S_IFREG|0664, st_size=14829, ...}) = 0
openat(AT_FDCWD, "/tmp/.mount_FreeCADiw2fU/usr/lib/freecad-daily/Ext/freecad/asm3/mover.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
fstat(13, {st_mode=S_IFREG|0664, st_size=14829, ...}) = 0
read(13, "import math\nfrom collections imp"..., 8192) = 8192
read(13, "   assembly = info.Parent.getLin"..., 8192) = 6637
read(13, "", 8192)                      = 0
close(13)                               = 0
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="\1\30\v\0\366\1\200\4\26\1\200\4\0\0\0\0d\0\36\0\0\0\1\0\371\0\0\0\n \0\0"..., iov_len=152}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 152
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\335?\22\0\0\0008\1\0\0\211\n\256\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 104
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="\24\0\6\0\211\n\256\0\371\1\0\0\6\0\0\0\0\0\0\0\1\0\0\0", iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\336?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="\17\0\2\0\211\n\256\0", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\337?\20\0\0\0008\1\0\0008\1\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 96
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="(\0\4\0\26\1\200\4\211\n\256\0\0\0\0\0", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1\340?\0\0\0\0\26\1\200\4\0\0\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="\3\0\2\0\211\n\256\0\16\n\2\0\211\n\256\0", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\341?\3\0\0\0A\0\0\0\1\0\n\n\377\377\377\377\0\0\0\0\0\0\2\0@\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 76
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{iov_base="\22\0\30\0\26\1\200\4(\0\0\0)\0\0\0 \0\0\0\22\0\0\0\37\2\0\0\0\0\0\0"..., iov_len=120}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 120
poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\34\0\343?\26\1\200\4(\0\0\0\211\270\33\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 84
recvmsg(7, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8

"SWIG_ADD_MODULE is deprecated" with Cmake>3.8

Complete log:

adi@adi-MS-7A34:~/kompilacje/FreeCAD_assembly3/slvs/build$ cmake -DBUILD_PYTHON=1 ..
CMake Error at cmake/GetGitCommitHash.cmake:8 (file):
  file failed to open for reading (Not a directory):

    /home/adi/kompilacje/FreeCAD_assembly3/slvs/.git/HEAD
Call Stack (most recent call first):
  cmake/GetGitCommitHash.cmake:35 (get_git_commit_hash)
  CMakeLists.txt:23 (include)


-- Using in-tree libdxfrw
-- Found SWIG: /usr/bin/swig3.0 (found version "3.0.10") 
-- Found PythonInterp: /usr/bin/python (found version "2.7.14") 
-- python version 2.7
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable exact version "2.7.14") 
CMake Deprecation Warning at /usr/share/cmake-3.9/Modules/UseSWIG.cmake:228 (message):
  SWIG_ADD_MODULE is deprecated.  Use SWIG_ADD_LIBRARY instead.
Call Stack (most recent call first):
  src/swig/python/CMakeLists.txt:34 (swig_add_module)


-- Configuring incomplete, errors occurred!
See also "/home/adi/kompilacje/FreeCAD_assembly3/slvs/build/CMakeFiles/CMakeOutput.log".
adi@adi-MS-7A34:~/kompilacje/FreeCAD_assembly3/slvs/build$ ls
CMakeCache.txt  CMakeFiles  exposed  extlib  src  tools
adi@adi-MS-7A34:~/kompilacje/FreeCAD_assembly3/slvs/build$ ls
CMakeCache.txt  CMakeFiles  exposed  extlib  src  tools
adi@adi-MS-7A34:~/kompilacje/FreeCAD_assembly3/slvs/build$ rm -f CMakeCache.txt 
adi@adi-MS-7A34:~/kompilacje/FreeCAD_assembly3/slvs/build$ cmake -DBUILD_PYTHON=1 ..
CMake Error at cmake/GetGitCommitHash.cmake:8 (file):
  file failed to open for reading (Not a directory):

    /home/adi/kompilacje/FreeCAD_assembly3/slvs/.git/HEAD
Call Stack (most recent call first):
  cmake/GetGitCommitHash.cmake:35 (get_git_commit_hash)
  CMakeLists.txt:23 (include)


-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so  
-- Using in-tree libdxfrw
-- Found SPACEWARE: /usr/lib/libspnav.so  
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'zlib'
--   Found zlib, version 1.2.11
-- Checking for module 'libpng'
--   Found libpng, version 1.6.34
-- Checking for module 'fontconfig'
--   Found fontconfig, version 2.11.94
-- Checking for module 'json-c'
--   Found json-c, version 0.12.1
-- Checking for module 'glew'
--   Found glew, version 2.0.0
-- Checking for module 'freetype2'
--   Found freetype2, version 20.0.14
-- Checking for modules 'gtkmm-2.4;pangomm-1.4;x11'
--   Found gtkmm-2.4, version 2.24.5
--   Found pangomm-1.4, version 2.40.1
--   Found x11, version 1.6.4
-- Found SWIG: /usr/bin/swig3.0 (found version "3.0.10") 
-- Found PythonInterp: /usr/bin/python (found version "2.7.14") 
-- python version 2.7
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable exact version "2.7.14") 
CMake Deprecation Warning at /usr/share/cmake-3.9/Modules/UseSWIG.cmake:228 (message):
  SWIG_ADD_MODULE is deprecated.  Use SWIG_ADD_LIBRARY instead.
Call Stack (most recent call first):
  src/swig/python/CMakeLists.txt:34 (swig_add_module)


-- Configuring incomplete, errors occurred!
See also "/home/adi/kompilacje/FreeCAD_assembly3/slvs/build/CMakeFiles/CMakeOutput.log".

Focus "Distance" input on constraint click

From the point of view of UX, if the value is painted in blue when I click on constraint, I expect to be able to type the value immediately, but it seems it's handled as camera angle shortcut at that time I need to click to focus "again":

distance-input-focus

"Select linked object" jumps to deepest object, not to the owner

"Select linked object" button jumps to the deepest object, not the immediate owner/parent:

select-linked-object

Instead, I would expect it to select the nut in the parent external object, rpi-with-env in this case:

image

While I'm not able to reproduce, the "Select the deepest linked object" seems to jump to the owner, not the deepest.

Problem while moving calculated parts

Description

I defined a cutter shape, defined a panel, created a sub-shape binder and cut the panel with the binder. That works and updates work only if I move the original panel, not the cut version:

moving-parts

Here is the model: test2.zip

Expected Behaviour

Since I need to move what I'm seeing, I should be able to move the Cut, rather than panel.

FR: add angle rotation constraint

Hi @realthunder
thanks a lot for going into this 'A2 reloaded' WB!
A lot of new feature are going to be added to FC ๐Ÿ˜„
May I ask you if you would consider to add also an angle rotation constraint?
I linked a reference topic at FC forum
https://forum.freecadweb.org/viewtopic.php?f=3&t=24625
and a issue raised at A2 WB
https://github.com/hamish2014/FreeCAD_assembly2/issues/145
It would be nice to have a constraint to define an angle between two objects with the same axis... the angle would define a rotation referred to the plane orthogonal to the common axis...
Maurice

Can not change/delete sketch constraint

Problem

Can not change height of the enclosure (currently 77.44mm)

image

Reproduction

  1. Drawing is here

  2. Navigate to the panel/pad/sketch

  3. Try to delete the |--| 77.44mm constraint

  4. Exception arises as Property not found

Manipulator WB throws exception

Measurement Manipulator WB works correctly on my simple tests, I can not reproduce the exception on newly created drawings but here is the traceback:

Traceback (most recent call last):
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 382, in addSelection
    plcm, top_level_obj, bbC, pnt, orient, norm = get_placement_hierarchy (sel[0])
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 1117, in get_placement_hierarchy
    listSorted=get_sorted_list (Obj)
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 1026, in get_sorted_list
    if len(ap.InListRecursive) < lvl:
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'InListRecursive'
Traceback (most recent call last):
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 382, in addSelection
    plcm, top_level_obj, bbC, pnt, orient, norm = get_placement_hierarchy (sel[0])
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 1117, in get_placement_hierarchy
    listSorted=get_sorted_list (Obj)
  File "/home/ceremcem/.FreeCAD/Mod/Manipulator/Caliper.py", line 1026, in get_sorted_list
    if len(ap.InListRecursive) < lvl:
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'InListRecursive'

for the following operation:

measurement-exception

In this model: rpi3.fcstd.remove-extension.zip

Backward in the history ends up with duplicated objects

In this model adding an assembly container and putting some objects in it then going back in the history causes erroneous tree.

Reproduction

  • Add a new assembly container (Assembly001)
  • Move the assembly container into Assembly
  • Move rpi and socket-cut into Assembly001
  • Press <- button to go back to the beginning
  • See there are two Assembly001 containers show up.

history-error

linked circular edge inside a sketch not used in pad

I have reproduced the problem in the model uploaded into "Freecad Forum/Assembly/Assembly3 Preview". The model contains 2 sketches and 2 pads.

Each sketch inludes a rectangle and an inner circle.

In the first sketch the circle is created with circle feature of sketch.
In the second sketch the circle is created as a link to external geometry (the hole created by padding the first sketch).

Both sketches are paded but the result is different:
-The first sketch produces a brick with a hole (as expected)
-The second sketch produces only a brick without the hole.

screenshot from 2018-09-02 13-41-08
screenshot from 2018-09-02 13-39-51
screenshot from 2018-09-02 13-39-06

How to reset the orientation?

When we change the orientation of an object, the top/left/right/... view tool can not show that object in original orientation. How can we reset it so we could see the original right view when we click the "right" side of orientation cube (top right control)?

orientation-reset-problem

Unable to open part correctly in FreeCAD Assembly3

Hello realthunder,

I'm playing around with FreeCAD and Assembly3 for a few days now and I'm very impressed by what it can do. Good work. I like it!!!

While testing this software, I have noticed the following:

  1. Sometimes I have to remove some constraints, because the sketch is over-constrained in preview 0.7, while it is OK in v0.17.

  2. Sometimes when editing an existing sketch, the reference plane of the sketch is not correct. Try editing sketch002 of the following file:
    ReservoirTube.zip

  3. I have a file that I created in FreeCAD 0.17 and I would like to open it in FreeCAD + Assembly3 (preview 0.7). The attached file doesn't load correctly at all in preview 0.7. The initial shape is correct, but when the shape is recalculated, things go wrong. The problem starts with sketch002 and sketch003. In these sketches I have referenced some external geometries. It looks like v0.18 uses the wrong references.
    StoelBovenblad.zip

P.S. I'm using pre-release FreeCAD-asm3-20180630-e6c14b62-f5dd9d4-Win64 on Windows 10.

Update the preview appimage

There has been more work going on with the assembly_3 workbench since the Preview appimage was released. Is it possible to do a new appimage preview release for testing?

Is it possible to overwrite some properties of linked object?

As for as I could understand, linked objects' properties are exactly same of their parent (class) object, except for Placement property (they can be placed independently).

Likewise, can we overwrite some other properties of a linked object?

Rationale

I have a device enclosure panel that is made of a bent sheet metal and I want to generate 2D drawing of unfolded form of it to be able to generate laser cutting machine drawings. For that purpose, I created a linked copy and unfolded it, generated the drawing; but original bent form is unfolded too. I can create a copy and unfold it, but I want my further changes to be reflected to the unfolded instance (such as placement of socket window cuts).

So, can I overwrite some properties of a linked object ('Parameters Ex'.'unfold' in this case)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.