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

[Draft] Concise Sketcher Toolbars #11717

Closed
wants to merge 0 commits into from

Conversation

obelisk79
Copy link

This is an experimental test of new condensed and reorganized toolbars for the sketcher workbench and is being submitted so test builds can be created and distributed to acquire broad user feedback.

This new arrangement is based on UX guidelines and principles as outlined in the FreeCAD Design Guide, and is a culmination of weeks of collaboration and discussion among the Design Working Group on Discord.

The following toolbar changes have been made:
Sketcher Edit Mode:
-Leave Sketch button removed. Sketches exit edit mode via Escape key.

Sketcher Geometries:

  • Sketcher_CreateLine deprecated, same functionality provided by the more versatile polyline tool with minimal impact to user interaction even when drawing multiple disjointed lines.
  • Sketcher_CreateHexagon is now the sole polygon tool. The command-group was unnecessary after the new tool settings feature has been added. Up and Down arrow on the keyboard now change the polygon count. One tool, multiple uses. The individual keyboard shortcuts for each polygon are also still valid.
  • Conics command group has been divided and added to the circle and arc groups.
  • Slot and Arc slot are in a command group together.
  • Sketcher_CreatePoint added at the end of the geometry element tools due to it being less frequently used and the simplest sketcher element.
  • Sketcher_Offset has been moved to this toolbar as it creates geometry, but is a modifier similar to fillet and trim
  • Sketcher_Offset icon has been modified to be visually consistent with the rest of its new toolbar.
  • Sketcher_CreatePointFillet has been made the default tool in the fillet command group. Preservation of constraints is more frequently desired than not.
  • Sketcher_CarbonCopy removed and placed into the Sketcher Tools toolbar.

Sketcher Constraints:

  • Sketcher_Dimension tool has been placed at the first position on the toolbar and is separated from the geometric constraint tools.
  • Sketcher_ConstrainCoincidentUnified has been established next. Despite merging two functions which result in different impacts to degrees of freedom, these are expected defaults with a more naturalistic line of thinking which is an expectation of attachment of one point to another sketch element (point to point, arc, line, bspline)
  • Sketcher_ConstrainCoincidentUnified has a modified icon in order to disambiguate from the discreet tools it is intended to replace.
  • Sketcher_ConstrainTangent placed next (another form of attachment, unique from coincident)
  • Sketcher_ConstrainHorVer new icon to better indicate what this tool does.
  • Sketcher_ToggleDrivingConstraint now grouped as default with Sketcher_ToggleActiveConstraint

Sketcher Edit Tools and Sketcher Visual:

  • Sketcher_RenderingOrder has been moved with other visual functions into the Sketcher Visual toolbar.
  • Sketcher Edit Tools toolbar now only has grid controls.

Additional change

  • Auto constraint snap angle for horizontal and vertical constraints has been increased from 2 to 4 degrees.

@github-actions github-actions bot added the WB Sketcher Related to the Sketcher Workbench label Dec 13, 2023
@chennes chennes added the safe to publish Enable Snap generation for this PR label Dec 13, 2023
@Syres916
Copy link
Contributor

As a daily Sketcher user, I will compile and test this PR but one thing I can say beforehand, Sketcher_CreateLine deprecated is definitely a step too far.

@macdroid53
Copy link

What does line bring to the table that poly doesn't?

@pierreporte
Copy link

Leave Sketch button removed. Sketches exit edit mode via Escape key.

Why ?

@obelisk79
Copy link
Author

Leave Sketch button removed. Sketches exit edit mode via Escape key.

Why ?

There are 2 other ways to exit a sketch neither of which requires a button on the toolbar. The escape key, and the task panel.
image

@pierreporte
Copy link

@obelisk79 you’re right! I think this button should be labelled “exit sketch” and have the right icon. On my system (Kubuntu) with the default theme, using the AppImage version, there is a cross.

BTW, shouldn’t this PR be a draft?

@obelisk79
Copy link
Author

obelisk79 commented Dec 13, 2023

BTW, shouldn’t this PR be a draft?

Maybe, I'm still relatively new to github and contributing to open source.

@Syres916
Copy link
Contributor

What does line bring to the table that poly doesn't?

If at the very least Polyline worked with the same consistent key presses it would be a start and I wouldn't mind if there was a drop down with both under one icon (if space is the primary reason here) so it remembered the last used. But how many 2D apps don't have a Line button, I'm not aware of any, it's absolutely de-rigor?

@pierreporte
Copy link

pierreporte commented Dec 13, 2023

But how many 2D apps don't have a Line button, I'm not aware of any, it's absolutely de-rigor?

Some have a line button that is actually a polyline button (well, just line segments at least). Alibre and Solidworks do this. In 2D CAD, QCAD does. In graphics design, Inkscape as well. I don’t have numbers but it seems pretty common. It may be common enough not to be confusing.

Sure, forum conservatives will be against that but they’ll get over it.

@kadet1090
Copy link
Contributor

Did some testing:

  1. Polyline works fine as line tool, but we should make sure that it is easy to finish drawing. I think that it should be possible to finish poyline with: Escape, Right click, Clicking on the last point. For now only right click worked for me consistently.
  2. Point position in unnatural for me, it is the most basic shape so it should be first. I had a problem to find it - my brain automatically tries to find it on the left edge. Even if it is only because I've got accustomed to current placement I don't see any benefit of changing it.
  3. Some icons (circle and arc?) do not change color when switched to construction line mode.

@macdroid53
Copy link

Polyline as FC Sketcher has is a multi segment line tool. No AutoCAD user would recognize it as a Polyline. A Polyline has width, fill, and the segments, represent a contiguous line.
No real need for two tools to produce a one segment line and another to produce a one or more segment dis-contiguous line.

@pierreporte
Copy link

pierreporte commented Dec 13, 2023

No real need for two tools to produce a one segment line and another to produce a one or more segment dis-contiguous line.

There can be, actually: if the axis line type is implemented (see #7334). Though this is out of the scope of this PR.

@obelisk79
Copy link
Author

2. Point position in unnatural for me... I don't see any benefit of changing it.

I disagree with this. It is the simplest geometry, but the most used theoretically is polyline. In this instance, I think this is just an issue of familiarity. In my sketcher toolbar meta-analysis, create point was first only in Catia and FreeCAD.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO this doesn't improve clarity

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you have any suggestions how this could be improved? I modeled this after other similar software, although slightly different.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally I find the current icon to be very good already, but if we need to make it different from the dedicated tools I kinda like how the one from onshape looks:
image
very similar to your idea, but the point shouldn't be floating in empty space attached to a confusing dashed line that doesn't seem to represent anything from sketcher.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like that this be proposed on a separate PR so it can get merged quickly. IMO it helps in understanding this tool as the simple cross is too ambiguous

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can do that soon.

@chennes
Copy link
Member

chennes commented Dec 14, 2023

This PR is available for testing via Snap: you can find the instructions for installing it in this PR
FreeCAD/FreeCAD-snap#107

@PaddleStroke
Copy link
Contributor

PaddleStroke commented Dec 14, 2023

From discord I guess the proposition is :
image

Here are some thoughts :

  • moving offset : I don't think it makes sense to move only offset. What about symmetry and rectangular array? I currently have PR that will add some tools. In the end we will have : offset, symmetry, rotate, scale and translate (replacement for move copy clone and rectangular array). All those 5 tools belong together.
    Initially I thought it made sense to have them in the 'tool' toolbar. But then one can argue that fillet and trim(&co) are also geometry modifying tools. So perhaps they all fit together? Alternatively we could have a transform toolbar.
  • For carbon copy it can be argued that it also creates geometry same as offset. Also its icon change with the construction toggle, which justified its previous position.
  • Polygon is arguably little used. If you think about it it is probably less used than centered rectangle. Also its position next to circle may create confusion as their icons are similar. I would group the hexagon tool in the rectangle comp. Or at least move polygon to after slot.
  • Nice icon for alignment.
  • Not sure about the meaning of the coincident icon.
  • Show internal should be in the display toolbar.
  • (I would group grid and snap to the main sketcher toolbar.)
  • I would rather keep the exit sketch tool and get rid of the Close button.
  • Reordering arc circle rectangle to rectangle (polygon) circle arc. I don't know. I don't see a big advantage here and would probably keep previous order to avoid changing too much, as these 3 tools are often used.

@maxwxyz
Copy link
Collaborator

maxwxyz commented Dec 14, 2023

Is it possible to overhaul the constraint icons in general with this update? They all have a different line width / thickness and orientation (tangent in itself has different lines and compare the thick perpendicular with the thin align tool).
Most users will also use chamfer or trim more often than offset so these should be first. I am not sure If the icon for the new coincidence is speaking for itself, it looks like an offset icon...
There is still the discrepancy of the toolbar icons to the cursor icons (or vice versa) #11352

Besides these I like the PR

@obelisk79
Copy link
Author

Here are some thoughts :

* moving offset : I don't think it makes sense to move only offset. What about symmetry and rectangular array? I currently have PR that will add some tools. In the end we will have : offset, symmetry, rotate, scale and translate (replacement for move copy clone and rectangular array). All those 5 tools belong together.
  Initially I thought it made sense to have them in the 'tool' toolbar. But then one can argue that fillet and trim(&co) are also geometry modifying tools. So perhaps they all fit together? Alternatively we could have a transform toolbar.

With the tools you are bringing, that makes sense. A transforms toolbar would likely be more fitting.

* For carbon copy it can be argued that it also creates geometry same as offset. Also its icon change with the construction toggle, which justified its previous position.

Carbon Copy imports geometry rather than copies it. The construction toggle does bring a layer of consideration though.

* Polygon is arguably little used. If you think about it it is probably less used than centered rectangle. Also its position next to circle may create confusion as their icons are similar. I would group the hexagon tool in the rectangle comp. Or at least move polygon to after slot.

Grouping polygon would be bad in my opinion. It is used more frequently than you assume. I don't see the confusion, however I don't see a problem with rectangle, circle, arc, polygon, slot. I put the slots afterwards because they are composite geometric shapes. Important but different.

* Not sure about the meaning of the coincident icon.

Admittedly, I don't think any of the in-use icons effectively convey what coincident does. I made a poor interpretation of the symbology used in other CAD. I modified it to look like this instead.
image

* Show internal should be in the display toolbar.

I agree.

* (I would group grid and snap to the main sketcher toolbar.)

I don't think this needs to move beyond its own toolbar. Many people never use the grid, this way they can hide the buttons.

* I would rather keep the exit sketch tool and get rid of the Close button.

Doing that would be a major deviation from the rest of FreeCAD and poor for consistency. Sketching is a task, we exit tasks in nearly every other instance by hitting escape or buttons in the task panel.

* Reordering arc circle rectangle to rectangle (polygon) circle arc. I don't know. I don't see a big advantage here and would probably keep previous order to avoid changing too much, as these 3 tools are often used.

I don't care much about this either way, I think it is rather semantic to argue one way or the other.

@macdroid53
Copy link

Removing the Close button would introduce inconsistency.

I think most say they don't even know there is an icon for exiting the sketch.

Many turn off esc to exit sketch because it is too easy to hit esc to exit a tool and unwittingly end up exiting the sketch.

@adrianinsaval
Copy link
Member

  • Sketcher_ToggleDrivingConstraint now grouped as default with Sketcher_ToggleActiveConstraint

I don't think this is such a good idea, deactivating a constraint is pretty useful to fix flipped sketches and similar situations so I don't think it's a good idea to make it hard to discover.

@macdroid53
Copy link

  • Sketcher_ToggleDrivingConstraint now grouped as default with Sketcher_ToggleActiveConstraint

I don't think this is such a good idea, deactivating a constraint is pretty useful to fix flipped sketches and similar situations so I don't think it's a good idea to make it hard to discover.

The argument is that toggle to reference can be used in the same way.

In most cases, this is true. As I've pointed out elsewhere, there is no reference coincident, For, that deactivate is the only option.

Deactivate should definitely not go away, Whether it needs to have a prominent presence, I'm not sure, it is not something that a user would likely decide to use without instruction on why and when.

@howie-j
Copy link
Contributor

howie-j commented Dec 16, 2023

I don't think this is such a good idea, deactivating a constraint is pretty useful to fix flipped sketches and similar situations so I don't think it's a good idea to make it hard to discover.

It's also available in the constraint list contextual menu (right click), and from the toolbar menu where it's much easier to discover anyway. Grouping reference and deactivated is therefore a good idea in my opinion.

@abdullahtahiriyo
Copy link
Contributor

While some of the decisions can be good, specially in light of the new DSHs, I think this PR tries to accomplish too much at a single time, while still Paddle's tools are being merged. I had deferred toolbar modification for a reason until all were merged.

About design UX practices, I think most decisions are value judgements and they do not reflect the diversity of views and uses of all users of the community. In fact, the thread were all this started tells exactly that story, which one user here summarised quite well:

Sure, forum conservatives will be against that but they’ll get over it.

Which is tantamount to saying: let's merge this and whoever does not like it, get over it. With all due respect, we could also ditch this PR and have proponents of it "get over it". It is not really nice in either direction and whoever promotes that should feel ashamed.

Instead of looking at other PRs, I am going to give this a look at risk it drives an irreversible wedge.

@abdullahtahiriyo abdullahtahiriyo self-assigned this Dec 16, 2023
@pierreporte
Copy link

pierreporte commented Dec 16, 2023

Sure, forum conservatives will be against that but they’ll get over it.

Which is tantamount to saying: let's merge this and whoever does not like it

It was not was I was thinking when I wrote that sentence. I believe that the “conservatives” will think that this wouldn’t be that bad, and that they could even end up liking the result.

We have the same goal: making FreeCAD better and allowing users to fully customize the program. We have a different viewpoint, if only because you are a programmer and I am a professional CAD user, and there is no other CAD community where this mix of different backgrounds can exist. We basically disagree on the defaults. You mentioned profiles on the forum: it’s a very good idea.

I believe that grouping tools is good because you can achieve 80 % of the work with a few select clever tools, and the more specialized ones are thus better out of the way—but they should be easily available for the remaining 20 %. When several commands do basically the same thing but the two work in specific cases only, I don’t see why they should be separate (the case of coincident and point on object). When there are commands that does only a subset of what an other do and the “big” one doesn’t require more than a right click to emulate the other, I don’t see why either there shouldn’t be grouping. I will never advocate for removing all constraints commands from the toolbar if #11413 is implemented because it will negatively impact discoverability.

This is just my point of view. We are here to discuss what we think about the toolbars. Nobody is willing to become a UI/UX dictator.

@obelisk79
Copy link
Author

@abdullahtahiriyo I don't want you to waste your time on my PR.

I made this PR to allow for real world testing of different toolbar setups because the current paradigm of show the user everything so they can 'find' it is unmaintainable as FreeCAD continues to grow and become more complex. Not to drive a wedge in the community.

Conversely as FreeCAD's community and user-base grows in size there will always be users unhappy with changes that are made, so yes at a certain point someone will have to make a decision to accept that there will be unhappy users (even your power-users forum friends whom you respect) for the overall good of the project. Because there are so many inconsistencies which need to be addressed, and limited resources to do so I targeted toolbars as an easy first step which eventually would have extended to other workbenches. Sketcher was just the starting point.

I'm closing this PR as I am growing continually frustrated in attempting to bring interface improvements and cohesion to the project based on more than just opinions. I also don't want to drive a core developer (abdullah) away because I am passionate about such things.

FreeCAD has a problem with community toxicity and it is highly discouraging. It is like attempting to reason with a stone wall. This software has no interface design or user experience plan, and no coherent vision for one. If people don't want to understand that beyond the technical aspects of what the software can do and how the code should be structured, then apply the 'bike-shedding' label all you want. It was my (perhaps incorrect) understanding that there was a desire to bring an element of professional design review and improvements to FreeCAD.

I've invested most of my personal free time over the last six months working on FreeCAD design, including learning new software, basics of coding in C++ with zero prior experience, studying industry standard practices and principles for UI/UX design all of which was apparently wasted in favor of a couple of sketcher 'forum experts'.

@obelisk79 obelisk79 closed this Dec 16, 2023
@maxwxyz
Copy link
Collaborator

maxwxyz commented Dec 16, 2023

Very sad. IMO the UX is the most important thing driving new users in and let them enjoy the software, continually growing the user base and therefore also people who can contribute to FreeCAD.
I hope this UI will be consistent and easily styleable one day. I see some people complaining why the UI gets fixed when there are other bugs but a consistent UI is so much more valuable as a contact point for the user.

@obelisk79 obelisk79 closed this Dec 16, 2023
@obelisk79 obelisk79 changed the title [Testing Only] Concise Sketcher Toolbars [Draft] Concise Sketcher Toolbars Dec 16, 2023
@kadet1090
Copy link
Contributor

kadet1090 commented Dec 16, 2023

@abdullahtahiriyo

I am not an expert in UI/UX. My understanding of such an expert is one which comes, shows you how something can be done, and you think: "oh! it was really so simple, why have we been not doing that in the last decade?". You may well know more on the topic than me. I must say I did not have that enlightening moment yet with this work.

This is where the problem is probably - unfortunately it simply does not work that way. We (as people, in general) do not like changes - it is as simple as it is. This is especially true if change is forced to us by some external forces. It is true even if eventually the change is better for us.

Professionally I work for the university as developer in our in-house software house. I deal mostly with frontend which also involves caring about UX/UI, accessibility and stuff like that. I'm no UX/UI expert in any way, but after dealing with such stuff for some time you develop a bit of understanding and learn thing or two. In my career there we did some major UI overhauls for our internal systems and it always works the same way. At first when we poll users the results have clearly negative sentiment - very similar to what we can read on the forums now. After about half a year we often do a repoll - of course in that time we fix some issues based on comments that we've got. The results are always a lot better and many people notice that the changes that we've made are in fact good and they simplify their workflows, increase readability etc.

I am not giving that example to increase my credibility or something like that, but to illustrate that it does not work in a way that good changes will always be appreciated immediately. The funny thing is, that the best UI is the one which you don't notice at all, because it simply works so you don't have to think about it. There is even famous quote about that:

“A user interface is like a joke. If you have to explain it, it’s not that good”. — Martin Leblanc

So for the good UI you won't ever have the moment of enlightenment because you simply won't think about it.

UX/UI is also more related to psychology than engineering, we can't calculate the best possible way or anything like that. There are some good practices (often called "Laws") that can help us, some defined processes for dealing with UX (most of which are not available to us, as we don't have required tools like AB testing, telemetry etc). So it is hard to say anything without doing experiments and watching how users behave.

I am willing to listen to examples of community toxicity. ... As I see it, you have proposed some changes. You have a list of feedback above. I do not see toxicity from my side, but a list of reasoned statements, which are not carved on stone, but you can counterargument on each of them. Then we can pick up what is good and improve what is not.

I think that your feedback in this particular PR is very good, it is based on arguments, it explains why you don't agree with certain decisions etc. We can work with such opinions to improve things. For example, we indeed should not remove the commands but simply hide them from UI - it might not even be a conscious decision in case of this PR. Simply it might be a result of not fully understanding how the system works and that it is possible to only hide the commands. Even if we differ on opinions we can probably work to solution that will satisfy everyone. In general I feel that discussions on GitHub are ok. Remember that this PR was not meant to be merged in that state, simply provided to create a test build that can be tested by the users.

On the forum on the other hand we have plenty messages like:

In general we have endless discussions that do not result in anything useful and it is often hard for me to tell what the problem is actually.

@obelisk79
Copy link
Author

As compliment I think it is very important to discuss these topics. But I note that it is certainly not the outcome of collaboration with the Community Driven Design Group (CDDG) of the FreeCAD forum.

I was approached by members of the FPA to head up a design working group to help develop a design guide for UI/UX, and begin looking for relatively easy to implement impmrovements prior to the 1.0 release. My primary communication platform has been, and remains Discord. Last I checked, there was no formal group existing on the forum for holistic review and collaboration for improving and homgenizing the UI/UX across the entirety of FreeCAD. Because Sketcher happened to be the first place

This has been historically a source of controversy. I think SolidEdge did have an icon (some version around 2000) and people who got used to it, want the one of FreeCAD to stay. @PaddleStroke I think is one of those. He wants to get rid of the "close" button. Here, I think it does not match the rest of FreeCAD. What you propose, personally, I am ok with it. But the point is not so much what I think. This kind of "preferences" is why I was proposing to split toolbars and have some profiles as preference packs.

While it may be controversial, it does bring a level of consistency which FreeCAD needs. Toolbar should not be the place in which functionality is duplicated from other parts of the GUI. A cursory overview of the principles and takeaways of the Design Guide may prove enlightening in this regard.

If the talk is whether we can do or we should do without the "create line" command in the toolbar, I can understand some people may like it. For me it is an extra right-click per detached line. I can understand there will be others who may not like it. That is why my reference to profiles, because it is use-case and person dependent.

Removing it entirely from the toolbar was exactly my intent, perhaps 'deprecated' was a poor choice of words. However, there was unanimous agreement among the other members of the design team that the extra right click to escape polyline was trivial and acceptable. This behavior also mirrors comparable software almost universally.

First, I am surprised that U/J are not working for the hexagon tool. This is a bug (@PaddleStroke I thought we had fixed this).

Second, again, this PR removes all the commands and shortcuts for specific polygons. If somebody's workflow was about creating pentagons, he could use "G, P, 5". This is taken away by this PR. This goes beyond the stated scope of the PR.

I did not remove the functional definitions for any of the tools removed from the toolbar. I will revisit to determine what I changed which caused the problem. I'm sure with my limited experience and skills in coding that it was a simple mistake.

Third, I think this is one of the little tools where the drop-down group works reasonably well. Having all icons does not take space. Those who use them, let them use them. Those who do not, can use the U/J or arrow facility. All it takes is the extra drop-down triangle.

I had initially set things up this way. I think the use of the drop downs also becomes unmanagable with so many, so for the purpose of testing I was a bit more aggressive with proposed changes. I had also suggested that the polygon (hexagon) tool capture mousewheel events while this specific tool was actively drawing geometry instead of just relying on keyboard/combobox. I realize this conflicts with zooming, however while the tool is actively drawing a shape, an exception should be afforded to allow a more natural interaction.

  • Conics command group has been divided and added to the circle and arc groups.

From a UI/UX point of view, I think the drop-down facility is not well-adapted to this grouping. The reason is that there is one prevalent option (circle | arc of circle) which gets removed from view when any of the other elements of the drop-down menu is selected.

This is valid, there should be two types of drop downs, one where the default remains static, and one where the most recent tool stays on the surface. I would expect that this need has been addressed in other software whith perhaps a solution which could be leveraged in FreeCAD.

  • Sketcher_CreatePoint added at the end of the geometry element tools due to it being less frequently used and the simplest sketcher element.

A highly arbitrary change. I do not think it solves any problem. It appears to me just a personal preference with potential to create confusion for the existing users.

The toolbar wasn't just changes, it was a reorganization, which agreed, did include a couple of arbitrary changes. The goal was to promote polyline as the primary tool for sketching freeform geometry, assuming that the overwhelming majority of users read, and therefore process, information in a left to right manner.

Comments regarding Offset, Transformation, Trim and Fillet

I largely agree that these require additional consideration. I have already started adapting the contents of this PR to address feedback and with consideration of many of the comments.

I am with you in this one on a personal basis. I think it is a change that should be discussed isolated, as it might have quite some chance of being as standard in FreeCAD. If not, it can be part of a profile (if we decide to introduce those).

This is a specific change which is trivial to revert. There was zero dissent regarding it among the design team.

  • Sketcher_CarbonCopy removed and placed into the Sketcher Tools toolbar.

I do not honestly understand this change. What is to be gained from it?

I can tell you what is inconsistent about it. Generally, we tend to group construction status abiding commands in the geometry toolbar. Having it elsewhere is a little bit odd to me.

Initially we had not considered that this tool actually observes the status of the construction toggle status. I find that functionality to be quite odd. I believe I may understand what it was intended to provide, but it just seems quite strange. Shape binders, external geom reference, and normal copy/paste of a sketch in the tree view all provide very similar functionality. I view this as duplication of functionality despite there perhaps being nuanced and potentially unnecessary differences. This would be a conversation beyond the scope of toolbars.

  • Sketcher_Dimension tool has been placed at the first position on the toolbar and is separated from the geometric constraint tools.

Not sure I get everything. Wasn't it already separated from the geometric constraint tools?

Here there were two reasons for having it the other way around:

1. We wanted the user to have preference for geometric constraints over dimensional constraints (so geometric first).

2. We wanted the button changing the "driving state" to be close to the dimensionals (on which it works).

I am not sure you have considered that.

I had considered that, however none in the design team had shared the view. In this, I actually rather agree. It is best practice to use geometric constraints first. I also didn't worry too much about it as it should be expected that the auto constraints of polyline would apply most requried relations. I think this is a chicken vs the egg debate however I will reverse this change.

  • Sketcher_ConstrainCoincidentUnified has been established next. Despite merging two functions which result in different impacts to degrees of freedom, these are expected defaults with a more naturalistic line of thinking which is an expectation of attachment of one point to another sketch element (point to point, arc, line, bspline)

In this PR, "O", which is the official shortcut of point on object is not working. If this is the situation in master, I think this needs to be reverted. I do not find it acceptable to take away well established shortcuts from the users. That is no longer about customisation of the toolbar

It really does seem once the command is removed from the toolbar definition that keyboard shortcuts cease to work. Again, I'll revisit this.

In any case, the icon, to me does not convey any kind of idea of coincidence or concentric. I do not see much any semantic advantage arising from the change of icon.

this has been a topic of conversation in discord as a result of this pr. Since the combined tool is currently optional, I merely wanted to give it a unique visual identity so it was differentiated from the more discreet options it combines.

I think the name "constraint coincident" is not right for such a merged constraint/tool. The tool is going to create a point-on-object constraint often. But I also see the difficulty with creating a name for a constraint, when the constraint is not going to exist with this name after creation.

This merged tool is the standard in other CAD and they all use the terminology 'coincident'. I would note that FreeCAD is the outlier in this convention.

I can understand the argument that we could have a single button to two functions because the selection is orthogonal. This solves the problem of reducing one icon. If one could argue that people may mix coincident and point on object, I could even think that it may be helpful as there would be a lower amount of error messages while getting the expected behaviour.

In the forum discussion which took place last year, the argument was made about degrees of freedom each constraint affected. However, when approaching this from a more naturalistic view, these are all forms of simple attachment. I think tangency is more complex and shouldn't be considered for a 'smart' application with these functions.

  • Sketcher_ConstrainHorVer new icon to better indicate what this tool does.

Well, the icon is better than the previous one IMO.

I think it is not appropriate to merge "horizontal" and "vertical" under this new "tool", and I say "tool" because it is not a constraint, but a tool for generating constraints.

While you are not completely wrong in this. Once a button is added to the toolbar it becomes a tool to generate constraints. We can pursue ways to more quickly and efficiently apply constraints, or we can transit back and forth between the sketch and the toolbar to manage each one discreetely. Minimizing time processing a vast selection tools to get the same end result is generally considered a good thing. It is an offloading of complexity in decision-making from the user to the tool making logical inference based on easy to understand rules.

  • Sketcher_ToggleDrivingConstraint now grouped as default with Sketcher_ToggleActiveConstraint

Look, if it is really so bad to have the active constraint button on view, please remove it and leave only the option to deactivate from the constraints widget, but do not group. This grouping is odd. It hides a state changing button "driving state". Alternatively it can go in one profile and not in another.

This may be another place where the 'tool settings' framework developed by paddle could be applied instead. I am not sure the grouping is particularly odd either. Group two state changing functions together with the assumption that one is more used than the other. With an absence of telemetry, some assumptions have to be made regarding user interaction until they have a chance to use proposed changes. Possibly both buttons can be offloaded to the task panel. However, the current implementation of right-click menu toggle in the constraints list is awkward to use and not nearly as discoverable as grouped functions on the toolbar. I consider that to be a poor alternative.

  • Auto constraint snap angle for horizontal and vertical constraints has been increased from 2 to 4 degrees.

Where is this in the UI? Or it is just not?
This is not in the UI. I had mentioned that I was experimenting with this value and others wanted to try it so I included it in the draft. I'd like to change the value to a modifyable parameter with a default of 4, but either change would need to go into a separate PR before considering for actual merge.

Overall, I think you (plural your group in discord) have faced a strong UI limitation with the drop-down grouping tool. Perhaps we should think of introducing an alternative way, as I think the intensive use of this tool does create more problems than it solves.

I think there's a great argument to be made here in favor of something such as a ribbon toolbar as they effectively handle large groups of tools much more efficiently, however that would be a much larger fundamental change to FreeCAD and certainly goes beyond a near-term goal to make improvements before 1.0 is released.

@PaddleStroke
Copy link
Contributor

@abdullahtahiriyo I think the U/J is fixed in the rotate PR.

kadet1090 added a commit to kadet1090/FreeCAD that referenced this pull request Dec 16, 2023
This is fix to issue mentioned in the FreeCAD#11717, on discord and forum that
for smart dimension tool the chosen tool should not be remembered. This
will ensure that the "smart" tool is always visible on the toolbar and
other tools are accessible in case that such explicit choice is needed.
@kadet1090
Copy link
Contributor

  • Conics command group has been divided and added to the circle and arc groups.

From a UI/UX point of view, I think the drop-down facility is not well-adapted to this grouping. The reason is that there is one prevalent option (circle | arc of circle) which gets removed from view when any of the other elements of the drop-down menu is selected.

This is valid, there should be two types of drop downs, one where the default remains static, and one where the most recent tool stays on the surface. I would expect that this need has been addressed in other software whith perhaps a solution which could be leveraged in FreeCAD.

Addressed in #11745 which hopefully will get merged without much problem.

@obelisk79 obelisk79 reopened this Dec 16, 2023
@obelisk79 obelisk79 marked this pull request as draft December 16, 2023 23:22
@abdullahtahiriyo
Copy link
Contributor

Well, I must say I welcome the current constructive attitude and the will to code to fix issues. It rarely gets better than that.

I do not judge people. I note issues with code and functionality. I attempt to be objective and make reasoned statements. I have full understanding and sympathy for people who are starting with coding or are recycling from other languages or from 20 years ago. None of us was born coding. We all have made coding mistakes. I continue to do them. In my experience, most of the rest also do.

While I will never condone toxicity (in any form), I think this UI redesign effort (including the parts already "in") has suffered from a lot of poor communication (and everybody should be ready to admit, even if only to oneself, its share of blame). I will address "forcing change" vs "driving change" later. There is a huge difference between both and the (negative) reaction you see comes, in a very important part, from applying the first instead of applying the second. The final outcome codewise may be different applying the second (or may not), generally is better. The community aspect will be better for sure.

At the same time, it would have been great that the FPA or you, had told me, as the maintainer of the sketcher, that this workbench had been selected for a design revamp beforehand. I am not FPA, but I am close to them and support them within my possibilities.

That said, while you may regard the CDDG as a cheeky comment, that is the way it has worked for a long time at sketcher level. While perfection does not exist, I do not think we did that bad. I am rather proud of this approach and for me it is extremely important. Nothing about the FreeCAD without the FreeCAD community. To this, I have nothing against people discussion and synchronising in Discord, or elsewhere. But it needs to be discussed in the forum (with a lot of humility, open ears to listen and not just dismissing different opinions).

Everything is open for discussion, but it is an exercise where arguments count and value judgements and arbitrary decisions are treated as such. The opinion of everybody is important. No argument/value judgement/arbitrary decision will have more strength because of entitlement or position. That also applies to me. I am no better than you.

If a specific change faces strong opposition, the status quo ante has preference. This is not bad, but good, because forces the change driver to excel and compromise. I do not see compromise as failure. Failure is either functional failure or alienating another part of the community.

I happen to have met change quite often in my life. I have often heard about people as inertial objects opposing change. I have found nobody opposing a salary increase for themselves. What is difficult about change is engaging people. The most important part of it is that people gets convinced (or at a minimum neutral) about the need for change and the improvements change will bring. People are seen as naturally opposing change because of how change is brought upon them and the intrinsic actual value of the specific change. If people understand the value of change, they tend to embrace change (or at least are neutrally skeptic about it), but they do not oppose it. You drive change when you arrive to that state. Otherwise you force change. No, it is not easy to drive change and it is not digital binary either. The humble goal is to make change be the farthest away from "forcing change".

Last bit, I want this "us" vs "them" to stop (from both sides, no finger pointing, we reset and start anew). There is but a single "us" here. I will try to remind that to anybody.

I will come back in a couple of days. I will read whatever you have written here and will take a look to your ideas and PRs.

@macdroid53
Copy link

I would just interject here, that there never was an intent to "force change". There was, as you say, a misunderstanding of how an experimental PR was to be label.
The toxicity and outrage, could have been "nipped in the bud" with a couple well placed questions, rather than outrage. And also, as you say, some prior advertisement might have even avoided the wrong label.

yorikvanhavre pushed a commit that referenced this pull request Dec 18, 2023
This is fix to issue mentioned in the #11717, on discord and forum that
for smart dimension tool the chosen tool should not be remembered. This
will ensure that the "smart" tool is always visible on the toolbar and
other tools are accessible in case that such explicit choice is needed.
@obelisk79
Copy link
Author

I don't think this is such a good idea, deactivating a constraint is pretty useful to fix flipped sketches and similar situations so I don't think it's a good idea to make it hard to discover.

@adrianinsaval perhaps you can help me. I was experimenting with the deactivate tool this evening, and I can understand its uses. However, once you deactivate a dimension, how do you reactivate it since you can no longer select it in the 3d view?

@obelisk79
Copy link
Author

For the sake of furthering this conversation I'm just going to refer to these 'concise toolbars' under the assumption that we eventually get some kind of toolbar profile system implemented in FreeCAD. In the grand scheme of FreeCAD's user experience, there is an effort to implement a simple first run settings page which could allow for easy selection of concise vs verbose toolbar profiles.

Continuing the conversation, I have tweaked and normalized the toolbar constraint icons:
Some were poorly drawn, or just lacked visual refinement. Since I decided to create the icon for the new unified coincident tool this made sense to do:
image

@obelisk79
Copy link
Author

obelisk79 commented Dec 20, 2023

Revisiting the toolbutton organization I have evolved the proposal to look like the following:
image

Note that the geometry toolbar is now dedicated to the creation of geometry, and the same ideology is applied to the constraints toolbar. Other functions have been carefully placed in a 'sketcher tools' toolbar with carbon copy, fillet, trim and external geometry placed at the left end for presumed default placement to the right of the geometry toolbar.

In accordance with the Design Guide, this allows for all sketcher toolbuttons (assuming bspline tools is hidden by default) to fit in a single row across a 1080p display @24px scale with no klipping of toolbuttons. This saves on critical vertical screen space, while leaving all functionality still accessible with one exception.

The deactivate dimensional constraint tool is not present here. This is only a tentative change, however it appears the tool is only effective at deactivating a constraint, and a user must use the constraints list in the sketch task panel in order to reactivate. This is considered bad UX (having to enable/disable a feature using two different modalities), therefore, unless there is an interaction I was unable to discover, my recommendation is to remove this from the toolbar.

@adrianinsaval
Copy link
Member

The deactivate dimensional constraint tool is not present here. This is only a tentative change, however it appears the tool is only effective at deactivating a constraint, and a user must use the constraints list in the sketch task panel in order to reactivate. This is considered bad UX (having to enable/disable a feature using two different modalities), therefore, unless there is an interaction I was unable to discover, my recommendation is to remove this from the toolbar.

I think this makes more sense than grouping it under toggel construction

Continuing the conversation, I have tweaked and normalized the toolbar constraint icons:
Some were poorly drawn, or just lacked visual refinement. Since I decided to create the icon for the new unified coincident tool this made sense to do:

Since you're reworking the icons this might be a good oportunity to say that the block constraint icon doesn't make much sense to me. I don't have a better idea though, the lock icon from the lock constraint IMO communicates the meaning better but that one is used already.

@adrianinsaval
Copy link
Member

About the rendering order toolbutton, IIRC this functionality is mostly used to choose which object type has selection priority, would it maybe make sense to extend while in sketcher the available filters in the newish Part_SelectFilter command instead?

@abdullahtahiriyo
Copy link
Contributor

@obelisk79

Ok. I need to cover the basis first (sorry for dragging a little bit, but this is the first WB where this is being applied).

If I understood it all correctly, the wider objective is to remove inconsistencies across FreeCAD, so that FreeCAD has a consistent UI/UX across all WBs.

Q1) Do we have a document identifying the (major) inconsistencies of FreeCAD in terms of UI/UX?

To address this, a FreeCAD Design Guide.

Q2) Could I be pointed to it, so that I understand better the principles that are being applied to remove the inconsistencies.

In some reviews I have seen over the Internet, one of the most persistent criticism has been notifications to the user (poorly written or difficult to understand messages and unnecessary messages). I have introduced a Framework (together with the notification area) trying to address this. Trying to reduce the amount of model pop-ups to a minimum (all pop-ups where the user can just say "ok"). However, there is a daunting task of identifying which messages are relevant, which ones need to be redrafted, which ones are only relevant for developers and should not be presented in the notifications area. Additionally, I think the Sketcher is the only WB were there has been an effort to reduce the pop-ups.

Q3) Is consistent messaging something you want to address?

@abdullahtahiriyo
Copy link
Contributor

abdullahtahiriyo commented Dec 20, 2023

@adrianinsaval perhaps you can help me. I was experimenting with the deactivate tool this evening, and I can understand its uses. However, once you deactivate a dimension, how do you reactivate it since you can no longer select it in the 3d view?

There is one bug in the deactivate tool (or at least for me it is a bug, I have to track down changes to that section of code to see if it was intentional) that the value of the constraint is not shown (In the original version of the tool this was shown). This was important because one could see the value to which the dimensional constraint will "come back" after activation.

However, I seem to be able to select constraints from the 3D view and reactivate them:

Peek.2023-12-20.20-49.webm

Edit: I forgot the version (that is today's main branch):

OS: Ubuntu 22.04.3 LTS (MATE/mate)
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.35432 (Git)
Build type: Debug
Branch: main
Hash: 482b45dadca42c3bc23b2640c60108de89981d87
Python 3.10.12, Qt 5.15.3, Coin 4.0.0, Vtk 7.1.1, OCC 7.5.1

@abdullahtahiriyo
Copy link
Contributor

Since you're reworking the icons this might be a good oportunity to say that the block constraint icon doesn't make much sense to me. I don't have a better idea though, the lock icon from the lock constraint IMO communicates the meaning better but that one is used already.

The problem with the lock today, is that there is a "lock" constraining tool which has a lock as icon. So I wonder if that would be misleading. I have no fixed ideas either. I agree the block icon does not convey much meaning though.

@adrianinsaval
Copy link
Member

Could we entertain the idea of removing the lock constraint? I would think it's been superseded by the automatic dimensions tool

@adrianinsaval
Copy link
Member

There is one bug in the deactivate tool (or at least for me it is a bug, I have to track down changes to that section of code to see if it was intentional) that the value of the constraint is not shown (In the original version of the tool this was shown). This was important because one could see the value to which the dimensional constraint will "come back" after activation.

It's a pretty long standing bug then. I don't remember a time when this didn't happen, it would be great if deactivated constraints were as easy to select as activated ones. If I'm being honest I haven't used the tool in a long time due to this annoyance.

@obelisk79
Copy link
Author

@abdullahtahiriyo

If I understood it all correctly, the wider objective is to remove inconsistencies across FreeCAD, so that FreeCAD has a consistent UI/UX across all WBs.

The goal is to develop, evaluate and apply a set of design standards to FreeCAD which would improve general consistency, efficiency and presentation across the software. A rather significant task.

.

Q1) Do we have a document identifying the (major) inconsistencies of FreeCAD in terms of UI/UX?

To address this, a FreeCAD Design Guide.

Linked in my previous response.

.

Q3) Is consistent messaging something you want to address?

Yes, this will be yet another significant task. Right now, I have tried to focus the DWG on toolbars. Next will come a review of task panels and potentially review of menu structures. The rationale was to find smaller actionable items which align with the parts of the design guide which the design guide currently addresses.
Take note, that the Design Guide is still very much a work in progress and will evolve as a byproduct of my continued studies in UI/UX, discussion and consensus among the DWG, and lessons learned from these design reviews.

@obelisk79
Copy link
Author

@abdullahtahiriyo thanks for looking into the deactivate tool. A couple of questions:
1.0: Does it still make sense to keep this on the toolbar instead of controlling this from the task panel?
1.5: Selection priority of drawn elements in the 3d view continues to be a problem. Is this something you intend to address?
2.0: Agree, with your observation that the disabled dimension value should be displayed.

@adrianinsaval
Copy link
Member

can we add right click menu actions to constraints in the 3d view?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
safe to publish Enable Snap generation for this PR WB Sketcher Related to the Sketcher Workbench
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet