Orient and Rotate3D

Hi all
the attached Python Script orients and rotate3d objects : it’s more intuitive of Orient3pt

#-*- encoding: UTF-8 -*-
#********* Copia e orienta oggetti e gruppi********
#****** Write by Ing. Vittorio Carlotto ***********
#****** carlottovittorio@gmail.com  20-12-2013 ****
import rhinoscriptsyntax as rs
def ImportaOrientaRuota(stroStart):
    arrplane=rs.ViewCPlane      
    rs.EnableRedraw(True)
    if stroStart==None:  return
    p1,p2=rs.GetPoints(True,False,"1° reference point","2° reference point",2)
    if p1==None: return  # se non prendo punti
    if p2==None:return      
    p1ob=rs.AddPoint(p1)# 1° punto che oriento e mi serve per ruotare     
    p2ob=rs.AddPoint(p2) # 2° punto che oriento e mi serve per ruotare       
    rs.UnselectAllObjects()    
    stroStart.insert(0,p2ob)
    stroStart.insert(0,p1ob)    
    while True:
        rs.UnselectAllObjects()        
        stro=rs.CopyObjects (stroStart) # copia degli oggetti da rototraslare        
        rs.SelectObjects (stro)      # seleziono oggetti copiati e punti          
        #######      oriento oggetti e punti ##################        
        rs.Command("_Orient _Scale=_No  _Copy=_No  w"+str(p1)+"  W"+str(p2)+"  _pause _pause  _enter",False)
        rs.UnselectAllObjects()
        np1=rs.FirstObject()
        ccnp1=rs.PointCoordinates(np1)
        np2=rs.NextObject(np1)         
        ccnp2=rs.PointCoordinates(np2)
        rs.DeleteObjects((np1,np2)) 
        all_Objects=rs.LastCreatedObjects()
        if all_Objects==None:
            rs.DeleteObjects(stro)
            rs.DeleteObjects((p1ob,p2ob))            
            break
        rs.SelectObjects(all_Objects) 
        rs.EnableRedraw(True)
        rs.Command("_Rotate3d  w"+str(ccnp1)+"  w"+str(ccnp2)+" _Copy=_No",False)          
        print "Enter Enter for End"
stroStart=rs.GetObjects("Select objects ")
ImportaOrientaRuota(stroStart)

Ciao Vittorio