乐筑天下

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

新建的图形数据库,如何进行编辑?

[复制链接]

44

主题

185

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-6-2 09:53:00 | 显示全部楼层 |阅读模式
Editor ed = AcadApp.DocumentManager.MdiActiveDocument.Editor;//这是当前活动窗口的Editor
       PromptSelectionResult Inborderpsr = ed.SelectCrossingPolygon(Border, Inborderfilter);
        SelectionSet Inborderss = Inborderpsr.Value;
        Database dbnew = new Database(false, true);
        //下面的操作选择要复制到新建数据库中的实体
        //获取所选实体的ObjectId集合
        ObjectIdCollection ids = new ObjectIdCollection(Inborderss.GetObjectIds());
        //把当前数据库中所选择的实体复制到新建的数据库中,并指定插入点为当前数据库的基点
        dbnew = db.Wblock(ids, db.Ucsorg);
        dbnew为新建的图形数据库,需要对其做一个SelectCrossingPolygon,但是,如何获取(新建)它的Document对象及Editor对象,让它"显示在新建的dwg并出现在CAD中并作为当前活动窗口?"因为要建立一个选择集,请大家指教,谢谢!
        问题总结为,新建的database,如何像当前图形一样进行编辑,如何交互编辑,或者,关于新建一图形文档dwg(或者说database)进行编辑有没有更好的方式?我担心自己一开始就错了
  
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-6-2 10:31:00 | 显示全部楼层
这个没办法 必须是文档才有的
回复

使用道具 举报

44

主题

185

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-6-2 10:45:00 | 显示全部楼层

飞狐老师,我又试过新建一个dwg,然后获取其database和document进行编辑,
参考了.NET人员开发手册 锁定和解锁文档
  1. [CommandMethod("LockDoc", CommandFlags.Session)]
  2. public static void LockDoc()
  3. {
  4.   // 创建新图形  Create a new drawing
  5.   DocumentCollection acDocMgr = Application.DocumentManager;
  6.   Document acNewDoc = acDocMgr.Add("acad.dwt");
  7.   Database acDbNewDoc = acNewDoc.Database;
  8.   // 锁定新文档    Lock the new document
  9.   using (DocumentLock acLckDoc = acNewDoc.LockDocument())
  10.   {
  11.       // 在新数据库中启动事务   Start a transaction in the new database
  12.       using (Transaction acTrans = acDbNewDoc.TransactionManager.StartTransaction())
  13.       {
  14.           // 以只读方式打开块表   Open the Block table for read
  15.           BlockTable acBlkTbl;
  16.           acBlkTbl = acTrans.GetObject(acDbNewDoc.BlockTableId,
  17.                                        OpenMode.ForRead) as BlockTable;
  18.           // 以写方式打开模型空间块表记录   Open the Block table record Model space for write
  19.           BlockTableRecord acBlkTblRec;
  20.           acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  21.                                           OpenMode.ForWrite) as BlockTableRecord;
  22.           // 创建一个半径为3圆心在5,5的圆    Create a circle with a radius of 3 at 5,5
  23.           Circle acCirc = new Circle();
  24.           acCirc.SetDatabaseDefaults();
  25.           acCirc.Center = new Point3d(5, 5, 0);
  26.           acCirc.Radius = 3;
  27.           // 添加新对象到模型空间和事务中   Add the new object to Model space and the transaction
  28.           acBlkTblRec.AppendEntity(acCirc);
  29.           acTrans.AddNewlyCreatedDBObject(acCirc, true);
  30.           // 保存新对象到数据库中   Save the new object to the database
  31.           acTrans.Commit();
  32.       }
  33.       // 解锁文档   Unlock the document
  34.   }
  35.   // 设置新文档为当前文档   Set the new document current
  36.   acDocMgr.MdiActiveDocument = acNewDoc;
  37. }
但是,我需要把这样的 新建-编辑 代码放到已有的代码里,所以[CommandMethod("LockDoc", CommandFlags.Session)]是没法加进去的。对其进行编辑时,始终没有效果,请问如何让Session
的效果在已有函数内起作用呢?谢谢
回复

使用道具 举报

44

主题

185

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-6-2 11:42:00 | 显示全部楼层

也就是如何新建一个dwg,再对它进行编辑,或编辑多个dwg的其中一个/交互编辑
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-6-2 13:06:00 | 显示全部楼层
只要命令有文档的相关操作 都要声明session
回复

使用道具 举报

0

主题

275

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2015-6-2 13:37:00 | 显示全部楼层

既然是database操作,把代码在new里写,都操作完成再save
select是基于视口显示的,没有视口时就判断Extent3d在不在范围内
回复

使用道具 举报

44

主题

185

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-6-2 15:27:00 | 显示全部楼层

明白了,新建前后的document都要lock
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 15:49 , Processed in 0.424008 second(s), 77 queries .

© 2020-2025 乐筑天下

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