ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMPage Class / Guides Property
Example Version

Guides Property (CIMPage)
Gets or sets the guides on a layout.
Syntax
public CIMGuide[] Guides {get; set;}
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