icc 发表于 2002-5-8 14:55:00

创建文件并设为当前文档的问题

我有一个外部文件的数据要导入到DWG中。
导入前我先用acDocManager->newDocument()建立了一个新文件,
本意是把数据导入到这个新文件中。但其实当前文档并没有切换过来,导入的数据写在了原来的DWG中。
请问:我应该怎样创建一个文件的同时获得它的AcDbDatabase的指针,或把此文档立刻设为当前文档。
或者new AcDbDatabase操作进而用它生成一个当前文档???

goldenshin 发表于 2002-5-8 16:19:00

如果对新图没有交互操作或非模式对话框等,不存在这个问题

//如下
AcDbDatabase *pDb = new AcDbDatabase();

    AcDbBlockTable *pBtbl;
    pDb->getSymbolTable(pBtbl, AcDb::kForRead);

    AcDbBlockTableRecord *pBtblRcd;
    pBtbl->getAt(ACDB_MODEL_SPACE, pBtblRcd,
      AcDb::kForWrite);
    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();

   
    pDb->saveAs("c:/test1.dwg");
    delete pDb;

icc 发表于 2002-5-8 17:15:00

re

我想在一个命令中进行如下操作:
1 创建一个新文件(此时系统会自动把一些默认得配置以及一些Dictionary初始化.
2 紧接着,把某外部文件的数据读入到此DWG中,但一般此时对DWG操作是原来的DWG.而不是新建立的DWG.

icc 发表于 2002-5-9 09:49:00

可能是这么一回事......

ARX的命令只能在一个文档空间执行,如果一个命令中生成了一个新的文档,如果不指定AcDbDataBase,则后续处理依旧在旧文档中处理.
不知是不是这个原因.

marsar 发表于 2002-5-30 11:46:00

用AcDbDatabase *pDb=new AcDbDatabase()建的数据库不能显示图形

按这种方法是不能显示图形的,我是不行了,能告诉我吗?

stoneball 发表于 2002-11-19 14:15:00

你如何解决的???

Gooder 发表于 2005-2-15 17:31:00

AcApDocumentIterator *Iterator = p-&gt;newAcApDocumentIterator();<BR>        for(;!Iterator-&gt;done();Iterator-&gt;step())<BR>                pDoc = Iterator-&gt;document();<BR>        delete Iterator;<BR>        p-&gt;setCurDocument(pDoc,AcAp::kWrite,true);<BR>


这样子就可以把最后一个,也即新加的文档作为当前文档了
页: [1]
查看完整版本: 创建文件并设为当前文档的问题