简介网页构造选择集效果展示
简介

我们将类及其命令注册进了控件系统,而后我们将调用命令来实现过滤。在本实例中,我们将使用构造选择集(IMxDrawSelectionSet类)进行过滤,该类封装了选择集及其处理函数,支持如下过滤条件,且当对象被析够的时候,将自动释放选择集。


参数类型类型
RTDXF0TEXT文字
MTEXT多行文字
CIRCLE
ARC圆弧
LINE线
LWPOLYLINE多段线
INSERT图块
ELLIPSE椭圆
SPLINE样条线
LinkLine超链接
8图层
2图块
-4通配符
62颜色
-3扩展数据
网页构造选择集

网页中构造选择集。教程的帮助完整例子,在控件安装目录的Sample\Ie\ iedemoSelectionSet.htm中。


主要用到函数说明:


IMxDrawSelectionSet::AllSelect


得到当前空间的所有实体。详细说明如下:


参数说明

[in,defaultvalue(NULL)] IMxDrawResbuf* filterData

过滤条件


用户可以点击得到所有实体按钮,触发GetAllEnt()事件。js中使用如下:


function GetAllEnt() {
    //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
    var  ss = mxOcx.NewSelectionSet();
    //构造一个过滤链表
    var spFilte = mxOcx.NewResbuf();
    //得到当前空间的所有实体
    ss.AllSelect (spFilte);
    for (var i = 0; i < ss.Count; i++)
    {
        var ent = ss.Item(i);
        alert(ent.ObjectName);
    }
}


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 返回当前图上已经选择的实体


用户可以点击Select2按钮,触发Select2()事件。js中使用如下:


function select2()
{
    //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
    var ss = mxOcx.NewSelectionSet();
    //构造一个过滤链表
    var spFilte = mxOcx.NewResbuf();
    //方式5为得到所有实体,此处可以根据用户的不同需求改变方式
    ss.Select2(5, null, null, null, spFilte);
    for (var i = 0; i < ss.Count; i++)
    {
        var ent = ss.Item(i);
        alert(ent.ObjectName);
    }
}


用户可以点击Select2Cross按钮,触发Select2Cross()事件,该方式选取跨范围的实体(用户可以根据自身需求设置两个点对象)。js中使用如下:


function select2Cross()
{
    //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
    var ss = mxOcx.NewSelectionSet();
    //构造一个过滤链表
    var spFilte = mxOcx.NewResbuf();
    //定义两个点的位置
    //定义第一个点的位置
    var vPt1 = mxOcx.NewPoint();
    vPt1.x = -20;
    vPt1.y = -20;
    //定义第二个点的位置
    var vPt2 = mxOcx.NewPoint();
    vPt2.x = 20;
    vPt2.y = 20;
    //选取跨范围的实体
    ss.Select2(1, vPt1, vPt2,null,  spFilte);
    for (var i = 0; i < ss.Count; i++)
    {
        var ent = ss.Item(i);
        alert(ent.ObjectName);
    }
}


用户可以点击Select2UserSelect按钮,触发Select2UserSelect()事件,该方式得到用户选取的实体。js中使用如下:


function select2UserSelect()
{
    //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
    var ss = mxOcx.NewSelectionSet();
    //构造一个过滤链表
    var spFilte = mxOcx.NewResbuf();
    //用户选择对象  得到用户选取得实体
    ss.Select2(8, null, null, null, spFilte);
    for (var i = 0; i < ss.Count; i++)
    {
        var ent = ss.Item(i);
        alert(ent.ObjectName);
    }
}


IMxDrawSelectionSet::SelectAtPoint


在一个点构造选择集。详细说明如下:


参数说明
[in] IMxDrawPoint* point

点坐标

[in,defaultvalue(NULL)] IMxDrawResbuf* filterData

过滤条件


用户可以点击在一个点构造选择集按钮,触发SelectAtPoint()事件。js中使用如下:


function SelectAtPoint()
{
    //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
    var ss = mxOcx.NewSelectionSet();
    //构造一个过滤链表
    var spFilte = mxOcx.NewResbuf();
    //在一个点构造选择集
    var vPt = mxOcx.Call("Mx_NewPoint","");
    var vPt = mxOcx.NewPoint();
    vPt.x = -20;
    vPt.y = -20;
    ss.SelectAtPoint (vPt, spFilte);
    for (var i = 0; i < ss.Count; i++)
    {
        var ent = ss.Item(i);
        alert(ent.ObjectName);
    }
}

   

效果展示

在兼容模式下打开网页(谷歌支持4.5前的版本,火狐最新版本不支持),运行控件。效果如下:


select1.png


用户可以通过点击得到所有实体按钮,则会弹出所有实体的名称。如下图所示:


select2.png

MxDraw
MxDraw是由梦想凯德基于AutoDesk CAD平台开发的软件,拥有完全自主的核心技术和知识产权。MxDraw致力于为各企业提供最优秀的CAD平台整体解决方案。
技术服务
TEL:400-888-5703
185-8173-1060
QQ:827867134,6884123
产品购买
TEL:400-888-5703
185-8173-1060
QQ:827867134,6884123
用户交流
QQ群1:827867134
QQ群2:827867134
QQ群3:827867134