03-05 创建和编辑AutoCAD实体(五) 使用图层、颜色和线型(1)
1.2、Create and Name Layers 创建并命名图层You can create new layers and assign color and linetype properties to those layers. Each individual layer is part of the Layers table. Use the Add function to create a new layer and add it to the Layers table. 我们可以创建新图层,并给这些新图层的颜色和线型属性赋值。每个图层均为Layers表的一部分。使用Add方法创建新图层并将其添加到Layers表中。 You can assign a name to a layer when it is created. To change the name of a layer after it has been created,use the Name property. Layer names can include up to 255 characters and contain letters,digits,and the special characters dollar sign ($),hyphen (-),and underscore (_). 创建图层时可以为其命名,修改图层名称用Name属性。图层名称可以含最多255个字符,包括字母、数字以及特殊字符美元符号($)、连字符(-)、下划线(_)等。 For more information about creating layers,see “Create and Name Layers” in the AutoCAD User's Guide. 创建图层的更多内容,见AutoCAD用户指南中的“创建并命名图层”。 Create a new layer,assign it the color red,and add an object to the layer 创建一个新图层,设为红色,并添加到图层表里 The following code creates a new layer and circle object. The new layer is assigned the color red. The circle is assigned to the layer,and the color of the circle changes accordingly. 下面的代码创建一个新图层和一个圆对象,新图层的颜色设为红色。将圆指定到新图层时,圆的颜色会相应地变成红色。 VB.NET Imports 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 Dim acLyrTblRec As LayerTableRecord = New LayerTableRecord() '' Assign the layer the ACI color 1 and a name acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci,1) acLyrTblRec.Name = sLayerName '' Upgrade the Layer table for write acLyrTbl.UpgradeOpen() '' Append the new layer to the Layer table and the transaction acLyrTbl.Add(acLyrTblRec) acTrans.AddNewlyCreatedDBObject(acLyrTblRec,True) 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 Dim 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) '' 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) { LayerTableRecord acLyrTblRec = new LayerTableRecord(); // Assign the layer the AutoCADColorIndex(ACI) color 1 and a name赋予图层颜色和名称(颜色索引值1表示红色) acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci,1); acLyrTblRec.Name = sLayerName; // Upgrade the Layer table for write以写升级打开图层表 acLyrTbl.UpgradeOpen(); // 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新建一个圆 Circle acCirc = new Circle(); acCirc.Center = new Point3d(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 Code Reference 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |