realthunder wrote: ↑Sat Feb 22, 2020 11:51 pm
catman wrote: ↑Fri Feb 21, 2020 12:42 pm
Is there a workaround to utilize "ElementCount" for FastenerWB items or does it make sense to port such a function to Assembly3 as well?
Meanwhile, you can change an existing part inside an assembly to a link using the tree view context menu 'Link actions -> Replace with link'.
Well, that is not a workaround, that is the solution
. No need for further changes, because it does a) group all screws of the same type in one folder and b) allows to use the ElementCount to create more cheap instances with individual placement. The only drawback is that one grey copy of each type of screw imported remains outside the Assembly container, but this is a very minor snag.
realthunder wrote: ↑Sat Feb 22, 2020 11:51 pm
catman wrote: ↑Sat Feb 22, 2020 9:28 pm
I was not yet able to understand which bits from the several pages of information in the report view I need to find the faulty parts.
Yes, it needs some improvement. Just like compiler error output, the solver output is not intuitive in many cases. It is not easy to improve, though.
I see that this will not be an easy part. I guess the constraints part will remain a construction site for a bit longer because it can be quite complex. No idea if that makes sense with the constraint algorithm, but is a "single Step mode" mode like in a debugger a possible idea? With a visual feedback in the tree one could see each constraint completed at a time and possible see "redundant constraints" or "not convergent" items. At this time I tend to throw away files that did not work and re-do them, because it seems quicker than to track down problems. As I am trying to build rather steel hierachies that is quick to do and assures there are clean files. But being able to repair cad constraint choices would be an important part of the work flow, I guess.
realthunder wrote: ↑Sat Feb 22, 2020 11:51 pm
catman wrote: ↑Sat Feb 22, 2020 9:28 pm
For example, how to constrain two parts made to be attached to each other with srews
If two parts are constrained using only
one screw, and one of them is fixed by 'Lock' constraint, the best constraint to use is 'Attachment' constraint, which does not use the expensive algebra solver if possible. It can also work if neither parts is fixed, but one of them is indirectly fixed by another 'Attachment'. If the condition cannot be met, the attachment constraint will be treated as PlaneCoincience with locked angle, and passed to solver.
The case with
one screw is the trivial one, unfortunately. Its the standard case to for adding "screws" themselfs, though. Please see my comments for "Attachment" 2 sections below.
realthunder wrote: ↑Sat Feb 22, 2020 11:51 pm
catman wrote: ↑Sat Feb 22, 2020 9:28 pm
Maybe there is a way to set up FreeCAD to also show center point on selection? In this case it would be useful.
You can show the 'LCS' of each element by either change the element object's 'ShowCS' property in the View (not Data) property page, or use the following toolbar button to show it for all elements.
Sorry, I meant something different, for example in this screenshot.
- FreeCAD_SelectionWithCenter.jpg (2.83 KiB) Viewed 2634 times
Here I selected a circular edge, but the system marks the center of the circle and offers me the center point to select as well. When your constraints work with points such as "Points-on-Line" it would be intuitive if the user is presented with points (2D circles) and lines (3D cylinders like holes) for selection. Probably that requires an assembly-only selection mode and more core changes. But in the long term, that is something any assembly solution would really require anyway, imho.
realthunder wrote: ↑Sat Feb 22, 2020 11:51 pm
asm3 does have special logic for common situation because of the difficulty in DOF counting, most notably the two holes problem. If there are two PlaneCoincidence constraints applied to the same pair of parts, the second one will be reduced to either PointsHorizontal or PointsVertical, which is quite counter intuitive.
There are similar handling for multiple PlaneAlignment constraints (the three-face-alignment problem, probably the same as your aligning at corner problem). The first one is treated as Orientation + PointInPlane, the second one reduced to Parallel of plane normals that are projected (i.e. 2D parallel) to the plane of the first PlaneCoincidence, and the third one PointInPlane. Extra PlaneAliengments are ignored.
For multiple AxialAginment, the first one is Parallel + PointOnLine, and the second one is reduced to just PointOnLine. This can cover your last two axial alignment cases.
For screw attaching, you can try the 'Attachment' plus the
constraint multiplication feature.
It is very interesting to learn that your included intelligence to modify constraints from less-than-optimal user selections. I am not sure yet whether its a good thing or a bad one, because in other areas than CAD I saw users working against complex algorithms (because not fully understanding what they did), ending up with a very unstable solution which got worse by adding complexity instread of cleaning up the initial setup. What I was trying to do with selecting constraints for standard cases was under the assumption that those were applied as selected. I am not sure, does this apporach work against your traget to solve the issue in the background. Specifically: is it better for you to feed back errors/bugs to you from applying two "AlxisAlignment" constrataints for the two hole example case (
https://forum.freecadweb.org/posting.ph ... 5#pr371280) to hone out that algorithm or is it better to try to find a solution that works for the solver natively?
I have tested the "Attachment" constraint for attaching parts that are attached with multiple screws in real life. The most important info was that Attachment constraint saves on solver time, which I was not aware of. Maybe I am wrong, but this seems to be the counterpart of Zolkos Assembly4 LCS, just presented as constraint?
So its usable, but its really not fun, because your are forced to click though this usability-nightmare-of-a-default-orientation property, because whatever you do, your part will be misaligned. After two clicks got get your part close to its final destination you need heaps of clicks to get to the 'angle' field of one of the element, then enter manually an even number (15°deg, 45°, 90° steps or the negaitve conterparts) and each time click elsewhere to see where your are (I might be a bit biased because there was little love between me and this dialog from the first use
).
So for assembly purposes I am convinced that we should use instread of this
- FreeCAD_DefaultPlacementProperty.png (10.97 KiB) Viewed 2634 times
rather a variant of this
- FreeCAD_ZolkosRotationDialog.jpg (30.59 KiB) Viewed 2634 times
Obviousey the top part could be used to allow selection which of the elements are to be used and maybe what the step sizes are. This is the more important, because if this is really the best constraints to save resources in the solver.
If that is quick and intuitive to use there is another advantage: it only requires two selections to fully constrain a part. Less constraints and a clear relation in the tree: 1 constraint to 1 connection.
PS: sorry for the long post.