edwardvmills / Silk

NURBS Surface modeling tools focused on low degree and seam continuity (FreeCAD Workbench)
https://edwardvmills.github.io/Silk/
62 stars 11 forks source link

Improve tool tip documentation for most ops #28

Closed wandrewkeech closed 1 year ago

wandrewkeech commented 1 year ago

Addressing Issue #22 and expanded descriptions and operation of the following Silk objects:

luzpaz commented 1 year ago

@edwardvmills ping

wandrewkeech commented 1 year ago

Although it's been years I've messed around with git and done drive-by contributions I goofed on working on the PR for the icons. I have to take some time to figure out how to undo-and-redo those changes in a separate PR, maybe this weekend.

luzpaz commented 1 year ago

@wandrewkeech I'm concerned that @edwardvmills is AWOL. This workbench may need to be forked. If that is the case, would you be open to maintaining said fork ?

wandrewkeech commented 1 year ago

My only hesitation would be my incompetence. Happy to keep the seat warm until he is ready to take the mantle again, but I am not very experienced.

I wouldn't worry until at least a month has gone by, without talking with him directly about it. Perhaps you or other forum mods have some way of trying to get in touch with him.

edwardvmills commented 1 year ago

hi guys, sorry for the delay. if github sent me an email, i missed it. i'll need a bit to review in detail. looks good at first glance.

wandrewkeech commented 1 year ago

Succeeded reverting the icons, for which I'll make a PR from a new branch.

edwardvmills commented 1 year ago

hi, looks good but i have a few tweaks. would you rather i give detailed feedback or accept the merge now and change some details myself...later....when i get to it?

wandrewkeech commented 1 year ago

Your call! I am happy to make changes or you can do the changes when you feel you want to.

edwardvmills commented 1 year ago

my preference would be to tell you the fixes so you can tell me if you agree. i'll write it up briefly.

I still would like to see more of your models by the way :)

edwardvmills commented 1 year ago

ControlGrid44: [...]sequentially, and in a counterclockwise direction when looking from outside the grid (this controls inside versus outside)

discussion: this is a bit much to swallow, but inverted surfaces are a big pain to rebuild. so maybe the extra tooltip upfront is worth it. Silk just builds surfaces, but they are intended to form solids, which have an inside and outside. what do you think?

edwardvmills commented 1 year ago

this is too hard to write up in here, i'm going to comment on the files in the pull requests....which is what i should have been doing in the first place. i hope those comments will allow back and forth

edwardvmills commented 1 year ago

i think i have added all the notes i wanted. Curious to hear your opinion.

i think that a good format would be "NAME (exactly the way the objects get named in the document, but ignoring serial numbers)

SELECT X, THEN Y, THEN Z (BEFORE APPLYING TOOL)

TYPICAL USE 1 TYPICAL USE 2

EXTRA INFO"

because it gets hard to decide what is important enough to mention.....as you can see, in most cases, i had only made it to line 1 :)

edwardvmills commented 1 year ago

please don't feel pressured to respond to everything. I'm very interested in your opinion in regards to what is useful, because the model you shared in the past showed that you really were able to get a grip on the tools and make them do things i had not really thought about.

edwardvmills commented 1 year ago

quick note here since i merge the other pr. these same lines of code need to get updated icon file paths.

wandrewkeech commented 1 year ago

Yes, sorry, I noticed too late I didn't break out the icon references to the other branch. I'm working on a single file for the new tooltips so they're more readable and in one spot. I'll update here in the thread when I'm done.

wandrewkeech commented 1 year ago

Hi again, I have tried to both put more sign-posts in the tips for how the different parts work together, reduce redundant language (like saying "object" or "curve" a million times), and follow the above articulated schema so it's more cohesive overall. There are still some notable holes, and likely more information you will want to add in, I feel like this is more of a skeleton to start from:

ControlGrid44.py 
Create a ControlGrid44 from four connected ControlPoly4 edges. 
\n Select each edge in the loop sequentially, counter clock-wise looking from the outer side.
\n
\n • Input for CubicSurface_44 

ControlGrid44_2EdgeSegments.py
Create a ControlGrid44 from CubicSurface and two CubicCurve segments. 
\n Make the CubicCurve segments from ControlPoly4_Segments, select the 
\n CubicSurface, then CubicCurve segments on orthogonal sides. 
\n
\n • Use to create ControlGrid64_2Grid44 to blend edges of CubicSurface_44
\n   where blending three or more orthogonal surfaces to a corner
\n • Input for ControlGrid64_2Grid44 and CubicSurface_44

ControlGrid44_EdgeSegment.py
Create a ControlGrid44 from a CubicSurface44 and one CubicCurve4 segment. 
\n Make the CubicCurve segment from a ControlPoly4_Segment, select the 
\n CubicSurface first and curve segment second. 
\n
\n • Use to create ControlGrid64_2Grid44 to blend edges of CubicSurface_44
\n   where blending surfaces of a continuous contour
\n • Input for ControlGrid64_2Grid44 and CubicSurface_44

ControlGrid44_Rotate.py
Creates a ControlGrid44 from three ControlPoly4 edges. 
\n Select three ControlPoly4 edges, the selection order determines orientation. 
\n Curvature rotates from the first edge selected to the third edge following along the second edge.
\n Order is "left, bottom, right" with the rotational pivot at the "top" corner.
\n
\n • Input for CubicSurface_44 

ControlGrid64.py
Create a ControlGrid64 from two ControlPoly4 and two ControlPoly6 matching on opposite edges.
\n Select each edge in sequence (4,6,4,6), counter clock-wise looking from the outer side.
\n
\n • Use to create mixed degree contour surfaces
\n • Input for CubicSurface_64

ControlGrid64_2Grid44.py
Create a ControlGrid64_2Grid44 from two ControlGrid_44 that share a corner.
\n Select two grids that share an edge.
\n
\n • Use to blend the edge of two surfaces segmented with ControlGrid44_EdgeSegment 
\n • Input for CubicSurface_64 

ControlGrid66.py
Create a ControlGrid66 from four connected ControlPoly6 edges.
\n Select each ControlPoly6 sequentially, counter clock-wise looking from the outer side.
\n
\n • Input for CubicSurface_66

ControlGrid66_4Sub.py
???

ControlGridNStar66.py
Creates a ControlGridNStar66 from three or more SubGrid63_2Surf64.
\n Select from three to six SubGrid63_2Surf64 sequentially, counter clock-wise 
\n looking from the outer side.
\n
\n • Use to create ControlGridNStar66 to blend a corner where three or more
\n   CubicSurface_64 meet at a corner
\n • Input for CubicNStarSurface66 

ControlPoly4.py
Creates a ControlPoly4 from a variety of inputs: 
\n
\n - One sketch of three lines connected end to end 
\n - Two sketches containing a circle and a line each ("node" sketch)
\n - if a single sketch is selected that does not contain three elements, 
\n   the first element is converted (this works for line, arc of circle, 
\n   and arc of ellipse elements).
\n
\n • Input for CubicCurve_4, ControlGrid44, ControlGrid44_Rotate, and ControlGrid64 

ControlPoly4_segment.py
Create a ControlPoly4 on a segment of a Cubic_Curve, between two points on the curve. 
\n Select the curve first, then two points.
\n
\n • Input for CubicCurve_4 segments, which can in turn be used as input for 
\n   ControlGrid44_EdgeSegment, ControlGrid44_2EdgeSegments, ControlPoly6 

ControlPoly6.py
Create a ControlPoly6 from one of two inputs:
\n - One sketch of five lines connected end to end
\n - Two CubicCurve_4 objects connected at one end
\n
\n • Non-planar ControlPoly6 can be generated out of non-planar
\n   CubicCurve_4 segments generated from "node" sketches
\n • Input for CubicCurve_6, ControlGrid64, and ControlGrid66 

CubicCurve_4.py
Creates a CubicCurve_4 from a ControlPoly4.
\n Select one ControlPoly4 or ControlPoly4_segment.
\n
\n • Use Point_onCurve to subdivide with ControlPoly4_Segment
\n • Two CubicCurve_4 can be used to generate a ControlPoly6

CubicCurve_6.py
Creates a CubicCurve_6 from a ControlPoly6.
\n Select one ControlPoly6.
\n
\n • Use Point_onCurve to subdivide with ControlPoly4_Segment

CubicSurface_44.py
Create a CubicSurface from a ControlGrid44. 
\n Select one ControlGrid44 of any type.
\n
\n • Can be used for hard edge surfacing, or manually aligned for tangency
\n • Can also be blended along edges with other CubicSurface_44 objects with
\n   CubicSurface64 objects, for high degree continuity

CubicSurface_64.py
Creates CubicSurface_64 from a ControlGrid64 of any type.
\n Select one ControlGrid64 object.
\n
\n • Used for mixed degree contours, or blending edges of low degree contours
\n • Can be blended along the degree-4 sides like CubicSurface_44 objects,
\n   by segmenting CubicCurve_6 objects on the degree-6 sides

CubicSurface_66.py
Create a CubicSurface_66 from a ControlGrid66.
\n Select one ControlGrid66.
\n
\n • Can be used for hard edge surfacing, or manually aligned for tangency
\n • Degree-6 edges cannot be blended with Silk tools

Point_onCurve.py
Create a point on a Cubic_Curve4 or Cubic_Curve6. 
\n Select a location on the curve to place the point.
\n
\n • Input as endpoints of ControlPoly4_Segment

StarTrim_CubicNStar.py
Create a StarTrim_CubicNStar object from a CubicNStarSurface_NStar66 object.
\n Select one CubicNStarSurface_NStar66.
\n
\n • Useful for eliminating pinch in poor corner geometry, and can be patched with 
\n   a standard Filling Surface

SubGrid33_2Grid64.py
???

SubGrid63_2Surf64.py
Create a SubGrid63 subgrid from two CubicSurface64 surfaces.
\n Select two CubicSurface64 objects that share a corner. 
\n
\n • Input for ControlGridNStar66 to blend three or more 
\n   blended edges meeting at a corner
edwardvmills commented 1 year ago

this looks amazing. i'd like to tell you more about the ??? (subgrids), but i think we should implement what you have already right away. once the structure is in place, we can refine individual items. I'd like to do a video meeting with you, but if you can't, i'll try to do short videos for each item. videos have been on my list for years and i keep procrastinating...which is why meeting might be more fruitful.

it's tough with a full time job... i go to make a video, then i want to implement something, then i need a new test model...and still no video :(

the answer is obvious, i need to make videos for existing models, and not screw around...a problem as old as free software

wandrewkeech commented 1 year ago

Beautiful, I'll get the PR sorted with a quick cut'n'paste on my lunch break. I believe the updated icon paths are in this PR as well, I'll double check that they're correct too.

Very open to a video meeting when it's convenient, would be great to meet you. I also have been wanting to produce (and still not producing) a video demo as well, and have ideas for convenience macros which would be better to discuss face to face (just for the sake of speed etc).

edwardvmills commented 1 year ago

i sent you a messge on the freecad forum.

edwardvmills commented 1 year ago

FreeCAD was failing to load the WB because of an indentation thing in ControlGrid44_Rotate. fixed it (replaced spaces with tabs)

edwardvmills commented 1 year ago

the StarTrim_CubicNStar icon is linked correctly, but FreeCAD shows me the CubicNStarSurface_NStar66 instead. it's really weird. does it work on your machine? distinct icons?

wandrewkeech commented 1 year ago

Nice. Thanks for cleaning that up for me, no idea how that would have happened.

luzpaz commented 1 year ago

Nice work y'all!

edwardvmills commented 1 year ago

Hey Andy, i implemented something similar to what luzpaz suggested here to format the tooltips. https://github.com/edwardvmills/Silk/pull/32 I went further and pulled out the tooltips into their own string variables to make multiline editing easier. I have 8 done and many to do. https://github.com/edwardvmills/Silk/commit/490cc57672832845d26403fd0109afb649d7c6a0

I added some additional info in the tooltips, but I tried to keep it down at the bottom so hopefully it's not too distracting. Once they're all done, i'm hoping to go back in and trim some of that extra info, so that it makes a nice progression as you read the tooltips on the toolbar left to right.

edwardvmills commented 1 year ago

if interested, see new comment on https://github.com/edwardvmills/Silk/issues/22, related to https://github.com/edwardvmills/Silk/commit/b7a4bf1388cb12633d724ab1efbb093cee879fc9