乐筑天下

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

插入外部图块时的错误,提示实体为空?????????

[复制链接]

8

主题

33

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2005-3-10 12:09:00 | 显示全部楼层 |阅读模式
acDocManager->lockDocument( acDocManager->curDocument(), AcAp::kWrite, NULL, NULL,true) ;
//////////////////////////////////
AcDbObjectId id;
AcDbObjectIdArray list;
AcDbDatabase extDatabase( Adesk::kFalse );
                 if (Acad::eOk != extDatabase.readDwgFile( "C:\\d.dwg"))                //打开图库文件
//                if (Acad::eOk != extDatabase.readDwgFile( dwgName ))
                                {
                                                                acedAlert( "Error reading DWG!" );
                                                                return;
                                }
                                AcDbBlockTable* pBT;
                                if (Acad::eOk != extDatabase.getSymbolTable( pBT, AcDb::kForRead ))
                                {
                                                                acedAlert( "Error getting BlockTable of DWG" );
                                                                return;
                                }
                                AcDbBlockTableRecord* pBTR;
                                Acad::ErrorStatus es = pBT->getAt( _T("bigblock"), pBTR, AcDb::kForRead );
//"bigblock"是要插入的块名
                                pBT->close();
                                if (Acad::eOk != es) {
                                                                acedAlert( "Error getting the specific blockDef of DWG" );
                                                                return;
                                }
AcDbBlockReferenceIdIterator *pItr;
if (Acad::eOk != pBTR->newBlockReferenceIdIterator(pItr))
{
                acedAlert( "Error iterating" );
                                                                pBTR->close();
                                                                return;
}
for (pItr->start(); !pItr->done(); pItr->step())
{
                AcDbObjectId blkRefId;
                if (Acad::eOk == pItr->getBlockReferenceId(blkRefId))
                {
                 list.append(blkRefId);                 
                 break;
                }               
}
delete pItr;
pBTR->close();                               
                                if (list.isEmpty()) {
                                                                acedAlert( "No entities found in model space of DWG" );
                                                                return;
                                }
                                AcDbDatabase *pTempDb;
                                if (Acad::eOk != extDatabase.wblock( pTempDb, list, AcGePoint3d::kOrigin ))
                                {
                                                                acedAlert( "wblock failed!" );
                                                                return;
                                }
                                if (Acad::eOk != acdbHostApplicationServices()->workingDatabase()
                                                                ->insert( AcGeMatrix3d::kIdentity, pTempDb ))
                                                                acedAlert( "insert failed!" );
                                delete pTempDb;
// 如果不需要插入块参照,将模型空间中的最后一个对象删除即可
ads_name lastEnt;
if (acdbEntLast(lastEnt) != RTNORM)
{
                acedAlert("获得模型空间最后一个实体失败!");
                return;
}
AcDbObjectId entId;
es = acdbGetObjectId(entId, lastEnt);
AcDbEntity *pEnt;
es = acdbOpenAcDbEntity(pEnt, entId, AcDb::kForWrite);
pEnt->erase();
pEnt->close();
//////////////////////////
//用窗口的时候
acDocManager->unlockDocument( acDocManager->curDocument());//

       
程序运行插入块时提示实体为空"No entities found in model space of DWG" ,应该是这里出错了,list.append(blkRefId);                 
                 break;这两句没有执行,这是什么原因?
回复

使用道具 举报

1

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
14
发表于 2005-3-10 13:42:00 | 显示全部楼层
pBTR中没有BlockReference,应将pBTR中的所有entity insert to curDb
回复

使用道具 举报

8

主题

33

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2005-3-10 14:03:00 | 显示全部楼层
楼上的可以说的更详细一点好吗?
回复

使用道具 举报

1

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
14
发表于 2005-3-10 14:58:00 | 显示全部楼层
AcDbObjectId blkId = pBtRecord->objectId();
        //将块写到一临时数据库中
        AcDbDatabase *pTempDb;
        extDatabase.wblock(pTempDb,blkId);
回复

使用道具 举报

8

主题

33

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2005-3-10 15:06:00 | 显示全部楼层

谢谢楼上的兄弟,问题已解决! 程序只是把该图块插入到当前图形的块表中,怎样把该图块画到当前图形中呀????????
回复

使用道具 举报

8

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2005-4-8 10:34:00 | 显示全部楼层
刚刚开始学习ARX不就,请教楼主,如在当前图中何绘制该图块?
谢谢!QQ:19154480
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 07:55 , Processed in 0.379705 second(s), 64 queries .

© 2020-2025 乐筑天下

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