CAD二次开发的资料比较少,除了李冠亿先生的《深居浅出AutoCAD二次开发》这本书之外,目前没有找到合适的参考资料。现将自己工作中用的的一些方法贴出来。方便各位网友快速入门。

#region 添加图层

/// <summary>
        /// 添加图层
/// </summary>
        /// <param name="layName"></param>
/// <param name="layColor"></param>
        private ObjectId AddLayer(string layName, short layColor)
        {
            ObjectId oidReturn = new ObjectId(); ;
            using (Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument())
            {
                Database database = HostApplicationServices.WorkingDatabase;
                Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
                using (Transaction transaction = database.TransactionManager.StartTransaction())
                {
                    try
                    {
                        ObjectId id;
                        LayerTable table = transaction.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;
                        LayerTableRecord record = new LayerTableRecord();
                        if (table.Has(layName))
                        {
                            id = table.Id;
                            record = transaction.GetObject(id, OpenMode.ForWrite) as LayerTableRecord;
                            record.IsOff = false;
                            record.IsLocked = false;
                            if (id != database.Clayer)
                            {
                                record.IsFrozen = false;
                            }
                        }
                        else
                        {
                            record.Name = layName;
                            id = table.Add(record);
                            transaction.AddNewlyCreatedDBObject(record, true);
                        }
                        record.Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(ColorMethod.ByColor, layColor);
                        database.Clayer = id;
                        oidReturn = id;
                        transaction.Commit();
                    }
                    catch (Exception exception)
                    {

editor.WriteMessage("Error in addLayer2(): " + exception.Message);
                    }

}
                return oidReturn;
            }
        }

#endregion

如上述代码所示:

输入参数为:图层名称,和图层颜色

实现该功能的思路为:

锁定图档,

开启事务

获得当前图档的图层表(LayerTable);

像操作关系数据库那样创建一条图层表的新 纪录;

对新纪录赋予图层名称,定义图层颜色;

通过添加到图层表,获得记录主键;

通过事务,将新图层记录添加到图当中;

提交事务;

完成。

如有问题:请加qq1419226548或QQmail给我。 若转载,请注明出处。谢谢。

CAD 二次开发 图层操作(1)创建图层相关推荐

  1. c# cad 二次开发 类库 netload 图层操作、创建图层、删除图层、设置当前图层等

    c# cad 二次开发 类库 netload 图层操作.创建图层.删除图层.设置当前图层等 using Autodesk.AutoCAD.ApplicationServices; using Auto ...

  2. cad 二次开发 插入图片_C#之CAD二次开发(2) 直线对象创建及添加

    0. 前言 从本文开始就正式登上开往CAD二次开发幼儿园的大巴车了!你准备好了吗?车门已经焊死! 还有,本系列笔记是默认大家都有C#的基础的了.这个系列笔记是我自己学习CAD二次开发的一些记录,可能存 ...

  3. C++ ARX CAD二次开发实体操作

    得到选中的实体,修改实体如等分线段 AcGeVector3d是点阵的集合,通过等分点的差集得到. 新的点可以通过点与点阵相差得到. static void ArxProject2partLine(vo ...

  4. CAD 二次开发 图层操作(3)取得指定图层下的所有对象id

    对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作.下面的方法,即可实现获取指定图层名称下的所有实体ID. 输入参数为图层名称: 返回值为:对象主键集合 ...

  5. 关于objectArx /CAD二次开发中“属性块”操作

    关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...

  6. c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格

    c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCA ...

  7. c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作

    c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作 在这里插入图片描述 using Autodesk.AutoCAD.DatabaseServices; using ...

  8. 我的CAD二次开发程序中的操作excel的部分

    这是我的CAD二次开发程序中的操作excel的部分,特此分享 using System; using System.Collections.Generic; using System.Text; us ...

  9. CAD二次开发C#.Net编程-CAD创建右键菜单

    CAD二次开发&C#.Net编程-CAD创建右键菜单 private static ContextMenuExtension m_ContextMenu;//装载右键菜单public stat ...

最新文章

  1. mysql事务并发控制_mysql事务和多版本并发控制详解
  2. 对OCR文字识别软件进行自动分析和识别设置的教程
  3. 软件开发模式对比(瀑布、迭代、螺旋、敏捷)
  4. 在php中可以使用几种方法定义数组,PHP中数组定义的几种方法
  5. PowerDesigner16.5安装
  6. 为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?
  7. LeetCode刷题(46)--Search in Rotated Array
  8. bae java乱码_BAE json 返回乱码。
  9. 如何在WebGL全景图上做标记
  10. Transact-SQL 语法约定
  11. 【图像加密】基于matlab Logistic混沌图像加密与解密【含Matlab源码 1216期】
  12. layer数据加载中,loading的显示
  13. Python实现泛微OA云桥未授权任意文件读取
  14. 三维地图Cesium加载天地图
  15. python 开机自动切换必应壁纸
  16. 视频教程-《信息学竞赛-C语言》 DAY30-清华尹成老师-C/C++
  17. c++ 实现贪吃蛇(含技术难点解析和完整代码)
  18. Matlab中set函数的使用
  19. 中华人民共和国数据安全法(全文)
  20. php字典遍历,OC中的遍历数组和字典

热门文章

  1. 实现顺序表各种基本运算的算法
  2. 南卡和OPPO蓝牙耳机哪个好用?高品质的蓝牙耳机测评
  3. 如何将台式计算机连接到WiFi,台式机怎么连接wifi?台式电脑连接无线网络的方法(图文)...
  4. Python(3)——Python基本图形绘制
  5. sqlite编辑器 linux,SQLite编辑器
  6. 作业成本法中的成本动因分析----by AMT 邓为民
  7. Testin云测如何成为传统企业转型升级的“X”因子?
  8. java cpu 占用率高_java实战CPU占用过高问题的排查及解决
  9. 怎么在视频上叠加字幕和Logo--技术实现2
  10. R forcast auto arima用法