定义图层时,线型提供了另一种传达视觉信息的方式。线型是虚线、圆点和空格的重复图案,可用于区分一行和另一行的用途。 线型名称和定义描述特定的破折号-点序列、破折号和空格的相对长度,以及任何包含的文本或形状的特征。 使用 Linetype 属性可将线型分配给图层。此属性采用线型的名称作为输入。 注意:必须先在图形中定义线型,然后才能将线型指定给图层。
设置图层的线型以下示例创建一个名为“ABC”的新图层,并为其分配“Center”线型。 VB.NETImports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices <CommandMethod("SetLayerLinetype")> _ Public Sub SetLayerLinetype() '' 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 = "ABC" If acLyrTbl.Has(sLayerName) = False Then Using acLyrTblRec As LayerTableRecord = New LayerTableRecord() '' Assign the layer a name acLyrTblRec.Name = sLayerName '' Open the Layer table for read Dim acLinTbl As LinetypeTable acLinTbl = acTrans.GetObject(acCurDb.LinetypeTableId, _ OpenMode.ForRead) If acLinTbl.Has("Center") = True Then '' Set the linetype for the layer acLyrTblRec.LinetypeObjectId = acLinTbl("Center") End If '' 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 Else Dim acLyrTblRec As LayerTableRecord = acTrans.GetObject(acLyrTbl(sLayerName), _ OpenMode.ForRead) '' Open the Layer table for read Dim acLinTbl As LinetypeTable acLinTbl = acTrans.GetObject(acCurDb.LinetypeTableId, _ OpenMode.ForRead) If acLinTbl.Has("Center") = True Then '' Upgrade the Layer Table Record for write acTrans.GetObject(acLyrTbl(sLayerName), OpenMode.ForWrite) '' Set the linetype for the layer acLyrTblRec.LinetypeObjectId = acLinTbl("Center") End If End If '' 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; [CommandMethod("SetLayerLinetype")] public static void SetLayerLinetype() { // 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 = "ABC"; if (acLyrTbl.Has(sLayerName) == false) { using (LayerTableRecord acLyrTblRec = new LayerTableRecord()) { // Assign the layer a name acLyrTblRec.Name = sLayerName; // Open the Layer table for read LinetypeTable acLinTbl; acLinTbl = acTrans.GetObject(acCurDb.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (acLinTbl.Has("Center") == true) { // Set the linetype for the layer acLyrTblRec.LinetypeObjectId = acLinTbl["Center"]; } // 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); } } else { LayerTableRecord acLyrTblRec = acTrans.GetObject(acLyrTbl[sLayerName], OpenMode.ForRead) as LayerTableRecord; // Open the Layer table for read LinetypeTable acLinTbl; acLinTbl = acTrans.GetObject(acCurDb.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (acLinTbl.Has("Center") == true) { // Upgrade the Layer Table Record for write acTrans.GetObject(acLyrTbl[sLayerName], OpenMode.ForWrite); // Set the linetype for the layer acLyrTblRec.LinetypeObjectId = acLinTbl["Center"]; } } // Save the changes and dispose of the transaction acTrans.Commit(); } } VBA/ActiveX 代码参考Sub SetLayerLinetype() On Error Resume Next Dim layerObj As AcadLayer Set layerObj = ThisDrawing.Layers.Add("ABC") layerObj.Linetype = "Center" End Sub 相关概念父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:45
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.