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

0.效果

在这里插入图片描述

1.获取选择集,得到ObjectId

PromptSelectionResult psr = ed.GetSelection();
SelectionSet sSet = psr.Value;
ObjectId[] selectedIds = sSet.GetObjectIds();  // 获取选择集的ObjectiID.
ObjectId blockId = selectedIds[0]; // 假设只选择了一个块

2.将ObjectId转换为BlockReference对象并获取其DynamicBlockReferencePropertyCollection

// 通过ObjectId打开块引用
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
    // 将ObjectId转换为BlockReference对象并获取其DynamicBlockReferencePropertyCollection
    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();  // 获取选择集的ObjectiID.
ObjectId blockId = selectedIds[0]; // 假设只选择了一个块
// 通过ObjectId打开块引用
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
    // 将ObjectId转换为BlockReference对象并获取其DynamicBlockReferencePropertyCollection
    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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值