CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

还原层状态 (.NET)

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

该方法在图层状态下重置图层设置,并需要四个值。第一个值是要恢复的图层状态的名称,第二个值是要恢复其图层设置的视口的对象 ID。第三个值是一个整数,用于定义如何处理未处于图层状态的图层。第四个值确定恢复哪些图层设置。RestoreLayerState

以下值确定如何处理未处于图层状态的图层:

  • 0 - 未处于图层状态的图层保持不变
  • 1 - 未处于图层状态的图层已关闭
  • 2 - 未处于图层状态的图层冻结在当前视口中
  • 4 - 图层设置恢复为视口覆盖
注意:您可以使用前面列出的多个值的总和来定义未处于图层状态的图层的恢复行为。例如,您可以关闭并冻结未以图层状态保存的图层。

例如,如果将颜色和线型设置保存为“ColorLinetype”名称,然后更改这些设置,则恢复“ColorLinetype”会将图层重置为保存“ColorLinetype”时的颜色和线型。如果在保存“颜色线型”后向图形添加新图层,则在恢复“颜色线型”时,这些新图层不受影响。

恢复图形图层的颜色和线型设置

假设当前图形中图层的颜色和线型设置以前以“ColorLinetype”的名称保存,则以下代码将图形中每个图层的颜色和线型设置恢复为保存“ColorLinetype”时的值。

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("RestoreLayerState")> _
Public Sub RestoreLayerState()
    '' 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) = True Then
        acLyrStMan.RestoreLayerState(sLyrStName, _
                                     ObjectId.Null, _
                                     1, _
                                     LayerStateMasks.Color + _
                                     LayerStateMasks.LineType)
    End If
End Sub

C#

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

VBA/ActiveX 代码参考

Sub RestoreLayerState()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
                   GetInterfaceObject("AutoCAD.AcadLayerStateManager.24")
 
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Restore "ColorLinetype"
End Sub

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 13:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部