03-05 创建和编辑AutoCAD实体(五) 使用图层、颜色和线型(1)使用图层(1-2)

 

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, 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值