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

前端之家收集整理的这篇文章主要介绍了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,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

猜你在找的VB相关文章