How to create a new layout and paper space viewport?

<?xml encoding=”UTF-8″>By Daniel Du

Issue

How do I use the AutoCAD VBA API to create a new layout and a new paper space viewport?

Solution

To create a new layout, use the add method of the layouts property of the drawing:

<font face="新宋体"><span><font color="#0000ff"><font>Set</font></font></span><font color="#000000"> lyt = ThisDrawing.Layouts.Add("Test1")</font></font>

To create a new paper space viewport, use the AddPViewport of the drawing’s paper space property:

<font face="新宋体"><span><font color="#0000ff"><font>Set</font></font></span><font color="#000000"> PSVport = ThisDrawing.PaperSpace.AddPViewport(pnt, 5, 4) </font></font><br>

where pnt is the center of the viewport.

One item of which to be aware is that the paper space property of the drawing references the ActiveLayout. The following procedure creates a new layout and paper space viewport on the new layout.

<font face="新宋体"><span><font color="#0000ff"><font>Public</font></font></span><font><font color="#000000"> </font><span><font color="#0000ff">Sub</font></span></font></font><font><font face="新宋体"><font color="#000000"> NewLayoutAndNewPVport()<br>    </font><span><font color="#0000ff">Dim</font></span><font color="#000000"> PSVport </font><span><font color="#0000ff">As</font></span></font><font face="新宋体"><font color="#000000"> AcadPViewport<br>    </font><span><font color="#0000ff">Dim</font></span><font color="#000000"> lyt </font><span><font color="#0000ff">As</font></span></font><font face="新宋体"><font color="#000000"> AcadLayout<br>    </font><span><font color="#0000ff">Dim</font></span><font color="#000000"> pnt(0 </font><span><font color="#0000ff">To</font></span><font color="#000000"> 2) </font><span><font color="#0000ff">As</font></span><font color="#000000"> </font><span><font color="#0000ff">Double</font></span><br></font><font face="新宋体"><font color="#000000"> <br>    </font><span><font color="#008000">' Create a point to be used for the new paperspace viewport</font></span><br></font><font face="新宋体"><font color="#000000">    pnt(0) = 5<br>    pnt(1) = 5<br>    pnt(2) = 0<br> <br>    </font><span><font color="#008000">' Create a new layout</font></span><br><font color="#000000">    lyt = ThisDrawing.Layouts.Add(</font><span><font color="#a31515">"Test1"</font></span></font><font face="新宋体"><font color="#000000">)<br> <br>    </font><span><font color="#008000">' If a layout named "Test1" already exists comment out</font></span><br><font color="#000000">    </font><span><font color="#008000">' the line above and uncomment this line.</font></span><br><font color="#000000">    </font><span><font color="#008000">' Set lyt = ThisDrawing.Layouts("Test1")</font></span><br></font><font face="新宋体"><font color="#000000"> <br>    </font><span><font color="#008000">' Make lyt created above the active layout</font></span><br></font><font face="新宋体"><font color="#000000">    ThisDrawing.ActiveLayout = lyt<br> <br>    </font><span><font color="#008000">' Create a new paper space viewport notice that you use</font></span><br><font color="#000000">    </font><span><font color="#008000">' the Paperspace property of this drawing. The Paperspace</font></span><br><font color="#000000">    </font><span><font color="#008000">' property references the active layout</font></span><br></font><font face="新宋体"><font color="#000000">    PSVport = ThisDrawing.PaperSpace.AddPViewport(pnt, 5, 4)<br> <br>    </font><span><font color="#008000">' Make sure the Viewport is displayed and on</font></span><br><font color="#000000">    PSVport.Display(</font><span><font color="#0000ff">True</font></span></font><font face="新宋体"><font color="#000000">)<br>    PSVport.ViewportOn = </font><span><font color="#0000ff">True</font></span><br></font><font face="新宋体"><font color="#000000"> <br>    </font><span><font color="#008000">' Before making a pViewport active the mspace property needs</font></span><br><font color="#000000">    </font><span><font color="#008000">' to be True for a floating viewport</font></span><br><font color="#000000">    ThisDrawing.MSpace = </font><span><font color="#0000ff">True</font></span><br></font></font><font face="新宋体"><font><font color="#000000">    ThisDrawing.ActivePViewport = PSVport<br>    ThisDrawing.Regen(acActiveViewport)<br> </font><br><span><font color="#0000ff">End</font></span><font color="#000000"> </font></font><span><font color="#0000ff">Sub</font></span></font><br>
<br>
<br>

Comments

3 responses to “How to create a new layout and paper space viewport?”

  1. excelent. thanks

  2. Zouhair Avatar
    Zouhair

    How can we set up the paper space. Like the paper size, let say A4 and print format let say Pdf.

  3. Hi,
    This vba give me a error 424 on the object lyt(lyt= nothing)
    can you explain this type of error?
    THX

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading