CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

保存层状态 (.NET)

2023-1-1 12:52| 发布者: admin| 查看: 304| 评论: 0|来自: AutoCAD

使用该方法在图形中保存一组图层设置。该方法需要三个参数。第一个参数是用于命名要保存的图层状态的字符串。第二个参数标识要保存的图层属性。使用 enum 的常量来标识要保存的图层设置。下表列出了属于枚举的常量。SaveLayerStateSaveLayerStateLayerStateMasksLayerStateMasks

图层状态掩码的常量

常量名称

图层属性

颜色

颜色

当前视口

当前视口图层冻结或解冻

冷冻

冷冻或解冻

上次恢复

上次恢复的图层

线型

线型

线宽

线宽

锁定或解锁

新视口

冻结或解冻的新视口图层

没有

无图层设置

开或关

情节

打印打开或关闭

打印样式

绘图样式

将常量相加以指定多个属性。

第三个必需参数是要保存其图层设置的视口的对象 ID。用于不指定视区。如果尝试以已存在的名称保存图层状态,则会返回错误。必须先重命名或删除现有图层状态,然后才能重复使用该名称。ObjectId.Null

保存图层的颜色和线型设置

以下代码以名称 ColorLinetype 保存图形中当前图层的颜色和线型设置。

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("SaveLayerColorAndLinetype")> _
Public Sub SaveLayerColorAndLinetype()
    '' Get the current document
    Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
 
    Dim acLyrStMan As LayerStateManager
    acLyrStMan = acDoc.Database.LayerStateManager
 
    Dim sLyrStName As String = "ColorLinetype"
 
    If acLyrStMan.HasLayerState(sLyrStName) = False Then
        acLyrStMan.SaveLayerState(sLyrStName, _
                                  LayerStateMasks.Color + _
                                  LayerStateMasks.LineType, _
                                  ObjectId.Null)
    End If
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
 
[CommandMethod("SaveLayerColorAndLinetype")]
public static void SaveLayerColorAndLinetype()
{
    // Get the current document
    Document acDoc = Application.DocumentManager.MdiActiveDocument;
 
    LayerStateManager acLyrStMan;
    acLyrStMan = acDoc.Database.LayerStateManager;
 
    string sLyrStName = "ColorLinetype";
 
    if (acLyrStMan.HasLayerState(sLyrStName) == false)
    {
        acLyrStMan.SaveLayerState(sLyrStName,
                                  LayerStateMasks.Color | 
                                  LayerStateMasks.LineType,
                                  ObjectId.Null);
    }
}

VBA/ActiveX 代码参考

Sub SaveLayerColorAndLinetype()
    Dim oLSM As AcadLayerStateManager
 
    ' Access the LayerStateManager object
    Set oLSM = ThisDrawing.Application. _
                   GetInterfaceObject("AutoCAD.AcadLayerStateManager.24")
 
    ' Associate the current drawing database with LayerStateManager
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Save "ColorLinetype", acLsColor + acLsLineType
End Sub

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 12:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部