|
楼主 |
发表于 2012-7-31 09:29
|
显示全部楼层
若要求只处理某一类文字(如仅处理式样为宗地权利人的文字,下例中的"2006010200"),void main() 函数,以及附加函数如下:
array GetStyleIds(wkLayer layer, string styleName)
{
array ids;
for (int i=0; i<layer.getStyleCount(); i++)
{
wkStyle style = layer.getStyleAt(i);
if (style.getName().find(styleName)>=0)
ids.add(style.getId());
}
}
bool InArray(int id, array &ids)
{
for (int ii=0; ii<ids.getSize(); ii++)
if (id == ids[ii])
return true;
return false;
}
void main()
{
randomize();
wkGeoset geoset;
wkView view;
wkLayer layer = geoset.getEditableLayer();
if (0==layer.handle())
{
message("请置去文字信息化的层为可编");
return;
}
//==== 按式样过滤文字
string keepStyle = "2006010200";
array ids = GetStyleIds(layer, keepStyle);
//====
int ac = layer.getAnnotationCount();
for (int a=0; a<ac; a++)
{
wkAnnotation an = layer.getAnnotationAt(a);
if (an.isDib())
continue;
//==== 按式样过滤文字
if (ids.getSize() && !InArray(an.getStyleId(), ids))
continue;
//====
string text = an.getText();
ResetText(text);
an.setText(text);
an.setModified(true);
}
}
|
|