我是 autocad 脚本的新手,正在尝试创建一个允许用户选择块并显示块的相关属性的应用程序。我现在找到了替代解决方案,但想尝试了解为什么我的初始方法不起作用。
我最初尝试做的是根据用户输入创建一个选择集,获取 objectid 并尝试根据此信息创建一个 blocktablerecord。但是每次我尝试它都返回 Null。
这是我使用的代码:
public void getattrib()
{
Database acCurDb;
acCurDb = Application.DocumentManager.MdiActiveDocument.Database;
Document acDoc = Application.DocumentManager.MdiActiveDocument;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
// Open the Block table for read
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
PromptSelectionResult acSSPrompt = acDoc.Editor.GetSelection();
if (acSSPrompt.Status == PromptStatus.OK)
{
SelectionSet acSSet = acSSPrompt.Value;
ObjectId anothertest = acSSet[0].ObjectId;
BlockTableRecord br = acTrans.GetObject(anothertest, OpenMode.ForRead) as BlockTableRecord;
如果你选择方块,它是
BlockReference
而不是 BlockTableRecord
。
BlockTableRecord
是块定义。
如果你想要BlockTableRecord
,你可以阅读它的ObjectId
作为所选BlockTableRecord
的属性
BlockReference