提要:影响图层显示的主要有:
关闭 isOff
冻结 IsFrozen
图层隐藏 isHidden
视口冻结 FreezeLayersInViewport
今天小博发现了一件事情,无论怎么用 IsHidden 都会出现报错 eDuplicateRecordName
public class Command_Fuckcad { [CommandMethod("Hiddenlayer")] public void Hiddenlayer() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (Application.DocumentManager.MdiActiveDocument.LockDocument())//锁文档 { using (Transaction tr = db.TransactionManager.StartTransaction()) { LayerTable table = tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable; string ss = "Test"; LayerTableRecord layerName = null; if (table.Has(ss)) { foreach (var item in table) { layerName = tr.GetObject(item, OpenMode.ForRead) as LayerTableRecord; if (layerName.Name == ss) { layerName.UpgradeOpen(); layerName.IsHidden = true; layerName.DowngradeOpen(); break; } } } else { layerName = new LayerTableRecord { Name = ss, IsHidden = false }; table.Add(layerName); tr.AddNewlyCreatedDBObject(layerName, true); } table.DowngradeOpen(); table.Dispose(); tr.Commit(); } } } }
2008和2019测试都是
第一次遍历,生成一个test图层,
第二次遍历,修改隐藏(相当于删除了的感觉)
第三次遍历,又生成了一个test图层
第四次遍历,修改隐藏报错了
后来得到e大的帮助,说了一个很重要的问题,遍历器上面没有,那么我就去看了块表,块表上面有个参数是 IncludingHidden,
所以代码要写这句,层表才会显示隐藏的图层:(几乎所有表都有这个隐藏?