关于chrome-devtools:如何在网页开发中获取图层操作的信息

34次阅读

共计 5111 个字符,预计需要花费 13 分钟才能阅读完成。

此示例将演示如何获取 CAD 控件图纸上一些罕用信息,如符号表(块表、层表、文字样式表、线型表、点样式表)、字典。。

上面将介绍如何获取符号表的一些信息,如下图所示:

15123534486359648.png

图层操作
DWG 数据库中,图层寄存在图层层表中,层表类名:MxDrawLayerTable,它的具体接口阐明参考:

层表中每一条记录称为层表记录,类名:MxDrawLayerTableRecord,它的具体接口阐明参数:

每一个层,有色彩,线型,敞开 / 关上,解冻等属性,DWG 数据库默认总是有一个 ”0″ 层,该层不能被删除。

图层操作在线演示例子:

视频演示:

A. 以后层

以后层示意 www.sangpi.comDWG 数据库默认层,向数据库中增加一个对象时,默认放到该层上,该属性随图寄存,通过零碎变量 CLAYER 操作,零碎变量设置参考:

设置以后层代码 JS:

1

// 新建一个图层    mxOcx.AddLayer("MyLayerName");    // 设置以后层    mxOcx.SetSysVarString("CLAYER", "MyLayerName");    // 设置控件 Draw 函数使得的层    mxOcx.LayerName = "MyLayerName";

或者这样:

1

 // 增加层     mxOcx.AddLayer("aaaa");     // 失去以后数据库     var database = mxOcx.GetDatabase();     // 设置以后层     database.CurrentlyLayerName = "aaaa";

B. 增加图层

调用控件 wwwAddLayer 办法增加图层,具体接口阐明见:

例如 JS 代码:

1

        // 新建一个图层            mxOcx.AddLayer("MyLayerName");            // 设置控件 Draw 函数使得的层            mxOcx.LayerName = "MyLayerName";

或应用层表 Add 办法来增加一个图层

1

    // sNewLayerName 新创建的图层名                var sNewLayerName = "TestNewLayer";                // 返回控件的数据库对象        var database = mxOcx.GetDatabase();                var layerTable = database.GetLayerTable();        // 向层表中新增一个层表记录        var layerTableRec = layerTable.Add(sNewLayerName);        // 设置新图层的色彩。SetRGB        var color = layerTableRec.Color;        color.SetRGB(255, 0, 0);        layerTableRec.Color = color;        // 把新建的层设置成以后层        database.CurrentlyLayerName = sNewLayerName;

C. 遍历所有图层

上面代码是遍历层表中所有层表记录,并失去所有图层名,在遍历的循环中,失去每个层表记录对象,能够去批改它的属性

1
function GetAllLayer() { var database = mxOcx.GetDatabase(); // 失去所有图层名 var sRet = null; // 返回数据库中的层表对象 var spLayerTable = database.GetLayerTable(); // 创立一个遍历层表中所有图层的遍历器 var spIter = spLayerTable.NewIterator(); // 挪动以后遍历器地位 for(;!spIter.Done();spIter.Step(true,true)) {// 返回遍历器以后地位的记录 var spLayerRec = spIter.GetRecord(); // 符号表记录名属性 var sName = spLayerRec.Name; // 0 零层不加入比拟 if(sName != “0”) {if(sRet == null) sRet = sName; else {sRet = sRet +”,”+sName;} } } alert(sRet);}

D. 暗藏图层

暗藏一个图层的实现思路,失去数据库层表对象,而后依据层名失去层表游戏记录对象,设置层表记录 IsOff 属性值。

例如代码,让用户在 CAD 图上抉择一个对象,而后暗藏对象所在的图层 C#:

1
// 暗藏抉择实体的层。var ent = mxOcx.GetEntity(“ 抉择要敞开图层的实体:”);if(ent == null){return;}if (ent == null){return;}var sLayerName = ent.Layer;var database = mxOcx.GetDatabase();var layerTable = database.GetLayerTable();var layerTableRec = layerTable.GetAt(sLayerName, false);if(layerTable != null){layerTableRec.IsOff = true;}

E. 显示图层

如下例子,失去层表,而后循环失去所有层表记录,并关上图层显示

例如代码 JS:

1
function OpenAllLayer() { var database = mxOcx.GetDatabase(); // 返回数据库中的层表对象 var spLayerTable = database.GetLayerTable(); // 创立一个遍历层表中所有图层的遍历器 var spIter = spLayerTable.NewIterator(); // 挪动以后遍历器地位 for(;!spIter.Done();spIter.Step(true,true)) {// 返回遍历器以后地位的记录 var spLayerRec = spIter.GetRecord(); var sName = spLayerRec.Name; var layerRec=spLayerTable.GetAt(sName,false); if(layerRec) {layerRec.IsOff = false; alert(“ 胜利显示图层 ”); } } }

F. 锁定图层

锁定后的图层上的实体不能编辑,但能够抉择,如果想也不能抉择,设置控件 InitSet 属性值为:SelectLockLayer=N

上面演示,遍历所有图层表记录,并设置图层为锁定状态,

例如代码 JS:

1
function LockeAllLayer() { // 返回控件的数据库对象 var database = mxOcx.GetDatabase(); // 返回数据库中的层表对象 var layerTable = database.GetLayerTable(); // 创立一个遍历层表中所有图层的遍历器 var iter = layerTable.NewIterator(); for (; !iter.Done(); iter.Step()) {// 返回遍历器以后地位的记录 var layerRec = iter.GetRecord(); layerRec.IsLocked = true; alert(“ 胜利锁定图层 ”); }}

F. 解冻图层

被解冻上的图层实体,不会参显示数据的生成,这样能够放慢显示速度,和关上图纸的速度,它与敞开属性相比,解冻后的图层岂但看不见,并且在内存中也不加入显示。

1

         // 解冻抉择实体的层。var ent = mxOcx.GetEntity("抉择要解冻图层的实体:");        if(ent == null)        {return;}        if (ent == null)        {return;}        var sLayerName = ent.Layer;        var database = mxOcx.GetDatabase();                var layerTable = database.GetLayerTable();                var layerTableRec = layerTable.GetAt(sLayerName, false);        if(layerTable != null)        {layerTableRec.IsFrozen = true;            alert("胜利解冻图层");        }

G. 调用图层治理界面

例如代码 JS:

1
mxOcx.SendStringToExecute(“MxLayerManager”);

H. 失去图层上所有对象

咱们通过结构抉择集,应用图层名过虑来失去某个层上所有对象,对于抉择集的类阐明参考:

例如代码 JS:

1

     // 创立一个过滤数据连表对象。var filter = mxOcx.NewResbuf();         // 把层名退出过滤条件,8 是 DXF 组码,0 示意是的是一个层名。filter.AddStringEx("0", 8);         // 定义抉择集对象         var ss = mxOcx.NewSelectionSet();         // 抉择图上的所有对象。ss.Select2(5, null, null, null,filter);         var i = 0;        var listId = new Array();         // 遍历所有对象,失去对象 id.         for (; i < ss.Count;i++)         {var e =  ss.Item(i);             listId.push(e.ObjectID);         }         return listId;

I. 设置指定图层上的实体不能抉择

通过控件 InitSet 属性,来设置特定图层上的实体不能抉择,无关 IniSet 的具体阐明,参考:

比方 JS:

1

         // 设置 Layer1,Layer2,Layer3 图层上的实体不能抉择            mxOcx.Iniset = "DisableSelectLayer=Layer1;Layer2;Layer3";

J. 设置 CAD 实体对象,到指定层上

实体对象都有一个层属性,能够间接批改该属性。

比方 JS:

1

    var   ent = mxOcx.GetEntity("抉择图层的实体:");        if(ent == null)        {return;}        if (ent == null)        {return;}                // 失去数据库对象.        var database = mxOcx.GetDatabase();        // 失去层表.        var layerTable = database.GetLayerTable();        var sLayerName = "layer";        // 失去层。var layer = layerTable.GetAt(sLayerName, true);        if (layer == null)        {// 如果没有层,就新建一个层。mxOcx.AddLayer(sLayerName);        }        else        {// 如果层被删除,就反删除。layer.SetProp("unErase", null);        }        // 设置实体层名到指定层上。ent.Layer = sLayerName;        alert("已将该实体设置到指定图层");

K. 判断该层上是否有对象,是不是一个 无用 的层。

在 CAD 图上,个别须要遍历所有块表记录中的实体对象,才判断某个图层上是有对象实体,而后能力释怀删除一个图层,因为一个图层上如果有实体对象,你删除该图层时,实体对象就会援用一个有效的图层。

所以控件专门提供一个定制函数,用来判断该图上是否有实体对象:

比方 JS:

1

   MxDrawResbuf param = (MxDrawResbuf)axMxDrawX1.Call("ExApp_isUselessLayer", "图层 1");        if(param.AtLong(1) == 1)        {MessageBox.Show("该图层上没有对象");        }

L. 删除数据库所有无用的图层

咱们提供一个定制函数,来遍历图上的所有对象,判断出图层上没有对象,而后删除。

比方 JS:

1
axMxDrawX1.Cal(“ExApp_DeleteUselessLayer”);

M. 批改图层亮度

控件提供,让 CAD 图层上的所有对象,按指定亮度显示性能,比方亮度设置 0, 示意对象显示成灰色,个别一些背景不让批改的对象放在背景层上,而后把亮度设置成 0.

Mx_SetLayerBright 函数具体阐明,参考:

Mx_SetBright 函数具体阐明,参考:

例如设置图层 222 按 50% 显示,JS 代码:

1

var param = mxOcx.NewResbuf();// 图层名    param.AddStringEx("222");// 图层亮度.    param.AddDoubleEx(50);// 不主动调用更新函数。param.AddLongEx(0);    mxOcx.CallEx("Mx_SetLayerBright", param);

N. 失去图层亮度

上面是失去图层的亮度,222 示意的是图层名字。

JS 代码:

1

var ret = mxOcx.Call("Mx_GetLayerBright", "222");    if (ret.AtString(0) == "Ok")    {alert(ret.AtDouble(1).toString());    }

O. 删除图层

在删除图层前,最好判断一个该图层上是否有 CAD 绘图对象,如果有的话就不要删除图层

正文完
 0