Notifications
Clear all

[Closed] Fillet Knots

I’m trying to think of the best way to fillet a spline knot.
My guess would be to approach it like this.

Find the desired knot you wish to fillet. Then take the desired radius chosen by the user (in this case 10cm) and create a knot on each spline 10cm from the selected knot. Then delete the knot in between them after adjusting the handles to make a curved radius. Below is s start just basic setup.

Like to know what others think.


delete objects

sp = splineshape pos:[0,0,0] wirecolor:yellow
addNewSpline sp
	addKnot sp 1 #corner #line [25,25,0]
	addKnot sp 1 #corner #line [-5,25,0]
	addKnot sp 1 #corner #line [-5,-10,0]
addNewSpline sp
	addKnot sp 2 #corner #line [10,5,0]
	addKnot sp 2 #corner #line [-15,5,0]
	addKnot sp 2 #corner #line [-15,-10,0]
addNewSpline sp
	addKnot sp 3 #corner #line [-10,20,0]
	addKnot sp 3 #corner #line [-5,35,0]
	addKnot sp 3 #corner #line [10,15,0]
updateShape sp  -- update shape

clearlistener()

for k = 1 to numsplines sp do
(
	--fillet second knot of each spline with a radius of 10
	
)

6 Replies

This better illustrates what I was talking about method wise.
Obviously there is a lot of room for improvement as this would only work in a perfect scenario.

Just an idea though…


delete objects

sp = splineshape pos:[0,0,0] wirecolor:yellow
addNewSpline sp
	addKnot sp 1 #corner #line [25,25,0]
	addKnot sp 1 #corner #line [-5,25,0]
	addKnot sp 1 #corner #line [-5,-10,0]
-- addNewSpline sp
-- 	addKnot sp 2 #corner #line [10,5,0]
-- 	addKnot sp 2 #corner #line [-15,5,0]
-- 	addKnot sp 2 #corner #line [-15,-10,0]
-- addNewSpline sp
-- 	addKnot sp 3 #corner #line [-10,20,0]
-- 	addKnot sp 3 #corner #line [-5,35,0]
-- 	addKnot sp 3 #corner #line [10,15,0]
updateShape sp  -- update shape

radius = 10.0

clearlistener()

for k = 1 to numsplines sp do
(
	parts = getSegLengths sp 1
	format "%
" parts
	
	refineA = (parts[3]-radius)/parts[3] as float
	refineB = (radius)/parts[4] as float
	print refineA
	print refineB
	
	refineSegment sp 1 1 refineA
	refineSegment sp 1 3 refineB
	
)
deleteKnot sp 1 3

--knot one adjustments
knotA = getKnotPoint sp 1 2
setOutVec sp 1 2 (knotA += [-5,0,0])

--knot two adjustments
knotB = getKnotPoint sp 1 3
setInVec sp 1 3 (knotB += [0,5,0])

updateShape sp --update the shape to see the result

sp.vertexTicks = true


Anything wrong with the method that is already available?

splineOps.startFillet <editable_spline_or_line_node_or_modifier>

Enters “Fillet” command mode – valid in Vertex Sub-Object level.
See Editable Spline Modify Panel Command Modes and Operations for full list of UI-related methods.

oh, I just noticed that this will simply start the fillet mode. sorry .

I have a circle with a radius of 10 at the position [0,0,0]

How does it calculate the Y of the first knot’s in vec [10,-5.51786,0]

Below is an image with 2 arcs. One is 90 degrees the other is 45 degrees. How can I calculate the handles positions to create my own arcs?

Anyone have any ideas how you calculate the in and out vectors of a spline’s knot to make a arc?

Not an answer per se, but looks like someone did something similar. Perhaps it will give you an idea of how they did it.

http://blenderartists.org/forum/showthread.php?204727-2D-fillet-script