chpmould 发表于 2010-12-4 18:26:00

新建和插入块函数

请教老师:
例如:首先判断当前图档中是否有一图块“A”,如果没有则新建,如果有则直接插入。

chpmould 发表于 2010-12-4 18:28:00

下面是我写的一部分,但是有问题,请帮助修正一下...
      public static ObjectId CreateBlock(string blockname, ObjectIdCollection[] objIds)
      {
            DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
            ObjectId blockid = new ObjectId();
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite, false);
                BlockTableRecord btr = new BlockTableRecord();
                btr.Name = blockname;
                if (!bt.Has(blockname)) //判断是否存在名为blockname的块,如果没有则新建
                {
                  for (int i = 0; i 复制代码

雪山飞狐_lzh 发表于 2010-12-4 21:37:00

没修改你的代码的声明就直接改了,楼上的代码已更正

sieben 发表于 2010-12-4 22:01:00

我还是没有测试成功,例如: 我是按以下方式画出两个圆,下面如何调用CreateBlockDef函数复制代码

chpmould 发表于 2010-12-5 08:21:00

Circle c1 = new Circle(new Point3d(0, 0, 0),10);
Circle c2 = new Circle(new Point3d(0, 0, 0),10);
DBObjectCollection objs = new DBObjectCollection();
objs.Add(c1);
objs.Add(c2);
CreateBlockDef("Test", objs);

chpmould 发表于 2010-12-5 13:47:00


如果是用ObjectIdCircle c1 = new Circle(new Point3d(0, 0, 0),10);可以吗?
下面我将我的测试代码贴上了你看看。。。
页: [1]
查看完整版本: 新建和插入块函数