Arbeitsbereich Assembly
Einleitung
Der Arbeitsbereich Assembly ist FreeCADs neuer eingebauter Arbeitsbereich für das Erstellen von Baugruppen bzw. Zusammenbauten. Er verwendet den quelloffenen Gleichungslöser OndselSolver.
Werkzeuge
Zusammenbau
Baugruppe erstellen: Erstellt eine Hauptbaugruppe (Assembly-Objekt) im aktuellen Dokument oder eine Unterbaugruppe in einer schon vorhandenen aktiven Baugruppe.
Komponente einfügen: Fügt eine Komponente in die aktuelle Baugruppe ein.
Baugruppe lösen: Berechnet die gerade aktive Baugruppe.
Explosionsansicht erstellen: Erstellt einen Behälter für Explosionsansichten (Exploded_Views-Objekt) in der aktiven Baugruppe, der eine oder mehrere Explosionsansichten (Exploded_View-Objekte) enthält
Stückliste erstellen: Leitet eine Stückliste (Bill_of_Materials-Objekt) aus einer ausgewählten Baugruppe oder aus dem Dokument ab.
ASMT-Datei exportieren: Exportiert die gerade aktive Baugruppe als ASMT-Datei.
Verbindungen
Festsetzen umschalten: Setzt Position und Ausrichtung einer Form im Bezug zum Koordinatensystem der Baugruppe fest, zu der sie gehört.
Starre Verbindung erstellen: Erstellt eine starre Verbindung zwischen zwei Bauteilen, die keine Verschiebung oder Drehung zulässt, kann aber auch zum Festlegen andersartiger Verbindungen eingesetzt werden.
Drehverbindung erstellen: Erstellt eine Drehverbindung (auch Scharnier genannt) zwischen zwei ausgewählten Bauteilen, die eine Drehung um eine gemeinsame Achse ermöglicht.
Zylindrische Verbindung erstellen: Erstellt eine zylindrische Führung zwischen zwei ausgewählten Bauteilen, die eine Drehung um eine gemeinsame Achse und eine Verschiebung entlang derselben Achse ermöglicht.
Gleitverbindung erstellen: Erstellt eine prismatische Führung (auch Schubgelenk genannt) zwischen zwei ausgewählten Bauteilen, die eine geradlinige Verschiebung entlang einer gemeinsamen Achse ermöglicht, während sämtliche Drehungen verhindert werden.
Kugelverbindung erstellen: Erstellt ein Kugelgelenk zwischen zwei ausgewählten Bauteilen an einem gemeinsamen Punkt, das eine ungehinderte Drehung um den Punkt herum ermöglicht, während beide Bauteile an diesem Punkt verbunden bleiben.
Abstandsverbindung erstellen: Erstellt eine Verbindung, die den Abstand zwischen den ausgewählten Elementen zweier Bauteile konstant hält.
Parallelführung erstellen: Erstellt eine Parallelführung zwischen zwei ausgewählten Bauteilen, wobei die Z-Achsen der ausgewählten Koordinatensysteme parallel ausgerichtet werden.
Rechtwinklige Führung erstellen: Erstellt eine rechtwinklige Führung zwischen zwei ausgewählten Bauteilen, wobei die Z-Achsen der ausgewählten Koordinatensysteme rechtwinklig ausgerichtet werden.
Winkelführung erstellen: Erstellt eine Wikelführung zwischen zwei ausgewählten Bauteilen, die den Winkel zwischen den Z-Achsen der ausgewählten Koordinatensysteme konstant hält
Zahnstange-Ritzel-Verbindung erstellen: Erstellt eine Zahnstange-Ritzel-Verbindng, die die Verschiebung eines Bauteils einer prismatischen Verbindung und die Drehung eines Bauteils einer Drehverbindung koppelt.
Schraubverbindung erstellen: Erstellt eine Spindelverbindung (wendelförmige Verbindung), die die Verschiebung eines Bauteils einer prismatischen Verbindung und die Drehung eines Bauteils einer Drehverbindung koppelt.
Zahnradverbindung erstellen: Erstellt eine Zahnradverbindung, die die Drehungen zweier Bauteile aus unterschiedlichen Drehverbindungen koppelt.
Riemenverbindung erstellen: Erstellt eine Riemenverbindung, die die Drehungen zweier Bauteile aus unterschiedlichen Drehverbindungen koppelt.
Einstellungen
Einstellungen: Voreinstellungen für den Arbeitsbereich Assembly
Beispiel Kurbel und Schieber
Dies ist ein temporäres Beispiel und kann entfernt werden, sobald ausführliche Beschreibungen bzw. Anleitungen zur Verfügung stehen.
Baugruppe Kurbel und Schieber
Der Zusammenbau (Baugruppe), der erstellt wird, besteht aus vier Bauteilen: Eine Basis, ein Schieber, eine Kurbel und ein Pleuel (Verbindungsstange). Sie sind mit vier Gelenken verbunden.
Die zusammengebauten Bauteile: Basis (bernsteinfarben), Schieber (hellblau), Kurbel (rot), Pleuel (grün)
Bauteile vorbereiten
In diesem Beispiel werden alle Bauteile und der Zusammenbau in einem Dokument erstellt.
Die zylindrischen Geometrien der Objekte sind entweder parallel oder rechtwinklig, der Rest ist für dieses Beispiel nicht von Bedeutung, solange es keine Kollision verursacht. Mit dieser Info im Hinterkopf modelliert man seine eigenen Objekte oder erstellt ähnliche mit dem nachfolgenden Python-Code. Der Code erstellt ein neues Dokument mit den vier Objekten (simpler als in den Abbildungen). Einfach die folgenden Zeilen kopieren und in die Python-Konsole einfügen:
import FreeCAD as App
import FreeCADGui as Gui
import Part
doc = App.newDocument()
box1 = Part.makeBox(140, 40, 7, App.Vector(0, -20, 0))
cyl1 = Part.makeCylinder(4, 8, App.Vector(120, 0, 7))
box2 = Part.makeBox(20, 12, 10, App.Vector(5, -6, 7))
cyl2 = Part.makeCylinder(6, 20, App.Vector(25, 0, 17), App.Vector(-1, 0, 0))
cyl3 = Part.makeCylinder(4, 20, App.Vector(25, 0, 17), App.Vector(-1, 0, 0))
shape = box1.fuse([cyl1, box2, cyl2]).removeSplitter().cut(cyl3)
base = doc.addObject("Part::Feature", "Base")
base.Shape = shape
box1 = Part.makeBox(4, 12, 12, App.Vector(-12, -6, 0))
box2 = Part.makeBox(14, 12, 4, App.Vector(-8, -6, 0))
cyl1 = Part.makeCylinder(4, 8, App.Vector(0, 0, 4))
cyl2 = Part.makeCylinder(4, 88, App.Vector(-12, 0, 6),App.Vector(-1, 0, 0))
shape = box1.fuse([box2, cyl1, cyl2]).removeSplitter()
slider_rod = doc.addObject("Part::Feature", "SliderRod")
slider_rod.Shape = shape
slider_rod.Placement.Base = App.Vector(100, -40, 0)
cyl1 = Part.makeCylinder(7.5, 4)
box1 = Part.makeBox(15, 30, 4, App.Vector(-7.5, 0, 0))
cyl2 = Part.makeCylinder(7.5, 4, App.Vector(0, 30, 0))
cyl3 = Part.makeCylinder(4, 6, App.Vector(0, 30, 4))
cyl4 = Part.makeCylinder(4, 4)
shape = cyl1.fuse([box1, cyl2]).removeSplitter().fuse(cyl3).cut(cyl4)
crank = doc.addObject("Part::Feature", "Crank")
crank.Shape = shape
crank.Placement.Base = App.Vector(125, -70, 0)
cyl1 = Part.makeCylinder(6, 4)
box1 = Part.makeBox(50, 12, 4, App.Vector(0, -6, 0))
cyl2 = Part.makeCylinder(6, 4, App.Vector(50, 0, 0))
cyl3 = Part.makeCylinder(4, 4)
cyl4 = Part.makeCylinder(4, 4, App.Vector(50, 0, 0))
shape = cyl1.fuse([box1, cyl2]).removeSplitter().cut(cyl3.fuse(cyl4))
connecting_rod = doc.addObject("Part::Feature", "ConnectingRod")
connecting_rod.Shape = shape
connecting_rod.Placement.Base = App.Vector(25, -70, 0)
mat = base.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.80, 0.60, 0.15, 0.0)
base.ViewObject.ShapeAppearance = (mat,)
mat = slider_rod.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.70, 0.0)
slider_rod.ViewObject.ShapeAppearance = (mat,)
mat = crank.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.70, 0.30, 0.20, 0.0)
crank.ViewObject.ShapeAppearance = (mat,)
mat = connecting_rod.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.0, 0.0)
connecting_rod.ViewObject.ShapeAppearance = (mat,)
doc.recompute()
view = Gui.ActiveDocument.ActiveView
view.viewIsometric()
view.fitAll()
Eine Baugruppe hinzufügen
Der Befehl Baugruppe erstellen fügt dem Dokument eine Baugruppe hinzu.
Baumansicht von Bauteilen (Parts) und Baugruppe (Assembly)
Die Bauteile in die Baugruppe verschieben
Die Bauteile in der Baumansicht auf das Baugruppenobjekt (Assembly object) ziehen und ablegen. Sie können jetzt vom Assembly-Gleichungslöser verarbeitet werden.
Die Bauteile sind jetzt im Assembly-Behälter
Ein Bauteil festsetzen
Um eine Baugruppe an der gewünschten Stelle zu behalten, sollte das Bauteil Basis verankert werden, oder festgesetzt, wie es hier genannt wird. Ein Bauteil in der Baumansicht oder in der 3D-Ansicht auswählen und den Befehl Festsetzen umschalten aufrufen. Dies legt die Position der Basis im Bezug auf das lokale Koordinatensystem (LKS) des Assembly-Behälters fest. Ein GroundedJoint-Objekt wird dem Joints-Behälter hinzugefügt.
Den Joints-Behälter erweitern, um das GroundedJoint-Objekt zu finden
Alternative: Komponente einfügen
Anstelle der zwei oben genannten Schritte ist es auch möglich den Befehl Komponente einfügen zu verwenden, um Objekte in einen Zusammenbau einzufügen. Das erste Objekt wird automatisch festgesetzt, daher muss man (die Auswahl) mit der Basis beginnen. Der Befehl erstellt Komponenten (Verknüpfungen) und die originale Objekte bleiben außerhalb des Zusammenbaus. Um Verwechslungen zu vermeiden, ist es ratsam, sie auszublenden.
Verbindungen hinzufügen
Eine Verbindung (ein Gelenk) verbindet genau zwei Elemente unterschiedlicher Bauteile. Sie können wahlweise ausgewählt werden, bevor der Befehl für die gewünschte Verbindung aufgerufen wird (jede Anzahl ausgewählter Elemente außer zwei ergibt eine leere Auswahl). Die Elemente legen die Position und Ausrichtung eines LKS fest, das durch einen gefüllten Kreis auf der lokalen XY-Ebene und drei Linien entlang der lokalen X- (rot), Y- (grün) und Z-Achse (blau) dargestellt wird.
- Ein Drehgelenk (Scharnier) zwischen Basis und Kurbel
Ausgewählte Elemente + Drehverbindung erstellen → neu angeordnete Kurbel
Die Kurbel mit der linken Maustaste bewegen. Es sollte jetzt nur eine Drehung um die Drehachse (Z-Achse) möglich sein.
- Eine prismatische Führung zwischen Basis und Schieber
Ausgewählte Elemente + Prismatische Verbindung erstellen → neu angeordneter Schieber
Den Schieber mit der linken Maustaste bewegen. Es sollte jetzt nur das Verschieben entlang seiner Mittellinie (Z-Achse) möglich sein.
- Ein Drehgelenk (Scharnier) zwischen Kurbel und Pleuel
Ausgewählte Elemente + Drehverbindung erstellen → neu angeordnetes Pleuel
Den Pleuel mit der linken Maustaste bewegen. Er sollte jetzt nur eine Drehung um die Drehachse (Z-Achse) möglich sein.
Wenn sich mehrere Gelenke in einer Reihe ergeben, müssen wir dem Gleichungslöser helfen eine sinnvolle Lösung zu finden.
Wenn erforderlich, die Bauteile anklicken und auf eine einfacher zu berechnende Position ziehen.
- Eine zylindrische Führung zwischen Pleuel und Schieber
Ausgewählte Elemente + Zylindrische Verbindung erstellen → fertiger Zusammenbau
Im fertiggestellten Zusammenbau können die Bauteile entsprechend den verwendeten Verbindungen mit dem Mauszeiger bewegt werden.
Hinweis
Die Ausrichtung des Zapfens des Schiebers ist redundant festgelegt. Seine Mittellinie ist parallel zum Zapfen der Basis über die kinematisch Kette von der Basis über die Kurbel und dem Pleuel, d.h. dass seine lokale Z-Achse sich um keine der X- oder Y-Achsen drehen kann. Die prismatische Verbindung verhindert ebenfalls seine Drehung um zwei lokale Achsen, woraus sich zwei überbestimmte (doppelt festgelegte) Freiheitsgrade ergeben. Eine zylindrische Verbindung anstelle der prismatischen Verbindung würde nur eine Drehung sperren und ergibt so nur einen einzigen überbestimmten Freiheitsgrad.
Die Kurbel antreiben
Um die Lage aller Bauteile der Baugruppe zueinander durch den Winkel zwischen der Basis und der Kurbel zu steuern, muss deren Drehgelenk in eine starre Verbindung umgewandelt werden. Dafür klickt man das Revolute-Objekt in der Baumansicht doppelt an. Im Dialog ändert man Rehverbindung zu Starrer Verbund und passt den Wert des Drehwinkels nach Wunsch an (die Bewegung sollte der Drehung des Mausrades folgen).
Man beachte, dass das Ändern der Verbindungsart die Benennung (Label) der Verbindung ändert, aber nicht ihren Namen. In diesem Falle wird die Benennung zu "Fixed" (Starrer Verbund) geändert.
Um die Kinematik zu bewegen können wir den Drehwinkel (Offset1.Angle) der starren Verbindung mit Python-Code verändern. Einfach die folgenden Zeilen kopieren und in die Python-Konsole einfügen:
import math
import FreeCAD as App
import FreeCADGui as Gui
actuator = App.ActiveDocument.getObjectsByLabel("Fixed")[0]
for angle in range(0, 361, 10):
# A full rotation of the Crank in steps of 10°
actuator.Offset1.Rotation.Angle = math.radians(angle)
App.ActiveDocument.recompute()
Gui.updateGui()
Der Endwert des Bereiches muss größer als 360° sein, damit auch dieser Winkel noch als gültiges Ergebnis anerkannt wird.
Beispiel Kreuzgelenk
Dies ist ein temporäres Beispiel und kann entfernt werden, sobald ausführliche Beschreibungen bzw. Anleitungen zur Verfügung stehen.
Baugruppe Kreuzgelenk
In diesem Beispiel wird ein Kreuzgelenk erstellt.
Der Zusammenbau besteht aus drei Festkörpern: zwei identischen (Gelenk-) Gabeln (Forks) und einem (Achsen-) Kreuz (Cross). Zwei zusätzliche Elemente, Welle1 und Welle2 (Axle1 und Axle2), die keine Festkörper sind und die abgewinkelten Wellen darstellen, werden auch noch gebraucht. Die Wellen und Festkörperbauteile werden mit mehreren Gelenken verbunden.
Bauteile vorbereiten
In diesem Beispiel werden alle Bauteile und der Zusammenbau in einem Dokument erstellt.
Der nachfolgende Python-Code erstellt ein neues Dokument mit vier Objekten (nur eine Gabel). Einfach die folgenden Zeilen kopieren und in die Python-Konsole einfügen:
import math
import FreeCAD as App
import FreeCADGui as Gui
import Part
doc = App.newDocument()
axle1 = doc.addObject("Part::Line", "Axle1")
axle1.X2 = -80
axle1.Y2 = 0
axle1.Z2 = 0
axle2 = doc.addObject("Part::Line", "Axle2")
axle2.X2 = 80
axle2.Y2 = 0
axle2.Z2 = 0
axle2.Placement.Rotation.Angle = math.radians(20)
sph1 = Part.makeSphere(50, App.Vector(0, 0, 0), App.Vector(-1, 0, 0), 0, 90, 360)
box1 = Part.makeBox(50, 40, 80, App.Vector(-50, -20, -40))
cyl1 = Part.makeCylinder(20, 80, App.Vector(0, 0, -40))
cyl2 = Part.makeCylinder(20, 80, App.Vector(0, 0, 0), App.Vector(-1, 0, 0))
cyl3 = Part.makeCylinder(30, 60, App.Vector(0, -30, 0), App.Vector(0, 1, 0))
box2 = Part.makeBox(30, 60, 60, App.Vector(0, -30, -30))
cyl4 = Part.makeCylinder(15, 80, App.Vector(0, 0, -40))
cyl5 = Part.makeCylinder(15, 80, App.Vector(0, 0, 0), App.Vector(-1, 0, 0))
shape = sph1.common(box1).fuse([cyl1, cyl2]).cut(cyl3.fuse([box2, cyl4, cyl5]))
fork = doc.addObject("Part::Feature", "Fork")
fork.Shape = shape.removeSplitter()
fork.Placement.Base = App.Vector(0, 100, 0)
cyl1 = Part.makeCylinder(15, 80, App.Vector(0, 0, -40))
cyl2 = Part.makeCylinder(15, 80, App.Vector(0, -40, 0), App.Vector(0, 1, 0))
shape = cyl1.fuse([cyl2])
cross = doc.addObject("Part::Feature", "Cross")
cross.Shape = shape.removeSplitter()
cross.Placement.Base = App.Vector(70, 100, 0)
mat = fork.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.80, 0.60, 0.15, 0.0)
fork.ViewObject.ShapeAppearance = (mat,)
mat = cross.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.70, 0.0)
cross.ViewObject.ShapeAppearance = (mat,)
doc.recompute()
view = Gui.ActiveDocument.ActiveView
view.viewIsometric()
view.fitAll()
Den Winkel der Wellen ändern
Der Winkel zwischen den Wellen wird auf 20° festgelegt. Soll der Winkel geändert werden, wird Welle2 (Axle2) ausgewählt und deren Eigenschaft Placement.Angle angepasst. Diese Eigenschaft muss geändert werden, bevor Welle2 in die Baugruppe bewegt wird.
Warnung: Die Bauteile können kollidieren, wenn der Winkel zu groß ist.
Eine Baugruppe hinzufügen
Der Befehl Baugruppe erstellen fügt dem Dokument eine Baugruppe hinzu.
Die Wellen in die Baugruppe verschieben
In der Baumansicht die Wellen auf die Baugruppe (Assembly-Objekt) zeihen und ablegen.
Die Wellen festlegen
Beide Wellen in der Baumansicht auswählen und das Werkzeug Festlegen umschalten aufrufen.
Die Festkörper in die Baugruppe verschieben
Für die anderen vier Objekte verwenden wir das Werkzeug Komponente einfügen:
- Das Werkzeug aufrufen.
- Im Dialogfenster, das sich öffnet, klickt man einmal auf das Kreuz-Objekt und zweimal auf das Gabel-Objekt.
- Die Schaltfläche OK drücken.
- Die Objekte außerhalb der Baugruppe ausblenden.
- Sollten sich die Objekte innerhalb der Baugruppe zu sehr überlappen, können sie auf eine neue Position gezogen werden.
Verbindungen hinzufügen
- Ein Drehgelenk (Scharnier) zwischen Axle1 (Welle1) und Fork001 (Gabel1)
Ausgewählte Elemente + Drehverbindung erstellen + Versatz von +40 mm oder -40 mm → neu angeordnete Gabel1
Wird das Werkzeug zuerst aufgerufen, kann man in die Nähe des korrekten Endpunktes der Welle1 klicken, um die Eingabe eines Versatzes zu vermeiden.
- Eine Zylindrische Führung zwischen Gabel1 (Fork001) und Kreuz (Cross001)
Ausgewählte Elemente + Zylindrische Verbindung erstellen → neu angeordnetes Kreuz
- Eine zylindrische Führung zwischen Welle2 (Axle2) und Gabel2 (Fork002)
Ausgewählte Elemente + Zylindrische Verbindung erstellen → neu angeordnete Gabel2
Wenn nötig, die Ausrichtung der Verbindung umkehren, indem man die Schaltfläche im Aufgaben-Fenster drückt.
- Eine zylindrische Führung zwischen Kreuz (Cross001) und Gabel2 (Fork002)
Ausgewählte Elemente + Zylindrische Verbindung erstellen → Kreuz (Cross001) und Gabel2 (Fork002) neu angeordnet
Das Kreuzgelenk antreiben
Das Kreuzgelenk kann angetrieben werden, indem Gabel1 mit der linken Maustaste bewegt wird.
Soll die Anordnung an bestimmten Drehwinkeln geprüft werden, macht man folgendes:
- Die zylindrische Verbindung zwischen Welle1 und Gabel1 in eine starre Verbindung ändern.
- Die Eigenschaft Offset1.Angle der starren Verbindung auswählen und das Mausrad bewegen.
- Das Kreuzgelenk kann auf einen beliebigen Winkel eingestellt werden.
- Joints: Toggle Grounded, Create a Fixed Joint, Create Revolute Joint, Create Cylindrical Joint, Create Slider Joint, Create Ball Joint, Create Distance Joint, Create Parallel Joint, Create Perpendicular Joint, Create Angle Joint, Create Rack and Pinion Joint, Create Screw Joint, Create Gears Joint, Create Belt Joint
- Preferences: Preferences

- Erste Schritte
- Installation: Herunterladen, Windows, Linux, Mac, Zusätzliche Komponenten, Docker, AppImage, Ubuntu Snap
- Grundlagen: Über FreeCAD, Graphische Oberfläche, Mausbedienung, Auswahlmethoden, Objektname, Voreinstellungseditor, Arbeitsbereiche, Dokumentstruktur, Objekteigenschaften, FreeCAD unterstützen, Spenden
- Hilfe: Anleitungen, Videoanleitungen
- Arbeitsbereiche: Std Base, Arch, Assembly, BIM, CAM, Draft, FEM, Inspection, Material, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework