主要用到函数说明:IMxDrawSelectionSet::Select2
构造选择集。详细说明如下:
参数 | 说明 |
[in] MCAD_McSelect Mode | 构造选择集方式 |
[in] VARIANT point1 | 构造择择集时需要使用到的点对象 |
[in] VARIANT point2 | 构造择择集时需要使用到的点对象 |
[in,optional] VARIANT filterType | 构造选择集的过滤数据的类型 |
[in,optional] VARIANT filterData | 构造选择集的过滤数据 |
可以取如下值 | mcSelectionSetWindow = 0, mcSelectionSetCrossing = 1, mcSelectionSetFence = 2, mcSelectionSetPrevious = 3, mcSelectionSetLast = 4, mcSelectionSetAll = 5, 选择图面上的所有实体 mcSelectionSetWindowPolygon = 6, mcSelectionSetCrossingPolygon = 7, mcSelectionSetUserSelect = 8 mcSelectionImpliedSelectSelect = 9,_I 返回当前图上已经选择的实体 |
js中使用如下:
function GetAllComment() {
var ss = mxOcx.NewSelectionSet();
var spFilte = mxOcx.NewResbuf();
// 把批注对象,当着过滤条件.
spFilte.AddStringEx("MxComment,MxDrawXCustomEntity", 5020);
// 得到图上,所有批注对象.
ss.Select2(5,null,null,null,spFilte);
// 遍历每个文字.
var bFind = false;
for (var i = 0; i < ss.Count; i++) {
var ent = ss.Item(i);
if (ent == null)
continue;
if (ent.ObjectName == "McDbComment") {
// 得到批注对象。
mxOcx.Prompt(ent.Text);
var mtxt = mxOcx.NewEntity("IMxDrawMText");
// 把多行文字,变成单行文字,去掉里面的控制符。
mtxt.Contents = ent.Text;
// 打碎对像.
var ret = mtxt.GetProp("ExplodeEx");
// 得到打碎后对像里面的文字。
var s;
for(var j = 0; j < ret.Count;j++)
{
var obj = ret.AtObject(j);
if(obj == null)
continue;
if(s == null){
// s = obj.TextString;
}
else{
var s = '';
s += obj.TextString;
}
}
mxOcx.Prompt(s);
//
mxOcx.Prompt(ent.Position.x.toString());
mxOcx.Prompt(ent.Position.y.toString());
mxOcx.Prompt(ent.BasePoint.x.toString());
mxOcx.Prompt(ent.BasePoint.y.toString());
}
else if (ent.ObjectName == "MxDrawXCustomEntity") {
// 得到批注对象。
var stp = ent.GetPoint("First");
var ept = ent.GetPoint("BasePoint");
var txt = ent.GetString("Text");
mxOcx.Prompt(txt);
//
mxOcx.Prompt(stp.x.toString());
mxOcx.Prompt(stp.y.toString());
mxOcx.Prompt(ept.x.toString());
mxOcx.Prompt(ept.y.toString());
}
}
}