jhanel 发表于 2012-6-14 11:12:27

该代码不会返回活动文档,因此您的命名具有误导性。如果工作数据库未与文档关联,则即使存在活动文档,也将返回null。当然,工作数据库*可能是活动文档,但它们不是一回事。

Keith™ 发表于 2012-6-14 11:25:09

正如Owen提到的,用Reflector看它,它看起来像是创建了一个新的DocumentCollection.GetDocument()公共不安全文档GetDocument(数据库db)。
{。
IntPtr未管理对象=db.UnmanagedObject;。
AcApDocManager*Manager erPtr=acDocManagerPtr();。
long num = *(((long*)Manager Ptr))+80L;。
返回Document.Create((AcApDocument*)*num(Manager erPtr,unmanagedObject.ToPointer ()));。
}。

Document.Create()内部静态不安全文档创建(AcApDocument*doc)。
{。
DocumentCollection docentManager=Application.DocumentManager;。
文档mgDoc=documentManager.LookupDocument(doc);。
如果(mgDoc==null)。
{。
mgDoc=新文档(doc);。
documentManager.AddDocument(doc, mgDoc);。
}。
返回mgDoc;。
}。


页: 1 [2]
查看完整版本: 插件可以在一台计算机上工作,但不能在另一台上工作。困惑的