如何查看块参照的内容
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk..Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
//using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
namespace gw
{
public class Class1ofgw
{
//画一个圆
public void huayuan()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acDd = acDoc.Database;
using (Transaction acTrans=acDd.TransactionManager.StartTransaction())
{
BlockTable acBlkTbl = (BlockTable)acTrans.GetObject(acDd.BlockTableId, OpenMode.ForRead);
BlockTableRecord acBlkTblRec = (BlockTableRecord)acTrans.GetObject((acBlkTbl), OpenMode.ForWrite);
BlockTableRecord[] acBlkTblRecs=new BlockTableRecord;
int i;
i = 0;
foreach (ObjectId rec in acBlkTbl)
{
acBlkTblRecs=(BlockTableRecord)acTrans.GetObject(rec, OpenMode.ForRead);
i++;
}
//Circle acCir = new Circle();
//acCir.SetDatabaseDefaults();
//acCir.Center = new Point3d(1, 1, 0);
//acCir.Diameter = 100;
//acBlkTblRec.AppendEntity(acCir);
//acTrans.AddNewlyCreatedDBObject(acCir, true);
//acTrans.Commit();
}
}
}
}
我用acBlkTblRecs数组来记录acBlkTbl 中的每一个BlockTableRecord
我在图形中手工加入了一个块定义b1(只有一个圆),还在模型空间中画了一个圆,但是执行后我发现acBlkTblRecs只有4个成员
他们的base.name分别是*Model_Space,*PaperSpace,*PaperSpace0,b1,前面3个的layout属性都是ture。怎么没有那个圆所属的BlockTableRecord呢?
还有,我想查看b1中所有的图形定义,怎么查看呢?难道是通过acBlkTblRecs【3】,也就是b1的BlockBeginID,BlockEndID?
谢谢!
块定义b1也是一个集合
GetObject打开它,然后遍历
*Model_Space就是模型空间了
那*PaperSpace,*PaperSpace0又分别是什么呢? 布局1和布局2了
*Model_Space,*PaperSpace,*PaperSpace0都是默认的
你要搞清楚块定义和块参照的关系
块定义是存储图形对象的地方
而块参照可以看成是定义的一个快照
页:
[1]