A2plus Workbench/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "'''Uwaga:''' Upewnij się, że przynajmniej jedna część wiązania ma właściwość {{PropertyData|Pozycja ustalona}} ustawioną na {{false/pl}}.")
(Created page with "===Ustawienie właściwości Czubka===")
Line 302: Line 302:
'''Uwaga:''' Upewnij się, że przynajmniej jedna część wiązania ma właściwość {{PropertyData|Pozycja ustalona}} ustawioną na {{false/pl}}.
'''Uwaga:''' Upewnij się, że przynajmniej jedna część wiązania ma właściwość {{PropertyData|Pozycja ustalona}} ustawioną na {{false/pl}}.


<span id="Setting_the_Tip_Property"></span>
=== Setting the Tip Property ===
===Ustawienie właściwości Czubka===


If you miss some features of your part after the import to an A2plus assembly, check the property {{PropertyData|[[PartDesign_MoveTip|Tip]]}}.
If you miss some features of your part after the import to an A2plus assembly, check the property {{PropertyData|[[PartDesign_MoveTip|Tip]]}}.

Revision as of 13:56, 11 January 2024

Ikonka FreeCAD dla środowiska pracy A2plus

Wprowadzenie

Środowisko pracy A2plus to zewnętrzne środowisko do wykonywania złożeń różnych części w programie FreeCAD.

Niniejsza dokumentacja opisuje wersję A2plus 0.4.56 lub nowszą.

Instalacja

Środowisko pracy A2plus jest dodatkiem do programu FreeCAD. Można je łatwo zainstalować za pomocą Menadżera dodatków z menu Przybory → Menadżer dodatków. A2plus jest w trakcie aktywnego rozwoju i będzie często wzbogacany o nowe funkcje. Dlatego warto go regularnie aktualizować, również za pomocą narzędzia w menu Przybory → Menadżer dodatków. Kod A2plus jest przechowywany i rozwijany na GitHub i może być również zainstalowany ręcznie poprzez skopiowanie go do katalogu Mod programu FreeCAD.

Rozpoczęcie pracy

Na początku przejdź do paska narzędzi A2plus w programie FreeCAD. Aby utworzyć złożenie, utwórz nowy plik w programie FreeCAD. Na początku plik ten musi zostać zapisany. Zaleca się (ale nie jest to konieczne), aby zapisać go w tym samym folderze, w którym znajdują się części, z których ma zostać wykonany montaż.

Teraz części można dodawać do złożenia za pomocą przycisku na pasku narzędzi lub . Przycisk dodaje wszystkie bryły w wybranym pliku jako jedną część. Używając przycisku możesz wybrać, jaki element z pliku ma zostać zaimportowany jako część. W ten sposób można na przykład zaimportować tylko szkic, a następnie złożyć kolejne części, używając szkicu do określenia pozycji części.

Pierwsza dodana część otrzymuje domyślnie stałą pozycję. (Można to zmienić później za pomocą właściwości części DANEfixed Position).

Części, które już znajdują się w złożeniu, można klonować za pomocą przycisku z paska narzędzi .

Aby edytować część ze złożenia, zaznacz ją w drzewie modelu i użyj przycisku na pasku narzędzi . Spowoduje to otwarcie części w nowej zakładce w programie FreeCAD lub przełączenie do jej zakładki, jeśli plik jest już otwarty.

Aby zaktualizować części zmodyfikowane w złożeniach kliknij na przycisk na pasku narzędzi . Przycisk paska narzędzi również importuje części, ale rekurencyjnie przez możliwe montaż podzespołów. Jeśli zaznaczysz jedną lub kilka części w widoku drzewa programu FreeCAD, A2plus poprosi Cię o aktualizację tylko wybranych części.

Zaimportowane części zachowują swoje zewnętrzne zależności i można je edytować. W przypadku ściśle zdefiniowanych części, takich jak śruby, warto jednak, aby ich kształt nie mógł być edytowany. Można to osiągnąć za pomocą przycisku na pasku narzędzi , który przekształca wybraną część w statyczną kopię części oryginalnej.

Aby zapisać złożenie i zamknąć je po zakończeniu, można użyć przycisku paska narzędzi .

Przełączanie przycisku paska narzędzi ustawia sposób, zaznaczenia kilku krawędzi, ścian itp.: albo za pomocą pojedynczego kliknięcia, albo używając Ctrl + kliknięcie.

Montaż

Montaż części odbywa się poprzez dodawanie więzów pomiędzy częściami. Po wprowadzeniu wiązania środowisko pracy A2plus przesuwa części zgodnie z wiązaniem, jeśli jest to możliwe.

Aby utworzyć wiązanie między częściami, przytrzymaj wciśnięty klawisz Ctrl i zaznacz każdą krawędź lub powierzchnię dwóch części. Następnie kliknij przycisk na pasku narzędziowym żądanego wiązania. Pojawi się okno dialogowe opisane w rozdziale wiązania. Wiązanie zostanie dodane do drzewa modelu dołączonego do części, których dotyczy.

W przypadku złożonych wiązań między częściami środowisko pracy A2plus może nie wykonać rozwiązania wiązań. W związku z tym zapoznaj się również z punktem Rozwiązywanie problemów, aby poznać strategie rozwiązywania takich przypadków.

Bieżące monitorowanie

Im więcej części dodajesz, tym ważniejsze jest, aby je śledzić. Dlatego A2plus oferuje narzędzia do przenoszenia i przeglądania części:

  • Aby przesunąć część w złożeniu, zaznacz ją w drzewie modelu i użyj przycisku na pasku narzędzi . Gdy umieścisz część tam, gdzie chcesz, kliknij lewym przyciskiem myszy. Jeśli przeniesiona część ma już wiązania, zostanie ona odpowiednio umieszczona po naciśnięciu przycisku paska narzędzi , ponieważ powoduje to rozwiązanie wszystkich więzów złożenia.
  • Aby pokazać wiązanie, wybierz je w drzewie modelu i użyj przycisku na pasku narzędzi . Spowoduje to, że cały zespół stanie się przezroczysty i zostaną podświetlone dwa obiekty, które są połączone wiązaniem. Aby powrócić do normalnego widoku, kliknij lewym przyciskiem myszki na złożeniu.
  • Aby pokazać tylko niektóre części złożenia, wybierz te części w drzewie modelu i użyj przycisku paska narzędzi . Alternatywnie możesz ukryć określoną część, zaznaczając ją w drzewie modelu i naciskając klawisz Spacja, aby przełączyć jej widoczność.
  • Aby przełączyć widok przezroczystości całego złożenia, możesz użyć przycisku na pasku narzędzi .
  • Każdą część można uczynić przezroczystą za pomocą normalnej edycji w programie FreeCAD. Jednak czasami ustawienie przezroczystości dla części jest tracone przy ponownym otwieraniu złożenia z powodu błędu w programie FreeCAD. Jako obejście tego problemu możesz użyć przycisku paska narzędzi , aby przywrócić ustawienia przezroczystości.

Wiązania

Podczas tworzenia wiązania takie okno dialogowe zostanie wyświetlone po naciśnięciu przycisku paska narzędziowego wiązania:

Powyżej: Okno dialogowe właściwości wiązań A2plus

W przypadku niektórych wiązań można modyfikować kierunek wiązania. Za pomocą przycisku Rozwiąż można wcześniej sprawdzić, czy to nowe wiązanie może być rozwiązane przez A2plus. Jeśli nie, zajrzyj do rozdziału Rozwiązywanie problemów.

Wiązania można wyłączyć, zmieniając ich widzialność. Robi się to przez wybranie wiązania w widoku drzewa i naciśnięcie klawisza Spacja. Powoduje to włączenie właściwości DANEStłumione. Wyciszone wiązanie nie jest brane pod uwagę podczas rozwiązywania zespołu.

A2plus zapewnia następujące wiązania:

Punkt w punkcie

Wybierz wierzchołek (punkt), okrąg lub sferę na każdej części. Jeśli wybrano okrąg lub sferę, to jej punkt środkowy zostanie użyty w Wiązaniu. Przycisk na pasku narzędzi dodaje wiązanie PunktIdentyfikacja, które sprawia, że wierzchołki są zbieżne.

Punkt na linii

Wybierz wierzchołek (punkt), lub okrągłą krawędź (wybierze jej punkt środkowy), lub kulistą ścinę (również wybierze jej punkt środkowy) na jednej części i krawędź na drugiej. Przycisk paska narzędzi dodaje wiązanie PunktNaLinii. Spowoduje ono umieszczenie wierzchołka na krawędzi.

Punkt na płaszczyźnie

Wybierz wierzchołek (punkt), okrągłą krawędź (zostanie wybrany jej punkt środkowy) lub kulistą ścianę (również zostanie wybrany jej punkt środkowy) na jednej części i płaszczyznę na drugiej części. Przycisk paska narzędzi dodaje wiązanie Punkt na płaszczyźnie. W oknie dialogowym wiązania można określić przesunięcie między punktem a płaszczyzną. Przesunięcie to można również przerzucić między obiema stronami płaszczyzny. Jeśli przesunięcie wynosi zero, ograniczenie spowoduje umieszczenie wierzchołka na płaszczyźnie.

Sfera w sferze

Wybierz sferyczną powierzchnię lub wierzchołek (punkt) na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie sphereCenterIdent (sfera o wspólnym środku). Sprawi ono, że środki sfer, środki sfery i wierzchołka lub wierzchołki będą się pokrywać.

Okrągła krawędź na okrągłej krawędzi

Wybierz okrągłą krawędź krawędź na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie circularEdge. W oknie dialogowym wiązania można określić przesunięcie między krawędziami. To przesunięcie może być również odwrócone. Ponadto można ustawić kierunek wiązania i zablokować obrót części. Jeśli przesunięcie wynosi zero, wiązanie spowoduje, że krawędzie będą koncentrycznie leżeć w tej samej płaszczyźnie.

Zbieżność osi

Wybierz cylindryczną Powierzchnię lub liniową Krawędź na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie Zbieżność osi. W oknie dialogowym wiązania można określić kierunek osi. W oknie tym można również zablokować obrót części. Wiązanie spowoduje, że osie lub linie będą zbieżne.

Równoległość osi

Wybierz cylindryczną powierzchnię lub liniową krawędź na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie równoległości osi. W oknie dialogowym ograniczenia można określić kierunek osi. Ograniczenie sprawi, że osie lub linie będą równoległe.

Oś na płaszczyźnie równoległej

Wybierz cylindryczną powierzchnię lub liniową krawędź na jednej części i płaszczyznę na drugiej części. Przycisk paska narzędzi dodaje wiązanie Oś na płaszczyźnie równoległej. Dzięki temu wiązaniu oś lub prosta będzie równoległa do płaszczyzny.

Oś na płaszczyźnie normalnej

Wybierz cylindryczną powierzchnię lub liniową krawędź na jednej części i płaszczyznę na drugiej części. Przycisk paska narzędzi dodaje wiązanie Oś na płaszczyźnie normalnej. Wiązanie spowoduje, że oś lub linia będzie normalna do płaszczyzny.

Kąt osi na płaszczyźnie

Wybierz cylindryczną powierzchnię lub liniową krawędź na jednej części i płaszczyznę na drugiej części. Przycisk paska narzędzi dodaje wiązanie axisPlaneAngleAngle. Początkowo wiązanie sprawi, że oś będzie równoległa do płaszczyzny. Następnie można dostosować kąt dla osi w pojawiającym się oknie dialogowym ustawień wiązania.

Równoległe płaszczyzny

Zaznacz płaszczyznę na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie RównoległePłaszczyzny. W oknie dialogowym wiązania można określić kierunek wiązania. Użycie tego wiązania spowoduje, że płaszczyzny będą równoległe.

Płaszczyzna na płaszczyźnie

Wybierz płaszczyznę na obu częściach. Przycisk na pasku narzędzi dodaje wiązanie Zbieżność płaszczyzn. Okno dialogowe wiązania pozwala określić kierunek wiązania i przesunięcie między płaszczyznami. Przesunięcie to może być również odwrócone. Jeśli przesunięcie wynosi zero, wiązanie spowoduje, że płaszczyzny będą się pokrywać.

Płaszczyzna kątowa

Wybierz płaszczyznę na obu częściach. Przycisk paska narzędzi dodaje wiązanie angledPlanes. Okno dialogowe wiązania pozwala określić kąt między płaszczyznami. Wiązanie sprawi, że płaszczyzny będą najpierw równoległe, a następnie ustawi określony kąt.

Zbieżność w środku masy

Wybierz zamkniętą krawędź lub płaszczyznę na obu częściach. Przycisk paska narzędzi dodaje ograniczenie centerOfMass. Okno dialogowe wiązania pozwala określić przesunięcie między krawędziami lub płaszczyznami. Przesunięcie to można również odwrócić. Ponadto można ustawić kierunek wiązania i zablokować obrót części. Jeśli przesunięcie wynosi zero, wiązanie umieści krawędzie lub płaszczyzny w tej samej płaszczyźnie.

Montaż podzespołów

Złożenie może zawierać inne złożenia. Dodaje się je jak części, naciskając przycisk paska narzędzi i wybierając plik *.FCStd zawierający zespół. Takie podzespoły mogą być również edytowane jak części za pomocą przycisku paska narzędzi . W przypadku wyższych etapów montażu należy upewnić się, że zespół został zaktualizowany rekursywnie za pomocą przycisku paska narzędzi po wprowadzeniu zmian.

Operowanie wiązaniami

Możliwe wiązania dla zaznaczenia są wyświetlane na pasku narzędzi i w oknie dialogowym Narzędzia wiązań poprzez włączenie odpowiednich przycisków. Okno dialogowe Narzędzia wiązań jest otwierane za pomocą przycisku na pasku narzędzi . Powinno ono pozostać otwarte, aby móc szybko dodać kilka wiązań do zespołu.

Istniejące wiązania mogą być edytowane poprzez zaznaczenie ich w drzewie modelu, a następnie dwukrotne kliknięcie na nie lub użycie przycisku na pasku narzędzi . Umożliwi to otwarcie okna dialogowego Właściwości wiązania.

Wiązania można tymczasowo wyciszyć, zaznaczając je w drzewie modelu i zmieniając właściwość elementu drzewa DANEStłumione.

Wiązania mogą zostać usunięte poprzez zaznaczenie ich w drzewie modelu i naciśnięcie przycisku Del lub poprzez zaznaczenie części z wiązaniami w drzewie modelu i użycie przycisku paska narzędzi .

Wszystkie wiązania mogą być rozwiązane w dowolnym momencie za pomocą przycisku paska narzędzi . Jeśli przycisk paska narzędzi jest włączony, rozwiązanie jest wykonywane automatycznie po każdej edycji wiązania.

Przycisk paska narzędzi wpływa na ostatnio dodane wiązanie. Odwraca on kierunek wiązania.

Za pomocą narzędzia można wyświetlać i sprawdzać istniejące wiązania. Po kliknięciu pojawi się okno dialogowe. Następnie należy wybrać część w drzewie i kliknąć przycisk Importuj z drzewa, aby uzyskać wszystkie wiązania tej części, lub wybrać jedno lub więcej wiązań w drzewie i kliknąć przycisk Importuj z drzewa. W rezultacie otrzymasz wszystkie informacje o ograniczeniach. Klikając w kolumnie "Pomiń" można wyłączyć pojedyncze wiązanie. Więcej informacji można znaleźć w podpowiedziach innych przycisków okna dialogowego.

Lista części

Aby stworzyć listę części dla złożenia, poszczególne części złożenia muszą otrzymać informacje, które mogą być odczytane przez A2plus. Robi się to poprzez edycję części za pomocą przycisku na pasku narzędzi . W otwartej części naciśnij przycisk paska narzędzi i zostanie utworzony arkusz kalkulacyjny nazwany #PARTINFO#.

Struktura arkusza kalkulacyjnego wygląda następująco:

Wypełnij szare pola informacjami, które chcesz mieć na docelowej liście części.

W złożeniu lub podzespole użyj przycisku paska narzędzi . Pojawi się pytanie, czy chcesz iterować rekurencyjnie po wszystkich podzespołach. Kliknij na Yes. Spowoduje to utworzenie nowego arkusza kalkulacyjnego o nazwie #PARTSLIST#. Zawiera on informacje z różnych arkuszy kalkulacyjnych #PARTSINFO# części na liście takiej jak ta:

Pozycja (POS) jest automatycznie ustawiana zgodnie z wyglądem części w drzewie modelu. Część najwyższego poziomu otrzyma POS 1.

Ilość (QTY) jest automatycznie obliczana na podstawie złożenia. Jeśli część występuje dwukrotnie w zespole, otrzyma QTY 2.

Jeśli zaktualizowałeś informacje o części, możesz odświeżyć listę części, naciskając ponownie przycisk paska narzędzi .

Dla złożeń podrzędnych można również utworzyć arkusz informacyjny za pomocą przycisku paska narzędzi . Podczas tworzenia lub aktualizowania listy części głównego złożenia informacje te będą używane, jeśli klikniesz Nie na pytanie, czy chcesz iterować rekurencyjnie po wszystkich podzespołach. Wówczas różne części nie znajdują się na liście części, a jedynie w złożeniach podrzędnych.

Funkcje specjalne

Struktura złożenia

Przycisk paska narzędzi tworzy plik HTML ze strukturą złożenia. Plik zostanie domyślnie utworzony w folderze pliku złożenia. Struktura wygląda następująco:

Stopnie swobody

Przycisk oznacza każdą część złożenia z jej stopniami swobody. Ponadto wyświetla listę wszystkich części i ich zależności. Lista jest wyprowadzana do widżetu FreeCAD Widok raportu. Jeśli widżet ten nie jest obecnie widoczny, można go wyświetlić, klikając prawym przyciskiem myszy pustą część obszaru paska narzędzi FreeCAD, a następnie wybierając go w wyskakującym menu podręcznym lub za pomocą menu Widok → Panele → Widok raportu.

Etykiety stopni swobody można usunąć, klikając ponownie przycisk .

Etykiety części

Przycisk oznacza każdą część złożenia w widoku 3D jej nazwą. Etykiety części można usunąć, klikając ponownie przycisk .

Kształt całego złożenia

Czasami konieczne jest połączenie całego złożenia w jeden kształt. Kształt ten może być następnie użyty do drukowania 3D w środowisku Siatka lub do rysowania w środowisku Rysunek Techniczny. Jest on tworzony za pomocą przycisku paska narzędzi . Kształt nie jest domyślnie widoczny. Użyj tego samego przycisku paska narzędzi, aby zaktualizować kształt w przypadku zmian w złożeniu.

Konwersja ścieżek bezwzględnych na względne

Za pomocą opcji menu A2plus → Misc → Konwertuj bezwzględne ścieżki importowanych części na względne można konwertować ścieżki importowanych części.

Ustawienia

Dostęp do konfiguracji środowiska pracy A2plus można uzyskać poprzez menu FreeCAD Edycja → Preferencje ... i tam w sekcji A2plus. Można ustawić następujące opcje:

Domyślna metoda rozwiązywania

Użycie rozwiązywania układów cząstkowych: Rozwiązywanie rozpoczyna się od części, która ma właściwość DANEPozycja ustalona ustawioną na Prawda i części do niej związanej. Wszystkie pozostałe części nie podlegają obliczeniom. Jeśli uda się znaleźć rozwiązanie, do obliczeń dodawana jest następna związana część i tak dalej. Użyj "magnetycznego" solwera, rozwiązującego wszystkie części naraz: Solwer próbuje przesunąć wszystkie części naraz w kierunku części, która ma właściwość DANEPozycja ustalona ustawioną na "true". Należy pamiętać, że w większości przypadków obliczenie rozwiązania zajmie więcej czasu. Wymuś stałą pozycję: Ustawia właściwość DANEPozycja ustalona na wartość Prawda dla wszystkich części w złożeniu. Wówczas nie są wykonywane żadne obliczenia, ponieważ wszystkie części będą zawsze ustawione w pozycjach, w których zostały utworzone.

Domyślne działanie solvera

Rozwiąż automatycznie, jeśli właściwość wiązania zostanie zmieniona
Rozwiązywanie zostanie uruchomione automatycznie. Tak samo, jak użycie przycisku paska narzędzi .


Działanie podczas aktualizacji zaimportowanych części

Oblicz ponownie zaimportowane części przed ich aktualizacją
Wszystkie części złożenia, w tym złożenia podrzędne, zostaną otwarte we FreeCAD w celu zrekonstruowania przy użyciu wartości z arkuszy kalkulacyjnych.
Ta funkcja jest przeznaczona do konstruowania w pełni parametrycznego.

Uwaga: Ta funkcja jest bardzo eksperymentalna i nie jest zalecana w przypadku ważnych projektów.
Znane problemy:

  • Złożenie może zostać zniszczone z powodu błędnych odniesień do nazw topologicznych w częściach.
  • Główne arkusze kalkulacyjne mogą ulec uszkodzeniu podczas edycji, gdy plik części, do którego następuje odniesienie, jest już zamknięty. Może to spowodować awarię programu FreeCAD.

Włącz rekurencyjną aktualizację importowanych części: Otwiera rekurencyjnie wszystkie zespoły podrzędne w celu ich aktualizacji.

Używanie eksperymentalnego nazewnictwa topologicznego
Podczas importowania części do złożenia algorytm generuje nazwy topologiczne dla każdego elementu podrzędnego importowanego kształtu. Nadawane nazwy topologiczne są zapisywane we własciwości DANEmux Info. Kiedy zaimportowana część wymaga aktualizacji, te nazwy topologiczne są używane do aktualizacji elementów podrzędnych wiązań. Dzięki temu zespoły stają się bardziej odporne na zmienne numery elementów podrzędnych FreeCAD.
Uwaga: Zwiększa to rozmiary plików i czas obliczeń podczas importowania części. Jeśli ma być używane nazewnictwo topologiczne, należy je aktywować przed utworzeniem złożenia.
Dziedziczenie przezroczystości na powierzchnię z części i podzespołów
Użyj ustawień kolorów i przezroczystości z importowanych części.
Uwaga: Ta funkcja jest bardzo eksperymentalna i nie jest zalecana dla ważnych projektów.
Nie importuj niewidocznych kształtów
Spowoduje to ukrycie niewidocznych kształtów odniesienia / konstrukcji. Uwaga: Żadne wiązania nie mogą być połączone z kształtami odniesienia / konstrukcji w wyższych lub innych złożeniach podrzędnych. W przeciwnym razie może dojść do uszkodzenia złożenia.
Używaj łączenia brył do importowania części i złożeń
Wszystkie importowane części zostaną bezpośrednio połączone w całość.
Ta funkcja jest przydatna w przypadku MES lub symulacji drukowania 3D, jeśli dozwolona jest tylko jedna bryła. Alternatywą jest utworzenie kształtu całego zespołu później.

Ustawienia interfejsu użytkownika

Pokaż wiązania na pasku narzędzi: Jeśli ta opcja nie jest używana, przyciski paska narzędzi dla różnych wiązań nie są widoczne, aby zaoszczędzić miejsce na pasku narzędzi. Nowe wiązania można nadal ustawiać za pomocą okna dialogowego Narzędzia wiązań (przycisk paska narzędzi ). Użyj natywnego menedżera plików systemu operacyjnego: Jeśli ta opcja jest używana, podczas wybierania plików dla złożeń wyświetlane jest okno dialogowe plików systemu operacyjnego.

Zapisywanie plików

Użyj ścieżek względnych dla importowanych części
Używa względnych ścieżek do plików części.
Użyj bezwzględnych ścieżek dla importowanych części
Używa bezwzględnych ścieżek do plików części.
Wszystkie pliki znajdują się w tym folderze projektu
Wszystkie pliki projektu umieszczone są w określonym folderze. Nie ma znaczenia, czy znajdują się w podfolderach podrzędnych. Uwaga: Żaden plik nie może być w folderze kilka razy (np. w różnych podfolderach).
Ta opcja jest przydatna do pracy na różnych komputerach, ponieważ wystarczy skopiować folder projektu.

Rozwiązywanie problemów

Prędzej czy później pojawi się problem, że środowisko A2plus nie może rozwiązać ustalonych wiązań. Aby temu zaradzić, istnieją różne strategie:

Korzystanie z narzędzia do wyszukiwania konfliktów

Jest to najbezpieczniejsza metoda, gdy masz kilka ograniczeń, ponieważ narzędzie to próbuje rozwiązać jedno wiązanie po drugim, dopóki nie znajdzie konfliktowego wiązania. Następnie można przejść do innych strategii, aby rozwiązać zidentyfikowane wiązanie. Narzędzie jest wywoływane za pomocą przycisku na pasku narzędzi .

Sprawdzanie kierunku wiązania

Czasami wiązania wydają się być spójnie zdefiniowane, ale mimo to nie można ich rozwiązać. Przykład: Załóżmy, że masz wiązanie Równoległe płaszczyzny ustawione dla dwóch płaszczyzn. Teraz chcesz ustawić dla tych samych płaszczyzn wiązanie Płaszczyzna na płaszczyźnie i A2plus nie może tego rozwiązać. Wtedy kierunki wiązań Równoległe płaszczyzny i Płaszczyzna na płaszczyźnie są różne. Użyj tego samego kierunku dla obu wiązań, aby to naprawić.

Środowisko pracy A2plus oferuje automatyczne sprawdzanie właściwego kierunku dla wszystkich wiązań złożenia za pomocą przycisku paska narzędzi .

Usuwanie wiązań

Większość przypadków nierozwiązywalnych wiązań występuje bezpośrednio podczas dodawania nowego wiązania. Rozwiązaniem jest usunięcie ostatnio dodanego wiązania. A2plus również to zaproponuje.

Czasami strategia usuwania jest jedyną, na przykład podczas edycji części w programie FreeCAD, tak że brakuje ścian lub krawędzi połączonych z wiązaniami. Powinieneś wtedy usunąć jedno wiązanie, które jest połączone ze zmienioną częścią na raz. Użyj przycisku paska narzędzi po każdym usunięciu, aby sprawdzić, czy osiągnąłeś stan rozwiązywalny.

Gdy masz złożenie, które można rozwiązać, dodaj krok po kroku potrzebne wiązania.

Przesuwanie Części

W niektórych przypadkach solver potrzebuje tylko lepszych wartości początkowych, aby rozwiązać powiązania. Weźmy na przykład przypadek, w którym masz część osi i część koła. Dodajesz wiązanie zbieżność Osi i nie otrzymujesz informacji, że solver zawiódł, ale części nie są odpowiednio przesuwane, a w widżecie "Widok raportu" FreeCAD widzisz "REACHED POS-ACCURACY :0.0". Rozwiązaniem jest przesunięcie części bliżej pozycji, którą chcesz uzyskać za pomocą wiązania.

Uwaga: Upewnij się, że przynajmniej jedna część wiązania ma właściwość DANEPozycja ustalona ustawioną na Fałsz.

Ustawienie właściwości Czubka

If you miss some features of your part after the import to an A2plus assembly, check the property DANETip.

A2plus imports bodies of parts with all their features up to the tip feature. This is sensible because setting the tip to a certain feature means that all features behind the tip should not appear in the final part. So if you miss a part feature in A2plus, open the part via the toolbar button , then select a body and look at its property DANETip. If the tip is not at the feature where you want it, right-click on the feature where the tip should be and choose Set tip. Finally save the part and reload the assembly using the toolbar button .

Repairing Assembly Tree

If you cannot see a clear reason why some constraints cannot be resolved, you can try to use the toolbar button . This will resolve all constraints and re-group then again under the different parts.

Migrating old A2plus assemblies

Assemblies created with A2plus older than March 2019 do not show the correct icons for imported parts and have obsolete properties. These assemblies can be migrated to A2plus version 0.4.35 and newer using the menu A2plus → Misc → Migrate proxies of imported parts. After doing this, you must save and reopen your assembly file.

Avoiding Accented Characters

This strategy is not necessary for Windows.

On some operating systems you can get problems if the file names or the file paths of parts or the assembly contain accented characters. Therefore avoid such characters and also special characters in general.

Fixing Position

This strategy is no longer necessary for assemblies created with A2plus 0.3.11 or newer because A2plus issues now a warning for missing fixed positions.

When you set a constraint between two parts and no part has the property DANEfixed Position set to true or is connected by a constraint to a part with DANEfixed Position set to true, the constraint cannot be solved. The same happens if both parts of the constraint have DANEfixed Position set to true.

Then A2plus outputs the info about the failed solution, but sometimes you only see that the parts are not moved accordingly and in the Report view widget of FreeCAD you see "REACHED POS-ACCURACY :0.0". This means the solver finished without errors but it could actually not solve the constraints.

Therefore check that at least one of your parts in the assembly has DANEfixed Position set to true. Then assure that you only set constraints to a part which is somehow connected to the fixed part. To visualise these dependencies, see section Assembly Structure.

Obracanie części

Ta strategia nie jest już konieczna w przypadku złożeń utworzonych za pomocą środowiska pracy A2plus 0.4.0 lub nowszego, ponieważ A2plus automatycznie obraca części w tle, aby uzyskać wystarczający kąt początkowy dla solwera.

Solver często kończy się niepowodzeniem dla wiązania kątowePłaszczyzny, jeśli dwie wybrane płaszczyzny mają obecnie kąt 0° lub 180°. (Części nie są odpowiednio przesuwane, a w widżecie "Widok raportu" programu FreeCAD wyświetlany jest komunikat "REACHED POS-ACCURACY :0.0"). Rozwiązaniem tego problemu jest obrócenie jednej części o kilka stopni za pomocą funkcji transformacji FreeCAD (kliknij prawym przyciskiem myszy część w drzewie modelu i wybierz z menu kontekstowego Przemieszczenie).

Uwaga: Upewnij się, że przynajmniej jedna część wiązania ma właściwość DANEPozycja ustalona ustawioną na Fałsz.

Animacja

A2plus oferuje animacje za pomocą przeciągania oraz skryptów Pythona.

Przeciąganie

Animacje przeciągania są interaktywne, ponieważ uruchamia się je poprzez przeciągnięcie części złożenia. Aby uzyskać tego rodzaju animacje:

  1. W pełni zwiąż część, której ruch lub obrót ma być animowany
  2. Kliknij przycisk na pasku narzędzi . Spowoduje to włączenie trybu przeciągania.
  3. Kliknij wybraną część w zespole.
  4. Teraz możesz poruszać myszą, a część będzie podążać za ruchem myszy w ramach zdefiniowanych ograniczeń.
  5. Aby zakończyć tryb przeciągania, kliknij lewym przyciskiem myszy w złożeniu lub naciśnij ESC.

Oto przykładowy zestaw do wypróbowania animacji przeciągania: A2p_example-for-dragging-animation.FCStd.

Powyżej: Animacja przeciągania przy użyciu przykładowego złożenia.

Tworzenie skryptów

Despite the dragging mode offers nice interactive animations, they are sometimes not precise enough for screencasts or videos. Scripted animations have the advantage that they animate movements and rotations in a defined way. You can for example rotate a part by exactly 10° back and forth. The following examples use an assembly where a part should be rotated. If you try to animate this using the dragging mode, you will see how hard it is to get a back and forth rotation that you can e.g. show your boss in a presentation. With the interactive example script, however, this is an easy task.

A scripted animation works usually this way:

  1. The assembly is fully constrained
  2. The script changes a parameter, for example the position or rotation angle of a part
  3. After the parameter change, the assembly constraints are solved
  4. Step 2. and 3. are repeated to get the animation

It is also possible to change instead of a placement parameter a constraint, for example the distance between 2 planes.

Simple Script Example

The simplest way to script an animation is a non-interactive animation that follows a defined movement. Here is an example: First download this assembly file: A2p_animated-example.FCStd and also this Python script: A2p_animation-example-script.py.

This is the content of the script and the lines beginning with a '#' describe what the different script lines do:

# import libraries
import time, math, PySide
import A2plus.a2p_solversystem as a2p_solver

# we use steps of 1 degree
step = 1
# wait 1 ms between every step
timeout = 0.001
# initial angle is 0 degree
angle = 0
# we take the currently opened document
document = FreeCAD.activeDocument()
# we want later change the rotation angle of the part "star_wheel_001"
starWheel = document.getObject("star_wheel_001")
# define a progress dialog running from 0 to 360
progressDialog = PySide.QtGui.QProgressDialog(u"Animation progress", u"Stop", 0, 360)

# the while block is the main loop to change the angle and solve
# the assembly constraints subsequently
while angle < 360: # run this loop until we have one full turn (360 degrees)
    # increase the rotation angle
    angle += step
    # set the new angle to the progress dialog
    progressDialog.setValue(angle)
    # change the rotation angle of the part "star_wheel_001"
    starWheel.Placement.Rotation.Angle = math.radians(angle)
    # solve the constraints 
    a2p_solver.solveConstraints(document, useTransaction=True)
    # update the view after the solving ('Gui' stands for 'graphical user interface')
    FreeCADGui.updateGui()
    # bring the progress dialog to front
    PySide.QtGui.QWidget.raise_(progressDialog)
    # if 'Stop' was pressed in the dialog, exit the loop
    if progressDialog.wasCanceled():
        angle = 360
    # wait some time before performing the next step
    time.sleep(timeout)

To use the script to perform the animation, we must

  1. Open the assembly file in FreeCAD.
  2. Open the script file in FreeCAD.
  3. Click on the toolbar button to execute the script (also called macro).
  4. Change to the tab of the assembly to see the rotation.

To practice, just change something in the script and execute it afterwards. For example increase step to 5.

This is the result of the example animation:

Interactive Script Example

The first script example demonstrated how to create an animation without any user feedback. For most applications you need to interact with the animation. For example the interesting issue in the example is to see how the driving pins cross the center groove of the wheel. To have a closer look you might present this detail to your colleagues or boss. Therefore you need an interactive solution.

This can be done by using a custom animation dialog with a slider. By moving the slider you can set the rotation angle and therefore rotate back and forth at interesting position.

We use the same assembly file: A2p_animated-example.FCStd and this Python script: A2p_animation-example-script.py.

This is the content of the script to get the interactive animation dialog:

# import libraries
import time, math, PySide, sys
import FreeCAD.A2plus.a2p_solversystem as a2p_solver
from FreeCAD import Units
from PySide import QtCore, QtGui

# wait 1 ms after every calculation
timeout = 0.001
# we take the currently opened document
document = FreeCAD.activeDocument()
# we want later change the rotation angle of the part "star_wheel_001"
starWheel = document.getObject("star_wheel_001")

class AnimationDlg(QtGui.QWidget): # the animation dialog

    def __init__(self): # to initialize the dialog
        super(AnimationDlg, self).__init__()
        self.initUI()

    def initUI(self): # the definition of the dialog components
        self.setMinimumSize(self.minimumSizeHint()) # set the minimal dialog size to minimum
        self.setWindowTitle('Animation Dialog')
        # use a grid layout for the whole form
        self.mainLayout = QtGui.QGridLayout()
        self.lineNo = 0 # first dialog grid line
        # add description label
        DescriptionLabel = QtGui.QLabel(self)
        DescriptionLabel.setText("Change slider to change rotation angle")
        self.mainLayout.addWidget(DescriptionLabel,self.lineNo,0,1,4)
         # next dialog grid line
        self.lineNo += 1
        # add a label; there is no need for the "self." prefix because we don't want to change the label later
        LabelMin = QtGui.QLabel(self)
        LabelMin.setText("Min")
        LabelMin.setFixedHeight(32)
        self.mainLayout.addWidget(LabelMin,self.lineNo,0)
        # add a spin edit to define the slider minimum
        self.MinEdit = QtGui.QSpinBox(self)
        # get the angle unit as string
        self.MinEdit.setSuffix(" " + str(FreeCAD.Units.Quantity(1, FreeCAD.Units.Angle))[2:])
        self.MinEdit.setMaximum(999)
        self.MinEdit.setMinimum(0)
        self.MinEdit.setSingleStep(10)
        self.MinEdit.setValue(0)
        self.MinEdit.setFixedHeight(32)
        self.MinEdit.setToolTip("Minimal angle for the slider")
        QtCore.QObject.connect(self.MinEdit, QtCore.SIGNAL("valueChanged(int)"), self.setMinEdit)
        self.mainLayout.addWidget(self.MinEdit,self.lineNo,1)
        # add the slider
        self.slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
        self.slider.setRange(0, 360)
        self.slider.setValue(0)
        self.slider.setFixedHeight(32)
        self.slider.setToolTip("Move the slider to change the rotation angle")
        QtCore.QObject.connect(self.slider, QtCore.SIGNAL("sliderMoved(int)"), self.handleSliderValue)
        self.mainLayout.addWidget(self.slider,self.lineNo,2)
        # add a label
        LabelMax = QtGui.QLabel(self)
        LabelMax.setText("Max")
        LabelMax.setFixedHeight(32)
        self.mainLayout.addWidget(LabelMax,self.lineNo,3)
        # add a spin edit to define the slider maximum
        self.MaxEdit = QtGui.QSpinBox(self)
        # get the angle unit as string
        self.MaxEdit.setSuffix(" " + str(FreeCAD.Units.Quantity(1, FreeCAD.Units.Angle))[2:])
        self.MaxEdit.setMaximum(999)
        self.MaxEdit.setMinimum(1)
        self.MaxEdit.setSingleStep(10)
        self.MaxEdit.setValue(360)
        self.MaxEdit.setFixedHeight(32)
        self.MaxEdit.setToolTip("Maximal angle for the slider")
        QtCore.QObject.connect(self.MaxEdit, QtCore.SIGNAL("valueChanged(int)"), self.setMaxEdit)
        self.mainLayout.addWidget(self.MaxEdit,self.lineNo,4)
         # next dialog grid line
        self.lineNo += 1
        # add a spacer
        self.mainLayout.addItem(QtGui.QSpacerItem(10,10), 0, 0)
        # add a label
        LabelCurrent = QtGui.QLabel(self)
        LabelCurrent.setText("Current angle:")
        LabelCurrent.setFixedHeight(32)
        self.mainLayout.addWidget(LabelCurrent,self.lineNo,1)
        # output the current angle
        self.CurrentAngle = QtGui.QLineEdit(self)
        self.CurrentAngle.setText(str(0))
        self.CurrentAngle.setFixedHeight(32)
        self.CurrentAngle.setToolTip("Current rotation angle")
        self.CurrentAngle.isReadOnly()
        self.mainLayout.addWidget(self.CurrentAngle,self.lineNo,2)
        # add label for the unit
        LabelUnit = QtGui.QLabel(self)
        LabelUnit.setText("deg")
        LabelUnit.setFixedHeight(32)
        self.mainLayout.addWidget(LabelUnit,self.lineNo,3)
        # button to close the dialog
        self.Close = QtGui.QPushButton(self)
        self.Close.setText("Close")
        self.Close.setFixedHeight(32)
        self.Close.setToolTip("Closes the dialog")
        QtCore.QObject.connect(self.Close, QtCore.SIGNAL("clicked()"), self.CloseClicked)
        self.mainLayout.addWidget(self.Close,self.lineNo,4)
        # place the defined grid layout to the dialog
        self.setLayout(self.mainLayout)
        self.update()

    def handleSliderValue(self):
        # set slider value as angle
        starWheel.Placement.Rotation.Angle = math.radians(self.slider.value())
        # output current angle
        self.CurrentAngle.setText(str(self.slider.value()))
        # solve the constraints 
        a2p_solver.solveConstraints(document)
        # update the view after the solving ('Gui' stands for 'graphical user interface')
        FreeCADGui.updateGui()
        # wait some time, important to give time to perform calculations
        time.sleep(timeout)

    def setMinEdit(self):
        # assure that the minimum is samller than the maximum
        if self.MinEdit.value() >=  self.MaxEdit.value():
            self.MaxEdit.setValue(self.MinEdit.value() + 1)
        self.slider.setRange(self.MinEdit.value(), self.MaxEdit.value())

    def setMaxEdit(self):
        # assure that the minimum is samller than the maximum
        if self.MinEdit.value() >=  self.MaxEdit.value():
            self.MinEdit.setValue(self.MaxEdit.value() - 1)
        self.slider.setRange(self.MinEdit.value(), self.MaxEdit.value())

    def CloseClicked(self):
        AnimationDialog.close()

# create and show the defined dialog
AnimationDialog = AnimationDlg()
AnimationDialog.show()

# run this loop when the dialog is visible
while AnimationDialog.isVisible():
    # update the view; important to give the OS feedback the dialog is alive
    FreeCADGui.updateGui()
    # bring the dialog to front, so that the dialog is always visible
    QtGui.QWidget.raise_(AnimationDialog)
    # output slider value here too because during the calculation the slider might have been moved
    AnimationDialog.CurrentAngle.setText(str(AnimationDialog.slider.value()))

Okno dialogowe zdefiniowane w skrypcie wygląda następująco:

Polecenia skryptu

Aby lepiej zrozumieć składnię skryptu, oto kilka informacji o poleceniach:

starWheel.Placement.Rotation.Angle = math.radians(angle)

Tutaj zmieniamy właściwość umieszczania Rotation.Angle części otrzymanej wcześniej jako starWheel. Ta właściwość pobiera kąt jako radian. Funkcja radians() z biblioteki math konwertuje kąt ze stopni na radiany.

Właściwość Rotation.Angle wykorzystuje bieżącą oś umieszczenia części (w naszym przykładzie oś X). Aby obrócić część np. wokół osi Z, można ustawić oś obrotu (przed wywołaniem polecenia obrotu) za pomocą polecenia:

starWheel.Placement.Rotation.Axis = FreeCAD.Vector(0,0,1)

Zamiast obracać, części można również przesuwać. Aby zmienić na przykład położenie koła w kierunku Y, polecenie brzmiałoby:

starWheel.Placement.Base.y = PositionShift

W tym przypadku nie definiowalibyśmy zmiennej angle, ale PositionShift, którą zmieniamy przy każdym przebiegu pętli.

Istnieją różne sposoby ustawiania położenia części. Niektóre z nich są udokumentowane na stronie Umiejscowienie. Niestety nie ma (jeszcze) listy wszystkich możliwych poleceń umiejscowienia.

a2p_solver.solveConstraints(document, useTransaction=False/True)

Jest to polecenie specyficzne dla środowiska pracy A2plus. Rozwiązuje ono wiązania złożenia, które wcześniej otrzymaliśmy jako document. Opcja useTransaction określa, czy FreeCAD powinien przechowywać każdą zmianę w stosie cofania / ponawiania. W przypadku dużych animacji można więc ustawić ją na false.