【多文档】向未激活的dwg文档中添加实体,为什么看不到实体的显示?
本帖最后由 Liszt 于 2011-6-10 17:44 编辑为什么向未激活的dwg文档中 添加实体,可以添加成功,但是看不到它的显示?
代码如下:
public static void Test4()
{
//新建dwg文档
string sLocalRoot = Application.GetSystemVariable("LOCALROOTPREFIX") as string;
string sTemplatePath = sLocalRoot + "Template\\acad.dwt";
// Create a new drawing to copy the objects to
DocumentCollection acDocMgr = App.DocumentManager;
acNewDoc = acDocMgr.Add(sTemplatePath);
Database acDbNewDoc = acNewDoc.Database;
//向未激活的文档中添加实体
foreach (Document doc in acDocMgr)
{
if (!doc.IsActive)//未激活
{
Database Db = doc.Database;
//Lock the document
using (DocumentLock docLock = doc.LockDocument())
{
// Start a transaction
using (Transaction acTrans = Db.TransactionManager.StartTransaction())
{
BlockTable acBlkTbl;
BlockTableRecord acBlkTblRec;
// Open Model space for write
acBlkTbl = acTrans.GetObject(Db.BlockTableId,
OpenMode.ForRead) as BlockTable;
acBlkTblRec = acTrans.GetObject(acBlkTbl,
OpenMode.ForWrite) as BlockTableRecord;
Point3d ptStart, ptEnd;
ptStart = new Point3d(0,0,0);
ptEnd = new Point3d(100, 100, 100);
// Define the new line
Line acLine = new Line(ptStart, ptEnd);
// Add the line to the drawing
acBlkTblRec.AppendEntity(acLine);
acTrans.AddNewlyCreatedDBObject(acLine, true);
// Commit the changes and dispose of the transaction
acTrans.Commit();
}
}
}
}
}
截图如下:
在Drawing2.dwg中已经加入了直线,但是无法显示..只有保存Drawing2.dwg,关闭后再次打开才看得到。
如何能够在加入实体之后立刻就能看到?(注:加入实体(如直线)时Drawing2.dwg已打开但是未激活)
添加后没有使用刷新的方法,Editor应该有相关的方法。 回复 hmxmylove 的帖子
用“regen”也不行 另外,程序还在进行过程中,图形的变化不会显示,除非是非模态窗体绘制的图形,这些问题我也遇到过,至今没有得到解决。 本帖最后由 Liszt 于 2011-6-14 14:14 编辑
回复 hmxmylove 的帖子
命令执行完了也不能显示,实体肯定是加入数据库了,但是没有显示,除非先保存dwg再打开这个dwg才可以看到。不知道是API本身的bug,还是没有调用必要的方法进行刷新,用CAD自带的regen命令也不行... 好吧,没人知道么?
自己找到了:
只加了一句话
Autodesk.AuoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase = Db;
放在
Database Db = doc.Database;
后面 hmxmylove 发表于 2011-6-14 10:53 static/image/common/back.gif
另外,程序还在进行过程中,图形的变化不会显示,除非是非模态窗体绘制的图形,这些问题我也遇到过,至今没 ...
郁闷了一下午,这个问题终于找到了,图形的生成或者变化在程序中如果包含在USING事务处理的过程中,则只有当END using 的时候,程序对图形所作的所有生成或者变化的结果才在屏幕上显示。 本帖最后由 浮云丶暖 于 2012-2-8 14:56 编辑
hmxmylove 发表于 2011-6-14 10:53 static/image/common/back.gif
另外,程序还在进行过程中,图形的变化不会显示,除非是非模态窗体绘制的图形,这些问题我也遇到过,至今没 ...
页:
[1]