ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / ILayoutFactory Interface / CreateLayout Method / CreateLayout(CIMPage) Method
CIMPage
Example

In This Topic
    CreateLayout(CIMPage) Method
    In This Topic
    Creates a new layout using a defined CIM page. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Layout CreateLayout( 
       CIMPage cimPage
    )
    Overloads Function CreateLayout( _
       Optional ByVal cimPage As CIMPage _
    ) As Layout

    Parameters

    cimPage
    CIMPage

    Return Value

    Returns Layout or a null.
    Exceptions
    ExceptionDescription
    This method must be called within the lambda passed to QueuedTask.Run.
    Example
    CreateLayout_With_CIMPAGE
    //This example creates a new layout using a CIM page definion with rulers and guides included.
    
    //Added references
    using ArcGIS.Desktop.Layouts;                      
    using ArcGIS.Desktop.Framework.Threading.Tasks;    
    using ArcGIS.Desktop.Core;
    using ArcGIS.Core.CIM;
    
    public class CreateLayoutEx2
    {
      async public static Task<Layout> CreateCIMLayout(double width, double height, LinearUnit units, string LayoutName)
      {
        Layout CIMlayout = null;
        await QueuedTask.Run(() =>
        {
          //Set up a page
          CIMPage newPage = new CIMPage();
    
          //required
          newPage.Width = width;
          newPage.Height = height;
          newPage.Units = units;
    
          //optional rulers
          newPage.ShowRulers = true;
          newPage.SmallestRulerDivision = 5;
    
          //optional guides
          newPage.ShowGuides = true;
          CIMGuide guide1 = new CIMGuide();
          guide1.Position = 25;
          guide1.Orientation = Orientation.Vertical;
          CIMGuide guide2 = new CIMGuide();
          guide2.Position = 185;
          guide2.Orientation = Orientation.Vertical;
          CIMGuide guide3 = new CIMGuide();
          guide3.Position = 25;
          guide3.Orientation = Orientation.Horizontal;
          CIMGuide guide4 = new CIMGuide();
          guide4.Position = 272;
          guide4.Orientation = Orientation.Horizontal;
    
          List<CIMGuide> guideList = new List<CIMGuide>();
          guideList.Add(guide1);
          guideList.Add(guide2);
          guideList.Add(guide3);
          guideList.Add(guide4);
          newPage.Guides = guideList.ToArray();
    
          Layout layout = LayoutFactory.Instance.CreateLayout(newPage);
    
          layout.SetName(LayoutName);
        });
    
        //Open the layout in a pane on the UI!
        await ProApp.Panes.CreateLayoutPaneAsync(CIMlayout);
        return CIMlayout;
      }
    }
    Create a new layout using a modified CIM and open it
    //Create a new layout using a modified CIM and open it.
    //The CIM exposes additional members that may not be
    //available through the managed API.  
    //In this example, optional guides are added.
    
    //Create a new CIMLayout on the worker thread
    Layout newCIMLayout = await QueuedTask.Run(() =>
    {
      //Set up a CIM page
      CIMPage newPage = new CIMPage
      {
        //required parameters
        Width = 8.5,
        Height = 11,
        Units = LinearUnit.Inches,
    
        //optional rulers
        ShowRulers = true,
        SmallestRulerDivision = 0.5,
    
        //optional guides
        ShowGuides = true
      };
      CIMGuide guide1 = new CIMGuide
      {
        Position = 1,
        Orientation = Orientation.Vertical
      };
      CIMGuide guide2 = new CIMGuide
      {
        Position = 6.5,
        Orientation = Orientation.Vertical
      };
      CIMGuide guide3 = new CIMGuide
      {
        Position = 1,
        Orientation = Orientation.Horizontal
      };
      CIMGuide guide4 = new CIMGuide
      {
        Position = 10,
        Orientation = Orientation.Horizontal
      };
    
      List<CIMGuide> guideList = new List<CIMGuide>
      {
        guide1,
        guide2,
        guide3,
        guide4
      };
      newPage.Guides = guideList.ToArray();
    
      //Construct the new layout using the customized cim definitions
      var layout_local = LayoutFactory.Instance.CreateLayout(newPage);
      layout_local.SetName("New 8.5x11 Layout");
      return layout_local;
    });
    
    //Open new layout on the GUI thread
    await ProApp.Panes.CreateLayoutPaneAsync(newCIMLayout);
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also