[CommandMethod("SetDynamicBlkProperty2")]
public static void SetDynamicBlkProperty2()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead, false, true);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead, false, true);
foreach (ObjectId entity in btr)
{
Entity ent = (Entity)tr.GetObject(entity, OpenMode.ForRead);
if (ent is BlockReference)
{
BlockReference bref = tr.GetObject(entity, OpenMode.ForWrite, false, true) as BlockReference;
if (bref.IsDynamicBlock)
{
BlockTableRecord dynBtr = (BlockTableRecord)tr.GetObject(bref.DynamicBlockTableRecord, OpenMode.ForWrite, false, true);
var blockNames = GetBlockNames("C:\\Developments\\Lists\\ListOfBlocks.txt");
if (blockNames.Contains(dynBtr.Name) )
{
DynamicBlockReferencePropertyCollection props = bref.DynamicBlockReferencePropertyCollection;
foreach (DynamicBlockReferenceProperty prop in props)
{
object[] values = prop.GetAllowedValues();
//Switch Property
if ((prop.PropertyName == "Visibility") && !prop.ReadOnly)
{
if (prop.Value.ToString() == values[0].ToString())
{
prop.Value = values[1];
}
else
{
prop.Value = values[0];
}
}
}
}
}
}
}
tr.Commit();
}
}