sieben 发表于 2013-10-15 13:40
你会不会用程序画出一个图形?或者你会不会加一个图形到模型空间?
若会,把代码贴出来
我的原来代码是这样的,想实现就是当图中不存在blockname块定义时定义新块,如果存在则往该块中增加图元,就是else后面的不知道怎么写,请帮忙看看,多谢!
- /// <summary>
- /// 创建一个块表记录并添加到数据库中
- /// </summary>
- /// <param name="db">数据库对象</param>
- /// <param name="blockName">块名</param>
- /// <param name="ents">加入块中的实体列表</param>
- /// <returns>返回块表记录的Id</returns>
- public static ObjectId AddBlockTableRecord(this Database db, string blockName, List<Entity> ents)
- {
- //打开块表
- BlockTable bt = (BlockTable)db.BlockTableId.GetObject(OpenMode.ForRead);
- if (!bt.Has(blockName)) //判断是否存在名为blockName的块
- {
- //创建一个BlockTableRecord类的对象,表示所要创建的块
- BlockTableRecord btr = new BlockTableRecord();
- btr.Name = blockName;//设置块名
- btr.Explodable = false;
- //将列表中的实体加入到新建的BlockTableRecord对象
- ents.ForEach(ent => btr.AppendEntity((Entity)ent.Clone()));
- bt.UpgradeOpen();//切换块表为写的状态
- bt.Add(btr);//在块表中加入blockName块
- db.TransactionManager.AddNewlyCreatedDBObject(btr, true);//通知事务处理
- bt.DowngradeOpen();//为了安全,将块表状态改为读
- }
- //else{
- // //获取块表记录的Id
- // ObjectId btrId = bt[blockName];
- // //获取BlockTableRecord
- // //BlockTableRecord btr = (BlockTableRecord)btrId.GetObject(OpenMode.ForWrite);
- // BlockTableRecord btr = new BlockTableRecord();
- // //将列表中的实体加入到新建的BlockTableRecord对象
- // ents.ForEach(ent => btr.AppendEntity((Entity)ent.Clone()));
- // btr.Name = blockName;//设置块名
- // bt.Add(btr);//在块表中加入blockName块
- // db.TransactionManager.AddNewlyCreatedDBObject(btr, true);//通知事务处理
- // bt.DowngradeOpen();//为了安全,将块表状态改为读
- //}
- return bt[blockName];//返回块表记录的Id
- }
|