Есть ли в API средство отложить пересчёт? Sketcher тормозит.

Russian forum
Forum rules
Правила форума и полезная информация

ПОЖАЛУЙСТА! Начиная обсуждение, обязательно....
Post Reply
ChapaikinVA
Posts: 32
Joined: Fri Apr 10, 2015 1:56 am

Есть ли в API средство отложить пересчёт? Sketcher тормозит.

Post by ChapaikinVA »

Есть ли где-н. в API (python) механизм, называемого в др. системах вроде: BeginUpdate - EndUpdate?

Оч. медленно работает Решатель и/или Sketcher вообще, если фигур и ограничений много. Явно App.ActiveDocument.recompute() вызываю только один раз в конце и всё равно медленно.

Т. е., можно что-то сделать, чтобы при выполнении скрипта, модифицирующего Эскиз (Sketch) можно было бы сначала приостановить какие-л. проверки и пр. (если они вообще происходят при этом) и просто создать и соответственно настроить объекты-фигуры и объекты-ограничения. А потом в самом конце явно разрешить / запустить пересчёт.
Дедушка Мороз, (если ты есть) пусть в новом году FreeCAD не будет таким глюкодромом. Хотя бы для Part / PartDesign! Ну хотя бы чтобы булеаны не глючили! Кроме как на тебя надеяться, видимо, больше не на кого ... :cry:
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by DeepSOIC »

Кажется, такой возможности не предусмотрено. Надо порыть код.
ChapaikinVA
Posts: 32
Joined: Fri Apr 10, 2015 1:56 am

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by ChapaikinVA »

Странно, если этого не предусмотрели, т. к. это явно заметно (оч. медленно работает Sketcher) Большой эскиз править вручную в GUI почти не приемлемо по времени (по кр. мере на моей системе). Какие м. быть ещё способы ускорить?
Дедушка Мороз, (если ты есть) пусть в новом году FreeCAD не будет таким глюкодромом. Хотя бы для Part / PartDesign! Ну хотя бы чтобы булеаны не глючили! Кроме как на тебя надеяться, видимо, больше не на кого ... :cry:
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by DeepSOIC »

Ну, по-моему, Sketcher существенно пошустрел в FreeCAD 0.15
Также, если FreeCAD скомпилирован в режиме debug, sketcher становится ужасно медленным.
А могу я взглянуть на конкретный пример эскиза, который жутко тормозит? на это могут быть и другие причины, например неудачная комбинация ограничений.
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by DeepSOIC »

Так, если интересно, код тут:
https://github.com/FreeCAD/FreeCAD_sf_m ... Object.cpp
Там множество всяческих проверок.. Но вот я не знаю, почему при добавлении ограничения через питон происходит автоматический пересчёт. Там вроде явно он не вызывается. Тут надо заводить дебаггер. Пока у меня нет на это времени, к сожалению.
ChapaikinVA
Posts: 32
Joined: Fri Apr 10, 2015 1:56 am

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by ChapaikinVA »

DeepSOIC wrote:Но вот я не знаю, почему при добавлении ограничения через питон происходит автоматический пересчёт. Там вроде явно он не вызывается.
Я не утверждал, что так происходит (пересчёт). Это - моё предположение. Но низкая скорость - это очевидно. Sketcher сообщает, напр., « Эскиз содержит … степеней свободы. Решено за 0.1… секунд», а на самом деле там не секунды, а минуты проходят. Чем он в это время занимается тогда?
Дедушка Мороз, (если ты есть) пусть в новом году FreeCAD не будет таким глюкодромом. Хотя бы для Part / PartDesign! Ну хотя бы чтобы булеаны не глючили! Кроме как на тебя надеяться, видимо, больше не на кого ... :cry:
ChapaikinVA
Posts: 32
Joined: Fri Apr 10, 2015 1:56 am

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by ChapaikinVA »

DeepSOIC wrote:Также, если FreeCAD скомпилирован в режиме debug, sketcher становится ужасно медленным.
Как это определить?
Дедушка Мороз, (если ты есть) пусть в новом году FreeCAD не будет таким глюкодромом. Хотя бы для Part / PartDesign! Ну хотя бы чтобы булеаны не глючили! Кроме как на тебя надеяться, видимо, больше не на кого ... :cry:
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by DeepSOIC »

ChapaikinVA wrote:Sketcher сообщает, напр., « Эскиз содержит … степеней свободы. Решено за 0.1… секунд», а на самом деле там не секунды, а минуты проходят. Чем он в это время занимается тогда?
Тут имеется программистский ляп. Дело в том, что решатель вызывается несколько раз подряд из разных частей программы (обычно 3, по-разному в зависимости от того, что происходит). И первый-то раз он может думать минуту и решить, а второй и третий он просто видит, что всё и так решено. А на то, чтобы это увидеть, как раз и уходят эти самые 0.1 сек. Вот и получается бред ;)

Кстати! Посмотрите в окно отчёта (report view). Включите все сообщения (через контекстное меню). И посмотрите, не возникают ли там сообщения типа "один метод решения провалился, но другим методом удалось-таки решить". Если так, что это неправильная комбинация ограничений (а медленно потому, что первый метод там думает эти три минуты, пока не сдастся).
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: Есть ли в API средство отложить пересчёт? Sketcher тормо

Post by DeepSOIC »

ChapaikinVA wrote:
DeepSOIC wrote:Также, если FreeCAD скомпилирован в режиме debug, sketcher становится ужасно медленным.
Как это определить?
Не знаю :oops: . Не линуксоид я :oops: . В Windows, если собирать release, получается FreeCAD.exe, а в debug - FreeCAD_d.exe
ChapaikinVA
Posts: 32
Joined: Fri Apr 10, 2015 1:56 am

Re: Есть ли в API средство отложить пересчёт? Sketcher тормозит.

Post by ChapaikinVA »

В версиях 0.16.* вижу -- сделали в Скетчере кнопочку "Обновить" + флажок "Автообновление". И очень правильно сделали :D , классная штука получилась, часто пользуюсь (даже хоть сейчас у меня другая ОС и версия FreeCAD, где таких сильных тормозов уже, вроде, замечено не было)!
Дедушка Мороз, (если ты есть) пусть в новом году FreeCAD не будет таким глюкодромом. Хотя бы для Part / PartDesign! Ну хотя бы чтобы булеаны не глючили! Кроме как на тебя надеяться, видимо, больше не на кого ... :cry:
Post Reply