1、需求
AutoCAD图形绘制需要放置在相关图层,本文就针对AutoCAD图层样式进行定义
2、思路
根据CAD自带的图层样式以及参考相关接口设置图层样式
3、环境
AutoCAD 2018/vs2015
4、步骤:
(1) 新建一个临时图形数据库
Database tempDB = new Database(false, true);
(2) 定义图层名称以及图层颜色
(3) 设置图层线宽以及线形
(4) 把设置的图层信息添加到块表记录中
BlockTableRecord.AppendEntity()
Transaction.AddNewlyCreatedDBObject();
关键代码:
/// <summary>
/// 标准图层配置
/// </summary>
public static void InitLayer()
{
Database acCurDb = HostApplicationServices.WorkingDatabase;
using (Transaction tr = acCurDb.TransactionManager.StartTransaction())
{
Dictionary<string, short> ldic = new Dictionary<string, short>()
{
["粗线"] = 4,
["细线"] = 2,
["标注"] = 7,
["文本"] = 7,
["中心线"] = 1,
["虚线"] = 3,
["标注"] = 7,
};
List<string> Lname = new List<string>() { "CENTER", "DASHED" };
LayerTable acLyrTbl;
acLyrTbl = tr.GetObject(acCurDb.LayerTableId, OpenMode.ForRead) as LayerTable;
LinetypeTable acLinTbl;
acLinTbl = tr.GetObject(acCurDb.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;
foreach (string ltname in Lname)
{
if (!acLinTbl.Has(ltname))
{
acCurDb.LoadLineTypeFile(ltname, "acad.lin");
}
}
LayerTableRecord acLyrTblRec = new LayerTableRecord();
foreach (string key in ldic.Keys)
{
short cid = ldic[key];
acLyrTblRec = new LayerTableRecord();
if (!acLyrTbl.Has(key))
{
acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, cid);
if (cid != 4) { acLyrTblRec.LineWeight = LineWeight.LineWeight009; }
else { acLyrTblRec.LineWeight = LineWeight.LineWeight030; }
if (cid == 1) { acLyrTblRec.LinetypeObjectId = acLinTbl["CENTER"]; }
if (cid == 3) { acLyrTblRec.LinetypeObjectId = acLinTbl["DASHED"]; }
if (cid == 8) { acLyrTblRec.IsPlottable = false; }
acLyrTblRec.Name = key;
if (acLyrTbl.IsWriteEnabled == false) acLyrTbl.UpgradeOpen();
acLyrTbl.Add(acLyrTblRec);
tr.AddNewlyCreatedDBObject(acLyrTblRec, true);
}
else
{
acLyrTblRec = tr.GetObject(acLyrTbl[key], OpenMode.ForWrite) as LayerTableRecord;
if (cid != 4) { acLyrTblRec.LineWeight = LineWeight.LineWeight009; }
else { acLyrTblRec.LineWeight = LineWeight.LineWeight030; }
if (cid == 1) { acLyrTblRec.LinetypeObjectId = acLinTbl["CENTER"]; }
if (cid == 3) { acLyrTblRec.LinetypeObjectId = acLinTbl["DASHED"]; }
if (cid == 8) { acLyrTblRec.IsPlottable = false; }
acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, cid);
}
}
tr.Commit();
}
}
————————————————
版权声明:本文为CSDN博主「wnzsj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wnzsj/article/details/121858950