本人初学CAD二次开发,已有半载,感觉中途还是走了很多弯路,在此共享些基础东西。和前辈们探讨。
本文主要是图层管理,如常见的新建、关闭、删除等。基本上都是基础东西,只列出了关键代码,没写注释。
新建图层
-
- ///
- /// create new layer
- ///
- ///
- public void CreateLayer(String layerName)
- {
- Document doc = Autodesk..ApplicationServices.Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Transaction trs = db.TransactionManager.StartTransaction();
- using (trs)
- {
- LayerTable lt = trs.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
- if (!lt.Has(layerName))
- {
- LayerTableRecord ltr = new LayerTableRecord();
- ltr.Name = layerName;
- lt.Add(ltr);
- trs.AddNewlyCreatedDBObject(ltr, true);
- }
- trs.Commit();
- }
- }
判断图层是否存在
- ///
- /// judge if exist layer
- ///
- ///
- ///
- public bool IsExistLayer(String layerName)
- {
- bool retval = false;
- Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Transaction trs = db.TransactionManager.StartTransaction();
- using (trs)
- {
- LayerTable lt = trs.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable;
- if (lt.Has(layerName))
- {
- retval = true;
- }
- trs.Commit();
- }
- return retval;
- }
锁定图层
- ///
- /// lock layer
- ///
- ///
- public void LockLayer(String layerName)
- {
- if (!IsExistLayer(layerName))
- {
- return;
- }
- Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Transaction trs = db.TransactionManager.StartTransaction();
- using (trs)
- {
- LayerTable lt = trs.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable;
- LayerTableRecord ltr = trs.GetObject(lt[layerName], OpenMode.ForWrite) as LayerTableRecord;
- if (!ltr.IsLocked)
- {
- ltr.IsLocked = true;
- }
- trs.Commit();
- }
- }
删除图层
|