gsteven 发表于 2009-9-25 00:03:00

如何查看块参照的内容

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?
谢谢!

雪山飞狐_lzh 发表于 2009-9-25 07:45:00

块定义b1也是一个集合
GetObject打开它,然后遍历
*Model_Space就是模型空间了

gsteven 发表于 2009-9-25 08:41:00

那*PaperSpace,*PaperSpace0又分别是什么呢?

雪山飞狐_lzh 发表于 2009-9-25 13:27:00

布局1和布局2了
*Model_Space,*PaperSpace,*PaperSpace0都是默认的
你要搞清楚块定义和块参照的关系
块定义是存储图形对象的地方
而块参照可以看成是定义的一个快照
页: [1]
查看完整版本: 如何查看块参照的内容