使用C#中的AutoCAD .NET API对CAD二次开发,获取动态块可见性值
0.效果

1.获取选择集,得到ObjectId
PromptSelectionResult psr = ed.GetSelection();
SelectionSet sSet = psr.Value;
ObjectId[] selectedIds = sSet.GetObjectIds();
ObjectId blockId = selectedIds[0];
2.将ObjectId转换为BlockReference对象并获取其DynamicBlockReferencePropertyCollection
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
BlockReference blockRef = tr.GetObject(blockId, OpenMode.ForRead) as BlockReference;
DynamicBlockReferencePropertyCollection props = blockRef.DynamicBlockReferencePropertyCollection;
}
3.读取当前可见性值
if (props.Count != 0) { Birection = props[0].Value.ToString(); }
4.完整代码
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
string Birection = "无可见性属性";
PromptSelectionResult psr = ed.GetSelection();
SelectionSet sSet = psr.Value;
ObjectId[] selectedIds = sSet.GetObjectIds();
ObjectId blockId = selectedIds[0];
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
BlockReference blockRef = tr.GetObject(blockId, OpenMode.ForRead) as BlockReference;
DynamicBlockReferencePropertyCollection props = blockRef.DynamicBlockReferencePropertyCollection;
if (props.Count != 0) { Birection = props[0].Value.ToString(); }
}
ed.WriteMessage("\n可见性值为:{0}", Birection);