Some Googling turns up the code below. Basically it tries to convert a Python tuple or list or a Point3d struct to a Vector3d struct.

Even though Python is dynamically typed, it still has types. The correct type needs to be used to ensure that the right code is executed, especially when interacting with strongly typed code (e.g. RhinoCommon).

```
def coerce3dvector(vector):
"""
Convert input into a Rhino.Geometry.Vector3d if possible.
If not possible, return None
"""
if( type(vector) is Rhino.Geometry.Vector3d): return vector
if( type(vector) is list or type(vector) is tuple ):
length = len(vector)
if( length == 3 and type(vector[0]) is not list ):
rc = Rhino.Geometry.Vector3d(vector[0], vector[1], vector[2])
return rc
return None
if( (type(vector) is Rhino.Geometry.Point3d) or (type(vector) is Rhino.Geometry.Point3f) ):
rc = Rhino.Geometry.Vector3d(vector.X, vector.Y, vector.Z)
return rc
return None
```

http://lmgtfy.com/?q=utility.py+coerce3dvector