返回介绍

图层操作

发布于 2023-08-09 23:10:34 字数 2568 浏览 0 评论 0 收藏 0

DWG数据库中,图层存放在图层层表中,层表类名:MxDrawLayerTable,它的详细接口说明参考:http://www.mxdraw.com/help/frames.htm?frmname=topic&frmfile=IMxDrawLayerTable.htm

层表中每一条记录称为层表记录,类名:MxDrawLayerTableRecord,它的详细接口说明参数:http://www.mxdraw.com/help/frames.htm?frmname=topic&frmfile=IMxDrawLayerTableRecord.htm

每一个层,有颜色,线型,关闭/打开,冻结等属性,DWG数据库默认总是有一个"0"层,该层不能被删除。

视频演示:

A. 当前层

当前层表示DWG数据库默认层,向数据库中添加一个对象时,默认放到该层上,该属性随图存放,通过系统变量CLAYER操作,系统变量设置参考:http://www.mxdraw.com/help_2_48.html

设置当前层代码C#:

    MxDrawResbuf param = new MxDrawResbuf();     
    // 图层名     
    param.AddString("222");     
    
    // 图层亮度.
    param.AddDouble(50);     
    
    // 不自动调用更新显示函数     
    param.AddLong(0);
    axMxDrawX1.CallEx("Mx_SetLayerBright", param);

N. 删除图层

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

C#代码:

private bool DeleteLayer(String sLayerName)
        {
            // 判断图上是否对象。
            MxDrawResbuf param = (MxDrawResbuf)axMxDrawX1.Call("ExApp_isUselessLayer", sLayerName);
            if (param.AtLong(1) != 1)
            {
                // 图上还有对象,不能删除。
                return false;
            }
            // 得到数据库对象.
            MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase();
            // 得到层表.
            MxDrawLayerTable layerTable = database.GetLayerTable();
            // 得到层。
            MxDrawLayerTableRecord layer = layerTable.GetAt(sLayerName, false);
            if (layer == null)
            {
                // 没有该层
                return false;
            }
            else
            {
                // 删除图层。
                layer.Erase();
                return true;
            }
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文