Czym jest odniesienie cykliczne?
Odniesienie cykliczne to zapętlona zależność, która występuje, gdy dwa lub więcej komponentów ma wspólne odniesienie zewnętrzne, zarówno w częściach jak i złożeniach. Taka sytuacja ma miejsce w przypadku, kiedy przebudowa komponentu A wymaga przebudowy komponentu B, a ten z kolei wymaga przebudowy komponentu A, co prowadzi do niekończącej się pętli. Drugim takim przypadkiem może być odniesienie cykliczne w równaniach, gdy jedno równanie jest całkowicie lub częściowo zdefiniowane przez inne równanie (lub wartość), ale to drugie równanie (lub wartość) jest powiązane z pierwszym.
1 Faza
Lokalizowanie oraz ładowanie komponentów złożenia w pamięci RAM (proces jednowątkowy) – czy pojawiły się jakiekolwiek zmiany od momentu ostatniego zapisu?
Jeśli nie, wtedy SOLIDWORKS od razu przechodzi do generowania grafiki czyli teselacji trójkątów graficznych w fazie piątej.
Jeśli tak, wtedy SOLIDWORKS przechodzi do fazy drugiej, jaką jest aktualizacja nieaktualnych komponentów.
2 Faza
Aktualizowanie nieaktualnych komponentów (proces jednowątkowy).
W tej fazie SOLIDWORKS będzie szukać komponentów, które są nieaktualne, a następnie przystąpi do aktualizacji ich wszystkich wystąpień, zaczynając od części w zagnieżdżonych podzłożeniach (jeśli występują) kończąc na złożeniu najwyższego poziomu.
3 Faza
Położenie komponentów w przestrzeni (proces wielowątkowy).
SOLIDWORKS przystąpi do realizacji zdefiniowanych wiązań, natomiast jeśli nie występują użyje ostatniej znanej pozycji.
Jeśli jest to pierwszy raz, kiedy dane wiązanie musi być zrealizowane w danej sesji, program przejdzie następnie do fazy czwartej, gdzie zajmie się aktualizacją operacji i weryfikacją danych.
4 faza
Aktualizacja operacji w kontekście (lub kontekstach) oraz operacji złożeniowych (proces jednowątkowy).
SOLIDWORKS w tej fazie przystępuje do przeliczeń operacji wykonanych w kontekście lub operacji złożeniowych takich jak wszelkiego rodzaju szyki, wycięcia, lustra komponentów, ale również będzie sprawdzał czy zachodzi w dalszym ciągu poprawność wszystkich relacji np. krawędź do krawędzi wykonanych w złożeniu.
Następnie przeprowadzi kolejną kontrolę – czy coś zmieniło swoją pozycję?
Jeśli nie – SOLIDWORKS przejdzie do fazy piątej
Jeśli tak – SOLIDWORKS powróci pętlą do fazy trzeciej, aby ponownie rozwiązać wiązania..
Uwaga:
Jeśli SW powróci do fazy trzeciej, przejdzie później od razu do fazy piątej, ponieważ pierwsze rozwiązywanie wiązania zostało już wcześniej ukończone. W tym momencie złożenie może być niestabilne lub może zawierać odniesienia cykliczne. Zanim przejdzie dalej to spróbuje wykonać dwa razy tą samą pętlę w celu znalezienia prawidłowego rozwiązania. W tym momencie wszystko, co korzysta z tego dokumentu, będzie wymagało aktualizacji.
5 faza
Generowanie grafiki
Przykład #1
Stwórzmy proste pudełko z pokrywką. Pudełko powstało za pomocą naszkicowania prostokąta na płaszczyźnie górnej, wyciągnięto na odległość 60 mm i dodano skorupę. Z tej części utworzono złożenie. W kontekście złożenia utworzono nową część o nazwie Pokrywka. W edycji tej części utworzono płaszczyznę odniesienia odsuniętą o 100 mm od ściany reprezentującej grubość ścianki Pudełka. Tutaj mamy pierwsze odniesienie i symbol „->” przy operacji Płaszczyzna. Na tej płaszczyźnie utworzono nowy szkic, a w nim naszkicowano prostokąt, który jest większy o 10 mm wzdłuż i wszerz, od zewnętrznych krawędzi Pudełka (bez odniesień). Ten szkic wykorzystano do wyciągnięcia ze statusem końca „Odsunięte od powierzchni” o 80 mm od powierzchni ściany reprezentującej grubość ścianki Pudełka. W taki sposób utworzono drugie odniesienie, lecz to jeszcze nie jest odnesienie cykliczne.
Aby utworzyć odniesienie cykliczne należy edytować operację wyciągnięcia Pudełka. Zmieniono status końca na „Odsunięte od powierzchni” o 80 mm (tyle ile wpisano w operacji wyciągnięcia Pokrywki) oraz wskazano dolną ścianę Pokrywki. Voilà – w taki sposób uzyskaliśmy odniesienie cykliczne, którego przebudowa nic nie zmienia.
Jeśli natomiast w ostatnim kroku zmienimy odległość odsunięcia od powierzchni na: | |
> 80mm | < 80mm |
Model będzie się przebudowywał zmniejszając wysokość Pudełka do momentu utracenia obiektu bryłowego | Model będzie się stale przebudowywał zwiększając wysokość Pudełka |
Jak znaleźć odniesienie cykliczne?
Przede wszystkim program informuje nas o odniesieniu cyklicznym symbolem przebudowy (sygnalizator świetlny) w drzewie operacji FeatureManager przy części, która jest z nim związana. Jeśli przebudujesz model i nadal widzisz ten symbol, najprawdopodobniej masz do czynienia z odniesieniem cyklicznym w tej części.
Pierwsze zalecane kroki w celu znalezienia przyczyn odniesień cyklicznych:
- Uruchom Ocenę wydajności (wcześniej nazywaną AssemblyXpert) przy pierwszym otwarciu złożenia, aby zidentyfikować potencjalne odniesienia cykliczne.
- Przebuduj dokument lub naciśnij klawisze Ctrl+Q, aby wymusić przebudowę.
- Poszukaj symbolu przebudowy w Drzewie operacji FeatureManager, który nie zniknął po przebudowie.
- Przyjrzyj się tym operacjom, szkicom lub komponentom. Jeśli włączysz wizualizację dynamicznego odniesienia rodzica i potomka to przesuwając kursor nad elementami drzewa, możesz szczególnie zwrócić uwagę na takie, które mają jednocześnie strzałki w górę jak i w dół – co oznacza, że inne elementy mają do niego odniesienie rodzica, a on sam jest odniesieniem potomka innego elementu powyżej. Takie odniesienie łańcuchowe nie jest wskazane, ponieważ w ten sposób można łatwo doprowadzić do odniesienia cyklicznego, ale nawet jeśli ono nie występuje to wówczas oprogramowanie poświęca o wiele więcej czasu na każdą przebudowę. Oprócz tego warto również zwrócić uwagę na elementy drzewa, które mają odniesienie zewnętrzne w postaci myślnika i znaku większości (symbol strzałki „->”). Innym sposobem weryfikacji odniesień zewnętrznych jest wybór PPM na element (operacja, szkic lub komponent) i wejście do Odniesień zewnętrznych, gdzie możemy sprawdzić do jakich innych elementów plik się odnosi. W tym miejscu możemy również zablokować tymczasowo lub przerwać na stałe (bez możliwości powrotu) odniesienia zewnętrzne.
- Relacje, które mogą tworzyć odniesienie cykliczne warto po kolei sekwencyjnie blokować tymczasowo i sprawdzać działanie lub od razu zastępować ew. usunąć. Operacje, szkice i/lub komponenty złożenia wygaszaj i sukcesywnie przebudowuj, aby sprawdzić, czy symbol zniknie.
- Zamknij model i NIE ZAPISUJ zmian.
- Otwórz model ponownie i usuń lub napraw znalezione problemy powodujące odniesienie cykliczne.
Ponieważ określenie źródła odniesienia cyklicznego może być trudne i czasochłonne, najlepiej unikać ich powstawania. Jednym z najlepszych sposobów unikania odniesień cyklicznych podczas projektowania jest używanie układów, szkiców odniesienia i bloków. Zmiany wprowadzane są bezpośrednio w tych szkicach i blokach, a następnie zgodnie z relacjami czy równaniami zmiany te propagowane są na wszystkie elementy odniesienia, co pozwala kontrolować wszystkie odniesienia zewnętrzne.
Podczas korzystania ze szkiców odniesienia, relacje są tworzone w taki sposób, że szkic steruje wszystkim innym. Należy unikać sytuacji, w której inne operacje w złożeniu sterują tym szkicem, aby zapobiec powstawaniu konfliktów. Tego typu konflikty mogą powodować zmiany szkiców przy każdej przebudowie, co znacząco wpływa na czas przebudowy. Używając relacji w kontekście innych elementów, należy zachować ostrożność podczas ustalania relacji do czegoś, co już jest sterowane. Domyślnie tylko jedna relacja w kontekście jest dopuszczalna, jednak po zaznaczeniu opcji w Ustawienia -> Opcje systemu -> Odniesienia zewnętrzne -> „Zezwalaj na wiele kontekstów dla części podczas edycji w złożeniu” można dodać ich więcej, co oczywiście może okazać się bardzo dużym obciążeniem dla środowiska projektowego (pamiętajmy, że to opcja systemowa, zatem jeśli użytkownik ma to włączone to takie konteksty pozostają w pliku), ale również może okazać się źródłem kolejnych problemów.
Dobre praktyki
- Unikaj „łańcuchów powiązań”, gdzie A steruje B, B steruje C i tak dalej. Lepszą praktyką jest, aby A bezpośrednio sterowało zarówno B, jak i C.
- Jeśli musisz dodać zewnętrzne odniesienia do komponentów w złożeniu, przypisz je do kluczowych komponentów. Te kluczowe komponenty nie powinny zawierać operacji czy szkiców z zewnętrznymi odniesieniami, aby uniknąć cyklicznych odniesień.
- Unikaj dodawania relacji od komponentu na najwyższym poziomie do komponentu w podzłożeniu.
- Unikaj dodawania zewnętrznego odniesienia do operacji lub szkicu, która już zawiera zewnętrzne odniesienie.
- Unikaj dodawania zewnętrznych odniesień do operacji złożenia zależnych od czasu, czyli takich, których moment wstawienia do złożenia ma wpływ na końcową geometrię zlożenia (Kreator otworu, Serie otworów, Szyki komponentów, wszelkiego rodzaju wycięcia w złożeniu (wyciągnięcia, przez obrót, po ścieżce).
Rozwiązanie tych problemów zazwyczaj wymaga dokładnej znajomości struktury modelu, aby wiedzieć dokładnie, gdzie zachodzi interakcja. Namierzenie cyklicznego odniesienia w bardzo dużej strukturze może okazać się bardzo problematyczne.
Odniesienia cykliczne w równaniach
Odniesienia cykliczne w SOLIDWORKS PDM
SOLIDWORKS PDM może zapobiegać powstawaniu takich sytuacji. Podczas próby zaewidencjonowania takiego dokumentu system wyświetli komunikat o tym, że występuje w nim odniesienie cykliczne, co zablokuje nam możliwość zaewidencjonowania. W takim przypadku niezbędne będzie odnalezienie oraz pozbycie się cyklicznej zależności.
Przykład #2
Poniższy przykład przedstawia inny rodzaj zależności cyklicznej, który w pewnych warunkach może istnieć w środowisku SOLIDWORKS i nie wykazywać żadnego błędu lub ostrzeżenia, ale nie może zostać zaewidencjowany w PDM.
- Utworzono dwie miski w rozmiarze L oraz XL jako dwie niezależne części. Utworzono z nich złożenie o nazwie Zestaw_misek.
- 2. Teraz chcemy utworzyć pokrywkę dopasowaną do tego zestawu. W tym celu tworzymy nowe złożenie, wstawiamy złożenie Zestaw_misek i wstawiany nową część w kontekście złożenia. Do jej utworzenia wykorzystano odniesienia zewnętrzne w postaci zewnętrznej krawędzi dużej miski oraz wykonano gniazdo w celu dopasowania krawędzi pokrywki. Złożenie Zestaw_misek wygaszono i plik zapisano wewnętrznie w złożeniu.
- 3. Wracamy do złożenia Zestaw_misek. Wstawiamy złożenie Pokrywa. Jak widzimy nie otrzymujemy żadnego komunikatu, program nie sygnalizuje nas o zależności cyklicznej, ponieważ Zestaw_misek zawarty w podzłożeniu Pokrywa jest wygaszony. Tym samym sama pokrywa jako część jest poza kontekstem. Takiego pliku jednak nie zaewidencjonujemy w PDM.
- 4. Wrócmy teraz do złożenia Pokrywa i przywróćmy Zestaw_misek. Zapisujemy i zamykamy. Przy próbie wstawienia takiego złożenia do złożenia Zestaw_misek otrzymamy poniższy komunikat: