zoukankan      html  css  js  c++  java
  • 转:C# Autocad 关闭所有有色斑的图层

     

    /*关闭所有有色斑的图层
     * 
     * 色斑图层比较多的情况下,一个一个弄比较麻烦,这个一次全关,再配合图层状态保存功能就非常容易相互切换了
     * 
     * http://goat.cublog.cn
     * 作者:王晓东 QQ:10516321 Email:xiaook@gmail.com
     * 
     */

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

    /*Copyright © CHINA 2009

    AutoCAD version:AutoCAD 2006
    Description: 

    To use DelectObjectsInWindowPolyline.dll:

    1. Start AutoCAD and open a new drawing.
    2. Type netload and select CloseLayerHasHatchSolid.dll.
    3. Execute the xqd command.*/



    namespace CloseLayerHasHatchSolid
    {
        /// <summary>

        /// Summary for Class1.

        /// </summary>

        public class Class1
        {

            [CommandMethod("xcl")]
            public void xcl()
            {
                Document acDoc = Application.DocumentManager.MdiActiveDocument;
                Editor acDocEd = Application.DocumentManager.MdiActiveDocument.Editor;
                Database acDb = acDoc.Database;
                ObjectIdCollection acObjIdColl = new ObjectIdCollection();

                //选择范围线

                TypedValue[] tv = new TypedValue[2];
                tv[0] = new TypedValue((int)DxfCode.Start, "HATCH");
                tv[1] = new TypedValue((int)DxfCode.ShapeName, "SOLID");
                SelectionFilter sf = new SelectionFilter(tv);
                PromptSelectionResult acPtRes = acDocEd.SelectAll(sf);
                ObjectIdCollection oIdCol = new ObjectIdCollection();

                if (acPtRes.Status == PromptStatus.OK)
                {
                    SelectionSet ss = acPtRes.Value;
                    oIdCol = new ObjectIdCollection(ss.GetObjectIds());
                }
                foreach (ObjectId oid in oIdCol)
                {
                    using (Transaction acTrans = acDb.TransactionManager.StartTransaction())
                    {
                        Entity ent = (Entity)acTrans.GetObject(oid, OpenMode.ForRead);
                        LayerTable lt;
                        lt = (LayerTable)acTrans.GetObject(acDb.LayerTableId, OpenMode.ForRead);
                        LayerTableRecord ltr = (LayerTableRecord)acTrans.GetObject(lt[ent.Layer],OpenMode.ForWrite);
                        ltr.IsOff = true;
                        acTrans.Commit();
                    }
                }
            }
        }
    }

    摘自:http://blog.csdn.net/gisoracle/article/details/7276662

  • 相关阅读:
    Spring DI模式 小样例
    java中经常使用的日期格式化(全)
    循环-15. 统计素数并求和(20)
    [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合
    【UVA】11732
    Mac OS使用技巧之十六:系统失去响应怎么办?
    C# 保存窗口为图片(保存纵断面图)
    Linux Resin 安装
    Etcd学习(二)集群搭建Clustering
    android中选择控件与选择界面自然过度效果的实现--一种新的交互设计
  • 原文地址:https://www.cnblogs.com/wenwu/p/3234664.html
Copyright © 2011-2022 走看看