protected override async void OnClick()
        {
            // get an anno layer
            AnnotationLayer annoLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <AnnotationLayer>().FirstOrDefault();

            if (annoLayer == null)
            {
                return;
            }

            bool result = await QueuedTask.Run(async() =>
            {
                // get an existing template
                EditingTemplate template = annoLayer.GetTemplates().FirstOrDefault();
                if (template == null)
                {
                    return(false);
                }

                // make sure it is active before you get the inspector
                await template.ActivateDefaultToolAsync();

                var insp = template.Inspector;
                if (insp == null)
                {
                    return(false);
                }

                // set up some properties
                AnnotationProperties annoProperties = insp.GetAnnotationProperties();
                annoProperties.TextString           = "special text";
                annoProperties.Color     = ColorFactory.Instance.GreenRGB;
                annoProperties.SmallCaps = true;
                insp.SetAnnotationProperties(annoProperties);

                // set up default tool - use daml-id rather than guid
                string defaultTool = "esri_editing_SketchStraightAnnoTool";

                // dont alter the filter or tags

                // create a new CIM template  - new extension method
                var newTemplate = annoLayer.CreateTemplate("template from existing template", "sample template description", insp, defaultTool);
                return(newTemplate != null);
            });
        }
Exemple #2
0
        public void CreateTemplate()
        {
            string value1 = "";
            string value2 = "";
            string value3 = "";

            #region Create New Template using layer.CreateTemplate

            var layer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault();
            if (layer == null)
            {
                return;
            }
            QueuedTask.Run(() =>
            {
                var insp = new Inspector();
                insp.LoadSchema(layer);

                insp["Field1"] = value1;
                insp["Field2"] = value2;
                insp["Field3"] = value3;

                var tags = new[] { "Polygon", "tag1", "tag2" };

                // set defaultTool using a daml-id
                string defaultTool = "esri_editing_SketchCirclePolygonTool";

                // tool filter is the tools to filter OUT
                var toolFilter = new[] { "esri_editing_SketchTracePolygonTool" };

                // create a new template
                var newTemplate = layer.CreateTemplate("My new template", "description", insp, defaultTool, tags, toolFilter);
            });
            #endregion

            #region Create Annotation Template

            // get an anno layer
            AnnotationLayer annoLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <AnnotationLayer>().FirstOrDefault();
            if (annoLayer == null)
            {
                return;
            }

            QueuedTask.Run(() =>
            {
                Inspector insp = null;
                // get the anno feature class
                var fc = annoLayer.GetFeatureClass() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClass;

                // get the featureclass CIM definition which contains the labels, symbols
                var cimDefinition = fc.GetDefinition() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClassDefinition;
                var labels        = cimDefinition.GetLabelClassCollection();
                var symbols       = cimDefinition.GetSymbolCollection();

                // make sure there are labels, symbols
                if ((labels.Count == 0) || (symbols.Count == 0))
                {
                    return;
                }

                // find the label class required
                //   typically you would use a subtype name or some other characteristic
                // in this case lets just use the first one

                var label = labels[0];

                // each label has a textSymbol
                // the symbolName *should* be the symbolID to be used
                var symbolName = label.TextSymbol.SymbolName;
                int symbolID   = -1;
                if (!int.TryParse(symbolName, out symbolID))
                {
                    // int.TryParse fails - attempt to find the symbolName in the symbol collection
                    foreach (var symbol in symbols)
                    {
                        if (symbol.Name == symbolName)
                        {
                            symbolID = symbol.ID;
                            break;
                        }
                    }
                }
                // no symbol?
                if (symbolID == -1)
                {
                    return;
                }

                // load the schema
                insp = new Inspector();
                insp.LoadSchema(annoLayer);

                // ok to assign these fields using the inspector[fieldName] methodology
                //   these fields are guaranteed to exist in the annotation schema
                insp["AnnotationClassID"] = label.ID;
                insp["SymbolID"]          = symbolID;

                // set up some additional annotation properties
                AnnotationProperties annoProperties = insp.GetAnnotationProperties();
                annoProperties.FontSize             = 36;
                annoProperties.TextString           = "My Annotation feature";
                annoProperties.VerticalAlignment    = VerticalAlignment.Top;
                annoProperties.HorizontalAlignment  = HorizontalAlignment.Justify;

                insp.SetAnnotationProperties(annoProperties);

                var tags = new[] { "Annotation", "tag1", "tag2" };

                // use daml-id rather than guid
                string defaultTool = "esri_editing_SketchStraightAnnoTool";

                // tool filter is the tools to filter OUT
                var toolFilter = new[] { "esri_editing_SketchCurvedAnnoTool" };

                // create a new template
                var newTemplate = annoLayer.CreateTemplate("new anno template", "description", insp, defaultTool, tags, toolFilter);
            });

            #endregion
        }
        protected override async void OnClick()
        {
            // get an anno layer
            AnnotationLayer annoLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <AnnotationLayer>().FirstOrDefault();

            if (annoLayer == null)
            {
                return;
            }

            Inspector insp   = null;
            bool      result = await QueuedTask.Run(() =>
            {
                // get the anno feature class
                var fc = annoLayer.GetFeatureClass() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClass;

                // get the featureclass CIM definition which contains the labels, symbols
                var cimDefinition = fc.GetDefinition() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClassDefinition;
                var labels        = cimDefinition.GetLabelClassCollection();
                var symbols       = cimDefinition.GetSymbolCollection();

                // make sure there are labels, symbols
                if ((labels.Count == 0) || (symbols.Count == 0))
                {
                    return(false);
                }

                // find the label class required
                //   typically you would use a subtype name or some other characteristic
                // in this case lets just use the first one

                // var label = labels[0];

                // find the label class required
                //   typically you would use a subtype name or some other characteristic

                // use the first label class
                var label = labels[0];
                if (labels.Count > 1)
                {
                    // find a label class based on template name
                    foreach (var LabelClass in labels)
                    {
                        if (LabelClass.Name == "Basic")
                        {
                            label = LabelClass;
                            break;
                        }
                    }
                }

                // each label has a textSymbol
                // the symbolName *should* be the symbolID to be used
                var symbolName = label.TextSymbol.SymbolName;
                int symbolID   = -1;
                if (!int.TryParse(symbolName, out symbolID))
                {
                    // int.TryParse fails - attempt to find the symbolName in the symbol collection
                    foreach (var symbol in symbols)
                    {
                        if (symbol.Name == symbolName)
                        {
                            symbolID = symbol.ID;
                            break;
                        }
                    }
                }
                // no symbol?
                if (symbolID == -1)
                {
                    return(false);
                }

                // load the schema
                insp = new Inspector();
                insp.LoadSchema(annoLayer);

                // ok to access AnnotationClassID, SymbolID this way - it is guaranteed to exist
                insp["AnnotationClassID"] = label.ID;
                insp["SymbolID"]          = symbolID;

                // set up some text properties
                AnnotationProperties annoProperties = insp.GetAnnotationProperties();
                annoProperties.FontSize             = 36;
                annoProperties.TextString           = "My Annotation feature";
                annoProperties.VerticalAlignment    = VerticalAlignment.Top;
                annoProperties.HorizontalAlignment  = HorizontalAlignment.Justify;

                // assign the properties back to the inspector
                insp.SetAnnotationProperties(annoProperties);

                // set up tags
                var tags = new[] { "Annotation", "tag1", "tag2" };

                // set up default tool - use daml-id rather than guid
                string defaultTool = "esri_editing_SketchStraightAnnoTool";

                // tool filter is the tools to filter OUT
                var toolFilter = new[] { "esri_editing_SketchCurvedAnnoTool" };

                // create a new CIM template  - new extension method
                var newTemplate = annoLayer.CreateTemplate("My new template", "sample template description", insp, defaultTool, tags, toolFilter);

                return(newTemplate != null);
            });
        }