AE通过CadWorkspaceFactoryClass添加CAD数据后,注记图层上的要素FeatureType=esriFTCoverageAnnotation,非esriFTAnnotation,此时不能直接转换为IAnnotationFeature提取注记字符串内容。可转换为ICoverageAnnotationFeature,但ICoverageAnnotationFeature只有一个字节流AnnotationBlob可用,此字节流保存到文本,可发现注记内容在该字节流中,但不能判断偏移量,无法截取。不知哪位仁兄知晓ICoverageAnnotationFeature.AnnotationBlob中的数据结构,望不吝赐教啊。
百度谷歌一番后无果,只好采取笨方法从IFeature的Table中提取,代码如下:
IFeatureLayer layer = axMapControl1.get_Layer(0) as IFeatureLayer;
IFeature pFeature;
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "Text='D15ZZd20131464'";
IFeatureCursor pFeatureCursor = layer.FeatureClass.Search(queryFilter, false);
pFeature = pFeatureCursor.NextFeature();
if(pFeature != null)
{
ITable table = pFeature.Table;
IRow row = table.GetRow(pFeature.OID);
IFields f=table.Fields;
int b=f.FindField("Text");
if (row!=null)
{
string a = row.Value[b] as string;
}
}