.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Adding a View (viewTableRecord) to Paper Space Layout

5 REPLIES 5
SOLVED
Reply
Message 1 of 6
MarkSanchezSPEC
1726 Views, 5 Replies

Adding a View (viewTableRecord) to Paper Space Layout

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.

5 REPLIES 5
Message 2 of 6
Hallex
in reply to: MarkSanchezSPEC

Spoiler
 

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
Message 3 of 6
MarkSanchezSPEC
in reply to: Hallex

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

Message 4 of 6

ViewTableRecord.IsPaperspaceView = true can help you

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 5 of 6
Hallex
in reply to: Alexander.Rivilis

This is the same in my code:

pViewTR.IsPaperspaceView = true;

 

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Message 6 of 6
MarkSanchezSPEC
in reply to: Hallex

That was easy!

 

Thank you both Hallex and Alexander!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost