100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > CAD.NET二次开发 新建图层 删除图层 指定图层颜色以及线形等

CAD.NET二次开发 新建图层 删除图层 指定图层颜色以及线形等

时间:2021-03-01 14:12:39

相关推荐

CAD.NET二次开发 新建图层 删除图层 指定图层颜色以及线形等

基于浩辰CAD 测试 功能实现

直接上代码:

[CommandMethod("CreateAndAssignAlayer")] //新建图层 然后添加到图层表里

public static void CreateAndAssignAlyer()

{

Document doc = Application.DocumentManager.MdiActiveDocument;

Database db = doc.Database;

using (Transaction Trans = db.TransactionManager.StartTransaction())

{

//以读模式打开图层表

LayerTable layerTable;

layerTable = Trans.GetObject(db.LayerTableId, OpenMode.ForNotify) as LayerTable;

string sLayerName = "test1";

if (layerTable.Has(sLayerName) == false)

{

LayerTableRecord layerTableRecord = new LayerTableRecord();

layerTableRecord.Color = Color.FromColorIndex(ColorMethod.ByAci, 1);

layerTableRecord.Name = sLayerName;

layerTable.UpgradeOpen();

layerTable.Add(layerTableRecord);

Trans.AddNewlyCreatedDBObject(layerTableRecord, true);

}

BlockTable blockTable;

blockTable = Trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;

BlockTableRecord blockTableRecord;

blockTableRecord = Trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

Circle circle = new Circle();

circle.Center = new Point3d(100, 200, 0);

circle.Radius = 300;

circle.Layer = sLayerName;

blockTableRecord.AppendEntity(circle);

Trans.AddNewlyCreatedDBObject(circle, true);

db.Clayer = layerTable[sLayerName];

mit();

}

}

[CommandMethod("TurnLayerOff")] //关闭图层表

public void TurnLayerOff()

{

Document doc = Application.DocumentManager.MdiActiveDocument;

Database database = doc.Database;

using (Transaction trans = database.TransactionManager.StartTransaction())

{

LayerTable layerTable;

layerTable = trans.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;

String slayer = "0415";

LayerTableRecord layerTableRecord;

if (layerTable.Has(slayer) == false)

{

layerTableRecord = new LayerTableRecord();

layerTableRecord.Color = Color.FromColorIndex(ColorMethod.ByColor, 2);

layerTableRecord.Name = slayer;

layerTable.UpgradeOpen();

layerTable.Add(layerTableRecord);

trans.AddNewlyCreatedDBObject(layerTableRecord, true);

}

else

{

layerTableRecord = trans.GetObject(layerTable[slayer], OpenMode.ForWrite) as LayerTableRecord;

}

layerTableRecord.IsOff = true;

BlockTable blockTable;

blockTable = trans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable;

BlockTableRecord blockTableRecord = trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

Circle cir = new Circle();

cir.Center = new Point3d(200, 300, 400);

cir.Radius = 500;

cir.Layer = slayer;

blockTableRecord.AppendEntity(cir);

trans.AddNewlyCreatedDBObject(cir, true);

mit();

}

}

[CommandMethod("FrozenLayer")]

public void FrozenLayer()

{

Document document = Application.DocumentManager.MdiActiveDocument;

Database database = document.Database;

using (Transaction transaction=database.TransactionManager.StartTransaction())

{

LayerTable layerTable;

layerTable = transaction.GetObject(database.LayerTableId,OpenMode.ForWrite) as LayerTable;

string aLayer = "test1";

LayerTableRecord layerTableRecord;

if (layerTable.Has(aLayer)==false)

{

layerTableRecord = new LayerTableRecord();

layerTableRecord.Color = Color.FromColorIndex(ColorMethod.ByAci,3);

layerTableRecord.Name = aLayer;

layerTable.UpgradeOpen();

layerTable.Add(layerTableRecord);

transaction.AddNewlyCreatedDBObject(layerTableRecord, true);

}

else

{

layerTableRecord = transaction.GetObject(layerTable[aLayer],OpenMode.ForWrite) as LayerTableRecord;

}

layerTableRecord.IsFrozen = true;

BlockTable blockTable = transaction.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable;

BlockTableRecord blockTableRecord = transaction.GetObject(blockTable[BlockTableRecord.ModelSpace],OpenMode.ForWrite) as BlockTableRecord;

Circle cir = new Circle();

cir.Center = new Point3d(200, 300, 400);

cir.Radius = 500;

cir.Layer = aLayer;

blockTableRecord.AppendEntity(cir);

transaction.AddNewlyCreatedDBObject(cir, true);

mit();

}

}

[CommandMethod("SetLayerColor")] //指定图层颜色

public void SetLayerColor()

{

Document doc = Application.DocumentManager.MdiActiveDocument;

Database database = doc.Database;

using (Transaction trans=database.TransactionManager.StartTransaction())

{

LayerTable layerTable = trans.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;

string[] sLayerNames = new string[3];

sLayerNames[0] = "ACIRed";

sLayerNames[1] = "TrueBlue";

sLayerNames[2] = "ColorBookYellow";

Color[] acColors = new Color[3];

acColors[0] = Color.FromColorIndex(ColorMethod.ByAci,1);

acColors[1] = Color.FromRgb(23,54,232);

acColors[2] = Color.FromNames("PANTONE Yellow 0131 C","PANTONE(R) pastel coated");

int nCnt = 0;

foreach (string sLayerName in sLayerNames)

{

LayerTableRecord layerTableRecord;

if (layerTable.Has(sLayerName) == false)

{

layerTableRecord = new LayerTableRecord();

layerTableRecord.Name = sLayerName;

if (layerTable.IsWriteEnabled == false) layerTable.UpgradeOpen();

layerTable.Add(layerTableRecord);

trans.AddNewlyCreatedDBObject(layerTableRecord, true);

}

else

{

layerTableRecord = trans.GetObject(layerTable[sLayerName], OpenMode.ForWrite) as LayerTableRecord;

}

layerTableRecord.Color = acColors[nCnt];

nCnt++;

}

mit();

}

}

[CommandMethod("SetLayerLineType")]

public void SetLayerLineType() //设置图层线型

{

Document document = Application.DocumentManager.MdiActiveDocument;

Database database = document.Database;

using (Transaction transaction = database.TransactionManager.StartTransaction())

{

LayerTable layerTable = transaction.GetObject(database.LayerTableId,OpenMode.ForRead) as LayerTable;

string sLayerName = "ABC";

LayerTableRecord layerTableRecord;

if (layerTable.Has(sLayerName) == false)

{

layerTableRecord = new LayerTableRecord();

layerTableRecord.Name = sLayerName;

layerTable.UpgradeOpen();

layerTable.Add(layerTableRecord);

transaction.AddNewlyCreatedDBObject(layerTableRecord, true);

}

else

{

layerTableRecord = transaction.GetObject(layerTable[sLayerName], OpenMode.ForRead) as LayerTableRecord;

}

LinetypeTable linetypeTable = transaction.GetObject(database.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;

if (linetypeTable.Has("Center") == true)

{

layerTableRecord.UpgradeOpen();

layerTableRecord.LinetypeObjectId = linetypeTable["Center"];

}

mit();

}

}

[CommandMethod("EraseLayer")]

public void EraseLayer() //删除图层

{

Document document = Application.DocumentManager.MdiActiveDocument;

Database database = document.Database;

using (Transaction transaction=database.TransactionManager.StartTransaction())

{

LayerTable layerTable = transaction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;

string sLayerName = "test1";

if (layerTable.Has(sLayerName) == true)

{

ObjectIdCollection objectIdCollection = new ObjectIdCollection();

objectIdCollection.Add(layerTable[sLayerName]);

//database.Purge(objectIdCollection);

if (objectIdCollection.Count>0)

{

LayerTableRecord layerTableRecord = transaction.GetObject(objectIdCollection[0], OpenMode.ForWrite) as LayerTableRecord;

try

{

layerTableRecord.Erase(true);

mit();

}

catch(GrxCAD.Runtime.Exception ex)

{

Application.ShowAlertDialog("Error:\n" + ex.Message);

}

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。