import Rhino
import scriptcontext
import rhinoscriptsyntax as rs


def DoSomething():
    
    if scriptcontext.doc.Views.ModelSpaceIsActive: return
    
    detail_id = rs.GetObject("Pick the detail", rs.filter.detail, True, False)
    if not detail_id: return
    
    objects = rs.ObjectsByName("Circle")
    if not objects: return
    
    detail = rs.coercerhinoobject(detail_id, True, True)
    circle = rs.coercecurve(objects[0], -1, True)
    bbox = circle.GetBoundingBox(True)
    
    pageview = scriptcontext.doc.Views.ActiveView
    pageview.SetActiveDetail(detail.Id)
    scriptcontext.doc.Views.Redraw()
    
    detail.Viewport.ZoomBoundingBox(bbox)
    detail.CommitViewportChanges()
    detail.DetailGeometry.IsProjectionLocked = True
    detail.DetailGeometry.SetScale(1.0, scriptcontext.doc.ModelUnitSystem, 1.0, scriptcontext.doc.PageUnitSystem)
    detail.CommitChanges()
    
DoSomething()