Community UI/UX Improvement Project

A forum for research and development of the user interface of FreeCAD
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Sam_uk
Posts: 44
Joined: Sat May 07, 2022 11:16 pm

Re: Community UI/UX Improvement Project

Post by Sam_uk »

I'd imagine it would be quite different groups of people maintaining the 2x UI's. They would share FreeCAD backend. An Onshape/Fusion type interface for us newbies and the old-skool-cool one for people with advanced needs.

If there was a decent WebUI it might not remain locally run forever. The point would be to access the large pool of web developers who can currently make little contribution to FreeCAD.
User avatar
obelisk79
Veteran
Posts: 1061
Joined: Thu Sep 24, 2020 9:01 pm

Re: Community UI/UX Improvement Project

Post by obelisk79 »

Rewriting a different UI is a task that I don't imagine anyone jumping into...

That said, I firmly believe that 2 preconfigured 'custom' UI arrangements can do what you mention and is one of my personal goals to try and work on.

FreeCAD's UI is highly customizable and configurable.
Sam_uk
Posts: 44
Joined: Sat May 07, 2022 11:16 pm

Re: Community UI/UX Improvement Project

Post by Sam_uk »

Maybe you could just fork https://github.com/xibyte/jsketcher

It seems to run http://web-cad.org/ which is not completely horrible.
User avatar
mmiscool
Posts: 73
Joined: Sun Dec 18, 2016 9:07 pm
Location: Connecticut
Contact:

Re: Community UI/UX Improvement Project

Post by mmiscool »

Hello,
Seeing this post referencing JSketcher it seemed like a good place to chime in.

Just a little background. JSketcher is a browser based parametric 3d modeler. It works client side in the browser and uses a build of OpenCASCADE with custom wrappings compiled to WASM. As it currently stands we have support for a feature history, 2d sketches with constraints and step files (most seem to work). Under active development is an abstraction to better track edge and face IDs. I expect this work to cover the majority of cases for keeping stable identifiers that won't break when deleting or modifying earlier features. This work will probably land in next few weeks and was developed with possibly of usage with BREP kernels other than OpenCASCADE with a loose coupling and hooks that can be substituted. The 2d sketcher is completely written is JS/TS and has no WASM dependencies.

We have a standard set of UI widgets for building feature dialogs. These widgets cover selection with filters (edge, face, body, sketch, sketch element, ect) along with common UI element such as input boxes and drop down selections. We also provide widgets for selecting direction vectors and a few other things. I expect this toolkit of standard widgets to grow over time. This is similar to how Siemens NX has standardized much of the UI related to forming a feature dialog.

Any new commands that are added to the system need to be done in a standard structured way. I know that some of this seems to rigid but that is intentional. Currently FreeCAD seems to be all over the place in the workflows used under different work benches. There dose not seem to be any kind of unifying design philosophy or structure. This makes it difficult to train/learn. We wanted to make sure that things are intuitive across the different commands and work benches by using the same style dialogs, widgets and workflows. A good example is the revolve feature with the source code shown here https://github.com/xibyte/jsketcher/blo ... eration.ts
Notice the structure of the dialog and how the boolean options are handled.

Here is the start of the dev guide I have been writing. It is by no means complete but it dose show how we have been approaching the user interface and adding features.

https://github.com/xibyte/jsketcher/blo ... e/index.md

I would be happy to hop on discord or Google Hangouts meeting to talk about what we are doing. I did recently start playing with and look at importing FreeCAD files. It looks like internally FreeCAD stores OpenCASCADE format BREP file for each feature step and that importing these is not dificult. Just need a little work to handle unzipping the free cad file and pulling the correct data. Don't know how deep down the rabbit hole we want to go on pulling the production history information or if just taking the latest and greatest geometry is the right way to go.

Jsketcher is being actively developed. Currently we publish the source code and offer commercial licencing for use in property products. This requires that any contributes authorize us to use code in both the open source releases and our commercial offerings. The most bleeding edge work is in the mdf branch https://github.com/xibyte/jsketcher/tree/mdf
My main project is https://autodrop3d.com
Effort on https://github.com/mmiscool/FC-Docker FreeCAD for cloud with browser based access has been discontinued in favor of focused development on https://github.com/xibyte/jsketcher
Post Reply