乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 10|回复: 0

[求助]多文档和数据库写入的问题

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2010-6-11 09:58:00 | 显示全部楼层 |阅读模式
我要实现的功能是:在cad中已经打开了一个文件,然后我提取了这个数据库中我所需要的某些实体并存入ID,然后用acDocManager再新建一个文档,然后把刚才存起来的实体写入这个新建的模型空间,可是要么写入原来的文档中,要么就写不进去,请问要如何实现呢。已经调试发现现在得问题是运行到写入的时候CAD提示不能写入,请问是为什么。下面是试验代码,请各位帮帮忙吧,谢谢大家:
void main()
{
    newSyncDoc();                    

    AcApDocument* NewDoc;                                               //
    pDocIter = acDocManager->newAcApDocumentIterator();  //
    for ( ; !pDocIter->done(); pDocIter->step())                    //
   {                                                                                   //找到新建文档指针
        NewDoc = pDocIter->document();                               //
    }                                                                                  //
    delete pDocIter;                                                             //

    acDocManager->setCurDocument(NewDoc);                  //设置当前文档
    acDocManager->activateDocument(NewDoc,true);         //激活当前文档,并且第2个参数要设为ture,否则不往下运行。
    acDocManager->unlockDocument(NewDoc);                  //将新建文档解锁
    AcDbDatabase* pNewDb=NewDoc->database();        //得到新建文档连接的数据库

    AcDbBlockTable* pBlockTable;
    pNewDb->getSymbolTable(pBlockTable,AcDb::kForRead);
    AcDbBlockTableRecord* pBlockTableRecord;
    pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);  
    pBlockTable->close();                                                                              
   
    AcGePoint3d ptCenter(0,0,0);                                           //
    AcGeVector3d vec(0,0,1);                                                 //
    double rad=10000;                                                          //
    AcDbCircle* pCircle=new AcDbCircle(ptCenter,vec,rad);        //做了个圆写进去
    AcDbObjectId id;                                                              //
    pBlockTableRecord->appendAcDbEntity(id,pCircle);              //到这里就出错了,CAD显示写入错误
                                 
    pBlockTableRecord->close();
    acDocManager->lockDocument(NewDoc);                  //将新建文档锁定
    delete pNewDb;
}

void newSyncDocHelper(void *pData)
{
     AcApDocument* pDoc = acDocManager->curDocument();
     if (acDocManager->isApplicationContext())
    {
          acDocManager->appContextNewDocument((const TCHAR *)pData);
          acDocManager->activateDocument(pDoc);        //激活原先的文档,否则运行到newSyncDoc()语句后不往下运行
     }
     else
     acutPrintf(_T("\nERROR: in Document context : %s\n"),pDoc->fileName());
}

void newSyncDoc()
{
     static TCHAR pData[] = _T(/*NOXLATE*/"acad.dwt");
     AcApDocument* pDoc = acDocManager->curDocument();
     if (pDoc)
    {
      acDocManager->executeInApplicationContext(newSyncDocHelper, (void *)pData);
    }   
}
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 18:58 , Processed in 0.141089 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表