创建和命名图层 (.NET)
您可以创建新图层,并为这些图层指定颜色和线型属性。每个单独的图层都是图层表的一部分。使用该函数创建一个新图层并将其添加到图层表中。Add 您可以在创建图层时为其指定名称。要在创建图层后更改图层的名称,请使用该属性。图层名称最多可以包含 255 个字符,并包含字母、数字和特殊字符美元符号 ($)、连字符 (-) 和下划线 (_)。Name 创建一个新图层,为其指定绿色,然后向图层添加对象下面的代码创建一个新的图层和圆对象。新图层被指定为绿色。将圆圈分配给图层,并且圆圈的颜色会相应更改。 VB.NETImports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry Imports Autodesk.AutoCAD.Colors <CommandMethod("CreateAndAssignALayer")> _ Public Sub CreateAndAssignALayer() '' Get the current document and database Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database '' Start a transaction Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() '' Open the Layer table for read Dim acLyrTbl As LayerTable acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId, _ OpenMode.ForRead) Dim sLayerName As String = "Center" If acLyrTbl.Has(sLayerName) = False Then Using acLyrTblRec As LayerTableRecord = New LayerTableRecord() '' Assign the layer the ACI color 3 and a name acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, 3) acLyrTblRec.Name = sLayerName '' Upgrade the Layer table for write acTrans.GetObject(acCurDb.LayerTableId, OpenMode.ForWrite) '' Append the new layer to the Layer table and the transaction acLyrTbl.Add(acLyrTblRec) acTrans.AddNewlyCreatedDBObject(acLyrTblRec, True) End Using End If '' Open the Block table for read Dim acBlkTbl As BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _ OpenMode.ForRead) '' Open the Block table record Model space for write Dim acBlkTblRec As BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _ OpenMode.ForWrite) '' Create a circle object Using acCirc As Circle = New Circle() acCirc.Center = New Point3d(2, 2, 0) acCirc.Radius = 1 acCirc.Layer = sLayerName acBlkTblRec.AppendEntity(acCirc) acTrans.AddNewlyCreatedDBObject(acCirc, True) End Using '' Save the changes and dispose of the transaction acTrans.Commit() End Using End Sub C#using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Colors; [CommandMethod("CreateAndAssignALayer")] public static void CreateAndAssignALayer() { // Get the current document and database Document acDoc = Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // Start a transaction using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // Open the Layer table for read LayerTable acLyrTbl; acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId, OpenMode.ForRead) as LayerTable; string sLayerName = "Center"; if (acLyrTbl.Has(sLayerName) == false) { using (LayerTableRecord acLyrTblRec = new LayerTableRecord()) { // Assign the layer the ACI color 3 and a name acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, 3); acLyrTblRec.Name = sLayerName; // Upgrade the Layer table for write acTrans.GetObject(acCurDb.LayerTableId, OpenMode.ForWrite); // Append the new layer to the Layer table and the transaction acLyrTbl.Add(acLyrTblRec); acTrans.AddNewlyCreatedDBObject(acLyrTblRec, true); } } // Open the Block table for read BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // Open the Block table record Model space for write BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Create a circle object using (Circle acCirc = new Circle()) { acCirc.Center = new Point3d(2, 2, 0); acCirc.Radius = 1; acCirc.Layer = sLayerName; acBlkTblRec.AppendEntity(acCirc); acTrans.AddNewlyCreatedDBObject(acCirc, true); } // Save the changes and dispose of the transaction acTrans.Commit(); } } VBA/ActiveX 代码参考Sub CreateAssignALayer() ' Create a new layer and assign it the color red Dim layerObj As AcadLayer Set layerObj = ThisDrawing.Layers.Add("Center") layerObj.color = acRed ' Create a circle Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 2: center(1) = 2: center(2) = 0 radius = 1 Set circleObj = ThisDrawing.ModelSpace. _ AddCircle(center, radius) ' Place the circle on the Center layer circleObj.Layer = "Center" circleObj.Update End Sub 相关概念父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 12:36
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.