Code Monkey home page Code Monkey logo

freecad_assembly4's Introduction

FreeCAD Assembly 4 workbench

Current version 0.50.12

Overview

This assembly workbench allows to assemble into a single assembly container other FreeCAD objects, and place them relative to the assembly and to each-other. The parts in the assembly can be in the same document as the assembly or in an external document. When parts are modified in their original document, they are instantly updated in the assembly.

An Assembly4 Assembly is a standard FreeCAD App::Part container, therefore it is compatible and can be manipulated with any FreeCAD tool handling App::Part objects. In particular, it can be inserted into another Assembly to create nested assemblies to any level. It can also contain solids, datum objects and sketches. A document can contain only 1 Assembly. Native FreeCAD Part and Body containers can be used as "part" to be inserted.

Parts are placed relative to each-other by matching features inside them. Specifically, in Assembly4, these features are virtual objects called LCS (for Local Coordinate System, also called datum coordinate system) and are attached using FreeCAD's built-in Part::Attacher and ExpressionEngine. No geometry is used to place and constrain parts relative to each other, thus avoiding a lot of the topological naming problems.

WARNING: FreeCAD introduced a new data format during the 0.22 development cycle that is incompatible with previous FreeCAD versions ! If you open a file made with the latest v0.22 development version with stable v0.21, all attachments are irreversibly lost.

Please Note: only Part and Body containers at the root of a document can be inserted. Objects nested inside containers cannot be used directly by Assembly4.

Please Note: objects in the same document as the linked part but outside the App::Part container will not be inserted.

Installation

Addon Manager (recommended)

FreeCAD Addon manager status

Assembly 4 is available through the FreeCAD Addon Manager (menu Tools > Addon Manager). It is called Assembly4 in the Addon Repository.

Important Note: Assembly 4 needs FreeCAD v0.19 or above. Assembly4 is not compatible with FreeCAD v0.18 and before.

Manual Installation

It is possible to install this workbench manually into FreeCAD's local workbench directory. See user instructions

Getting Started

Assembly4 uses extensively FreeCAD's built-in Part::Attacher, and you can find documentation following this link. It is recommended to be familiar with this function to get best usage of this workbebch.

You can get more information in the user instructions, the technical manual, and you can use the provided example assemblies to experiment with this workbench's features. There are also online tutorials :

Discussion

Please offer feedback or connect with the developers in the dedicated FreeCAD forum thread.

Addon Repository

This addon is hosted on a GitHub repository.

Release notes

Release notes can be found in the CHANGELOG.md file.

License

LGPLv2.1 (see LICENSE)

freecad_assembly4's People

Contributors

abetis avatar alexug avatar alonso-jamm avatar chennes avatar cyco avatar derandere1 avatar farmingsoul avatar frankalicious avatar hasecilu avatar howie-j avatar jeanmimi0168 avatar jolbas avatar jonasthomas avatar jslater89 avatar justinclift avatar kg333 avatar leoheck avatar lhlaurini avatar luzpaz avatar madhead avatar martinda avatar mohrjonas avatar neuoy avatar rpoisel avatar tomsaw avatar toralf-ahk avatar wschildbach avatar xoviat avatar zisoft avatar zolko-123 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

freecad_assembly4's Issues

Edit placement idalog is too wide

After inserting a part, I use the menu Assembly->Edit Placement of Part. The appearing Task dialog is much too wide:

FreeCAD_3NfEIGBxpc

This suddenly happened in my assembly after I already called this dialog for other parts and that time the dialog had the correct size.
I restarted FreeCAD but the problem remained.

I found the problem:
There is one part in the assembly with a large name:
FreeCAD_TT82hdrk11

So it is correct that the Task dialog is that wide. But for the other parts, the name is much shorter thus the dialog should fit to the length if the name.
This is currently not the case because I can for example made the dialog so small that one cannot read the full name:
FreeCAD_xnRa98YyGM

I use Assembly 0.9.6 and
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.21769 (Git)
Build type: Release
Branch: master
Hash: 801bfe4ba5f0910e9b2885917c521ab7fd8e9020
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)

Proposal: A button that will alter the attachment offset data based on selected 2 parallel faces

I have a short experience with asm4, but as I can see it, right after adding a part to the assembly, selecting 2 LCSs that have to be assigned, the next thing I do is going to the "attachment offset" data and playing with the numbers to have the added part show in the proper position and angle.
I intentionally call it "playing" since I don't always know what axis position should be changed to add an offset (not yet familiar with the colors of the axis), don't know if it should be a plus or minus number, rotate by 90deg or 270deg...

It would be nice to have a button, that after selecting 2 parallel faces the position will be updated so that those 2 faces will be on the same plane with 0 distance between them. They both should have the same shared axis (we selected it when added the part), so that axis position should be updated with the distance between the faces (or lines) in the proper direction (plus or minus).

The same cane be done with angle field when 2 parallel axis are selected and (another) button pressed.
Think about parts with multiple connection points (screws) that should be aligned. Assuming I have a "hole axis" added to the parts in the proper places, the alignment of one hole is done when the part is added. If I could select axis for 2 other holes that I would like to align and press a magic button that would update the angle field, it could save a lot of time.

Actually it could be the same button called "Allign", when 2 parallel axis is selected, rotation will be updated, if 2 parallel faces, or lines, or 2 points are selected, the button will update the position field based on the connected LCS.

Can't run module

Hello,
I tried to run your module with :

  • FreeCAD-asm3-Win64-Py3-Qt5-20190619
  • FreeCAD_0.19.17337_x64_LP_12.1.2_PY3QT5-WinVS2015
  • stable FreeCAD 0.18

Each time, I obtain the following error at the start of FreeCAD and the module is like missing :

"During initialization the error "'charmap' codec can't decode byte 0x90 in position 1460: character maps to " occurred in G:\Utilisateurs\me\Downloads\Freecad\Version\FreeCAD-asm3-Win64-Py3-Qt5-20190619\Mod\Mod_Asm4\InitGui.py
Please look into the log file for further information
"
Is there a specific version which Assembly4 work with?

Otherwise, your module seems great!
zackles

OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.16830 +1504 (Git)
Build type: Release
Branch: LinkStage3
Hash: c80967b68820e135b93c6e69a5a538adf58da504
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: French/France (fr_FR)

OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.17337 (Git)
Build type: Release
Branch: master
Hash: 0871fb49c71f1ac4029e441814332368f42bd78a
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: French/France (fr_FR)

OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16117 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: dbb4cc6415bac848a294f03b80f65e888d531742
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: French/France (fr_FR)

Running the Python command 'Asm4_newLCS' failed:

Hi all,

I recently installed the FreeCAD Assembly4 workbench and I get an error saying that I cannot create a local coordinate system when I try to create one for a part. However, FreeCAD actually does add the coordinate system, and I can edit the datum etc. as necessary. I am not sure if Assembly4 is supposed to be able to function with FreeCAD 0.18 but that is what I am using and I found it in the add-on manager. This is not hindering me from getting anything done but there is an error shown in FreeCAD nonetheless and figured I'd write it up. I will continue looking into it! Thanks!

Here is my setup:

OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.4 (GitTag)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

Error:

Running the Python command 'Asm4_newLCS' failed:
Traceback (most recent call last):
File "C:\Users\Owner\AppData\Roaming\FreeCAD\Mod\Assembly4\newDatumCmd.py", line 147, in Activated
Gui.Selection.addSelection( App.ActiveDocument.Name, parentContainer.Name, createdDatum.Name+'.' )

type must be 'DocumentObject[,subname[,x,y,z]]' or 'DocumentObject, list or tuple of subnames'

Editing LCS causes FreeCAD to crash

When using the Assembly4 workbench, if you create a model LCS and then attempt to edit it (right click and select "Edit datum"), FreeCAD crashes when you click OK.

OS: macOS Mojave (10.14)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.19323 (Git)
Build type: Release
Branch: master
Hash: 1b198453b8eb6aa2eaca4e4be4b49fee74e9de6e
Python version: 3.8.1
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: English/Canada (en_CA)

Variables can't exceed 99.99

I started tutorial 2 and found I could type in 100.00 for R_disk . The max that the spinner/text field will let me enter is 99.99. I'm running FreeCAD 0.19-19510 and Assembly 4 0.7.12, 2020-01-25.

Assembly4Tutorial2Issue

[FR] Easy way of showing only selected subassembly/part

I would like to have a button/hotkey that allows to show only currently selected subassembly(ies). Or at least a hotkey to select the top-level App::Part container called "Model"

Use case:
Focussing on certain parts of a big assembly ("Model") created with Assembly4 that contains multiple App::Links to subassemblies/parts (e.g. https://github.com/Zolko-123/FreeCAD_Examples/tree/master/Asm4_Example1).
Existing macros for showing only selected objects (https://wiki.freecadweb.org/Macro_Visibility_Manager and https://wiki.freecadweb.org/Macro_Toggle_Visibility2_1-2) do not work well with App::Link. Before I can use those macros, I have to select both, the top-level App:Part "Model" container of the main assembly (from combo tree view) AND the desired subassembly (Select Link in combo treeview or select in 3D view). In this context it is annoying and unintuitive that I have to select the top-level Model container.

Difficulty to deal with links to external files in A4

FreeCAD woodworking challenge

I was trying my hands on developing a few features to make my life as a woodworker easier.

FreeCAD version, A4 from July 14th, 2020

OS: Ubuntu 20.04 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.21718 (Git) AppImage
Build type: Release
Branch: master
Hash: 002e25b5617f2c79f65968f1f82f7267899965c3
Python version: 3.8.2
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: German/Germany (de_DE)

In order to reproduce the issue:

  1. Create a document main with a spreadsheet named p and an A4 model
  2. Put a number in a cell and add an alias "test"
  3. Create a second document sub, create an A4 part, and a part design that uses <<main>>#<<p>>.test as a dimension
  4. Insert the sub part in the main assembly

This throws an error: <Gui> Document.cpp(1052): Document::getDependentDocuments: The graph must be a DAG.

When closing and re-opening the main document the part is not visible and a similar error is launched.

Here is a sample file: test.zip

When opening the sub file and replacing the reference by main#<<p>>.test (I don't know which one is the correct way according to the new nomenclature)and then linking it to the main assembly results in a different error message: Recompute failed! Please check report view.
<Exception> Invalid type 'NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE' in property binding 'Constraints' 5.38848 <App> Document.cpp(3738): Failed to recompute suba4#Sketch: Invalid type 'NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE' in property binding 'Constraints'

Why is this relevant?

I like to store all relevant dimensions of a model in a central spreadsheet. When having a lot of parameters this results in a cleaner model and it would be great if A4 would support this type of reference.

Part LCS not listed in edit placement of part

I have created a part following the first tutorial, this part has a LCS in it :

image

Then i want to attach the part to LCS_Origin, but none part LCS are listed :

image

I don't know if i missed something or this is a bug.

The whole hierarchy looks like that :
image

[FR] Multiple assemblies in the same document

I know I can create multiple documents and import the assemblies into a final document, but it would sometimes be more convenient to allow multiple assemblies in the same document (to share parameters, calculations, etc)

Propagate LCS from sub assembly to assembly

I have created an assembly to model the platter of a typewriter. It consists of an axel with the plastic platter as two sub-assemblies each with a single body/part. Each of those sub-assemblies have several LCS's defined to become attachment points. How do I propagate those sub=assembly LCS's to the parent assembly.

Also if I try just creating new LCS's for the full assembly it won't allow me to use the features from the sub-assembly to select where to put the new LCS's

TIA

Wrong warning in report panel on placing parts

I added a new part to the main model. In the placement dialog I am in this state:

FreeCAD_076MBV6Qom

Now I need to select the LCS and I need to start with one of the 2. But no matter if I select at first the linked LCS or the parent LCS, I always get immediately this warning: "Problem in selections" in the report panel.

This warning should only be issued if the selections are incompatible etc. As it is you get it in the normal use case.

LCS not moving on part when Scale Vector applied

I created an assembly to model a PVC structure with multiple parts for fittings, and a single part for the pipe, The pipe part is one inch long with the intention that a scale vector is applied in a single dimension to model multiple lengths of pipe from a single part. An LCS was created at both ends of the pipe and when the scale vector was applied, the LCS at one end of the pipe appeared to move in the GUI. However, when attempting to attach a part to that LCS, only the original location of the LCS (at the one-inch point) was used. My suspicion is that when placing a part, only the original part's LCS is referenced, not the scaled model in the assembly. Please confirm whether this is the case, or if I am doing something wrong when scaling or linking the part.

In the image below, the elbow should be attached at the right end of the 6-inch pipe, but instead, it's attached at the 1-inch point from the original part.
2020-07-04_2332

Assembly4 version 0.9.7

OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.21775 (Git)
Build type: Release
Branch: master
Hash: 1f741aa511e898849e46ed14515fce416fe32acb
Python version: 3.8.2
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: English/United States (en_US)

Assembly4 WB crashes FC

Per the tutorial at
https://github.com/Zolko-123/FreeCAD_Assembly4/blob/master/Examples/Tutorial1/TUTORIAL1.md
, I created axis and bearing FC files.
In asm_tuto1 , when trying to insert part using Assembly > Link an external Part , FreeCad crashes.
I've tried it on different FC versions : (Appimages as well as Stable installation) Version info appended below.
++++++++++++++++++++++++++++
OS: Ubuntu 18.04.4 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16093 (Git) AppImage
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/India (en_IN)
++++++++++++++++++++++++++++
OS: Ubuntu 18.04.4 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16079 (Git) AppImage
Build type: Release
Branch: master
Hash: 6363c90a20b296ab69d7b52230009928199d90df
Python version: 3.6.7
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/India (en_IN)
++++++++++++++++++++++++++++
OS: Ubuntu 18.04.4 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.4.
Build type: Release
Python version: 3.6.8
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/India (en_IN)
++++++++++++++++++++++++++++

The error log is appended below :

freecad
FreeCAD 0.18.4, Libs: 0.18.4R
© Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2019

#### ###

# # # #

## #### #### # # # #

# # # # # # # ##### #

# #### #### # # # #

# # # # # # # # ## ##

# #### #### ### # # #### ## ##

Loading Assembly4 WorkBench
Sheet Metal workbench loaded
Enumeration index -1 is out of range, ignore it
Enumeration index -1 is out of range, ignore it
Enumeration index -1 is out of range, ignore it
Program received signal SIGSEGV, Segmentation fault.
#0 /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7ff0e3db4f20]
#1 0x7ff0e628eeb8 in App::OriginGroupExtension::relinkToOrigin(App::DocumentObject*) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x38
#2 0x7ff0e628fc77 in App::OriginGroupExtension::addObjects(std::vector<App::DocumentObject*, std::allocatorApp::DocumentObject* >) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x47
#3 0x7ff0e623cc61 in App::GroupExtension::addObject(App::DocumentObject*) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x91
#4 0x7ff0e623c8e9 in App::GroupExtension::addObject(char const*, char const*) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x69
#5 0x7ff0e623fcfc in App::GroupExtensionPy::newObject(_object*) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x5c
#6 0x7ff0e623fd87 in App::GroupExtensionPy::staticCallback_newObject(_object*, _object*) from /usr/lib/freecad-python3/lib/libFreeCADApp.so+0x37
#7 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x1bb) [0x7ff0e58ad77b]
#8 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17c44c) [0x7ff0e581644c]
#9 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x4ec3) [0x7ff0e581c563]
#10 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(+0x17aa63) [0x7ff0e5814a63]
#11 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyFunction_FastCallDict+0x2d5) [0x7ff0e5816085]
#12 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x131) [0x7ff0e5901211]
#13 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(_PyObject_Call_Prepend+0xcd) [0x7ff0e590193d]
#14 /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0(PyObject_Call+0x48) [0x7ff0e59019a8]
#15 0x7ff0e1911e52 in PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**, _object*, bool) from /usr/lib/x86_64-linux-gnu/libpyside2.cpython-36m-x86_64-linux-gnu.so.5.11+0x82
#16 0x7ff0e19121c6 in PySide::SignalManager::qt_metacall(QObject*, QMetaObject::Call, int, void**) from /usr/lib/x86_64-linux-gnu/libpyside2.cpython-36m-x86_64-linux-gnu.so.5.11+0x116
#17 0x7ff0e49c1709 in QMetaObject::activate(QObject*, int, int, void**) from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x929
#18 0x7ff0e5098ba2 in QAbstractButton::clicked(bool) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x42
#19 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x245dba) [0x7ff0e5098dba]
#20 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x24719a) [0x7ff0e509a19a]
#21 0x7ff0e509a38d in QAbstractButton::mouseReleaseEvent(QMouseEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0xfd
#22 /usr/lib/python3/dist-packages/PySide2/QtWidgets.cpython-36m-x86_64-linux-gnu.so(+0x4653cb) [0x7ff0ab9c23cb]
#23 0x7ff0e4fe6048 in QWidget::event(QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1f8
#24 /usr/lib/python3/dist-packages/PySide2/QtWidgets.cpython-36m-x86_64-linux-gnu.so(+0x462553) [0x7ff0ab9bf553]
#25 0x7ff0e4fa783c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x9c
#26 0x7ff0e4faf65f in QApplication::notify(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x7ff
#27 0x7ff0e69a5a98 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad-python3/lib/libFreeCADGui.so+0x88
#28 0x7ff0e49929c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x118
#29 0x7ff0e4fae632 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1d2
#30 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1ae16b) [0x7ff0e500116b]
#31 /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5(+0x1b07da) [0x7ff0e50037da]
#32 0x7ff0e4fa783c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x9c
#33 0x7ff0e4faf104 in QApplication::notify(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2a4
#34 0x7ff0e69a5a98 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad-python3/lib/libFreeCADGui.so+0x88
#35 0x7ff0e49929c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x118
#36 0x7ff0e08bc583 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0x6f3
#37 0x7ff0e08be055 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0x135
#38 0x7ff0e08952eb in QWindowSystemInterface::sendWindowSystemEvents(QFlagsQEventLoop::ProcessEventsFlag) from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0xab
#39 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5(+0x9f260) [0x7ff0d4054260]
#40 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_dispatch+0x2e7) [0x7ff0dec12417]
#41 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x4c650) [0x7ff0dec12650]
#42 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7ff0dec126dc]
#43 0x7ff0e49eb97f in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x5f
#44 0x7ff0e49909fa in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x13a
#45 0x7ff0e4999aa4 in QCoreApplication::exec() from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x94
#46 0x7ff0e6934fcf in Gui::Application::runApplication() from /usr/lib/freecad-python3/lib/libFreeCADGui.so+0x148f
#47 freecad(main+0x6a2) [0x555764cab5e2]
#48 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7ff0e3d97b97]
#49 freecad(_start+0x2a) [0x555764cac2aa]

++++++++++++++++++++++++++++
Screenshot from 2020-02-07 00-09-00
++++++++++++++++++++++++++++
Screenshot from 2020-02-07 00-08-42
++++++++++++++++++++++++++++
Screenshot from 2020-02-07 00-09-22
++++++++++++++++++++++++++++

Variables of sub-assembles

I have an assembly of sub-assemblies.
Sub-assembles have variables that affect its appearance and can be used for animation.

Those variables are not visible on the father assembly level.

Is there any solution for that?

Error by activating workbench assembly 4

By activating workbench assembly 4 I get an error in the console:

`
No module named 'showCommand'
Traceback (most recent call last):
File "", line 97, in Initialize

`

Thanks for assembly 4.

FreeCAD version:
OS: Debian GNU/Linux 10 (buster) (GNOME/gnome)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20514 (Git) AppImage
Build type: Release
Branch: master
Hash: a05ffd499366ab12fa1b43f37db73f4f1e9c332d
Python version: 3.8.2
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: English/United States (en_US)

FreeCAD Assembly 4 workbench
Current version 0.9.2, 2020-05-08

"Add Variable" has error when using a Name with space inside

Thanks for making the tool. It's great. If we can fix a few usability issues, it'd be very popular.

In the "Add Variable" dialog, if I press "Enter", the variable is added but the dialog remain open. The dialog should close after the variable is added. Similarly, the dialog should close after "OK" is clicked.

Screenshot from 2020-08-21 09-38-35

Feedback on Tutorial 2

Hi, just made note of a couple things while going through the animation tutorial (Tutorial 2):

  1. When creating the LCS's for the master sketch, the tutorial says to "call it LCS_arm and attach it to the line in the master sketch representing ... the arm."

I was not able to get the model to align correctly unless I selected the farthest vertex from the origin (Sketch_master.Vertex3 in my document) and also the farthest line from the origin (Sketch_master.Edge2 in my document), then select attachment mode "Align O-X-Y" (just like the previous LCS).

It may seem obvious but I feel it's worth pointing out. My first time going through the tutorial, I was just robotically following the instructions and my "arm" object didn't line up correctly. It took me a second try before I understood the "bigger picture" of what was happening in each step.

  1. A couple times throughout the tutorial, I found myself unsure if I had set my LCS's properly. Each time, however, I was able to compare mine to the ones in the pictures to ensure they were set correctly. Perhaps you could state explicitly at the beginning that readers can compare their LCS's against your pictures to ensure they are set up correctly, if they are unsure.

  2. The variable "Dist_pivot" turns into "Disk_pivot" about halfway into the tutorial (in the "Base Part" subsection of the "Parts" section of the tutorial). A search of the document yields several instances of both terms... as well, the third picture in the tutorial has both terms. I assume this an error. (This may have led to minor confusion for me :D )

All in all, a decent tutorial (if not a little overwhelming). I feel that a substantial amount of material could be cut out to make things more concise for simpletons such as myself... if time permits I may throw together a quick tutorial of my own.

Missing image in Tutorial 1

Am going through the first tutorial now, updating some of the wording to match the (guessing here) newer names of some menu options and similar.

On the way through, noticed there's a missing image (Examples/Tutorial1/icons/Link_Part.svg) showing a placeholder broken image icon under the Document "asm_tuto1" -> Insert axis section.

Any chance you have the image somewhere, and it just needs pushing to the GitHub repo? 😄

Adding sub-assembly part into assembly - sub-assembly axis are not visible

Scenario:
File "shaft" - assembly file with imported STEP file of a shaft, axis on the shaft
File "shaft_holder" - assembly file with imported STEP file of shaft holder, "hole axis" in the hole where the shaft should be inserted, as well as 4 "hole axis" in holes for 4 screws.
File "part1" - assembly file with links to "shaft" and 2 "shaft holders", shaft is assembled into the "hole axis" for the shaft location.
So far so good.
Now lets say I have a bigger assembly file, lets call it "base" where multiple sub-assemblies should be linked into and the "part1" should be assembled based on the "hole axis" that were added in "shaft_holder" file for the screws. There are 8 such "hole axis" in the "part1" file.
When I link "part1" into the "base" file, the only axis that is shown in the dialog is "LCS_Origin" that exist for all parts and based on the tutorial, should not be used for STEP imported parts since we can't count on its location.
That's why I added axis for every screw hole, so I could use it in next assembly.

I think the inner sub-assembly axis should be shown in the dialog as well.
Or at least have a checkbox allowing to show the inner sub-assembly axis.
Or if you are a control freak like me, I would add a field allowing to specify the number of levels how deep should we go into the sub-assembly tree and a checkbox that will control whether to show all or only non-hidden axis from all the parts.
People hide the non-needed axis for complex parts to have a cleaner screen. So if I have a hidden axis, I probably don't need it, so there is no reason to show it in the dialog.

The workaround for the situation for me, at least now, is to add a generic LCS into the sub-assembly part and play with it location so it will be aligned with the screw hole I want to use when adding "part1" to "base" file. Not an easy task when I have many sub-assemblies...

cannot start assembly 4

Screenshot_20200222_150020

OS: Linux 5.3.0-40-generic
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.14555 (Git shallow)
Build type: Release
Branch: (HEAD detached at 0.18.4)
Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8
Python version: 2.7.15
Qt version: 5.12.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/United States (en_US)

Insert link to a part from a file starting with a number, will replace the starting number with "_"

Hi,

If I have a file with a model, which starts with a number, say "6mm shaft", and I want to link it to the assembly, the name of the part shown in the "Insert a Part" dialog will appear as "_mm_shaft#Model" instead of expected "6mm_shaft#Model".
The name of the link (the field at the bottom of the same dialog) derives from that as well and will propose "_mm_shaft".

Having a number in the name in any other than the first letter, works ok.

In "Place linked Part", Rot X/Y/Z needs a UI

When I use "Place linked Part", I often need to use Rot X / Y / Z repeatedly to find the correct placement. It's hard to know which one is the right rotation, or which direction it'll rotate. It takes many tries to find the correct axis and number of rotations. It'd be nice to have UI for it in the main window, similar to the "Transform" UI for parts. This problem is also shown repeatedly in the assembly 4 tutorials:

https://www.youtube.com/channel/UCpdgfEnmKNi8iv_A66efg9Q/videos

Screenshot from 2020-08-29 15-05-40

underscores when linking to part?

This is most likely user error. When I try to insert a link to a part, the parts show up like so:

_230303_assy#9230303 (Model)

The filename is 9230303-assy and it contains a single model called 9230303.

I'm not sure why trying to link to the part ends up with the first character chopped and the dash converted to an underscore.

Strange behavior of assembly with imported multi-part STEP

Attaching the STEP and the FCStd.
I can use the part in other assembly, but there is something wrong with its behavior.
For example, I've added 4 hole axis to the assembly.
Those axis are not appearing as mounting points for the part when adding it to another assembly.
Tried to import datum as you proposed for other case, but get the "The selected datum object cannot be imported into this assembly" warning popup dialog and the task view is empty with only OK and Cancel buttons.
The report view shows " Document.cpp(3407): Please reload partial document 'v-wheel set 24mm' for recomputation." warning.
doc_335059_270531.zip
v-wheel set 24mm.zip

[enhancement] Feature to replace parts

I started to try Assembly 4 for a real-life document to learn it a bit better.
In real-life I have the case the there are different versions of every part of an assembly. For example I have 3 different files for a part called "body". The reason is that at first we go parallel with different versions of an assembly. So "body-V1", "body-V2" etc. all fit perfectly into the assembly and only differs from a feature (e.g. a wider pocket).

So a really cool feature would be an option to replace a part in the assembly via a menu item. Of course it is the duty of the user to assure that the parts to be replaced must have the same LCS and LCS names.

Maybe you think this is overkill, and one should better create an assembly file for every version. I make this report because in reality it is not only one part with different version. In my case I have 3 of 7 parts in the assembly with each 3 versions. So 27 possible assemblies. During meetings it is helpful to play around with different combinations to reject some of the proposals. With the requested feature one would be able to do this more or less live during a meeting/discussion.

Selecting a part in the 3D view should select asm4 level entry (link) instead of the object body

With large assemblies, when the tree view is very long, it's easier to select the parts by clicking on them in the 3D view.
Lets say I want to change the parts attachment position.
When you click on a part, the link entry in the tree view is expanded and the inner body is selected instead of the asm4 link entry.
To change the attachment position I have to click on the asm4 level entry in the tree to get to the property.
The situation even worse when you have few levels of sub-assemblies involved and click on a part from a sub-sub-assembly that unwraps many-many levels in the tree.

measure units don't match configured preferences units

I am configured in Edit -> Preferences -> Units for "US Customary" and 2 decimals.

When I go to "Part" mode and measure a distance, it shows in my units (eg: 3.54").

If I go to "Assembly4" mode and measure a distance, it shows in mm (89.941).

OS: Fedora 31 (Workstation Edition) (GNOME/gnome-xorg)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22039 (Git) AppImage
Build type: Release
Branch: master
Hash: 2bfc6301bc80c0344cbf13dbfe041fbd78cac93d
Python version: 3.8.2
Qt version: 5.12.5
Coin version: 4.0.0
OCC version: 7.4.0
Locale: English/United States (en_US)

It looks like I have 0.97 of Assembly4.

Cancel in "axis selection" dialog

When adding a part into assembly, the first dialog asks to select a part from a list, give it a name and after that another dialog opens, where I have to select the matching axis and rotate if needed.
In that dialog there are 3 buttons: OK, Cancel and Ignore.
OK is obvious and works ok.
Ignore - the new part will be added without axis selection for now, can assign them later with "Move/Attach a part in the assembly button" - that's how it works now and that's ok too.
Cancel button behaves the same as Ignore, while I would expect that the process of addition of the part will be canceled and new part will not appear in the assembly...

Code review: redraw speed

Hi @Zolko-123,

Probably not an issue, but more as a code review that I wanted to do for drawing speed of assemblies.
That's probably a better place than a new forum thread (or the long assembly4 thread) since it's more related to code and can point on some places in github editor.

I face slow redraws of my assembly, which is probably not small, but also not so large that should slow down the things so much.
As I understand, the whole asm4 idea was to get around the asm3 resolver and speed up the assembly time since all the attachments are mathematically bound.

Assuming there is no animation involved, the assembly is static.
Zooming or rotating the screen is very slow.
Can you think of a function in asm4 that is called/polled during the screen redraw that might slow the things down?

Some information:

  • All my objects are imported from STEP files, that might include some complex bodies, such as threads, gear teeths and so on...
  • I'm currently running on locally compiled version with default settings - can it slow down things?

Thanks.

[enhancement] Allow infinite animation

Current animation allows only running from start to end values.
Sometimes I'd like to have an infinite animation for a presentation for example.

I can see 2 types of loops:

  • For rotational animation I could set start as 0 and end as 360, so the application will just have to start again when it reaches the end value.
  • For linear movement the application will have to negate the step and move from end to start when reaching end value and negate the step and and move again from start to end when reaching start value...

LCS of models cannot be made invisible

I have an assembly containing other files as models and as parts.

Since I need the final assembly to be nicely rendered I tried to hide all LCS. This works for the parts, but for the models there is always one LCS that cannot be hidden.

The bug is that the command to hide the LCS goes to the global LCS, see this screencast.
Jbpmg1yVHp

So you see, pressing spacebar at the desired model LCS hides/shows instead the global LCS.

I use A4 0.9.6 and
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.21769 (Git)
Build type: Release
Branch: master
Hash: 801bfe4ba5f0910e9b2885917c521ab7fd8e9020
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)

Variable Types repeated in combo

Variable Type combo populated same set of types multiple times. I could at least 5 occurrences. See animated gif.

I'm running FreeCAD 0.19-19510 and Assembly 4 0.7.12, 2020-01-25.

Assembly4Tutorial2Issue2

Problem with linked parts when file is stored on a mounted volume

Well, that might not be a common use case, but my working directory is stored on a mounted volume (on linux).
For example, if my home directory is in "/home/alex", the working directory "/home/alex/FreeCAD/test" is actually located on "/mnt/storage/FreeCAD/test"

I don't understand how the file location is handled by freecad and ASM4, but it looks like the path is not saved as "/home/alex/FreeCAD/test/filename.FCStd" as the user sees is when saving the file, but something like "../../../../../mnt/storage/FreeCAD/test/filename.FCStd"
At least that's what I can see from a "Link not restored" error in report view.

To make it even worse, the real physical path can be different on another PC where I open the files, but the logical name stays the same "/home/alex/FreeCAD/test".

Is there anything I can do to eliminate such problem?
For all the files I create them, save, close and reopen from the logical path before I link them to other files.

Advanced usage of variables

Is there a documentation of the variables and formula editor besides the exmaple2 of asm4?

Specifically, I'd like to know if there is a way I can write a "function" that uses and changes the variable values?
3 use case examples:
1:2 gear attachment, I could add a "gear1angle" variable for one gear angle and would like to have a simple function that will set "gear2angle" to be half of gear1angle.

lead screw rotation moves the nut.
I could have a small function that changes the nutPosition variable according to leadScrewAngle (8mm for one rotation).
There will be more than one math operand, but could still be written as a single line math function.

Limit the movement of a part. Same lead screw example, but with a limit.
For example, the nut could move between ranges of 20-80mm.
If there was a way to have conditions in such function (IF-THEN-ELSE), I could check if the nutPosition is in the range, than change its position, if not, do not change it and somehow prevent the leadScrewAngle to change as well.

Is there a way to implement that?

Thanks.

[enhancement] possibility to add LCS to parts within an assembly

I have a part in my assembly and want to add a new LCS to it.
I cannot find a way to do this other than to open the file separately.

I think this is a bug because I can directly edit the part via PartDesign directly in the assembly. Theerfore is should also be possible to add an LCS directly in the assembly.

Initial feedback after going through Tutorial 1

Two main (potential) issues jump out at me after having gone through Tutorial 1:

  • The initial picture showing the sketch to draw is missing the sizing for several dimensions:

The sketch I created had the stated dimensions the same, however something has gone wrong somewhere as my "finished" part looks like this instead of having the 2 bearings being correctly located:
FreeCAD-Assembly4-issue27-1

Guessing the problem is my sketch was "too short" in some dimension. If that's the case, then perhaps Sketch_Axis.png should be updated to show the size for all dimensions?

  • After adding a chamfer to the axis Body in asm_tuto1, saving doesn't appear to work. The error <App> Document.cpp(2223): Partial loaded document 'axis' cannot be saved is shown in the Report view panel.

Re-opening the documents... and yep, the chamfer wasn't saved. 😦

Usability: Store the Range Begin and Range End parameters

In Animate Assembly, I can enter values for "Range Begin" and "Range End". If I close the dialog and open Animate Assembly again, the "Range Begin" and "Range End" values are both reset to the current value. Please store the values users entered and restore them when users open the Animate Assembly dialog again.

Screenshot from 2020-08-21 21-22-31

Crash modifiying LCS

Using Assembly 4. Last updated 07-02-2020

File->New
Assembly->New Model
Close -> Save -> Reopen
Select model
Assemby->New Body
Double click in Body
Create Schetch
Select XY plane
Draw a Rectangle -> Close
Pad ->Acept
Select model
New Coordinate System -> Select random Edge -> Acept
Select LCS_1
Edit datum -> Select Another Edge -> Accept ->Crash

OS: Ubuntu 18.04.3 LTS (KDE/plasma)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19. Last daily On 7-02-2020
Build type: Release
Python version: 3.6.9
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Spanish/Spain (es_ES)

[enhancement] dialog for setting attachment

After placing a part one often needs to change the attachment relative to the LCS. This has to be done in the Data tab, section Assembly -> Attachment.

However, it would be nice if there would be a dialog to do this. I think A4 could use the existing Edit Datum dialog for this task.

[enhancement] Allow to spefify how to rotate in placement dialog

When placing a part, one gets a dialog with 3 buttons "Rot X" etc. These rotate always 90°. But there are (not so rare) cases where one needs a different angle. Take e.g. this example:
FreeCAD_bOnIHH42kI

Here I need at first a rotation by 90° around the y-axis, then subsequently a rotation of 30° around the z-axis.

I know this is a bit tricky because as it currently, one can only rotate around one axis.

I thought about it, and I think now the solution would be to add to the placement dialog the attachment part of FC's datum/primitives dialog. This would allow to rotate around several axes and also fix issue #78. But let me think about this more.

[FR] Generate a list of parts in the assembly

It would be pretty useful to generate a list of parts that were used to create an assembly, especially if there are duplicates. It would make planning materials purchases that much easier

[FR] preselecting LCS in 3D view for changing attachment

I would like to be able to change attachment of subassemblies/parts to the parent Model using the following workflow:

  1. Make visible all LCS of the assembly
  2. Select one LCS of the subassembly and one LCS of the parent Model
    by holding down Ctrl while clicking on both LCS in the 3D view
  3. Click on the button "Move/Attach Part in the assembly". This should open the dialog "Place linked Part", but with those two LCS preselected.

Usecase:

Choosing attachment LCS visually in 3d view. Especially helpful for assembling parts with many LCS where choosing from a list of LCS becomes guesswork

unknown command warnings

  • start FreeCAD
  • don't load any document, just change to the Assembly4 workbench

result: I get these warnings:

02:16:55  Unknown command 'Asm4_insertRod'
02:16:55  Unknown command 'Asm4_FSparameters'

FreeCAD crashes on import

Importing a part in Assembly 4 seems to cause my FreeCAD instance to crash.

Any ideas how I can get around this?

I get the following output in the terminal:

Program received signal SIGSEGV, Segmentation fault.
#0  /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f7ebb63cf20]
#1  0x7f7ec112c131 in App::OriginGroupExtension::relinkToOrigin(App::DocumentObject*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x11
#2  0x7f7ec112d107 in App::OriginGroupExtension::addObjects(std::vector<App::DocumentObject*, std::allocator<App::DocumentObject*> >) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x37
#3  0x7f7ec10dc717 in App::GroupExtension::addObject(App::DocumentObject*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x97
#4  0x7f7ec10dc3d9 in App::GroupExtension::addObject(char const*, char const*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x59
#5  0x7f7ec10df98e in App::GroupExtensionPy::newObject(_object*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x4e
#6  0x7f7ec10df9f7 in App::GroupExtensionPy::staticCallback_newObject(_object*, _object*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADApp.so+0x27
#7  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x18e) [0x7f7ec0725c1e]
#8  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(+0x1650da) [0x7f7ec07bf0da]
#9  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3002) [0x7f7ec07c2902]
#10  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(+0x164370) [0x7f7ec07be370]
#11  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(_PyFunction_FastCallDict+0x2c6) [0x7f7ec07c8196]
#12  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(_PyObject_FastCallDict+0x17e) [0x7f7ec06ccafe]
#13  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(_PyObject_Call_Prepend+0xce) [0x7f7ec06ccbee]
#14  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libpython3.6m.so.1.0(PyObject_Call+0x6a) [0x7f7ec06cc8aa]
#15  0x7f7ec1a4725e in Gui::TaskView::TaskDialogPython::accept() from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADGui.so+0x14e
#16  0x7f7ec1a3f643 in Gui::TaskView::TaskView::accept() from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADGui.so+0x43
#17  0x7f7ebc8178d1 in QMetaObject::activate(QObject*, int, int, void**) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x2c1
#18  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5(+0x285d10) [0x7f7ebd2c3d10]
#19  0x7f7ebc8178d1 in QMetaObject::activate(QObject*, int, int, void**) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x2c1
#20  0x7f7ebd296282 in QAbstractButton::clicked(bool) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x32
#21  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5(+0x25847a) [0x7f7ebd29647a]
#22  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5(+0x2594ec) [0x7f7ebd2974ec]
#23  0x7f7ebd297664 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0xd4
#24  0x7f7ebd1de73a in QWidget::event(QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x96a
#25  0x7f7ebd19bc6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x9c
#26  0x7f7ebd1a0b5d in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0xc6d
#27  0x7f7ec1876371 in Gui::GUIApplication::notify(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADGui.so+0x41
#28  0x7f7ebc7ed425 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x75
#29  0x7f7ebd19f860 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x1a0
#30  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5(+0x1b9cd1) [0x7f7ebd1f7cd1]
#31  /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5(+0x1bc2c3) [0x7f7ebd1fa2c3]
#32  0x7f7ebd19bc6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x9c
#33  0x7f7ebd1a02ea in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Widgets.so.5+0x3fa
#34  0x7f7ec1876371 in Gui::GUIApplication::notify(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADGui.so+0x41
#35  0x7f7ebc7ed425 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x75
#36  0x7f7ebcb917db in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Gui.so.5+0x40b
#37  0x7f7ebcb92f75 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Gui.so.5+0x115
#38  0x7f7ebcb7474b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Gui.so.5+0x7b
#39  /tmp/.mount_freecasfpOfl/usr/lib/libQt5XcbQpa.so.5(+0xa05d0) [0x7f7eb45845d0]
#40  /tmp/.mount_freecasfpOfl/usr/lib/libglib-2.0.so.0(+0x569be) [0x7f7eb83419be]
#41  /tmp/.mount_freecasfpOfl/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x33) [0x7f7eb8342826]
#42  /tmp/.mount_freecasfpOfl/usr/lib/libglib-2.0.so.0(+0x57a0b) [0x7f7eb8342a0b]
#43  /tmp/.mount_freecasfpOfl/usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x4a) [0x7f7eb8342acf]
#44  0x7f7ebc83e98c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x5c
#45  0x7f7ebc7eb53b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0xfb
#46  0x7f7ebc7f3466 in QCoreApplication::exec() from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libQt5Core.so.5+0x86
#47  0x7f7ec181325c in Gui::Application::runApplication() from /tmp/.mount_freecasfpOfl/usr/bin/../lib/libFreeCADGui.so+0x16bc
#48  /tmp/.mount_freecasfpOfl/usr/bin/FreeCAD(main+0x6c9) [0x403829]
#49  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f7ebb61fb97]
#50  /tmp/.mount_freecasfpOfl/usr/bin/FreeCAD() [0x404699]

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.