See article here
http://adndevblog.typepad.com/autocad/2012/08/create-paper-space-viewports.html
Here is a code very quickly translated on C#:
[CommandMethod("VW")]
public void tryCreateViewPort()
{
// Only works in paperspace
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
try
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
ObjectId mCurViewportId = ed.ActiveViewportId;
if (mCurViewportId == ObjectId.Null)
{
ed.WriteMessage("\nCommand only works in paperspace.");
return;
}
Viewport pCurViewport = tr.GetObject(mCurViewportId, OpenMode.ForRead) as Viewport;
if (pCurViewport == null)
{
ed.WriteMessage("\nCannot get active viewport.");
return;
}
if (pCurViewport.Number != 1)
{
ed.WriteMessage("\nCommand only works in paperspace.");
return;
}
// Ask for the position
Point3d pt1; Point3d pt2;
pt1 = ed.GetPoint("\nSelect first corner: ").Value;
pt2 = ed.GetCorner("\nSelect second corner: ", pt1).Value;
// Ask for the view to use
string mViewName;
mViewName = ed.GetString("\nEnter name of view to use: ").StringResult;
// Create new viewport
Viewport pViewport = new Viewport();
pViewport.Width = Math.Abs(pt2.X - pt1.X);
pViewport.Height = Math.Abs(pt2.Y - pt1.Y);
pViewport.CenterPoint = new Point3d(
pt1.X + (pt2.X - pt1.X) / 2,
pt1.Y + (pt2.Y - pt1.Y) / 2,
pt1.Z);
// Append new viewport to paper space
BlockTable pTable;
BlockTableRecord pPsBTR;
pTable = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
pPsBTR = (BlockTableRecord)tr.GetObject(pTable[BlockTableRecord.PaperSpace], OpenMode.ForWrite);
ObjectId mViewPortId = pPsBTR.AppendEntity(pViewport);
tr.AddNewlyCreatedDBObject(pViewport, true);
pViewport.On = true;
pViewport.FastZoomOn = true;
pViewport.SetUcs(pViewport.CenterPoint, Vector3d.XAxis, Vector3d.YAxis);
// Set the view
ViewTable pViewTable = (ViewTable)tr.GetObject(db.ViewTableId, OpenMode.ForRead);
// initialize the layout
// Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("TILEMODE", 0);
// Layout layout = tr.GetObject(pPsBTR.LayoutId, OpenMode.ForWrite) as Layout;
// LayoutManager.Current.CurrentLayout = "Layout2";
// layout.Initialize();
ViewTableRecord pViewTR;
if (pViewTable.Has(mViewName))
{
pViewTR = (ViewTableRecord)tr.GetObject(pViewTable[mViewName], OpenMode.ForWrite);
}
else
{
pViewTR = new ViewTableRecord();
pViewTR.Name = mViewName;
pViewTR.IsPaperspaceView = true;
pViewTable.UpgradeOpen();
ObjectId vtId = pViewTable.Add(pViewTR);
tr.AddNewlyCreatedDBObject(pViewTR, true);
}
ed.SetCurrentView(pViewTR);
tr.Commit();
Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("TILEMODE", 0);
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage(ex.Message + "\n" + ex.StackTrace);
}
finally
{
}
}
_____________________________________
C6309D9E0751D165D0934D0621DFF27919