Assembly3 Workbench/de

Einleitung
Assembly3 ist ein externer Arbeitsbereich, zum Zusammenbau verschiedener Körper aus einer oder mehreren Dateien. Der Arbeitsbereich basiert auf einigen Änderungen der Kernfunktionen von FreeCAD 0.19 (z.B. App Link), so dass der Assembly3-Arbeitsbereich nicht mit älteren Versionen verwendet werden kann.

Die wichtigsten Eigenschaften der Assembly3-Arbeitsumgebung sind
 * der dynamische/interaktive Gleichungslöser. Das heißt, dass man Teile mit der Maus bewegen kann, während der Löser die Bewegung einschränkt. Dies erlaubt z.B. ein Rad und eine Achse zu verbinden und das Rad interaktiv mit der Maus zu drehen.
 * Verknüpfungen. Das heißt, dass man ein einzelnes Teil, wie z.B. eine Schraube, mehrfach (an unterschiedlichen Stellen) im Zusammenbau verwenden kann, ohne die Geometrie zu vervielfachen.
 * externe Verknüpfungen. Es ist möglich, dass ein Freecad-Dokument nur einen Zusammenbau und keine Einzelteile enthält. Alle Bauteile können in separaten Dateien abgelegt sein. Die Daten könnten auch in einer Bibliothek oder anderswo im Dateisystem liegen. Die einzige Voraussetzung ist die, dass die Datei geladen sein muss, wenn die Verknüpfung angelegt wird. Nachdem die Verknüpfung erstellt wurde, muss die Datei geöffnet sein um die Verknüpfungen die die Datei betreffen zu aktualisieren. Assembly3 erreicht dies, indem es die Dateien bei Bedarf im Hintergrund öffnet.
 * hierarchische Zusammenbauten. Wie im richtigen Leben darf ein mechanischer Zusammenbau aus Unterbaugruppen bestehen. Diese könnten wiederum weitere Unterbaugruppen enthalten usw.
 * Zusammenbauten einfrieren. Da die CPU nur eine bestimmte Anzahl gleichzeitiger Einschränkungen in Echtzeit bearbeiten kann, ermöglicht das Einfrieren eines Zusammenbaus Einschränkungen sogar für große Zusammenbauten zu verwenden. Durch das Einfrieren fertiger Zusammenbauten oder Einschränkungen, die nicht dynamisch verändert werden müssen (z.B. bei verschweißten, vernieteten oder verklebten Bauteilen), werden diese von den Aktualisierungsbrechnungen ausgenommen und werden vom Assembly3-Löser als fixierte Geometrie angesehen.
 * Man beachte, dass andere Herangehensweisen andere Lösungen für dieses Problem anbieten, z.B. der Assembly4_workbench_icon.svg Assembly4-Arbeitsbereich.

Zum Anfang

Werkzeugleisten
Seit 2020 befinden sich folgende Werkzeugleisten in der Assembly3-Arbeitsumgebung.


 * Assembly3_ToolbarMain.png
 * Hauptwerkzeugleiste


 * Die Hauptwerkzeugleiste enthält Werkzeuge, die die am häufigsten gebrauchten Eigenschaften des Arbeitsbereiches abdecken. Die zugehörigen Tastenkürzel findet man in den Tooltips.
 * Einen Baugruppenordner hinzufügen
 * Objekte gruppieren
 * Einen Link erstellenc. Dies ist auch im Kontextmenü verfügbar
 * STEP-Dateien importieren
 * Einschränkungen auflösen
 * Einschränkungen schnell auflösen
 * Teil in 3D bewegen, dies ist ein spezielles Assembly3-Werkzeug
 * Teil axial in 3D bewegen, dies ist das übliche Werkzeug, das auch anderen Bereichen von FreeCAD zur Verfügung steht
 * Schnelles Bewegen. Dies hängt das im Baum ausgewählte Teil an den Mauszeiger. Es verändert die Position des Teils, mit einem Mausklick.
 * Oft befinden sich hinzugefügte Teile übereinander gestapelt im Ursprung. Diese Funktion kann benutzt werden, um nicht sichtbare Teile zu erreichen.
 * Bewegung ausschließen für fixierte Teile. Umschaltknopf. Wenn dies abgewählt ist, können auch Teile bewegt werden, die durch die Fixiereinschränkung festgelegt sind.
 * Sichtbarkeit umschalten. Dies schaltet die Sichtbarkeit des ausgewählten Teils ein oder aus.
 * Achtung, dies unterscheidet sich von der Benutzung der Leertaste. Die Benutzung der Leertaste mit ausgewählten Elementen einer Unterbaugruppe in der 3D-Ansicht liefert oft nicht das erwartete Verhalten. In solchen Fällen sollte diese Funktion benutzt werden (oder das Tastenkürzel A, Leertaste)
 * Bewegungsbahn aufzeichnen (TBD)
 * Automatische Berechnung. Standardmäßig aktiviert.
 * Kann deaktiviert werden für die Reparatur von Einschränkungen oder die Fixierung von Teilen, für die der Löser Die Nachricht "do not converge" ausgibt (z.B. wenn das Teil um 180° gedreht wird)
 * Smarte Berechnung. Standardmäßig aktiviert.
 * Automatische Elementfixierung. Experimentelle Funktion in 0.19_pre
 * Element Darstellung. Dies hat zwei Einstellmöglichkeiten:
 * Element automatisch anzeigen
 * Koordinatensystem des Elements anzeigen
 * Arbeitsebenenbefehle. Fügt eine Arbeitsebene, eine Platzierung oder einen Ursprung hinzu. Es muss ein Teil ausgewählt sein.
 * Arbeitsebene hinzufügen
 * XZ-Arbeitsebene hinzufügen
 * YZ-Arbeitsebene hinzufügen
 * Platzierung hinzufügen
 * Ursprung hinzufügen
 * Ausgewähltes Baumobjekt aufwärts bewegen
 * Ausgewähltes Baumobjekt abwärts bewegen
 * Erlaubt es Teile, Elemente oder Einschränkungen im Baum umzusortieren. Mit "Element roll over" (von der ersten zur letzten Position und umgekehrt). Funktioniert nur mit einer einzelnen Auswahl.
 * Einschränkung vervielfachen. Dies kann ausgewählt werden, wenn Teile und geeignete Elemente mehrfach vorhanden sind. Es kann z.B. benutzt werden um mehrfach vorhandene Befestigungselemente mehrfach vorhandenen Löchern mit nur jeweils einer Einschränkung zuzuordnen.


 * Assembly3_ToolbarConstraints_1.jpg
 * Werkzeugleiste der Haupteinschränkungen. Hinter einigen Werkzeugsymbolen verbergen sich allerdings Menüs mit weiteren Werkzeugen.


 * Assembly3_ToolbarConstraints_2.jpg
 * ''Werkzeugleiste mit zusätzlichen Einschränkungen. Sie lassen sich durch Auswahl des '...'-Symbols in der Werkzeugleiste der Haupteinschränkungen aktivieren.


 * Die Werkzeugleisten der Einschränkungen sind die Hauptschnittstelle für den Zusammenzubau von Einzelteilen. Sie sind standardmäßig ausgegraut, werden aber aktiviert, sobald mindestens eine Fläche, eine Linie oder ein Punkt eines Teiles ausgewählt wird. Normalerweise werden erst die zu verbindenden Elemente ausgewählt und danach die art der Einschränkung. Die unterschiedlich gefärbten Rahmen weisen auf unterschiedliche Eigenschaften der Einschränkungen hin: ob 2D / 3D oder ob mehr als 2 Elemente zusammengefügt werden können. Eine ausführliche Beschreibung ist im GitHub-Wiki zu finden.


 * Fixierung (Schloss). Die allererste Einschränkung. In jedem Zusammenbau sollte ein Teil fixiert werden um als Basisteil zu dienen. Fixieren heißt nichts anderes, als das alle 6 Freiheitsgrade dieses Teiles bezüglich seiner aktuellen Position und Ausrichtung festgesetzt (eingeschränkt) werden. Es wird Startpunkt für... (Original noch unvollständig)


 * Assembly3_ToolbarNavigation.jpg
 * Navigationswerkzeugleiste
 * Diese Funktionen sind nützlich, wenn ein Zusammenbau mit hierarchisch verknüpften externen Dateien bearbeitet wird
 * Auswahl der entsprechenden Part-Objekte in der Beziehungsgruppe
 * Auswahl der verknüpften Objekte
 * Auswahl des am tiefsten verknüpften Objekts


 * Assembly3_ToolbarMeasurement.jpg
 * Messwerkzeugleiste
 * Die Messwerkzeugleiste fügt Funktionen zum Messen von Abständen zwischen Zwei Punkten, einem Punkt und einer Linie oder einem Punkt und einer Fläche hinzu. Das 'Winkel messen'-Werkzeug ermittelt den Winkel zwischen zwei Flächen oder Linien. Es gibt keine Funktion um einen Radius oder Durchmesser zu messen.
 * Die Messwerkzeuge überdauern Änderungen des Bauteils, z.B. den Abstand zwischen Kanten eines Würfels, wenn die die Größe des Würfels verändert wird. Wie die Einschränkungen werden diese Berechnungen in Echtzeit ausgeführt und bei jeder Änderung aktualisiert. Im Hintergrund ist die Funktion ähnlich zu der der Einschränkungen. Der Abstand oder Winkel wird zwischen Elementen auf die gleiche Art wie für Einschränkungen berechnet. Die Anzeige im Baum funktioniert auf die selbe Weise.

Wie gewohnt, kann die Werkzeugleiste geändert und einzelne Werkzeuge hinzugefügt oder entfernt werden. Im Assembly3-Menü sind weitere Funktionen vorhanden, die sich nicht in den Werkzeugleisten befinden.

Zum Anfang

Einschränkungen
Der Konstrukteur benutzt Einschränkungen (Festlegungen) um zwei Teile zueinander auszurichten. Die Kunst besteht darin, die Einschränkungen zu wählen, die am besten zu den jeweiligen Anforderungen passen. Jeder bestimmte Freiheitsgrad sollte theoretisch nur einmal zwischen zwei Objekten festgelegt sein, aber in der Praxis vieler CAD-Werkzeuge erzeugen die ausgewählten Einschränkungen überbestimmte Kombinationen, die oft durch komplexe Algorithmen ausgeglichen werden können, manchmal aber auch nicht. Assembly3 benutzt solche Algorithmen, um überbestimmte Einschränkungen zu entdecken und auszugleichen, aber sie sind bisher noch nicht besonders ausgereift. Also sollte man im Umgang mit Assembly3-Einschränkungen Schwierigkeiten vermeiden, indem man darauf achtet, wieviele Freiheitsgrade auftreten und welche noch durch Einschränkungen festzulegen sind. Kein Teil sollte eine Verbindung durch Einschränkungen haben, bei der mehr als 6 Freiheitsgrade festlegt werden.


 * Achtung: Wenn der Gleichungslöser auf eine Zusammenstellung trifft, die nicht gelöst werden kann, gibt er eine Fehlermeldung aus. Es ist für den Löser sehr schwierig, die Ursache des Problems herauszufinden, sodass man normalerweise aus dem angegebenen Fehler nicht klar erkennen kann, "wo" sich das Problem befindet. Bei größeren Zusamenbauten kann dies zu aufwändigen Fehlersuchen führen. Leider gibt es keinen einfachen Weg, diese zu vermeiden. Allerdings hilft es, im Blick zu behalten, wie das System funktioniert (siehe z.B. Elemente weiter unten), eindeutige Namen für alle betroffenen Komponenten zu vergeben und nur dann weitere Einschränkungen hinzuzufügen, wenn der Gleichungslöser den aktuellen Zusammenbau berechnet. Um ein Problem nachverfolgen zu können, ist die "ContexMenu/Deactivate"-Funktion der jeweiligen Einschränkung sehr hilfreich.

Assembly3-Einschränkungen definieren Festlegungen bezüglich der Position oder der Orientierung zweier Elemente zueinander. Einige Einschränkungen arbeiten sogar mit mehr als zwei Elementen. Ein Element kann eine Fläche, eine Linie oder Kante, oder ein Punkt eines Teiles sein. Generell werden Einschränkungen erstellt, in dem man erst die gewünschten Elemente und danach die Einschränkungen aus den Werkzeugleisten der Einschränkungen auswählt.

Other
 * Fixiert 6 Freiheitsgrade, 0 bleiben unbestimmt:
 * Fixierung (Schloss): Die Fixiereinschränkung legt alle Freiheitsgrade einer Fläche. Sie sollte in jedem Zusammenbau zur Festlegung eines Basisteils genutzt werden. Es ist sinnvoll auch gleich die "Bewegung ausschließen für fixierte Teile"-Funktion (in der Werkzeugleiste) zu aktivieren, um damit ein unbeabsichtigtes Verschieben zu verhindern. In der Regel ist es egal welche Fläche, Linie oder Punkt benutzt wird um ein Teil zu fixieren. Man beachte, dass die Fixierung nur auf den aktuellen Zusammenbau wirkt, d.h. im Falle einer Unterbaugruppe braucht der übergeordnete Zusammenbau noch ein eigenes fixiertes Teil.
 * Anhang: Legt die Koordinatensysteme der ausgewählten Elemente (zweier oder mehrerer Teile) deckungsgleich aufeinander. Dies ist die für die Berechnung günstigste Funktion und sollte, wo immer möglich, benutzt werden. Man beachte, dass man die Eigenschaften der Elemente nutzen kann, um Abstände und Winkel einzustellen, wenn die Elemente nicht optimal zueinander ausgerichtet sind.
 * Fixiert 5 Freiheitsgrade, 1 bleibt unbestimmt:
 * Lagegleiche Ebenen: fixes Tx,Ty,Tz, Rx,Ry. Only Rz is free. There remains the rotation around the normal passing through the ‘‘center of the plane’’.
 * Fixiert 4 Freiheitsgrade, 2 bleiben unbestimmt:
 * 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.
 * Fixiert 3 Freiheitsgrade, 3 bleiben unbestimmt:
 * 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. In plane motion and Rz. This eliminates the translation along the normal to the reference plane and the two rotations around the axes of this plane.
 * Fixiert 2 Freiheitsgrade, 4 bleiben unbestimmt:
 * Multi Parallel: fixes Rx,Ry. all T's and Rz remain. This eliminates the two rotations around the axes of the reference plane.
 * Fixiert 1 Freiheitsgrad, 5 bleiben unbestimmt:
 * 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
 * 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.''

Zum Anfang

Elemente
Elemente wird in der Assembly3-Arbeitsumgebung als besonderer Begriff benutzt, und Elemente zu verstehen ist wichtig für das Verständnis, wie Assembly3 benutzt werden sollte.

Es ist hilfreich ein Element als einen generellen Begriff für 'auswählbarer Bestandteil' eines Teiles zu sehen wie z.B. eine Fläche, eine Kante, ein Kreis, eine Ecke oder ein Punkt. Dies sind die Elemente, die ausgewählt werden, um Teile zueinander in Beziehung zu setzen. Im Baum hat ein 'Assembly'-Ordner drei Unterordner. Neben 'Parts' und 'Constraints' gibt es einen Ordner namens 'Elements', der leer bleibt, solange keine Einschränkungen hinzugefügt werden. Wenn eine Einschränkungen hinzugefügt wird, erhält sie selbst zwei (oder mehr) Blätter, dies sind die ausgewählten Elemente. Auch werden diese Elemente dem 'Elements'-Ordner hinzugefügt, der eine Liste aller im Zusammenbau benutzten Elemente darstellt. Es ist eine gute Idee, ihre Namen zu ändern (mit der F2-Taste), besonders in größeren Zusammenbauten.

Sehen wir uns ein Beispiel an
 * Es wird eine neue Datei erstellt und mit der Part-Arbeitsumgebung ein Würfel und ein Zylinder hinzugefügt. Es soll der Zylinder auf den Würfel gestellt werden. Zuerst wird das Basisteil fixiert, in diesem Fall der Würfel. Dazu wird die Unterseite des Würfels und danach die Fixiereinschränkung (das erste Symbol in der Werkzeugleiste der Haupteinschränkungen) ausgewählt. Es werden die Oberseite des Würfels und die Oberseite des Zylinders ausgewählt. Danach wird die 'Plane Coincident'-Einschränkung ausgewählt. Nun hat sich der Zylinder in den Würfel hinein bewegt und im Baum wurde ein neues Blatt mit zwei Kindknoten unter 'Constraints' hinzugefügt. Zusätzlich wurden die selben zwei Kindknoten unter 'Elements' hinzugefügt. Falls der Zylinder im Inneren des Würfels liegt, anstatt auf seiner Oberseite wird dies als nächstes korrigiert: Den Kindknoten unter 'Constraints' auswählen, zu dem die Zylinderfläche gehört, und mit einem Rechtsklick im Kontextmenü 'Flip Part' auswählen.  Nun wurde der Zylinder auf die Würfeloberseite gestapelt.

The key think to understand is that the constraint operates on links to Elements in the list in the 'Elements' tree folder. This allows to keep the constraint structure intact while changing the parts. This is very difficult to see without an example.

Lets get back to the example above
 * Note: make sure you added the "Lock" constraint to the cube or this will look confusing
 * In the CAD window select another face of the cube. Now we only work in the tree view. Go with your mouse in the tree where the cube should be selected. Drag&Drop the cube to the 'Elements' folder. Drop it on the 'Elements' name, not anywhere else in the folder - why we see 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 out "Plane Coincident" constraint and delete it. The Constraint will show an exclamation mark since its 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 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. 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 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 than 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 select a different item in the PropertyWindow/ConstraintType property.

Zum Anfang

Kompatibilität
Assembly3 wurde vom Assembly2-Arbeitsbereich inspiriert, ist aber nicht mit diesem kompatibel. Wenn ältere Baugruppen in Assembly2 erstellt wurden, sollte man bei FreeCAD 0.16 bleiben und Assembly2 verwendet.

Neue Baugruppen, die mit Assembly3 erstellt wurden, sollten nur in diesem Arbeitsbereich geöffnet und bearbeitet werden.

Obwohl sie möglicherweise über ähnliche Werkzeuge verfügen, ist Assembly3 nicht kompatibel mit A2plus und Assembly4. Baugruppen, die in diesen Arbeitsbereichen erstellt wurden, sollten nur in dem jeweiligen Arbeitsbereich geöffnet werden.

Zum Anfang

Testen
Der Assembly3 Arbeitsbereich befindet sich in der Entwicklung und ist noch nicht (April 2020) über den Addon Manager verfügbar.

Assembly3 kann auf zwei Arten getest werden:
 * Eine spezielle Abspaltung von FreeCAD von realthunder; siehe FreeCAD_assembly3 releases. Dieser Fork basiert auf einem bestimmten Commit des Master-Zweiges von FreeCAD, hat aber auch zusätzliche Funktionen, die derzeit im Master-Zweig nicht vorhanden sind. Da dieser Fork auf einem bestimmten Entwicklungs-Snapshot basiert, verfügt er nicht über die neuesten Funktionen, die täglich in den Master-Zweig eingebunden werden.
 * Die Entwicklung AppImage; diese basiert auf dem aktuellen Master-Zweig und beinhaltet die Abhängigkeiten, die für die Arbeit mit Assembly3 benötigt werden, wie z.B. den SolveSpace Solver.

Da das AppImage nur unter Linux funktioniert, ist für Windows-Benutzer im Moment die erste Option (realthunder's fork) die einzige Möglichkeit, Assembly3 zu testen.

Zum Anfang

Get Started
There are many ways to create an assembly with Assembly3. Here is the most simple one you can do.


 * Assembly3_Example-GettingStarted.jpg
 * Final Result of the Getting Started Example. In the image the Assembly3 Worksbench 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).


 * Create a new FreeCAD file
 * Select assembly Workbench. Select CreateAssembly (first icon)
 * Select Part Workbench and add a cylinder and a cube
 * Save the file with any filename you like. Close and open and the file.
 * The tree view should look like this


 * Now Draw&Drop with the mouse both Cylinder and Cube onto the Parts folder. They are moved into that folder.
 * That is the quickest way. Please note that a better way is to open the Context menu on both and select ContetxMenu/LinkActions/MakeLink. This adds two link files. Then Drag/Drop the link files to the Parts folder. For simple cases like this it does not really matter.
 * Click both top surfaces of Cylinder and Cube (keep Ctrl pressed)
 * Select assembly Workbench. Select "PlaceCoincident" from the Constraint Toolbar.
 * Now the parts should be joined into each other and your tree should look like this

We omitted one important step that should be done in larger assemblies: locking a base part. That means define one part that should not be moved by constraints. In your case we use the cube for that: Done. If you like you can move the "Locked" constraint upwards in the tree. Use the "MoveItemUp" button on the Main Toolbar for that.
 * Right click "_Element" (any of the two) and select "Flip Part".
 * Now the Cylinder should be on top of the box. If the whole thing is upside down, go back and select "Flip Part" on the other Element.
 * Select the lower face of the cube. Only the lower face, not the whole cube.
 * select the "Lock" constraint from the constraint tool bar
 * The finished assembly tree should look like in the image above

Achtung: Alle neuen externen Dateien müssen wenigstens einmal gespeichert, geschlossen und wieder geöffnet sein, damit Assembly3 sie finden kann. Tut man es nicht, kann FreeCAD keine Datei-Handler an den the Assembly3-Arbeitsbereich übergeben und dieser kann die neuen Bauteile nicht finden. Wenn alle Bauteile in der selben Datei abgelegt werden, sollte diese geschlossen und wieder geöffnet werden.

Zum Anfang

Add an Offset
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.


 * Add the offset in the properties of one Elements of a Constraint.
 * you can choose which one of the two you want to use.

Example:
 * Add 2 cubes to an assembly and select their side faces.
 * select "PlaneCoincident". The cubes will be attached inside each other.
 * select one Element and ContextMenu/Flip Part. The cubes will be attached side-by-side.
 * select one Element property Offset/Position/Zz and set to 5mm. The cubes will be 5mm apart.
 * Test with other axes or the angle/axis fields. Also verify that you get the same result when using the other Element.

This is the same approach for all other constraints.

Zum Anfang

Solve a Solver Failure
This often happens when parts are over-constraints, i.e. more than 6 DOF are locked.

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.

Zum Anfang

Replace a part or rename a filename
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).

Zum Anfang

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 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.

Zum Anfang

Verknüpfungen/Verweise

 * App Link Programm, um die Arbeit mit Assembly3 möglich zu machen.
 * FreeCAD_assembly3 Repository und Dokumentation.
 * Assembly3 preview, große Diskussionsrunde.
 * Test tutorial for Assembly 3 WB von jpg87.
 * Current Assembly Status
 * Externe Arbeitsbereiche
 * Liste der externen Arbeitsbereiche
 * Altes Assembly Projekt Entwicklungsablauf, um sich mit der Geschichte des Themas vertraut zu machen.