/// <summary> /// 激活图层(取消冻结、锁定、隐藏) /// </summary> /// <param name="LayerName"></param> /// <returns></returns> public bool ActivationLayer(string LayerName = "") { try { using (Transaction tran = database.TransactionManager.StartTransaction()) { foreach (ObjectId LayerId in LayerTbl) { LayerTableRecord Layer = LayerId.GetObject(OpenMode.ForWrite) as LayerTableRecord; if (string.IsNullOrWhiteSpace(LayerName) || Layer.Name == LayerName) { Layer.IsLocked = false; Layer.IsHidden = false; Layer.IsFrozen = false; } Layer.DowngradeOpen(); } tran.Commit(); } } catch (Exception ex) { Logger.log("ActivationLayer", ex.Message); } return(false); }
/// <summary> /// 设置图层rgb颜色 /// </summary> /// <param name="db"></param> /// <param name="layerName"></param> /// <param name="RedColor">R</param> /// <param name="GreenColor">G</param> /// <param name="BlueColor">B</param> /// <returns></returns> public static bool SetLayerColor(this Database db, string layerName, int RedColor, int GreenColor, int BlueColor) { using (Transaction trans = db.TransactionManager.StartTransaction()) { LayerTable lt = (LayerTable)db.LayerTableId.GetObject(OpenMode.ForRead); if (!lt.Has(layerName)) { return(false); } ObjectId layerId = lt[layerName]; LayerTableRecord ltr = (LayerTableRecord)layerId.GetObject(OpenMode.ForWrite); ltr.Color = Color.FromRgb(Convert.ToByte(RedColor), Convert.ToByte(GreenColor), Convert.ToByte(BlueColor)); ltr.DowngradeOpen(); trans.Commit(); } return(true); }
/// <summary> /// 设置图层索引颜色 /// </summary> /// <param name="db"></param> /// <param name="layerName">图层名</param> /// <param name="colorIndex">索引颜色</param> /// <returns></returns> public static bool SetLayerColor(this Database db, string layerName, int colorIndex) { using (Transaction trans = db.TransactionManager.StartTransaction()) { LayerTable lt = (LayerTable)db.LayerTableId.GetObject(OpenMode.ForRead); if (!lt.Has(layerName)) { return(false); } ObjectId layerId = lt[layerName]; LayerTableRecord ltr = (LayerTableRecord)layerId.GetObject(OpenMode.ForWrite); ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, (short)colorIndex); ltr.DowngradeOpen(); trans.Commit(); } return(true); }
/// <summary> /// 设置图层的颜色 /// </summary> /// <param name="db">数据库对象</param> /// <param name="layerName">图层名</param> /// <param name="colorIndex">颜色索引</param> /// <returns>如果成功设置图层颜色,则返回true,否则返回false</returns> public static bool SetLayerColor(this Database db, string layerName, short colorIndex) { //打开层表 LayerTable lt = (LayerTable)db.LayerTableId.GetObject(OpenMode.ForRead); //如果不存在名为layerName的图层,则返回 if (!lt.Has(layerName)) { return(false); } ObjectId layerId = lt[layerName];//获取名为layerName的层表记录的Id //以写的方式打开名为layerName的层表记录 LayerTableRecord ltr = (LayerTableRecord)layerId.GetObject(OpenMode.ForWrite); //设置图层的颜色 ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); ltr.DowngradeOpen(); //为了安全,将图层的状态切换为读 return(true); //设置图层颜色成功 }
/// <summary> /// 设置图层状态 /// </summary> /// <param name="LayerStateList"></param> /// <returns></returns> public bool SetLayerStates(List <LayerState> LayerStateList) { try { using (Transaction tran = database.TransactionManager.StartTransaction()) { foreach (LayerState State in LayerStateList) { LayerTableRecord Layer = State.LayerId.GetObject(OpenMode.ForWrite) as LayerTableRecord; Layer.IsLocked = State.IsLocked; Layer.IsHidden = State.IsHidden; Layer.IsFrozen = State.IsFrozen; Layer.DowngradeOpen(); } tran.Commit(); } } catch (Exception ex) { Logger.log("SetLayerStates", ex.Message); } return(false); }
public static ObjectId AddLayer(Database db, string layerName, short LayerColorIndex, string LineTypeName, string Description)//封装添加图层方法 { LayerTable layerTable = (LayerTable)db.LayerTableId.GetObject(OpenMode.ForRead); if (!layerTable.Has(layerName)) { LayerTableRecord layer = new LayerTableRecord(); layer.Name = layerName; ColorMethod method = ColorMethod.ByLayer; layer.Color = Color.FromColorIndex(method, LayerColorIndex); var lt = (LinetypeTable)db.LinetypeTableId.GetObject(OpenMode.ForRead); LoadLineType(); var id = lt[LineTypeName]; layer.LinetypeObjectId = id; layer.Description = Description; layerTable.UpgradeOpen(); layerTable.Add(layer); db.TransactionManager.AddNewlyCreatedDBObject(layer, true); layer.DowngradeOpen(); } return(layerTable[layerName]); }