几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   加入的实体不在新建的文件中!而是在旧文件中 (http://www.dimcax.com/hust/showthread.php?t=183)

huangyhg 2005-10-23 10:34 PM

加入的实体不在新建的文件中!而是在旧文件中
 
白 菜 22:23:57
你去过明经通道没!有一个bai_cai101的贴子,关于ARX新建文件,置为当前并得到新文件的数据库指针的的问题!你会吗?
白 菜 22:24:04
可否指点一二???
白 菜 22:26:02
我用的是ARX2002,VC6.0
白 菜 22:26:05
#include "StdAfx.h"
#include "StdArx.h"
#include "dbsymtb.h"
#include "dbents.h"
//-----------------------------------------------------------------------------
// This is command 'NEWDOC, by [2005-10-16], ,
void ACADkaifanewdoc()
{
#ifdef OARXWIZDEBUG
acutPrintf ("\nOARXWIZDEBUG - ACADkaifanewdoc() called.");
#endif // OARXWIZDEBUG

// TODO: Implement the command
static char pData[] ="acad.dwt";
acDocManager->executeInApplicationContext(CreateDoc, (void *)pData);

/*if(acDocManager->isApplicationContext())
{
acDocManager->appContextNewDocument((const char *)pData);
}
else
{
acutPrintf("\nERROR To Create Doc!\n");
return;
}
*/
AcApDocument *pDoc;
pDoc=acDocManager->curDocument();
AcDbDatabase *pdb = pDoc->database();

acDocManager->lockDocument(pDoc);


AcDbBlockTable *pBtbl;
Acad::ErrorStatus es = pdb->getSymbolTable(pBtbl, AcDb::kForRead);
acutPrintf("es=%d\n",es);
if (es != Acad::eOk)
{
return;
}

AcDbBlockTableRecord *pBtblRcd;
es = pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,
AcDb::kForWrite);
acutPrintf("es=%d\n",es);
if (es != Acad::eOk)
{
pBtbl->close();
return;
}
pBtbl->close();

AcDbCircle *pCir1 = new AcDbCircle(AcGePoint3d(1,1,1),
AcGeVector3d(0,0,1),
1.0),
*pCir2 = new AcDbCircle(AcGePoint3d(4,4,4),
AcGeVector3d(0,0,1),
2.0);
pBtblRcd->appendAcDbEntity(pCir1);
pCir1->close();

pBtblRcd->appendAcDbEntity(pCir2);
pCir2->close();

pBtblRcd->close();

acDocManager->unlockDocument(pDoc);

}

void CreateDoc( void *pData)
{
AcApDocument* pDoc = acDocManager->curDocument();
if(acDocManager->isApplicationContext())
{
acDocManager->appContextNewDocument((const char *)pData);
}
else
acutPrintf("\nERROR To Create Doc!\n");

}
我这样修改了一下!现在运行不错!但问题还是那样!加入的实体不在新建的文件中!而是在旧文件中!!!!

huangyhg 2005-10-23 10:35 PM

回复: 加入的实体不在新建的文件中!而是在旧文件中
 
白 菜 22:35:26
其实只有我刚才在qq上发的那点程序,你把它拷到vc6.0里就行了

huangyhg 2005-10-23 10:41 PM

回复: 加入的实体不在新建的文件中!而是在旧文件中
 
白 菜 22:39:33
我的邮箱:bai_cai_101@163.com

hongxian 2005-10-23 10:57 PM

回复: 加入的实体不在新建的文件中!而是在旧文件中
 
Thank you for contacting Suppert Center.

I have taken a look at your code and get that you forgot to set the document to current document by calling call acDocManager->setCurDocument(pDoc, AcAp::kWrite) in which you should input the document pointer which is just created.

You can refer to the development documentation for the detailed information.

I hope it helps you. if you have the fure question about this issue, please feel free to let me know.

hongxian 2005-10-26 11:06 PM

回复: 加入的实体不在新建的文件中!而是在旧文件中
 
在你创建完一个新的数据库的时候要调用acDocManager->setCurDocument(pDoc, AcAp::kWrite) 函数将创建的数据库设置为当前数据库。


所有的时间均为北京时间。 现在的时间是 02:20 AM.