New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assembly joints #10611
Assembly joints #10611
Conversation
451f0b6
to
fdb31c3
Compare
fdb31c3
to
f346daa
Compare
Keep in mind scriptability, as GUI is not the only way of doing things. Usually good joints are axes, vertexes and even some middle points, like a circular face center, as frequently you have some "degree of freedom" determined by "ball joints", bearing and pins. It could be interesting to derive some feature lengths from already existing properties, as "circle center" of "middle point of a line" or "middle of an arc". Regards Carlo D. |
8425483
to
53e2071
Compare
This is now ready for review. |
Non-code feedbackNote: I've mostly tested the workflow of adding joints, since that is what this PR adresses. I find it very intuitive and easy to add joints, really great work so far. I also like the agile approach of making small PR's, quickly merging, getting early feedback and solving problems continually. 👍 👍 👍
👎
|
Thank you guys for the review.
The question is how to close the task. I found the 2 options above, first make a QKeyEvent to act as if user pressed esc in the taskbox and send it to the taskbox. Second call reject or accept, and if true then closeDialog. Besides I found a weird bug with this. Both work only ONCE but if you start the tool a second time again and try press enter or escape (when view has focus), then it crash. |
I also just gave the branch a test and I really like it! The LCS selection is incredibly intuitive. I agree with the points mentioned by howie-j but I'd like to add a few little things:
|
|
I think that in this case both of your suggestions are reasonable. I normally don't care for generating keypress events, but since yours is really passing along a keypress event it seems like an acceptable path to me. I'd personally probably take the other route, and call accept or reject, but I don't feel strongly about it. |
Ok then I'll go with
Are you guys able to reproduce the crash I'm having when closing the tool with Escape for the second time ? If so do you have any logs on your side that could hint at what is wrong? I have no message on my end. |
Yes, esc crashes freecad.
|
That looks like it's trying to send an event to a Widget that has been deleted. |
Hello everyone. |
You can clone the branch of this PR and build it but it currently doesn't have the solver integrated, you may want to test it after that's done. |
Right now there's not much to see -- are you interested in testing the un-merged PR code, or the code that's already been integrated into the master branch? |
I'm flagging as draft again until the crash is resolved. |
6fb24a4
to
04a951a
Compare
I just forced push with :
instead of
|
A summary of what needs to be done in subsequent PRs:
If any of you want to pick up one of these let me know ! |
Awesome breakdown. These should be moved to separate issues and added to the project. |
OK, this looks ready to me then, I'm going to merge it. |
Personally, I find the current LCS design usable. Just checked OnShape and Fusion360 and they seem to have a very similar graphic. They will definitely look better a little smaller though, can you test that? |
Ok I couldn't hold myself and made a mockup anyway @PaddleStroke 😅 It's similar to the current one, just a little shorter and thicker lines with a translucent plane to show the local base XY plane. Here's what OnShape has for reference but I don't think it's that great. Though it might be better to show the translucent plane on the top mockup at the center of the LCS, like here. |
> are you interested in testing the un-merged PR code, or the code that's already been integrated into the master branch? |
This is a basic implementation of a constraint system for the assembly wb.
The approach is the one that uses 'joint connectors'. It is a similar approach as A4 but the idea is to generate the placement based on the user selection. So for example you select the plane face4 of your body, the joint-connector placement is going to be the rotation of that plane, and the position of the face4 vertex that is the closer to your mouse. It is also similar to the approach of two well known commercial package.
The reason of this choice is that the solver developped by Dr Koh is following this logic to build assembly. Also this workflow is good and intuitive.
The joint-connectors are ready to be assembled. At this stage we now need to have the API of the solver ready and accessible to move forward and actually solve the assembly.
Note:
Early feedback would be appreciated.