ArcGIS Pro 3.1 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMGeometricEffectOffset Class
Members Example

In This Topic
    CIMGeometricEffectOffset Class
    In This Topic
    Represents the offset geometric effect which creates a dynamic line or polygon offset at a specified distance perpendicularly from a feature.
    Object Model
    CIMGeometricEffectOffset ClassCIMGeometricEffectOffset ClassCIMGeometricEffectOffset Class
    Syntax
    Example
    Snippet Dash line with two markers - Method I
    /// <summary>
    /// Create a line symbol with a dash and two markers.<br/>          
    /// </summary>
    /// <remarks>
    /// This line symbol comprises three symbol layers listed below: 
    /// 1. A solid stroke that has dashes.
    /// 1. A circle marker.
    /// 1. A square marker.
    /// ![LineSymbolTwoMarkers](http://Esri.github.io/arcgis-pro-sdk/images/Symbology/line-dash-two-markers.png)
    /// </remarks>
    /// <returns></returns>
    internal static Task<CIMLineSymbol> CreateLineDashTwoMarkersAync()
    {
        return QueuedTask.Run<CIMLineSymbol>(() =>
        {
    
            var dash2MarkersLine = new CIMLineSymbol();
    
            var mySymbolLyrs = new CIMSymbolLayer[]
            {
                new CIMSolidStroke()
                {
                    Color = ColorFactory.Instance.BlackRGB,
                    Enable = true,
                    ColorLocked = true,
                    CapStyle = LineCapStyle.Round,
                    JoinStyle = LineJoinStyle.Round,
                    LineStyle3D = Simple3DLineStyle.Strip,
                    MiterLimit = 10,
                    Width = 1,
                    CloseCaps3D = false,
                    Effects = new CIMGeometricEffect[]
                    {
                        new CIMGeometricEffectDashes()
                        {
                            CustomEndingOffset = 0,
                            DashTemplate = new double[] {20, 10, 20, 10},
                            LineDashEnding = LineDashEnding.HalfPattern,
                            OffsetAlongLine = 0,
                            ControlPointEnding = LineDashEnding.NoConstraint
                        },
                        new CIMGeometricEffectOffset()
                        {
                            Method = GeometricEffectOffsetMethod.Bevelled,
                            Offset = 0,
                            Option = GeometricEffectOffsetOption.Fast
                        }
                    },
                },
                CreateCircleMarkerPerSpecs(),
                CreateSquareMarkerPerSpecs()
            };
            dash2MarkersLine.SymbolLayers = mySymbolLyrs;
            return dash2MarkersLine;
        });
    }
    private static CIMMarker CreateCircleMarkerPerSpecs()
    {
        var circleMarker = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.BlackRGB, 5, SimpleMarkerStyle.Circle) as CIMVectorMarker;
        //Modifying the marker to align with line
        //First define "markerplacement"
        CIMMarkerPlacementAlongLineSameSize markerPlacement = new CIMMarkerPlacementAlongLineSameSize()
        {
            AngleToLine = true,
            Offset = 0,
            Endings = PlacementEndings.Custom,
            OffsetAlongLine = 15,
            PlacementTemplate = new double[] { 60 }
        };
        //assign the markerplacement to the marker
        circleMarker.MarkerPlacement = markerPlacement;
        return circleMarker;
    }
    private static CIMMarker CreateSquareMarkerPerSpecs()
    {
        var squareMarker = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.BlueRGB, 5, SimpleMarkerStyle.Square) as CIMVectorMarker;
        CIMMarkerPlacementAlongLineSameSize markerPlacement2 = new CIMMarkerPlacementAlongLineSameSize()
        {
            AngleToLine = true,
            Endings = PlacementEndings.Custom,
            OffsetAlongLine = 45,
            PlacementTemplate = new double[] { 60 },
        };
        squareMarker.MarkerPlacement = markerPlacement2;
        return squareMarker;
    }
    
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.CIM.CIMObject
          ArcGIS.Core.CIM.CIMGeometricEffect
             ArcGIS.Core.CIM.CIMGeometricEffectOffset

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.0 or higher.
    See Also