Assembly3 es un Ambiente de trabajo externo que se utiliza para realizar el ensamblaje de diferentes cuerpos contenidos en un único archivo o en múltiples documentos. El ambiente de trabajo se basa en varios cambios en las funciones principales realizados para la versión de FreeCAD 0.19 (por ejemplo, Enlace Aplicación), por lo que el ambiente de trabajo Assembly3 no puede utilizarse con versiones anteriores.
Las principales características del Assembly3 Ambiente de trabajo son
Solver dinámico/interactivo. Esto significa que puede mover las piezas con el ratón mientras el solucionador restringe el movimiento. Esto permite, por ejemplo, conectar una rueda a un eje y girar la rueda interactivamente con el ratón.
Enlaces'. Esto significa que puede utilizar una sola pieza, por ejemplo, un tornillo, varias veces en un conjunto (en diferentes lugares) sin duplicar la geometría.
Enlaces externos. Es posible tener un documento freecad que sólo contenga un ensamblaje y no piezas. Todas las piezas podrían estar en archivos individuales. Los archivos pueden estar incluso en una biblioteca o en cualquier otro lugar del sistema de archivos. El único requisito es que el archivo debe ser cargado cuando se hace el enlace. Una vez realizado el enlace, el archivo debe estar abierto para realizar las actualizaciones de los enlaces que implican al archivo. Assembly3 resuelve esto abriendo los archivos en segundo plano según sea necesario.
Montajes jerárquicos. Como en la vida real, un ensamblaje mecánico puede estar formado por subensamblajes. Estos pueden consistir en sub-ensamblajes de nuevo y así sucesivamente.
Congelación de conjuntos. Como la CPU sólo puede manejar un número determinado de restricciones concurrentes en tiempo real, congelar un ensamblaje permite utilizar restricciones incluso para ensamblajes grandes. Al congelar los conjuntos terminados o las restricciones que no deben permanecer dinámicas (por ejemplo, las piezas soldadas, atornilladas o pegadas), éstas se excluyen de los cálculos de actualización y el solucionador de Assembly3 las considera geometría fija.
Tenga en cuenta que otros enfoques ofrecen una solución diferente a este problema, por ejemplo, el Ambiente de trabajo de Assembly4.
A partir de 2020, el ambiente de trabajo Assembly3 cuenta con las siguientes barras herramienta.
Barra de herramientas principal
La Barra Herramienta principal contiene herramientas que cubren las funciones más utilizadas del ambiente de trabajo. La información sobre las herramientas le dará los atajos de teclado.
Note that this differs from using space. Using space with selected items from a sub-assembly in the 3D view often does not behave as expected. Use this function in those cases (or shortcut A-Space)
The Measurement toolbar adds functions to measure the distance or the angle between two objects
Measure points: Add a "Measure points" to measure the distance of two points in 2D or 3D.
Measure point to line: Add a "Measure point to line" to measure the distance between a point and a linear edge in 2D or 3D.
Measure point to plane: Add a "Measure point to plane" to measure the distance between a point and a plane.
Measure angle: Add a "Measure angle" to measure the angle of planar faces or linear edges of two parts.
There is no function to measure a radius or diameter.
The measurement tools survive part changes, e.g. the distance between edges of a cube when the cube is re-sized.
As the constraints the calculations are done in real time and updated upon any change. Behind the scenes, the function is very similar to the constraints. The distance or angle is calculated between Elements in the same way as for constraints. The display in the tree works in the same way.
As usual you can modify the tool bars and add or remove single tools. Be sure to check the menu Assembly3 for functions that may not be present in the tool bars.
El diseñador utiliza las restricciones para conseguir el resultado deseado en la relación de dos partes. El arte consiste en la selección de las restricciones adecuadas que mejor se adaptan a cada problema. Cada GL (grado de libertad) eliminado debería, en teoría, ser eliminado sólo una vez entre dos objetos, pero en la práctica, con muchas herramientas CAD, las restricciones seleccionadas causan combinaciones de exceso de restricciones, a menudo compensadas por complejos algoritmos, a veces no. Assembly3 utiliza algoritmos para detectar y compensar el exceso de restricciones, pero es evidente que aún no están muy maduros. Así que en la práctica, para Assembly3 las restricciones evitan problemas al ser conscientes de cuántos grados de libertad (GL) se han utilizado y cuáles quedan por bloquear mediante restricciones. Ninguna pieza debería tener una conexión por restricciones que utilice más de 6GL.
Note: If the solver meets a combination that can not be solved, it will give an error. It is very difficult for the solver to find out what caused the problem, so typically from this error given it will not be clear where the problem is. In larger assemblies this can lead to complex problem searches. Unfortunately there is no easy way to avoid this. However, it helps to be fully aware how the system works (.e.g see Elements below), use clear names for all components involved and only ever add additional constraints when the solver solves the current assembly. Very helpful to track down a problem is the "ContexMenu/Deactivate" function of each constraint.
Assembly3 Constraints define restrictions in the position or orientation between two Elements. Some constraints even work with more than two Elements. An Elements can be a face, a line or edge or a point of a part. Generally constraints are defined by selecting the desired Elements and then select the constraint from the Constraints toolbar.
Fixes 6 DOF, leaves 0 DOF:
Lock: The lock constraint fixes all DOFs for a face. It should be used for one base part in each assembly. You may also want to enable the "MoveLock" function (in the tool bar) so that the part can not be moved accidentially. Normally it does not matter which face/line/point you use to fix a part. Also note that the lock is only valid for the direct assembly, i.e. in case of a sub-assembly the parent assembly would still require a locked part on its own.
Attachment: Makes both elements coordinate systems equal for all axes. This is computation wise the most inexpensive function and should be used where ever possible. Note that you could use the element properties to compensate for offsets and angles if the two elements are not perfectly aligned.
Fixes 5 DOF, leaves 1 DOF:
Plane Coincident: fixes Tx,Ty,Tz, Rx,Ry. Only Rz is free. There remains the rotation around the normal passing through the ‘‘center of the plane’’.
Fixes 4 DOF, leaves 2 DOF:
Axial Alignment: fixes Tx,Ty, Rx,Ry. Only Tz, Rz are free. There remains the rotation around the axis of the shape and the translation along this same axis. Two PointOnLine constraints (if the two points are different) give the same result. The '‘Colinear'’ constraint too.
PointOnLine: This eliminates the translation and rotation along the normals to the reference line. Only the translation and rotation along the line axis is allowed.
Fixes 3 DOF, leaves 3 DOF:
Same Orientation: fixes Rx,Rz,Rz. All T's remain free.
Points Coincident: fixes Tx,Ty,Tz. All R's remain free.
PointOnPoint constraint eliminates the 3 translations.
Plane Alignment: fixes Tz, Rx,Ry (plane motion). This eliminates the translation along the normal to the reference plane and the two rotations around the axes of this plane.
Fixes 2 DOF, leaves 4 DOF:
Multi Parallel: fixes Rx,Ry. all T's and Rz remain. This eliminates the two rotations around the axes of the reference plane.
Fixes 1 DOF, leaves 5 DOF:
Points in Plane: Fixes Tz. This eliminates the translation along the normal to the reference plane.
Points Distance: fixes the distance between the Element origins.
This gives you more freedom than Points in Plane
Other
Points on Circle: fixes Tz and partially Tx,Ty. Freezes the point translation (or several points) on a circle or disk area. You must pick the circle second. This leaves all rotations free and gives limited translation in the circle reference plane.
: Note: In the following list Tx,Ty,Tz and Rx,Ry,Rz are used to describe translations and rotations about the reference coordinate systems of the involved Element's. This is not always exact or fully defined, e.g. when a line is involved it is not defined if it runs in X, Y or any angle in betweeen. The system is used for bevity and easy comparison in favour of a correct but more complex definition. So Z is generally the normal direction of any faces involved. Please feel free to modify this with a better approach with improved readability.
Elementos es un término específico utilizado en el banco de trabajo de Assembly3 y es importante entender los elementos para comprender cómo se debe utilizar Assembly3.
It is helpul to think of an Element as a general word for a 'selectable item' of a part, i.e. a face, an edge, a circle or a corner or other point. The items you select to constrain them, are those Elements. In the tree an Assembly folder has three sub-folders. Beside 'Parts' and 'Constraints' there is a folder named 'Elements', which is emtpy as long as there are no constraints added. When adding a constraint the constraint itself gets two (or more) leafs, these are the selected 'Elements'. Also these get added in the 'Elements' folder which is just a list of all Elements used in the assembly. Its a good idea to change their names (with F2 key), especially in bigger assemblies.
Let's look at an example
Create a new file and add from the Part workbench a cube and a cylinder. We will stack the cylinder onto the cube. First we fix the base part, in out case the cube. Select the bottom face of the cube and select the "Locked" constraints (first icon in the Constraints toolbar). Select the top face of the cylinder and the top face of the cube. Then select the "Plane Coincident" constraint. Now the cylinder is moved into the cube and in the tree a new leaf with two childe nodes was added under 'Constraints'. Additionally the same two child nodes were added under 'Elements'. If your cylinder is inside the cube instead of on top of the cube, let's correct that first: select the child node under 'Constraints' that shows the cylinder face and with a right click in the context menu select 'Flip Part'. Now the cylinder is stacked onto the box.
The key thing to understand is that the constraint operates on links to Elements in the list in the 'Elements' tree folder. This allows keeping the constraint structure intact while changing the parts. This is very difficult to see without an example.
Let's get back to the example above
Note: make sure you added the "Locked" constraint to the cube or this will look confusing
In the CAD window select another face of the cube. Now we will only work in the tree view. Use your mouse in the tree view; make sure the cube is selected. Drag&Drop the cube to the 'Elements' folder. Drop it on the 'Elements' name, not anywhere else in the folder - we will see why later. You should see that another Element is added to the 'ELements' list. Now select in the 'Constraints' folder the child node of the cube face in the "Plane Coincident" constraint and delete it. The Constraint will show an exclamation mark since it is missing one Element. Note that by deleting the Element in the Constraint we did not delete it in the list. That is because in the constraint it was only a link to the Element in the list. Now take the newly added Element in the 'Elements' list and drag&drop it onto the "Plane Coincident" constraint. Now the cylider moves to the other face we selected. We might need to select 'context menu/flip part' again if the cylinder is again inside the cube.
The example showed that without removing the constraint we can change the Elements that are used for the constraint. In the same way we can move the cylinder to a totally different part. After playing around with this example a bit more, you will note some additional things such as:
If you rename an Element in the list, the name will be changed in all Constraints.
You can use one Element in the list in several constraints.
You can use the Property Window of an Element to add Offsets. In the example this could move the cylinder around on the cube face.
You can use the "Show Element Coordinate System" button in the main toolbar to see what 'ContextMenu/Flip Part' and 'ContextMenu/Flip Element' are doing. Be sure to look what happens in the Property Window.
You can add a constraint in a totally different order: First add some Elements to the 'Elements List' (naming is useful, e.g. "Cube Top Face" or "Cube Front Face"), then add a constraint without selecting anything - it will be an empty constraint. Then drag Elements from the 'Elements' list. The result is the same as what we did in the first example. After doing that exercise the nature of how constraints work with Elements should be clear.
You can change an existing constraint between existing elements by just selecting a different item in the PropertyWindow/ConstraintType property.
Assembly3 se inspiró en Assembly2, pero no es compatible con él. Si tienes modelos más antiguos hechos en Assembly2, deberías quedarte con FreeCAD 0.16 y usar Assembly2 allí.
Los nuevos modelos desarrollados con Assembly3 sólo deben abrirse y editarse con este ambiente de trabajo.
Aunque tengan herramientas similares, Assembly3 no es compatible con A2plus ni con Assembly4. Los modelos creados con estos ambientes de trabajo deben abrirse sólo con su respectivo ambiente de trabajo.
A special fork of FreeCAD made by realthunder; see here. This fork is based on a particular commit of the master branch of FreeCAD, but it also has additional features currently not present in the master branch. Due to this fork being based on a particular development snapshot, it does not have the latest features merged daily to the master branch.
The development AppImage; this is based on the current master branch, and includes the dependencies needed for working with Assembly3 such as the SolveSpace solver.
Since the AppImage only works for Linux, for Windows users (who want an alternate install of Assembly3) option to test Assembly3 is the first option (realthunder's fork).
Hay muchas maneras de crear un ensamblaje con Assembly3. Esta es la más sencilla que puedes hacer.
Final Result of the Getting Started Example. In the image the Assembly3 Workbench is selected, so its multiple toolbars are visible. Note that the vertical "TabBar" left of the tree view is an AddOn Workbench that is not contained in standard FreeCAD (but can be installed with the Addon-Manager).
Assembly3 does not offer Offset with the constaints in the way the A2plus Workbench or other CAD tools do. Instead it offers a more general and flexible system to add offsets translations but also angles.
Esto sucede a menudo cuando las piezas están sobre-restringidas, es decir, más de 6 DOF están bloqueados.
The easiest way to find the problem is to click relevant constraints in the tree and select ContextMenu/Disable and re-calculate. It is helpful to know the last added constraints before the solver failed and just undo them.
Note: as Assembly3 tries to compensate for over-constraint parts behind the scenes, sometimes the problem is just triggered by a new constraint but the root cause is somewhere different. Before deleting all and starting again, remember that you can re-use Elements. If you named them you can identify the required elements and re-build the constraints without using the 3D view at all. See Elements seciton above.
When a part is removed or when a filename changes, the assembly breaks, it can not longer be solved and the solver will issue the message "Inconsistent constraints". The solver marks invalid Elements and Constrains with a question mark in the tree.
One way to solve this is to just delete all invalid constraints and elements, import the new part and redo everything. But there is a better way:
Rename a file
Use a file manager and copy the file you want renamed. Then give the new name to the copy.
Open the copy in FreeCAD. The assembly and the old file should also be open
Select the old object in the tree and click to change the propery "Linked object" (it does contain the old filename)
A list dialog will open containing all open parts. It shows the filenames and objects of each part. The old part and object is selected. Locate the renamed part in the tree and select the same object in the new part. Then confim the selection.
Delete the old part in the tree. Also the file can be deleted now.
Constraints and elements of te old part became invalid. Open the constraint or Elements list in the tree. Then sequentially
select each element surface on the new part. An item in the tree will be highliged.
Take that item and drag&drop it over the old element (either in the element list or in one of the constraints where it was used). That element should become valid.
Repeat the procedure for the remaining elements. Often a single element is enough to allow Assembly3 to identify the remaining elements of the part automatically.
If an element was assigned to the wrong surface by accident, just repeat with the correct surface.
Change the object name in FreeCAD, if desired
Replace a part with another part
which is simular enough to the original part that the original constraints still make sense, of course
Delete the old part in the tree. Also the file can be deleted.
Constraints and elements of te old part became invalid. Open the constraint or Elements list in the tree.
Select an element surface on the new part. An item in the tree will be highliged.
Take that item and drag&drop it over the old element (either in the element list or in one of the constraints where it was used). That element should become valid.
repeat the procedure for the remaining elements.
If an element was assigned to the wrong surface by accident, just repeat with the correct surface.
Change the object name in FreeCAD, if desired
Notes
They are not as complicated as it may seem here. After 2-3 times they should become second nature and feel really easy to do.
Its not only usually ways quicker than deleting and re-doing constraints, its also safer because an element could have been used in a parent assembly. Deleting the original would destroy that link, re-assingning would keep it.
Also this procedure becomes really quick and easy to do if constraints and elements are named. There is no guessing where the surfaces should be dragged&dropped to because the names tell it (see Tips & Tricks).
Using hierarchical assemblies helps in avoiding solver issues and keeping you model fluid. You can freeze a subassembly with one click and save CPU resources easily (use the context menu in the tree). When loading an assembly Assembly3 does not need to open external files for frozen subassemblies which keeps the tree compact.
Is very helpful to make it a habit to name the elements and constraints. Use the F2 key to do this quickly in the tree. You will find the tree sorting tools in the main toolbar very useful. An assembly with fully named constraints and elements is very easy to understand for other people or for oneself when looking at an older file.
Examples for constraint names for a table could be "Align_FrontLegs", "Align_FrameBottom-LegTops" and element names could be "Leg1_Top" or "TableTop_Front", "TableTop_Left".
Please note that once external files are opened by an assembly its not possible easy to close them again without closing the assembly. Since the assembly keeps open those files in the backgound, the tab may disappear but the file remains visible in the tree. If you have several layers of subassemblies it becomes close to impossible to close single files. This behaviour may change, but until then a possible approach could be to regulary use the commands File/Save All and File/Close All to clean up the tree before working on another sub-assembly.
Example: consider you have a large CNC machine with a main assembly and a subassembly for each module. Once you have the main assembly open it may open literally hundreds of files down to a single ball bearing. Before working on the subassembly of the electronics cabinet of the machine it is a good idea to save and close all files to get an empty tree. Then open just the subassembly for the electronics cabinet. This will open all file it needs but ony those.
Using external files makes it easier to re-use a parts or do part versioning with systems like git or subversion. The workflow in FreeCAD with Assembly feels quite the same as with files that have all parts in the same file. For exchanging files often with other parties, single files might be more convenient.
Multiply linked parts. If you added a link into the assembly, it will have a property value named "Element Count", default 0. If you set this to 3 you get 3 instances of that part. They will be added into a subfolder and can be used like fully separte parts. Use this feature to keep the data footprint of your file low, because the part is saved only once. Each instance only contain the differences.
Insert multiple parts, e.g. Screws, with one click. Check out the Assembly3 Wiki on the Github site. This is not only a stunning function (even a bit magic), but really really useful.
Using the TabBar Workbench speeds up working with assembly. This adds a Toolbar with one button for each workbench. You can sort the toolbar and can put it where every you want it. Many people put it vertically on the left side just beside the tree view. Of you have Assembly3, Part, PartDesign and other often used workbenches close to the top switching between them becomes extremely easy.