2D fillets and CNC
-
Yea. I Sketched up how I could calculate this. Was thinking I could make it into a tool that produces a preview and let the user specify the radius in the VCB.
-
@thomthom said:
Yea. I Sketched up how I could calculate this. Was thinking I could make it into a tool that produces a preview and let the user specify the radius in the VCB.
See my 2D Tools Arc etc for examples of this... you get dynamic VCB radius and segment preview etc
Note how the angle between the arc center and vertex and the side intersection sis the same... not [yet] drawn on your example ? -
@outland86 said:
Hi thanks for all the replies
you are on the right track
the picture looks about right
but you want to make it so you remove as little of the corner material as possible without
losing the abilaty to fit the square peg in the round hole so to speak.t bone is similar but a t shape instead of the dogbone shape pictured.
both have the same result.a router can cut square outside corners but not square inside corners so to allow all sorts of square parts to fit into other square holes and slots.
does anyone know if a plugin could be written to carry out this operation on a 2D drawing using just a point and click routine and also being able to set the radius prior
This could be written as an extension of Bezier Spline, whether for drawing or for converting existing curves.
I assume the parameters are the radius and the number of segments. There is also the angle of the small opening.
What a bout T Bones?Fredo
-
Hi and thanks
once more for all the interest
i am lost with all the math but i did draw apicture to illustrate
it is here.this is what is needed
to be able to create the fillets just by a single comand in sketchup where you point and click the corner point of the slot or square then choose the raduis for the arc. which would be the same as the raduis of the tool you would use to cut the material on the CNC router -
So you want to pick each corner individually? Not click on a face and have all corners filleted.
-
@outland86 said:
Hi and thanks
once more for all the interest
i am lost with all the math but i did draw apicture to illustrate
it is here.this is what is needed
to be able to create the fillets just by a single comand in sketchup where you point and click the corner point of the slot or square then choose the raduis for the arc. which would be the same as the raduis of the tool you would use to cut the material on the CNC routerThat's easy for orthogonal segments. But how does it work when the angle is not 90°?
Fredo
-
@unknownuser said:
That's easy for orthogonal segments. But how does it work when the angle is not 90°?
The drill bit would move on a vector in the middle between the two corners. With angles > 90° you will still get a curve, just smaller, but with angles < 90° you would get a half circle and edges that run tangentially back to the corner - simulating the drill bit moving up that direction.
-
Fredo - are you adding this to your Bezier Spline plugin?
One thing though, the behaviour would depend if the edges that make up the corner is an inner or outer loop. I'd think you'd need to have the base shape - as a face first. In order to determine this.
-
@thomthom said:
Fredo - are you adding this to your Bezier Spline plugin?
One thing though, the behaviour would depend if the edges that make up the corner is an inner or outer loop. I'd think you'd need to have the base shape - as a face first. In order to determine this.
Tom,
You are right. My initial idea was to integrate it as an extension of BezierSpline, which is the quick path.
However, the T-Bone is not symetrical and the question of inner vs outer is very relevant.So maybe it's not a good idea.
Fredo
-
I was looking briefly at it yesterday. My initial idea was letting the user pick Face Loops - like my Select Edge Loop tool in Selection Toys. you can click on an edge and it's use that loop, or pick a face where it'd take all loops.
Only thing which had me puzzled was - how to determine the offset of a point to go into the face?
Also - it's now the question to if outland86 want to pick each corner one by one.
Dog-bones are easy to determine, but with T-bones, you have two possible outcomes. What should determine this? the user pick each point and indicate direction. Or user pick loops and indicate which direction the tool would take around the loop and keep all T-Bone fillets going in the same direction.
-
Considering the application in outland86's original request, these cuts would only be used on the outside of a corner. Think of the rectangular tab that needs to be inserted in the hole. That's the reason for the relief cuts in the first place. I think if you selected the inner face of the rectangle, ran the tool, entered the diameter of the cutter and hit Enter. It would be enough. Perhaps there would be two menu entries. One for Dogbone and one for T-Bone In the case of the T-bone, I think you'd either settle on a convention or extending the short side of the rectangle or you'd have to choose the correct side.
-
I was thinking of that - but surely, there must be a way to calculate this without going through the overhead of testing points.
My idea - which I haven't tested, was using the angle of the corner (returned by .angle_between, using the normal of each edge segment) and determine if it needs to be rotated left or right depending on the direction of the edges on the face. As I understand, edges normally run counter-clockwise around a face, unless they are reversed. Which I'd then think could be used to determine if you should rotate left/right.
-
@dave r said:
I think if you selected the inner face of the rectangle, ran the tool, entered the diameter of the cutter and hit Enter. It would be enough. Perhaps there would be two menu entries. One for Dogbone and one for T-Bone In the case of the T-bone, I think you'd either settle on a convention or extending the short side of the rectangle or you'd have to choose the correct side.
"Outside" would depend if your on the outer loop of a face, or on a inner loop (a hole).
@dave r said:
Considering the application in outland86's original request, these cuts would only be used on the outside of a corner.
But what if the shape isn't a simple rectangle? That was just the example given.
-
@thomthom said:
I was looking briefly at it yesterday. My initial idea was letting the user pick Face Loops - like my Select Edge Loop tool in Selection Toys. you can click on an edge and it's use that loop, or pick a face where it'd take all loops.
Only thing which had me puzzled was - how to determine the offset of a point to go into the face?
Also - it's now the question to if outland86 want to pick each corner one by one.
Dog-bones are easy to determine, but with T-bones, you have two possible outcomes. What should determine this? the user pick each point and indicate direction. Or user pick loops and indicate which direction the tool would take around the loop and keep all T-Bone fillets going in the same direction.
RickW wrote an extra
offset.rb
method that's very useful.
To see which side of an edge a face is yo can offset the vertex_point a tiny amount by a +small_degree vector [use face.normal for rotation] and use aface.classify_point
test to see if the point is on the face, if it's not the the face is on the other side of the edge... -
If you are picking each point then only corners <180 degrees need the extra arc-hole, so place it on the smaller angle formed by the edges?
-
.angle_between
doesn't give a result in a 360 direction. Only 180. If you get a result of 15 degrees - it could be in either left or right direction. That's why it's a little bit more complicated. -
@thomthom said:
.angle_between
doesn't give a result in a 360 direction. Only 180. If you get a result of 15 degrees - it could be in either left or right direction. That's why it's a little bit more complicated.Get a 'cross' of the normal and edge vectors and if it's '-ve' you can make 180 adjustment?
-
Cross of the face's normal and the edge normal? If it's '-ve' - what does that mean?
-
Sorry- I was too quickly typing that up - I had to go somewhere urgently...
If you take the vectors of the two edges 'outwards' from the vertex.position you can then get the angle_between them.
The angle will always be returned as <=180 degrees - even if it's really >.
If you use edge_vector.cross(face.normal) you get +/-ve values in the result.
You can then 'cross' these together.
Getting the cross value returns different results depending on whether the angle is <180 or not - I think it will be 0,0,0 if it's <=180degrees ?
By noting the appropriate value of the z (?) you can add 180 to the angle if it's found to be needed when z != 0 [-ve?]...
You'll need to check the way these values change - unfortunately I haven't go access to my 'code-snippets' right now...
Sorry for the bad explanation - but it is possible to test for angles >180 this way - I have done it... -
Hello again and thanks for all the input
to better illustrate what the needs are for this plugin i have drawn a picture of the typical use of these fillets in a bit of sheet material say 3/8 inch MDF
while T bones would be good they are not critical .
however the dogbone type fillets are as you can see. t bones are just another way to get the same result.
when i drew this i noticed that the weld and trim comands were different for the inside square and the outside trims just thought i would note that..as the mathe must be different for both?
the options shown in the picture would be typical of the actual uses. i have uses a larger arc for this drawing but in real life the arc would be usually say 1/4 inch if cutting 3/8 thickness sheet material say plywood or MDF. i hope this better shows what i am trying to achieve..some of the projetcs i have in mind have hundreds of parts so doing it all by hand with circles etc would be a nightmare hence the need for a plugin to help automate this process. if you imagine when drawing if a guy or gal enter a radius then could point to the coner intersection of a square or inside corner then click and it would be selected then click again and presto a fillet appears one would be in CNC heaven
Advertisement