12-25-2024
01:08 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
12-25-2024
01:08 AM
Thanks, base on you i found this topic:
Topic about layer unlock, faded,hide ( chinese language)
And here is my code for that:
Regen Layers :
var lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead);
ObjectId[] layerIds = lt.Cast<ObjectId>().ToArray();
RegenLayers(layerIds);
public static void RegenLayers(ObjectId[] layerIds)
{
dynamic acad = Application.AcadApplication;
int majorVersion = int.Parse(acad.Version.Split('.')[0]);
var type = majorVersion >= 21
? Assembly.Load("accoremgd")?.GetType("Autodesk.AutoCAD.Internal.CoreLayerUtilities")
: Assembly.Load("acmgd")?.GetType("Autodesk.AutoCAD.Internal.LayerUtilities");
var majorInfo = type?.GetMethod("RegenLayers", new[] { typeof(ObjectId[]), typeof(int) });
var propertyInfo = type?.GetProperties().FirstOrDefault(e => e.Name == "RegenPending");
var regenPending = (int)(propertyInfo?.GetValue(null) ?? 0);
majorInfo?.Invoke(null, new object[] { layerIds, regenPending });
}