Środowisko pracy Złożenie
Wprowadzenie
Środowisko pracy Złożenie to nowe wbudowane środowisko pracy FreeCAD do modelowania złożeń. Korzysta z otwartoźródłowego solvera Ondsel.
Narzędzia
Złożenie
Utwórz złożenie: tworzy bazowe złożenie w bieżącym dokumencie lub podzłożenie w istniejącym aktywnym złożeniu.
Wstaw komponent: wstawia komponent do aktywnego złożenia.
Rozwiąż złożenie: rozwiązuje aktualnie aktywne złożenie.
Utwórz widok rozłożenia: tworzy kontener widoków rozłożenia w aktywnym złożeniu, zawierający jeden lub więcej widoków rozłożenia.
Utwórz zestawienie: tworzy zestawienie materiałów (BOM) ze wskazanego złożenia lub z dokumentu.
Eksportuj do pliku ASMT: eksportuje aktualnie aktywne złożenie do pliku ASMT.
Połączenia
Włącz / wyłącz zakotwienie: blokuje położenie i orientację kształtu względem układu współrzędnych złożenia, do którego ten kształt należy.
Utwórz połączenie stałe: tworzy połączenie blokujące dwie części złożenia razem, zapobiegając wszelkim przesunięciem lub obrotom, ale może być również wykorzystane do zdefiniowania innych typów połączeń.
Utwórz połączenie obrotowe: tworzy zawias pozwalający na obrót wokół jednej osi między dwiema wskazanymi częściami.
Utwórz połączenie cylindryczne: tworzy połączenie cylindryczne między dwiema wskazanymi częściami, pozwalając na obrót wokół jednej osi i przesunięcie wzdłuż tej samej osi.
Utwórz połączenie przesuwne: tworzy połączenie suwliwe (pryzmatyczne) między dwiema wskazanymi częściami, pozwalając na przesunięcie wzdłuż jednej osi i blokując obrót.
Utwórz przegub kulowy: tworzy przegub kulowy między dwiema wskazanymi częściami w jednym punkcie, pozwalając na obrót wokół tego punktu i utrzymując obie części połączone w nim.
Utwórz połączenie dystansowe: tworzy połączenie dystansowe między wskazanymi częściami, blokując odległość między nimi.
Utwórz połączenie równoległe: tworzy połączenie równoległe między dwiema wskazanymi częściami, ustawiając osie Z wybranych układów współrzędnych równolegle.
Utwórz połączenie prostopadłe: tworzy połączenie prostopadłe między dwiema wybranymi częściami, ustawiając osie Z wybranych układów współrzędnych prostopadle.
Utwórz połączenie kątowe: tworzy połączenie kątowe między dwiema wybranymi częściami, ustalając kąt między osiami Z wybranych układów współrzędnych.
Utwórz połączenie zębatki i koła zębatego: tworzy połączenie zębatki i koła zębatego, które wiąże przesunięcie części połączenia typu Przesuwne i obrót części połączenia typu Obrotowe.
Utwórz połączenie śrubowe: tworzy połączenie śrubowe (spiralne), które wiąże przesunięcie części z połączeniem typu Przesuwne i obrót części z połączeniem typu Obrotowe.
Utwórz połączenie kół zębatych: tworzy połączenie kół zębatych wiążące obrót dwóch części z dwoma różnymi połączeniami typu Obrotowe.
Utwórz połączenie pasowe: tworzy połączenie przekładni pasowej, które wiąże obrót dwóch części z dwoma różnymi połączeniami typu Obrotowe.
Ustawienia
Ustawienia: preferencje dla środowiska pracy Złożenie.
Przykład - korba i suwak
Ten przykład jest tymczasowy i może zostać usunięty gdy pojawią się odpowiednie opisy/przykłady.
Złożenie - korba i suwak
Złożenie, które ma zostać utworzone, składa się z czterech części: podstawy, suwaka, korby i korbowodu. Są one połączone czterema przegubami.
Złożone części: Podstawa (bursztynowy), Suwak (jasnoniebieski), Korba (czerwony), Korbowód (zielony)
Przygotowanie części
W tym przykładzie wszystkie części i zespół są tworzone w jednym dokumencie.
Geometrie cylindryczne obiektów są równoległe lub prostopadłe, pozostałe kształty nie są istotne dla tego przykładu, chyba że występują kolizje. Mając to na uwadze, możesz zamodelować własne obiekty lub utworzyć je przy pomocy poniższego kodu Pythona. Ten kod utworzy nowy dokument z czterema obiektami (prostszymi niż na rysunkach). Po prostu skopiuj i wklej następujące linie do konsoli Pythona:
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()
Dodawanie złożenia
Przy pomocy polecenia Utwórz złożenie dodaj do dokumentu złożenie.
Widok drzewa części i złożenia.
Przenieś części do złożenia
W Widoku drzewa przeciągnij i upuść części na obiekt Złożenia. Teraz mogą być one obsługiwane przez solver złożeń.
Części są teraz w kontenerze złożeń.
Kotwienie części
Aby utrzymać złożenie w pożądanej pozycji, część bazowa powinna zostać zablokowana lub zakotwiona, jak to się tutaj nazywa. Wybierz bazę w widoku drzewa lub w widoku 3D i użyj polecenia Włącz / wyłącz zakotwienie. Spowoduje to ustalenie pozycji Bazy w odniesieniu do lokalnego układu współrzędnych (LCS) kontenera złożenia. Obiekt GroundedJoint zostanie dodany do kontenera Joints.
Rozwiń kontener Połączeń, aby znaleźć obiekt Zakotwienia połaczeń.
Alternatywa: Wstaw łącze
Zamiast dwóch kroków opisanych wyżej, można również użyć polecenia Wstaw łącze aby umieścić obiekty w złożeniu. Pierwszy obiekt automatycznie zostaje zakotwiony. Musisz więc zacząć od obiektu podstawy. To polecenie tworzy łącza i oryginalne obiekty pozostają poza złożeniem. Aby uniknąć wątpliwości, zalecane jest wyłączanie ich widoczności.
Zastosuj połączenia
Połączenie łączy dokładnie dwa elementy różnych części. Można je opcjonalnie wybrać przed wywołaniem żądanego polecenia połączenia (dowolna liczba wybranych elementów innych niż dwa powoduje pusty wybór). Elementy definiują położenie i orientację LCS reprezentowanego przez wypełniony okrąg na lokalnej płaszczyźnie XY i trzy linie wzdłuż lokalnych osi X (czerwony), Y (zielony) i Z (niebieski).
- Połączenie obrotowe między podstawą a korbą.
Zaznaczone elementy + Utwórz połączenie obrotowe → przestawiona korba.
Przesuń Korbę używając lewego przycisku myszy. Tylko obrót wokół osi powinien być możliwy.
- Połączenie przesuwne między podstawą a suwakiem.
Selected elements + Utwórz połączenie przesuwne → przestawiony suwak
Przesuń Suwak używając lewego przycisku myszy. Tylko przemieszczenie wzdłuż jego osi powinno być możliwe.
- Połączenie obrotowe między korbą a korbowodem.
Zaznaczone elementy + Utwórz połączenie obrotowe → przestawiony korbowód
Przesuń Korbowód używając lewego przycisku myszy. Tylko obrót wokół osi powinien być możliwy.
Jeśli jest kilka połączeń w linii, musimy pomóc solverowi w znalezieniu sensownego rozwiązania. Jeśli to konieczne, kliknij i przeciągnij części do łatwiejszej do obliczenia pozycji.
- Połączenie cylindryczne między korbowodem a suwakiem.
Zaznaczone elementy + Utwórz połączenie cylindryczne → zakończone złożenie
W gotowym złożeniu użyj kursora myszki, aby przeciągnąć części zgodnie z użytymi połączeniami.
Uwaga
Sworzeń pręta suwaka jest nadmiarowo zorientowany. Jego oś jest równoległa do sworznia podstawy poprzez łańcuch kinematyczny z podstawy przez korbę i korbowód, t.j. jego lokalna oś Z nie może się obracać wokół żadnej osi X lub Y. Połączenie przesuwne również zapobiega obrotowi jego osi Z wokół dwóch lokalnych osi a więc skutkuje dwoma nadmiarowo związanymi stopniami swobody. Połączenie cylindryczne zamiast przesuwnego zablokowałoby tylko jeden obrót skutkując pojedynczym nadmiernie związanym stopniem swobody.
Napęd korby
Aby kontrolować układ złożenia za pomocą kąta między podstawą a korbą, musimy zmienić połączenie obrotowe na stałe. Aby to zrobić, kliknij dwukrotnie obiekt Obrotowy w widoku drzewa. W oknie dialogowym zmień Obrotowy na Stały i zmień wartość obrotu zgodnie z potrzebą (ruch powinien podążać za ruchem kółka myszki).
Zauważ, że zmiana typu połączenia zmieni jego etykietę, ale nie nazwę. W tym przypadku etykiety zostaje zmieniona na "Stałe".
Aby dokonać animacji złożenia, możemy zmienić obrót (Offset1.Angle) połączenia stałego używając kodu Pythona. Po prostu skopiuj i wklej następujące linie do konsoli Pythona:
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()
Koniec zakresu musi być większy niż 360, aby uwzględnić ten kąt jako prawidłowy wynik.
Przykład - przegub Cardana
Ten przykład jest tymczasowy i może zostać usunięty gdy pojawią się odpowiednie opisy/przykłady.
Złożenie przegubu Cardana
W tym przykładzie tworzony jest przegub Cardana.
Złożenie składa się z trzech części bryłowych: dwóch identycznych widelców i krzyżowego łącznika. Potrzebne są też dwa dodatkowe elementy niebryłowe, oś 1 i oś 2 reprezentujące osie pod kątem. Osie i części bryłowe są połączone kilkoma połączeniami.
Przygotowanie części
W tym przykładzie wszystkie części i złożenie są tworzone w jednym dokumencie.
Poniższy kod Pythona utworzy nowy dokument z czterema obiektami (tylko 1 widelec). Po prostu skopiuj i wklej następujące linie do konsoli Pythona:
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()
Zmień kąt osi
Kąt między osiami jest ustawiony na 20 stopni. Jeśli chcesz zmienić tą wartość, wybierz oś 2 i ustaw właściwość Umiejscowienie.Kąt. Ta właściwość musi być zmieniona przed przesunięciem osi 2 do złożenia.
Ostrzeżenie: części mogą ze sobą kolidować jeśli kąt jest zbyt duży.
Dodawanie złożenia
Dodaj złożenie do dokumentu korzystając z narzędzia Utwórz złożenie.
Przenieś osie do złożenia
W widoku drzewa przeciągnij i upuść osie do obiektu Złożenie.
Zakotwienie osi
Wybierz dwie osie w widoku drzewa i użyj narzędzia Włącz / wyłącz zakotwienie.
Przenieś części bryłowe do złożenia
Dla innych obiektów użyjemy narzędzia Wstaw komponent:
- Wywołaj to narzędzie.
- W oknie dialogowym, które zostanie otwarte kliknij raz na obiekcie łącznika krzyżowego i dwa razy na obiekcie widelca.
- Wciśnij przycisk OK.
- Schowaj obiekty poza złożeniem.
- Jeśli obiekty w złożeniu za bardzo na siebie nachodzą, możesz je przeciągnąć do nowej pozycji.
Zastosuj połączenia
- Połączenie obrotowe między osią 1 i łącznikiem krzyżowym
Selected elements + Utweórz połączenie obrotowe + Odsunięcie +40mm lub -40mm → przestawiony widelec 1
Jeśli najpierw wywołujesz narzędzie a następnie wskazujesz elementy, możesz kliknąć w pobliżu prawidłowego punktu końcowego osi 1 aby uniknąć konieczności wprowadzania odsunięcia.
- Połączenie cylindryczne między widelcem 1 i łącznikiem krzyżowym
Zaznaczone elementy + Utwórz połączenie cylindryczne → przestawiony łącznik krzyżowy
- Połączenie cylindryczne między osią 1 i widelcem 2
Zaznaczone elementy + Utwórz połączenie cylindryczne → przestawiony widelec 2
Jeśli to konieczne, odwróć kierunek połączenia używając przycisku w panelu zadań.
- Połączenie cylindryczne między łącznikiem krzyżowym i widelcem 2
Zaznaczone elementy + Utwórz połączenie cylindryczne → przestawiony łącznik krzyżowy i widelec 2
Sterowanie przegubem Cardana
Przegubem Cardana można sterować ruszając widelec 1 lewym przyciskiem myszy.
Jeśli chcesz sprawdzić sytuację dla osobnych kątów obrotu:
- Zmień połączenie cylindryczne między osią 1 i widelcem 1 na połączenie stałe.
- Wybierz właściwość Odsunięcie1.Kąt połączenia stałego i przesuń kółko myszy.
- Przegub Cardana może być ustawiony dla dowolnego kąta.
- Złożenie: Utwórz złożenie, Wstaw łącze, Rozwiąż złożenie, Utwórz widok rozłożenia, Eksportuj do pliku ASMT
- Połaczenia: Włącz / wyłącz zakotwienie, Utwórz połączenie stałe, Utwórz połączenie obrotowe, Utwórz połączenie cylindryczne, Utwórz połączenie przesuwne, Utwórz przegub kulowy, Utwórz połączenie dystansowe, Utwórz połączenie zębatki i koła zębatego, Utwórz połączenie śrubowe, Utwórz połączenie kół zębatych, Utwórz połączenie pasowe

- Jak zacząć
- Instalacja: Pobieranie programu, Windows, Linux, Mac, Dodatkowych komponentów, Docker, AppImage, Ubuntu Snap
- Podstawy: Informacje na temat FreeCAD, Interfejs użytkownika, Profil nawigacji myszką, Metody wyboru, Nazwa obiektu, Edytor ustawień, Środowiska pracy, Struktura dokumentu, Właściwości, Pomóż w rozwoju FreeCAD, Dotacje
- Pomoc: Poradniki, Wideo poradniki
- Środowiska pracy: Strona Startowa, Złożenie, BIM, CAM, Rysunek Roboczy, MES, Inspekcja, Siatka, OpenSCAD, Część, Projekt Części, Punkty, Inżynieria Wsteczna, Robot, Szkicownik, Arkusz Kalkulacyjny, Powierzchnia 3D, Rysunek Techniczny, Test Framework