public sealed class AnnotationFeature : ArcGIS.Core.Data.Feature, System.IDisposable
Public NotInheritable Class AnnotationFeature Inherits ArcGIS.Core.Data.Feature Implements System.IDisposable
public sealed class AnnotationFeature : ArcGIS.Core.Data.Feature, System.IDisposable
Public NotInheritable Class AnnotationFeature Inherits ArcGIS.Core.Data.Feature Implements System.IDisposable
await QueuedTask.Run(() => { //Don't use 'Shape'....Shape is the bounding box of the annotation text. This is NOT what you want... // //var insp = new Inspector(); //insp.Load(annoLayer, oid); //var shape = insp["SHAPE"] as Polygon; //...wrong shape... //Instead, we must get the TextGraphic from the anno feature. //The TextGraphic shape will be the anno baseline... //At 2.1 the only way to retrieve this textLine is to obtain the TextGraphic from the AnnotationFeature QueryFilter qf = new QueryFilter() { WhereClause = "OBJECTID = 1" }; //annoLayer is ~your~ Annotation layer using (var rowCursor = annoLayer.Search(qf)) { if (rowCursor.MoveNext()) { using (var annoFeature = rowCursor.Current as ArcGIS.Core.Data.Mapping.AnnotationFeature) { var graphic = annoFeature.GetGraphic(); var textGraphic = graphic as CIMTextGraphic; var textLine = textGraphic.Shape as Polyline; // rotate the shape 90 degrees var origin = GeometryEngine.Instance.Centroid(textLine); Geometry rotatedPolyline = GeometryEngine.Instance.Rotate(textLine, origin, System.Math.PI / 2); //Move the line 5 "units" in the x and y direction //GeometryEngine.Instance.Move(textLine, 5, 5); EditOperation op = new EditOperation(); op.Name = "Change annotation angle"; op.Modify(annoLayer, oid, rotatedPolyline); op.Execute(); } } } });
await QueuedTask.Run(() => { using (var table = annoLayer.GetTable()) { using (var rc = table.Search()) { rc.MoveNext(); using (var af = rc.Current as AnnotationFeature) { var graphic = af.GetGraphic(); var textGraphic = graphic as CIMTextGraphic; //Note: //var outline_geom = af.GetGraphicOutline(); //gets the anno text outline geometry... } } } });
var annoLayer = MapView.Active.Map.GetLayersAsFlattenedList() .OfType<AnnotationLayer>().FirstOrDefault(); if (annoLayer == null) return; QueuedTask.Run(() => { //get the first annotation feature... //...assuming at least one feature gets selected using (var fc = annoLayer.GetFeatureClass()) { using (var rc = fc.Search()) { rc.MoveNext(); using (var af = rc.Current as AnnotationFeature) { var outline_geom = af.GetGraphicOutline(); //TODO - use the outline... //Note: //var graphic = annoFeature.GetGraphic(); //gets the CIMTextGraphic... } } } });
System.Object
ArcGIS.Core.CoreObjectsBase
ArcGIS.Core.Data.Row
ArcGIS.Core.Data.Feature
ArcGIS.Core.Data.Mapping.AnnotationFeature
Target Platforms: Windows 11, Windows 10