Page 1 of 1

Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Thu Aug 04, 2022 12:54 pm
by Antango
Witam,

Posiadam wersję 0.20 (29177 Git) Win 10 64 bit, pracuję w tym programie nad projektem tarczy z wieloma wycięciami.
To dopiero 5 projekt w tej ersji, w poprzedniej też tylko kilka projektów na bazie filmów wykonałem, staram sie stosować do zaleceń w filmach, jednak czy nie za dużo chcę zrobic na jednym szkicu?
Podczas szkicowania jednego z ostatnich elementów (w szkicu jest ponad 200 elementów, ponad 500 wiązań) nie mogę sobie poradzić z błędem:
Stosuję wiązania symetrii i linie promieniowe konstrukcyjne do określania położenia łuków wycięć na okręgach.

<Exception> Geometry2d.cpp(950): Points are collinear

Co prawda program pozwala iść dalej ale bardzo długo czekam na zakończenie operacji. Jak unikać takiego błędu i co go powoduje?

Pozdrawiam serdecznie.

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Thu Aug 04, 2022 6:58 pm
by NewJoker
Pojawia się to na czerwono w oknie raportowania na dole czy wyskakuje jakieś dodatkowe okienko, które trzeba zatwierdzić ? W pierwszym przypadku to raczej nic groźnego - coś źle się kliknie i FreeCAD nie zastosuje wiązania, ale szkic jest ok. Niemniej jednak zdecydowanie należy unikać pracy na tak dużych szkicach. Z tego najpewniej wynika wspomniany długi czas oczekiwania. Lepiej podzielić to na kilka operacji robionych na kolejnych mniejszych szkicach. Dzięki temu można płynnie pracować i jest mniejsze ryzyko, że coś się wysypie. Lepiej też na wszelki wypadek często zapisywać.

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Thu Aug 04, 2022 9:40 pm
by Shalmeneser
Picture ? File ?

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Fri Aug 05, 2022 7:00 pm
by kwahoo
Antango wrote: Thu Aug 04, 2022 12:54 pm (w szkicu jest ponad 200 elementów, ponad 500 wiązań) nie mogę sobie poradzić z błędem:
Przy tej liczbie wiązań to aż dziwne, że szkicownik wciąż działa.

Naprawdę powinieneś starać się nie budować tak ogromnych szkiców, korzystać z kilku mniejszych lub innych narzędzi (szyk, lustro).

Złożonośc układu równań, które musi rozwiązań solwer rośnie w sześcianie do liczby wiązań, a zapotrzebowanie na pamięć w kwadracie[1]. Czyli szkic z 500 wiązaniami potrzebuje 1000x tyle czasu i 100x pamięci co szkic z 50 wiązaniami.
Gigantyczny szkic może być wręcz nierozwiązywalny, ze względu na niedokładność numeryczną i kumulację błędów.

[1]To dane dla PTC Creo, nie znam dla FreeCAD-a, ale powinny być podobne.

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Sat Aug 06, 2022 2:48 pm
by Antango
Dziękuję za podpowiedź. Udało mi się znaleźć błąd w szkicu, to on powodował ten wyjątek. błąd dotyczył jednego niezamkniętego obrysu. Faktycznie nie powinno się rysować tak skomplikowanych szkiców i lepiej jest wykonać kilka szkiców - nie wiedziałem o tym, że są ograniczenia na liczbę wiązań. Tak duża liczba elementów szkicu faktycznie liczy się dłużej.
Jednak wyjątek w pliku Geometry2d.cpp(950): Points are collinear - nie odpowiadał błędowi. Opis błędu nie pasuje do faktycznego problemu z niedomkniętym obrysem (otwarta linia). Być może przy mniejszej liczbie el. ten błąd by nie wystąpił.
Niby problem naprawiłem, ale teraz dodałem kolejny szkic i pojawił się nowy problem w poprzednim szkicu znowu.
Załączam plik, problem w Sketch004.

Pozdrawiam wszystkich,

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Sat Aug 06, 2022 4:05 pm
by NewJoker
Jak klikniesz na liczbie przy komunikacie o nadmiarowych wiązaniach w szkicowniku i wciśniesz Delete to program je usunie. Może być konieczne "dowiązanie" szkicu, ale chociaż nie będzie problemu z overconstraint. Jest też przydatne narzędzie do oceny i naprawy szkiców: Sketcher ValidateSketch.

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Sat Aug 06, 2022 6:02 pm
by Shalmeneser
It's impossible a maintain a so complex sketch.
Here is a solution (just check dimensions inside the sketches).

Re: Wyjątek Geometry2d.cpp(950): Points are collinear

Posted: Sat Aug 06, 2022 6:58 pm
by Antango
Dziękuję.