自动新建文档,加入实体,保存关闭问题。请 pandoram 和各位大侠多关照
如何自动新建一个dwg文档,并设为当前文档,在其中加入一些实体,然后保存为需要的文件名,最后自动关闭该新建文档。忙了好几天了都没有搞定。这样做的问题出在哪儿?
void CreateDoc(void* pData)
{
if(acDocManager->isApplicationContext())
{
acDocManager->appContextNewDocument((const char *)pData);
AcApDocument* pDoc = acDocManager->curDocument();
acDocManager->lockDocument(pDoc); AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
createText(); //## 修改文档内容
pDb->saveAs("文件名.dwg");
//能否不弹出保存警告对话框,直接保存?
acDocManager->unlockDocument(pDoc);
acDocManager->closeDocument(pDoc);
}
else
acutPrintf("\nERROR To Create Doc!\n");
} void NewDoc()
{
static char pData[] ="D:\\Template\\mytemplate.dwg"; //
acDocManager->executeInApplicationContext(CreateDoc, (void* )pData);
}
// This is command 'ABOUTCASCO'
void cascoAboutCasco()
{
// TODO: Implement the command
acutPrintf("\nThis is command 'ABOUTCASCO'\n");
NewDoc();
}
我觉得你没必要将新建文档设为当前文档,
本论坛有过这方面的贴子,请你search一下,
当然,如果你有什么好的Idea,欢迎你贴出来. 感谢goldenshin版主的关注,同意您的观点。
当时提出这个问题主要是因为不能解决向后台数据库准确添加实体对象(主要是文字方面的,现在虽然有所改进,但仍旧有问题--请参考的九楼),所以现在这个问题对我而言已经没有必要解决了。 我直接这样:
AcDbDatabase* pNewDb = new AcDbDatabase(TRUE, TRUE);
其它的没变, 结果也出来了,.
如今我也遇到了楼主提到的问题,看了你的方法,问题已经解决,但这种方法只适用在后台创建图形,而很多全局函数只能在当前活动窗口中执行,所以我觉得利用后台来创建图形的方法有一定的局限性。比如:创建的图形打开之后必须经过窗口缩放才能显示。看来有些时候还必须应用多文档来操作。
页:
[1]