import Rhino
import scriptcontext as sc
import rhinoscriptsyntax as rs


def StraightenPolyline():
    
    while True:
        id = rs.GetObject("Select a polyline",4)
        if not id:return
        
        sim = Rhino.Geometry.CurveSimplifyOptions.RebuildLines
        
        if not rs.IsPolyline(id):
            rs.SimplifyCurve(id)
            if not rs.IsPolyline(id):
                print "That was not a polyline"
                continue
                
        pts = rs.PolylineVertices(id)
        if not pts: return
        
        line = rs.GetLine()
        if not line: retrurn
        vecDir = line[1]-line[0]
        vecDir.Unitize()
        
        distList=[]
        pLast = line[0]
        
        for i in range (len(pts)-1):
            rs.AddPoint(pLast)
            length = (rs.Distance(pts[i], pts[i+1]))
            pTarg = pLast+(vecDir*length)
            x = rs.AddLine(pLast, pTarg )
            if x: rs.MatchObjectAttributes(x,id)
            pLast=pTarg
            
        rs.AddPoint(pTarg)
    
if __name__ == "__main__":
    StraightenPolyline()