ShuFeng 发表于 2005-3-24 13:41:00

[求助]请教这是为什么?

void AdeskCreateDim()
{
        AcGePoint3d pt1(0,0,0),pt2(10,0,0),pt3(5,5,0);
        AcDbRotatedDimension *pDim=new AcDbRotatedDimension(0,pt1,pt2,pt3);
        Acad::ErrorStatus es ;
        AcDbBlockTable *pBlockTbl ;
        AcDbBlockTableRecord *pBlkTblRec;
        if ( (es =acdbHostApplicationServices ()->workingDatabase ()->getBlockTable (pBlockTbl, AcDb::kForRead)) != Acad::eOk )
        {
                acutPrintf ("\nCouldn't open the block table!") ;
                return;
        }
        if ( (es =pBlockTbl->getAt (ACDB_MODEL_SPACE, pBlkTblRec, AcDb::kForWrite)) != Acad::eOk )
        {
                acutPrintf ("\nCouldn't get Model Space! Drawing corrupt.\n") ;
                pBlockTbl->close () ;
                return;
        }
        if ( (es =pBlkTblRec->appendAcDbEntity (pDim)) != Acad::eOk )
        {
                delete pDim ;
                pBlkTblRec->erase () ;
                pBlkTblRec->close () ;
                return;
        }
        pDim->close();
        pBlkTblRec->close();
}
在Acad中键入命令createdim,出现如下提示:
Regen terminated
键入命令"x"->"all"则标注显示在屏幕上.
请教这是为什么?

pandoram 发表于 2005-3-24 16:47:00

if ( (es =pBlkTblRec->appendAcDbEntity (pDim)) != Acad::eOk )
        {
                delete pDim ;
                pBlkTblRec->erase () ;
                pBlkTblRec->close () ;
                return;
        }
        pDim->close();
        pBlkTblRec->close();
}
这两个地方(直接造成问题的是后一个地方)你只关了block table record, 没有关block table, 所以ACAD就暴走了.

ShuFeng 发表于 2005-3-25 17:49:00

谢谢啦!
页: [1]
查看完整版本: [求助]请教这是为什么?