.NET
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
I have used the following code in a small app to create named views: LINK_TO_Autodesk_Help_Topic
HOWEVER...A user of mine tried running the command while in a paper space layout. It appears the view still gets created but only within Model Space.
The help DOES SAY that "a default model space view is created", but how would I specify that I want the view to be created within the "current" layout, either Model or Paper space?
I tried setting the .OwnerID property of the ViewTableRecord to "doc.CurrentSpaceID" but that did not work - no error either.
Solved! Go to Solution.
Re: Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
See article here
http://adndevblog.typepad.com/autocad/2012/08/crea
Here is a code very quickly translated on C#:
[CommandMethod("VW")]
public void tryCreateViewPort()
{
// Only works in paperspace
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.D ocumentManager.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[BlockTableRe cord.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.S etSystemVariable("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.S etSystemVariable("TILEMODE", 0);
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage(ex.Message + "\n" + ex.StackTrace);
}
finally
{
}
}
C6309D9E0751D165D0934D0621DFF27919
Re: Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
I really appreciate you taking the time to reply but...
Your post and the link refer to a paper space "Viewport" like you do manually with the "MVIEW" command. What I needed to do was create a "View" in paper space like you do manually with the "VIEW" command.
Regards
Re: Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Re: Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
This is the same in my code:
pViewTR.IsPaperspaceView = true;
C6309D9E0751D165D0934D0621DFF27919
Re: Adding a View (viewTable Record) to Paper Space Layout
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
That was easy!
Thank you both Hallex and Alexander!




