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).
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) is not list ):
rc = Rhino.Geometry.Vector3d(vector, vector, vector)
if( (type(vector) is Rhino.Geometry.Point3d) or (type(vector) is Rhino.Geometry.Point3f) ):
rc = Rhino.Geometry.Vector3d(vector.X, vector.Y, vector.Z)