明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1245|回复: 1

困惑!!

[复制链接]
发表于 2003-4-29 13:44 | 显示全部楼层 |阅读模式
下面是小弟写的一个土块插入的程序!运行完后,图快能插入!但不久AutoCAD弹出一个对话框,告诉有致命错误!!找了半天也没找到错误!请帮大虾们帮我看看程序:非常感谢!
void SelEntToLib()
{
        ads_name ssname,ent;
        ads_point selpt;
        AcDbObjectId enId,msrId;
        char bName[256],desName[256];
        AcDbEntity *pEnt;


        strcpy(bName,"yuanzhui");
        strcpy(desName,"F:\\FENGH\\program\\AutoCAD\\ObjectARX\\LibMag\\testlib.dwg");
       
        if( acedSSGet(NULL,NULL,NULL,NULL,ssname) != RTNORM)
        {
                acutPrintf("\n创建选择集失败!");
                return;
        }
        if( acedSSName(ssname,0L,ent) != RTNORM)
        {
                acutPrintf("\n获得实体失败!");
                return;
        }
        acedSSFree(ssname);

        if( acdbGetObjectId(enId,ent) != Acad::eOk)
        {
                acutPrintf("\nconver object id fail!");
                return;
        }
//        acdbOpenObject(pEnt,enId,AcDb::kForWrite);

        AcDbDatabase * curpDb = acdbHostApplicationServices()->workingDatabase();
        AcDbDatabase * tempDb = new AcDbDatabase(Adesk::kFalse);
        AcDbDatabase * pDbMS = new AcDbDatabase(Adesk::kFalse);
       
        if(pDbMS->readDwgFile(desName) != Acad::eOk)
        {
                acutPrintf("\nThe file %s cannot be opend",desName);
                return;


        }
        curpDb->wblock(tempDb,enId);//把图块写入一当前数据库中
//        pEnt->close();

//        tempDb->saveAs("cur.dwg");
       
        pDbMS->insert(msrId,bName,tempDb);//从临时数据库插入图库中

        AcDbBlockReference *pBlkRef = new AcDbBlockReference; //创建一个块表引用
        pBlkRef->setBlockTableRecord(msrId);// 指向blockId;

//        pBlkRef->setBlockTableRecord(enId);// 指向blockId;

//        pBlkRef->setPosition(Pt);//设置位置
//        pBlkRef->setRotation(Angle);//设置转角
//        pBlkRef->setScaleFactors( XrefScale);//设置放大比例


        AcDbBlockTable *curpBlockTable = NULL;
        pDbMS->getSymbolTable(curpBlockTable, AcDb::kForRead);
       
        AcDbBlockTableRecord *curpBlockTableRecord;
        curpBlockTable->getAt(ACDB_MODEL_SPACE, curpBlockTableRecord, AcDb::kForWrite);
        curpBlockTable->close();
        AcDbObjectId newEntId;
        curpBlockTableRecord->appendAcDbEntity(newEntId, pBlkRef);
        curpBlockTableRecord->close();
        pBlkRef->close();

        delete tempDb;
       
        pDbMS->saveAs("F:\\FENGH\\program\\AutoCAD\\ObjectARX\\LibMag\\sel.dwg");
        delete pDbMS;

        return;
}
发表于 2003-4-29 16:41 | 显示全部楼层

The first problem is: wblock()

in the ->wblock(tempDb) , you don't need to run the
tempDb=new AcDbDataBase();
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 16:14 , Processed in 0.199837 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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