關閉所有有色斑的圖層

來源:互聯網
上載者:User
關閉所有有色斑的圖層

/*關閉所有有色斑的圖層
 *
 * 色斑圖層比較多的情況下,一個一個弄比較麻煩,這個一次全關,再配合圖層狀態儲存功能就非常容易相互切換了
 *
 * 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();
                }
            }
        }
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.