Skip to content
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

Unified Transparent Previews #22

Open
kadet1090 opened this issue Nov 9, 2024 · 12 comments
Open

Unified Transparent Previews #22

kadet1090 opened this issue Nov 9, 2024 · 12 comments
Labels
funded The FPA voted to fund this proposal

Comments

@kadet1090
Copy link
Member

kadet1090 commented Nov 9, 2024

Proposal description

The goal is to introduce new feature preview system, including transparent previews that can be used in Part and Part Design (and other deriving from Part). I already started working on this feature for Part Design, but without funds it would be hard for me to find enough time to make this feature more generic. This grant should also cover any necessary fixes to problems found after feature gets merged.

Draft PR: FreeCAD/FreeCAD#17249

This also aims to be the first stage for unification of Part and Part Design workbenches. The next stages of that would be:

  1. Add more multi solid capabilities to Part Design (planned for this release cycle)
  2. Allow using features from other workbenches in Part Design workbench (planned for this release cycle)
  3. Merge duplicated features together (Extrude / Pad / Pocket, Chamfer, Fillet etc) (would be controversial - planned for next release cycle)

Deliverables

Timeline

I already started the implementation and I plan to deliver full feature by the end of 2024, but hopefully it should be sooner. Across the timeline I plan to submit probably few additional PRs containing necessary refactors, but I am not able to predict when that will happen.

Risks and mitigation

I'm full-time employed at university so my time available for FreeCAD can vary depending on various factors. With that in mind the timeline provided here can change. As mitigation I want to receive funds only upon completion full completion of the task. If for any reason I won't be able to complete the task I'll inform the FPA so the frozen funds can be realocated for other purposes.

Compensation

I'd like to receive 1500 EUR of total compensation for this project, paid upon successful merge of the feature.

About you

I'm Kacper Donat aka, kadet (forums) or kadet1090 (GH). I have around 15 years of experience in programming in various languages, software architecture. Lately I also gained a bit of UX experience. Currently I am employed at GdanskTech as Senior Developer / Architect. I have around 50 merged PRs on FreeCAD repo, most of which are related to FreeCAD UX.

@chennes chennes added the under committee review Currently being reviewed by the FPA Grant Review Committee label Nov 9, 2024
@chennes
Copy link
Member

chennes commented Nov 9, 2024

Thank you for the grant application, @kadet1090. I have forwarded your proposal onto the Grant Review Committee for consideration. If they (or anyone else) have questions they'll post them here. The review process typically takes about two weeks, after which the FPA has two weeks of voting. I will keep you posted about the process of your proposal as it progresses through these steps.

@macdroid53
Copy link

Would the Sketch location visualization benefit from this?

@kadet1090
Copy link
Member Author

That is on my todo list, but it does not depend on this grant. This is similar area so it may be covered by the accompanying features but I think that PR for that should be ready before voting for this grant happens.

@yorikvanhavre
Copy link
Member

I'm not sold on the Part / PartDesign "unification". Both have VERY different assumptions (to start with, Part tools just work with any other geometry and are not confined to a body or any other specific behaviour, while PartDesign enforces a series of practices). Sometimes one needs one, other times one needs the other. By merging, for ex. Extrude and Pad, you'll need to either remove the Placement of Extrude or add a Placement to Pad, any of this will mean angry people :)

But that's of course another debate. The features presented in this proposal seem awesome. Draft tools such as Move also use "previews", and BIM toolsl would benefit that a lot too. Having an unified system would be very good.

@macdroid53
Copy link

macdroid53 commented Nov 12, 2024 via email

@kadet1090
Copy link
Member Author

I'm not sold on the Part / PartDesign "unification". Both have VERY different assumptions (to start with, Part tools just work with any other geometry and are not confined to a body or any other specific behaviour, while PartDesign enforces a series of practices). Sometimes one needs one, other times one needs the other. By merging, for ex. Extrude and Pad, you'll need to either remove the Placement of Extrude or add a Placement to Pad, any of this will mean angry people :)

Any potential merge is still a looong way ahead, steps mentioned here (excluding the last one) are more about aligning the two workbenches from code and available features perspective. Completing each of them will provide substantial value on it's own - i.e. full multi-body capabilities in PD and even if in the end we decide against unifying them they will at least have the same capabilities and only differ by workflow. The most important goal is to ensure that you are never limited in terms what you can do by the workbench choice.

But that's of course another debate. The features presented in this proposal seem awesome. Draft tools such as Move also use "previews", and BIM toolsl would benefit that a lot too. Having an unified system would be very good.

Thanks for mentioning that! I I'll not be able to provide previews for each tool (scope could become too big) but I should be able to at least provide reference implementation for each workbench so it can be used to implement this for other features.

@yorikvanhavre
Copy link
Member

provide reference implementation for each workbench so it can be used to implement this for other features.

That's what I imagined, of course that would be beyond the scope of this job to look at each and every Python workbench, but having a well-defined structure and system to do that kind of "preview" objects would be a huge step forward already.

@chennes chennes added voting in progress The grant is currently being voted on by FPA members and removed under committee review Currently being reviewed by the FPA Grant Review Committee labels Nov 20, 2024
@chennes
Copy link
Member

chennes commented Nov 20, 2024

The Grant Review Committee supports funding of this proposal. Some of their comments:

"This is IMO exactly the type of grant that FPA should support.
Implementing a long standing feature request for a reasonable price."

"Great feature. worth every penny. I'm in favor."

"Have seen his work so expect this to be the same high quality."

"Full support for this from my side."

This grant will now go to a vote of the FPA members. That process can take up to two weeks: I will keep you posted of the results when we know them

@chennes chennes added funded The FPA voted to fund this proposal and removed voting in progress The grant is currently being voted on by FPA members labels Nov 28, 2024
@chennes
Copy link
Member

chennes commented Nov 28, 2024

@kadet1090 thank you again for your proposal. The FPA has voted to fund this grant. Please send an email to [email protected] to set up your payment and MoU/contract details. Congratulations!

@belinski-roman
Copy link

Я не в восторге от «объединения» Part / PartDesign. У них ОЧЕНЬ разные принципы работы (для начала, инструменты Part работают с любой другой геометрией и не привязаны к телу или какому-либо другому конкретному поведению, в то время как PartDesign применяет ряд практик). Иногда нужен один инструмент, иногда — другой. При объединении, например, Вытяните и подложите, вам нужно будет либо убрать размещение «Вытянуть», либо добавить размещение «Подложить», иначе люди будут злиться :)

До любого потенциального слияния ещё очень далеко, и упомянутые здесь шаги (за исключением последнего) в большей степени направлены на то, чтобы привести два рабочих стола в соответствие с точки зрения кода и доступных функций. Выполнение каждого из них само по себе принесёт существенную пользу — например, в PD появятся полноценные возможности для работы с несколькими телами, и даже если в итоге мы решим не объединять их, они, по крайней мере, будут обладать одинаковыми возможностями и отличаться только рабочим процессом. Самая важная цель — сделать так, чтобы вы никогда не были ограничены в своих возможностях из-за выбора рабочего стола.

Но это, конечно, другой вопрос. Функции, представленные в этом предложении, кажутся потрясающими. Инструменты для черчения, такие как Move, также используют «предварительные просмотры», и инструменты BIM тоже могли бы извлечь из этого пользу. Единая система была бы очень кстати.

Спасибо, что упомянули об этом! Я не смогу предоставить предварительные версии для каждого инструмента (объём работы может стать слишком большим), но я смогу, по крайней мере, предоставить эталонную реализацию для каждого рабочего пространства, чтобы её можно было использовать для реализации других функций.

Part / PartDesign "unification"

And where can I read about Part / Part Design "unification"? It would be interesting for me to read about exactly how they were planned to be combined

@kadet1090
Copy link
Member Author

First of, thanks for all kind words and support! I'll be probably back to working on this feature after I finish squashing bugs over the new transform dialog.

And where can I read about Part / Part Design "unification"? It would be interesting for me to read about exactly how they were planned to be combined

This really is for now only very roughly defined idea, I described it here: https://forum.freecad.org/viewtopic.php?p=769419#p769419

To say something more concrete - the work will mainly center about refactoring the code so both workbenches would have roughly the same abilities. I plan to achieve that by adding to Part Design missing features like working with multiple solids, surfaces etc. Then it is mostly about refactoring code in a way that allows using part features in bodies, and part design features outside bodies - something like Sheet Metal already allows. When it is done we can think about which features should be merged together and create unified modeling experience. Each step is project on its own and requires more thinking and planning.

@belinski-roman
Copy link

First of, thanks for all kind words and support! I'll be probably back to working on this feature after I finish squashing bugs over the new transform dialog.

And where can I read about Part / Part Design "unification"? It would be interesting for me to read about exactly how they were planned to be combined

This really is for now only very roughly defined idea, I described it here: https://forum.freecad.org/viewtopic.php?p=769419#p769419

To say something more concrete - the work will mainly center about refactoring the code so both workbenches would have roughly the same abilities. I plan to achieve that by adding to Part Design missing features like working with multiple solids, surfaces etc. Then it is mostly about refactoring code in a way that allows using part features in bodies, and part design features outside bodies - something like Sheet Metal already allows. When it is done we can think about which features should be merged together and create unified modeling experience. Each step is project on its own and requires more thinking and planning.

Thanks for your reply, I will read your link. Hypothetically, will this allow us to independently move individual bodies (in the connection/separation mode of components) inside a multi body? Perform logical operations between them? If I understand correctly, is this roughly putting most of the Part functions inside one Body?
Thank you for your work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
funded The FPA voted to fund this proposal
Projects
None yet
Development

No branches or pull requests

5 participants