ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / Element Class / GetDefinition Method
Example Version

GetDefinition Method (Element)
Returns the element's CIM definition. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public CIMElement GetDefinition()

Return Value

Exceptions
ExceptionDescription
This method must be called within the lambda passed to QueuedTask.Run.
Example
Element_GetSetDefinition
//Modify an element's CIM properties.

//Perform on the worker thread
await QueuedTask.Run(() =>
{
  CIMElement CIMElm = element.GetDefinition();

  //Modify a CIM value

  element.SetDefinition(CIMElm);
});
TableFrame_ModifyExisting
//Modify an existing tableframe using CIM properties.

//Reference the active layout
Layout layout = LayoutView.Active.Layout;

//Perform on the worker thread
await QueuedTask.Run(() =>
{
  //Reference table frame
  TableFrame TF = layout.FindElement("Table Frame") as TableFrame;

  //Modify CIM properties
  CIMTableFrame cimTF = TF.GetDefinition() as CIMTableFrame;
  cimTF.Alternate1RowBackgroundCount = 1;
  cimTF.Alternate2RowBackgroundCount = 1;

  //Apply the changes
  TF.SetDefinition(cimTF);
});
Set halo property of north arrow
//Set the CIM halo properties of a north arrow.

//Reference the first selected element (assumption is it is a north arrow)
Element northArrow = LayoutView.Active.GetSelectedElements().First();

//Perform on the worker thread
QueuedTask.Run(() =>
{
  //Get definition of north arrow...
  var cim = northArrow.GetDefinition() as CIMMarkerNorthArrow;
  
  //this halo symbol is 50% transparent, no outline (i.e. 0 width)
  //First construct a polygon symbol to use in the Halo
  //Polygon symbol will need a fill and a stroke
  var polyFill = SymbolFactory.Instance.ConstructSolidFill(ColorFactory.Instance.CreateRGBColor(0, 0, 0, 50));
  var polyStroke = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 0);
  var haloPoly = SymbolFactory.Instance.ConstructPolygonSymbol(polyFill, polyStroke);
  
  //Set the north arrow definition of HaloSymbol and HaloSize 
  ((CIMPointSymbol)cim.PointSymbol.Symbol).HaloSymbol = haloPoly;
  ((CIMPointSymbol)cim.PointSymbol.Symbol).HaloSize = 3;//size of the halo
    
  //Apply the CIM changes back to the element
  northArrow.SetDefinition(cim);
});
Apply a Background Color to a MapFrame
//Apply a background color to the map frame element using the CIM.

//Perform on the worker thread
QueuedTask.Run(() =>
{
  //Get the layout
  var myLayout = Project.Current.GetItems<LayoutProjectItem>()?.First().GetLayout();
  if (myLayout == null) return;

  //Get the map frame in the layout
  MapFrame mapFrame = myLayout.FindElement("New Map Frame") as MapFrame;
  if (mapFrame == null)
  {
    //TODO Handle null mapframe
    return;
  }

  //Get the map frame's definition in order to modify the background.
  var mapFrameDefn = mapFrame.GetDefinition() as CIMMapFrame;

  //Construct the polygon symbol to use to create a background
  var polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(
                 ColorFactory.Instance.BlueRGB, SimpleFillStyle.Solid);

  //Set the background
  mapFrameDefn.GraphicFrame.BackgroundSymbol =
                                   polySymbol.MakeSymbolReference();

  //Set the map frame definition
  mapFrame.SetDefinition(mapFrameDefn);
});
Lock an element
// The Locked property is displayed in the TOC as a lock symbol next
// to each element.  If locked the element can't be selected in the layout
// using the graphic selection tools.

//Perform on the worker thread
QueuedTask.Run(() =>
{
  // Reference and load the layout associated with the layout item
  Layout layout = layoutItem.GetLayout();
  if (layout != null)
  {
    //Reference an element by name
    Element element = layout.FindElement("MyElement");
    if (element != null)
    {
      // Modify the Locked property via the CIM
      CIMElement CIMElement = element.GetDefinition() as CIMElement;
      CIMElement.Locked = true;
      element.SetDefinition(CIMElement);
    }
  }
});
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also