autocad.net 设置指定图层为当前图层

方法1:

public static void SetLayerCurrent()
        {//http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/index.html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-3d31.htm,topicNumber=d0e29116
          // 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) == true)
              {
                  // Set the layer Center current
                  acCurDb.Clayer = acLyrTbl[sLayerName]; 
                  // Save the changes
                  acTrans.Commit();
              } 
              // Dispose of the transaction
          }
        }

方法2:

public static void SetLayerCurrent2()
        {
            Application.SetSystemVariable("CLAYER", "Center");
        }

完整代码:

//by 鸟哥 qq1833183060
//qq群 720924083
//2020-11-07
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;

namespace AcadDemo
{
    public class MyLayer
    { 
        [CommandMethod("SetLayerCurrent")]
        public static void SetLayerCurrent()
        {//http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/index.html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-3d31.htm,topicNumber=d0e29116
          // 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) == true)
              {
                  // Set the layer Center current
                  acCurDb.Clayer = acLyrTbl[sLayerName]; 
                  // Save the changes
                  acTrans.Commit();
              } 
              // Dispose of the transaction
          }
        }

        public static void SetLayerCurrent2()
        {
            Application.SetSystemVariable("CLAYER", "Center");
        }
    
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸟哥01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值