明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1814|回复: 3

如何查看块参照的内容

[复制链接]
发表于 2009-9-25 00:03:00 | 显示全部楼层 |阅读模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
//using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;

[assembly: CommandClass (typeof(gw.Class1ofgw))]

namespace gw
{
    public class Class1ofgw
    {
        //画一个圆
        [CommandMethod("KCircle")]
        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[BlockTableRecord.ModelSpace]), OpenMode.ForWrite);
                BlockTableRecord[] acBlkTblRecs=new BlockTableRecord[100];
                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?

谢谢!

发表于 2009-9-25 07:45:00 | 显示全部楼层

块定义b1也是一个集合

GetObject打开它,然后遍历

*Model_Space就是模型空间了

 楼主| 发表于 2009-9-25 08:41:00 | 显示全部楼层
那*PaperSpace,*PaperSpace0又分别是什么呢?
发表于 2009-9-25 13:27:00 | 显示全部楼层

布局1和布局2了

*Model_Space,*PaperSpace,*PaperSpace0都是默认的

你要搞清楚块定义和块参照的关系

块定义是存储图形对象的地方

而块参照可以看成是定义的一个快照

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 18:41 , Processed in 0.174272 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表