找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 506|回复: 0

[求助] [求助]:在非模态对话框中打开cad数据库出错!

[复制链接]
发表于 2005-5-12 11:12:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在非模态对话框中一个按钮,点击该按钮时,需要打cad的数据库进行相应的块插入操作.可是,为什么运行到打开数据库时就出错. 在模态对话框中是可以打开cad数据库的. 还请各位指点!

void CElemInsertDlg::OnButtonNext()
{
        // TODO: Add your control notification handler code here

        nCount=m_SldList.GetCount();

        if (nIndex<nCount-1)
        {
        nIndex++;
        ShowSld(nIndex);

        acutPrintf("\nnIndex=%d",nIndex);
        acutPrintf("\n%s",sldPath);

           //得到块名
        CString name,temp;
        int len=sldPath.GetLength();
        int start=sldPath.ReverseFind('\\');
        temp=sldPath.Right(len-start-1);
        name=temp.Left(len-start-5);

        acutPrintf("\n%s\n",name);


    AcDbBlockTable *BlockTable ;
        Acad::ErrorStatus es=acdbHostApplicationServices()-  >workingDatabase()->
                getSymbolTable(BlockTable,AcDb::kForWrite);

        if (es!=Acad::eOk)
        {
                acutPrintf("\nFail Open BlockTable!\n");   
   
//----------------------每次运行到这里就出错,为什么????-----------------------------
                return;
        }

        BlockTable->close();

        AcDbObjectId blockId ;
       
    if ( BlockTable->has (name) != Adesk::kTrue )
        {
            acutPrintf("\n没有块 %s\n",name);
               
                BlockTable->close () ;
                AcDbDatabase *pDwg =new AcDbDatabase (Adesk::kFalse) ;

                char buffer[100];
        sprintf( buffer, "%s", dwgPath );
                acutPrintf("\n%s",buffer);

        es=pDwg->readDwgFile (buffer);
                if (es!= Acad::eOk )
                {
            acutPrintf ("\n读取dwg文件失败!\n") ;
                        return;
                }
               
                es=acdbHostApplicationServices()->workingDatabase()->
                        insert(blockId,name,pDwg,Adesk::kFalse);
        if ( es != Acad::eOk )
                {
            acutPrintf ("\n插入块错误.\n") ;
                        return;
                }


        delete pDwg ;

        }
        else
        {
               
                acutPrintf("\n存在块 %s",name);
        BlockTable->getAt (name, blockId, false) ;
                BlockTable->close () ;
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 06:52 , Processed in 0.162433 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表