cad.net添加和删除图层过滤器

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.LayerManager;

namespace LayerFilters

{

public class Commands

{

[CommandMethod("LLFS")]

static public void ListLayerFilters()

{

Document doc =

Application.DocumentManager.MdiActiveDocument;

Database db = doc.Database;

Editor ed = doc.Editor;

// List the nested layer filters

LayerFilterCollection lfc =

db.LayerFilters.Root.NestedFilters;

for (int i = 0; i < lfc.Count; ++i)

{

LayerFilter lf = lfc[i];

ed.WriteMessage(

"\n{0} - {1} (can{2} be deleted)",

i + 1,

lf.Name,

(lf.AllowDelete ? "" : "not")

);

}

}

[CommandMethod("CLFS")]

static public void CreateLayerFilters()

{

Document doc =

Application.DocumentManager.MdiActiveDocument;

Database db = doc.Database;

Editor ed = doc.Editor;

try

{

// Get the existing layer filters

// (we will add to them and set them back)

LayerFilterTree lft =

db.LayerFilters;

LayerFilterCollection lfc =

lft.Root.NestedFilters;

// Create three new layer filters

LayerFilter lf1 = new LayerFilter();

lf1.Name = "Unlocked Layers";

lf1.FilterExpression = "LOCKED==\"False\"";

LayerFilter lf2 = new LayerFilter();

lf2.Name = "White Layers";

lf2.FilterExpression = "COLOR==\"7\"";

LayerFilter lf3 = new LayerFilter();

lf3.Name = "Visible Layers";

lf3.FilterExpression =

"OFF==\"False\" AND FROZEN==\"False\"";

// Add them to the collection

lfc.Add(lf1);

lfc.Add(lf2);

lfc.Add(lf3);

// Set them back on the Database

db.LayerFilters = lft;

// List the layer filters, to see the new ones

ListLayerFilters();

}

catch (Exception ex)

{

ed.WriteMessage(

"\nException: {0}",

ex.Message

);

}

}

[CommandMethod("DLF")]

static public void DeleteLayerFilter()

{

Document doc =

Application.DocumentManager.MdiActiveDocument;

Database db = doc.Database;

Editor ed = doc.Editor;

ListLayerFilters();

try

{

// Get the existing layer filters

// (we will add to them and set them back)

LayerFilterTree lft =

db.LayerFilters;

LayerFilterCollection lfc =

lft.Root.NestedFilters;

// Prompt for the index of the filter to delete

PromptIntegerOptions pio =

new PromptIntegerOptions(

"\n\nEnter index of filter to delete"

);

pio.LowerLimit = 1;

pio.UpperLimit = lfc.Count;

PromptIntegerResult pir =

ed.GetInteger(pio);

// Get the selected filter

LayerFilter lf = lfc[pir.Value - 1];

// If it\'s possible to delete it, do so

if (!lf.AllowDelete)

{

ed.WriteMessage(

"\nLayer filter cannot be deleted."

);

}

else

{

lfc.Remove(lf);

db.LayerFilters = lft;

ListLayerFilters();

}

}

catch(Exception ex)

{

ed.WriteMessage(

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgypxf.html