乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 57|回复: 3

如何查看块参照的内容

[复制链接]

16

主题

53

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
117
发表于 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;
[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[i]=(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?
谢谢!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-9-25 07:45:00 | 显示全部楼层
块定义b1也是一个集合
GetObject打开它,然后遍历
*Model_Space就是模型空间了
回复

使用道具 举报

16

主题

53

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
117
发表于 2009-9-25 08:41:00 | 显示全部楼层
那*PaperSpace,*PaperSpace0又分别是什么呢?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-9-25 13:27:00 | 显示全部楼层
布局1和布局2了
*Model_Space,*PaperSpace,*PaperSpace0都是默认的
你要搞清楚块定义和块参照的关系
块定义是存储图形对象的地方
而块参照可以看成是定义的一个快照
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-28 20:32 , Processed in 0.818836 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表