realthunder / FreeCAD

Link branch FreeCAD
Other
773 stars 45 forks source link

strange behavior of the solver #139

Open tiket18 opened 3 years ago

tiket18 commented 3 years ago

It often happens so - we want to set a restriction (size, position, symmetry) - we try and the solver swears. Here's an example - a rectangle, in it drew horizontal and vertical lines (axes), I try to set the symmetry of points relative to the horizon = scolding - Снимок экрана от 2021-05-04 14-07-21

I take similar points relative to the same axis (to the left) = all is well. Снимок экрана от 2021-05-04 14-07-49 error_copy.FCStd.zip

luzpaz commented 2 years ago

Please always attach your full About info. Is this behavior you can reproduce on upstream as well?

tiket18 commented 2 years ago

Yes. The problem persists. In upsrim, too. In a constraint-rich sketch, quite often when you set the symmetry constraint and turn on the "automatically remove redundancies" option, FC turns on the "symmetry" requirement and does not remove the "vertical" or "horizontal" that becomes redundant. That's not all :) It also likes to cause a crash (undecidable, etc.) in a saturated sketch when trying to set a "point match" - when trying to close multiple arcs in a point. The workaround is to "put the point on the line".

dickshaydle commented 2 years ago

If opened your file and the "Auto remove redundant" doesn't seem to work. It still says "partially redundant" even after pressing "update".

But i guess you could manually remove those redundant constraints and be fine.


OS: Linux Mint 20.1 (XFCE/xfce)
Word size of FreeCAD: 64-bit
Version: 2022.111.30764 (Git) AppImage
Build type: Release
Branch: LinkDaily
Hash: ef3092bcbca5475eff4eb7ff7933eb3e9bbbe4b9
Python version: 3.9.9
Qt version: 5.12.9
Coin version: 4.0.1
OCC version: 7.5.3
Locale: English/United States (en_US)
tiket18 commented 2 years ago

If the solution you suggested had "worked", this ticket would not have been born. The problem is the partial operation of the constraint conflict solver. A typical disease is the symmetry restriction of the chosen axis, when the points from which symmetry is required are on a line with respect to which the verticality or horizontality condition was previously set. In this case the program specifies symmetry, but does not remove horizontality or verticality, wastes a lot of time searching for solutions and gives an abort. In saturated sketches "a lot of time" = a very long time. Similar problem in trying to set matching points, I wrote above on the thread.

dickshaydle commented 2 years ago

@tiket18 It is still unclear what your problem is. I tried your file and in my opinion it works fine and as expected. Your file is at the state before your first picture. You added an unnecessary constrained of the vertical line in the middle of the box. That line was already constrained before. Try to move the end points of that line and you'll see that.

The only problem i see is that the auto remove is not working as i would expect it.