Thank you Roland. I have always appreciated your comments.
@jim Hi Jim, can you modify the code to combine the final generated rounded surface and edge curves to join together? This would be more convenient.
Iâm hoping to avoid doing that.
You can join the fillets by running this macro when the script ends:
selnone -selname âfillet*â pause join enter
If you are running the version ( filsrf_crvs.py ) that makes edge curves you can add this macro to get the joined edge curves.
selnone -selname âsidecrvA*â pause join enter selnone -selname âsidecrvB*â pause join enter
If you have a small gap in the fillet string you should probably do something to fix that before joining.
If you do the joining with a macro and decide you donât want them joined you can undo. If the script joins things there is no undo available for the join.
The unjoined curves and fillets have serial numbers in the order that the script created them. When theyâre joined that information is lost.
Yes and that is the problem Mcneel created that I think I may have found a way to overcome.
The main problem I have with is that I didnât want to release any code that did additional actions that canât be undone. In other words, after years of using the code in FilserfEx.py I know the original script is rock solid.
Disclaimer:
I also know that if I add many of the requested features it may not be as reliable (because I have already tried it) and therefore I am OK with adding any features requested but I want to do it in a way that if it fails it will be clear that the failures are something out of my hands. If it does not work donât ask me to fix it, ask McNeel. The original script only produces the same fillets you can make with FilletSrf command.
For those of you who have asked for the fillet string to be joined after the script completes , here is a new script that essentially adds the macro that you, the user should be able to add after the PythonScript finishes. A bug in Rhino prevents anything to be added in a macro after a python script completes. So this is my attempt to workaround this bug.
Here is the the new script with about a dozen lines added at the end of the old script that emulates the user adding a macro that joins the fillet string and leaves it selected so the users can do with it what they will ( I assume the user wants to use it to trim the base surfaces). The script also produces the joined edges which some users have requested.
Filsrf_crvs2.py (41.2 KB)
The few times I have tested this it works OK. The main import of this version is that I think I have a handle on how to control the undo stack within a script. If that works without fail then more actions that can be undone can be added. I donât mind adding stuff if it can be undone. That way if the user doesnât want the additional action they can undo it.
If anyone finds a problem in the way this works let me know. I suspect there may be problemsâŚ
As the old song goes:
Trouble ahead Trouble behind
And you know that notion Just crossed my mind
The new version of the script works perfectly fine! Thank you for putting the effort to make it more polished!
I tried the new script on the test 3d scene you provided and using the selected output proved that sometimes the joined fillets are unable trim the input polysurfaces, whereas the extracted border can. To make sure that the input polysurfaces will be always trimmed or split (I prefer splitting), I simply click on a blank area in the viewport to deselect the output objects, then run ! _Split
and use the border curves. Works 100% of the time that way.
Here is one of those polysurfaces that refuse to be split or trimmed via the joined fillets.
That depends on your definition of âworksâ.
Usually when using the fillet surfaces as the cutter fails to trim (or split) its because there is something wrong with the base surfaces. In this case the green polysurface does not have very good edge continuity. Some of the edges are out of tolerance. That is the sort of thing that makes trimming with fillet surfaces fail to trim. If you remake the green polysurface so that it has more accurate edges then you can trim (or split) with the fillet loop and the end result is a more accurate model.
wingnut_fillet.3dm (253.5 KB)
Also, I posted this model last week:
Rhino7_Bad_Edges.3dm (309.3 KB)
The idea is to construct .125" fillets between the cyan polysurface and the black surface. The fillet radius has to be exactly .125 so that it connects to the existing fillets on this imported modelâŚ
Either trimming (or splitting) with the edge curves or trimming with the fillet surfaces appears to work, but when you join the whole thing together you find that trimming with curves makes a bad object at the join command. And the messed up edges and bad surfaces caused by trimming with curves are not easy to fix.
Anyway, Iâm not claiming trimming with the surfaces works more often than trimming with the curves. Iâm saying it is less likely to cause joining problems.
So, it only does half the job? And only if things are already tangent
Except for the trimming and joining partâŚ
lol
sounds like alot oâ clicks.
idk bout that.
Can you make a video demonstration and post it
hmm that looks cool
Is it really a plugin thoâŚ
@Rhino_Bulgaria
quite a bit oâ kinks on that one
I wont mark all over it because itâs pretty obvious that Rhino render mesh is really bad at illustrating tangency of curvature:
Maybe the excuse is itâs not all joined? or maybe itâs âfile toleranceâ, idk, but Rhino has always been bad about throwing off the user that knows something is tangent but the shading makes it look kinky.
*spits out coffeeâŚ
wait did you just fillet two closed polysurfaces together?
what kinda sorcery is this
looked like you only picked part of the brep faces but looks like incorporated all them âŚ
thatâs a pretty coo fillet imo @Rhino_Bulgaria
Orange would be better. Itâs a trade secret though. Donât tell anyone
*spits out coffee again, wait what
ikr, Iâm pretty sure the edges are here in this room rn
Seems like they pushed @jim to do it ⌠like he got tired of waiting
what lol, sounds interestingâŚ
yeah, but using edge curves is usually more successful imo.
I was wondering what that was. Good to know it still kinda worked?
You been busy
I thought it was you
ikr, if he could make it so it worked on already joined surfaces that donât need to be exploded first, that would be great and trim automatically too
Iâve often found that trimming will fail during times when instead using âcrvâ and selecting surface edges as cutting objects will over come the failure of just trying to rely on the surfaces.
I still think the render mesh and âedges pulled away from originalsâ is the leading factor in these failures.
And using âcrvâ in the middle of the trim command will often resolve this short coming.
But I guess it depends what youâre actually referring to.
You should make a version that fills the gaps, and call it âsandpaper and putty fillet blendâ or something. âa little tolerance can go a long wayâ
I was jus mentioning that. I use that alot
wait what
ikr why so many secret commands
Hard work turns Rhino users into CAD ninjas.
Bobi, go work at McNeel, get hired - thatâs an order!
I donât have the necessary skills, I just make some suggestions for improvements.
I think itâs quite the opposite Bobi, they probably donât have enough developers or institutional knowledge to keep up with your amazing suggestions.
Keep up the great work regardless!
G
Thank you! I think that we, the basic Rhino users, see only a fraction of the whole picture whatâs happening behind the scenes at âMcNeelâ.
I fully agree with you that the developers must devote time to improve the major NURBS modeling and editing tools such like âBlend surfaceâ, âMatch surfaceâ, âPatchâ (see what xNURBS does in comparison), âRebuildâ (especially conversion to single-span Degree 5 with 6 points), âLoftâ, âSweep 1/2 railsâ, a new âSweep 3 railsâ tool, added âExplicit controlâ option inside the surface creation tools, better control point editing tools, etc.
However, I can also see that the developers are trying to attract customers who are typically coming from mesh modeling programs, this is why SubD was such a big deal for them while developing Rhino 7. For Rhino 8, I would love to see the aforementioned improvements, but after trying Rhino 8 WIP by myself I canât see it happening before Rhino 9 or 10.
This is a great tool as is. Just wondering if you have any plans on making it able to build G2 blend fillets?
No I donât have any plans for that.
The way I look at it the code for rolling ball fillets is reliable, accurate and fast.
Code for G2 blends would be much less reliable, less accurate and slower.
So, if I manufacture a product with CNC and Iâm using a ball tool, and my scallops are 0.0055"-0.007" apart, is that G0,1,2 or 3?
And what would it be after sand paper nâ polishâŚ
Is what G0,1,2 or 3? The scallops?: the ball tool? the CNC???
Anybody involved in the manufacturing a product as you described would be puzzled and/or amused by your question.
I used the word âscallopsâ, but really Iâm considering all forms of tool marks and surface finish from all forms of manufacturing processes.
Not to mention facets and tessellation manifested from CADâs or CAMâs exchanges etc. â but thatâs part of the argument of âtrue filletâ I suppose.
Itâs real cute how the F1 help docs sneak in some calculus nomenclature in there, but I think most people that want to build things and create a better world, just really only care about âtangencyâ â imo.
Although most manufacturers love to cut corners and leave sharp edges everywhere on their products and leave burrs on everything.
I guess Iâll need to study calculus better to know derivatives better, to understand G1,2,3 better.
Then Iâll know how to manufacture an âinner roundâ, and/or âouter roundâ of an edge of a product better, so that the product wont have sharp edges prone to fracture or harm of a customer, and inner corners prone to fracture as well â leading to product failure.
https://www.custompartnet.com/glossaryimages.php?iid=1902
Example of âscallopsâ manifested from CNC manufacturing process.
While tryna find better examples illustrating tool scallops, I stubbled on this:
Hi all, I have the following formula for calculating the âscallop heightâ (h) with a spherical cutter of radius ÂŽ, given the âstepoverâ (x). h=r-\sqrt{r^2-(x^2/4}) [image] With my remnants of high-school algebra, I tried to âreverseâ the formula to solve for x given a desired h. However, my formula does not give me an accurate result, so I must have done something wrong⌠x=\sqrt{8*h*r-h^2} So, does anyone know how to do this correctly? TIA, --Mitch
Kinda of a random thread he made about scallops lol. Not sure what it was about though other than that equation
Itâs actually really weird how hard it is to find good examples of thisâŚ
Marvelous!
Is there any intention to release the Grasshopper version of the code?
Is there any intention to release the Grasshopper version of the code
What would make a python script a Grasshopper version?
I donât know, I just think it will be really wonderful if there is a GH component that can do the same thing.