great. thanks! and don’t worry, i won’t come crying to you when i break your code 
[quote]
But I agree with Mitch that manually importing functions is a nice idea and I’m glad it works for you [/quote]
might be cool to use with an editor which can store snippits… does the built in editor on windows do that? i’ve tried out Atom before which does it pretty easily.
put to use here:
"""ExtrudePlanarCurves -- note* if using BothSides option, the overall extrusion
will be the entered distance.. this is different than bothSides in typical
Rhino Commands in which the distance entered will be 1/2 overall extrusion"""
import rhinoscriptsyntax as rs
import Rhino
import scriptcontext
def extrudePlanar(crv, opts, distance):
for i in range (len(crv)):
curve = crv[i]
plane = rs.CurvePlane(curve)
origin = plane[0]
vec = plane[3]
direction = rs.VectorScale(vec, distance)
point = rs.PointAdd(origin, direction)
if opts[1]:
bsdir = rs.VectorScale(vec, distance/2)
bspoint = rs.PointAdd(origin, bsdir)
trans = (origin - bspoint)
newcrv = rs.CopyObject(curve, trans)
ext = rs.ExtrudeCurveStraight(newcrv, origin, point)
rs.DeleteObject(newcrv)
else:
ext= rs.ExtrudeCurveStraight(curve, origin, point)
if opts[0]:
rs.CapPlanarHoles(ext)
if opts[2]:
rs.DeleteObject(curve)
def getnumbools( prompt, default, boolnames, boolvals ):
while True:
scriptcontext.escape_test()
gnu = Rhino.Input.Custom.GetNumber()
gnu.SetCommandPrompt( prompt )
gnu.SetDefaultNumber( default )
indexlist = []
optionlist = []
for ix in range( len( boolnames ) ):
index, option = gnu.AddOptionToggle( boolnames[ ix ],
Rhino.Input.Custom.OptionToggle( boolvals[ ix ], 'No', 'Yes' ) )
indexlist.append( index )
optionlist.append( option )
gnu.Get()
if gnu.CommandResult() == Rhino.Commands.Result.Cancel:
return []
res = gnu.Result()
if res == Rhino.Input.GetResult.Option:
opind = gnu.OptionIndex()
ix = indexlist.index( opind )
option = optionlist[ ix ]
boolvals[ ix ] = option.CurrentValue
elif res == Rhino.Input.GetResult.Number:
number = gnu.Number()
break
result = [ number ] + boolvals
return result
def input():
crv= rs.GetObjects('Select planar curves to extrude', 4, True, True)
if not crv: return
for i in range (len(crv)):
if not rs.IsCurvePlanar(crv[i]):
print 'All curves must be planar'
return
nas = [ 'Solid', 'BothSides', 'DeleteInput' ]
vas = [ True, False, False ]
dft = .75
tp = getnumbools( 'Extrusion Distance', dft, nas, vas )
if not tp: return
distance = tp.pop(0)
if distance == 0:
return
extrudePlanar(crv, tp, distance)
input()
that’s way way better for me 
it’s a good prototype of what could eventually be added to the standard library (imo)