import rhinoscriptsyntax as rs
import scriptcontext as sc
#FILLET SRF MULTIPLE 1.02
go = Rhino.Input.Custom.GetObject()
go.SetCommandPrompt("Select surfaces to fillet from")
go.GeometryFilter = Rhino.DocObjects.ObjectType.Surface
go.SubObjectSelect = True
if go.CommandResult()!= Rhino.Commands.Result.Success:
surfaceSelection = 
for i in go.Objects():
pickedSurfaces = [ rs.coercegeometry(guid) for guid in surfaces ]
referenceGUID = rs.GetObject("Pick surface to fillet to", filter=8)
reference = ( rs.coercegeometry( referenceGUID ) ).Surfaces [ 0 ]
radius = rs.GetReal("Enter radius value")
filletSrfArrays = 
for srf in pickedSurfaces:
#expected Surface, got Brep
createFilletSrf = Rhino.Geometry.Surface.CreateRollingBallFillet(srf, reference, radius, 0.01)
for array in filletSrfArrays:
for srf in array:
surfaces = getSurface()
#this tool should have a preview option, enabling a flip to be done there.
# Surface.CreateRollingBallFillet(Surface, Point2d, Surface, Point2d, Double, Double)
#use a pick, bounce the point off the surface pick direction, then pull to the 'reference'
# surfaces_to_fillet( surface, point )
# for srf in surfaces_to_fillet:
# Rhino.Geometry.Surface.CreateRollingBallFillet(refSurface, refPoint2d, surface, point, Double, Double)
Here is my latest change to the script. Still lacking anything advanced. I got recommended to use the brep version of filletsurface though.
I think it would be really good if you could have the visual like in fillet edge with the ability to change the radius value per surface clicked. And maybe the setting of whether to extend for each.
Is there anybody else that thinks this would be handy? Even if it was just a test command?