乐筑天下

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

这样插入外部块?请大家帮帮忙看看那里错了

[复制链接]

6

主题

21

帖子

3

银币

初来乍到

Rank: 1

铜币
45
发表于 2008-6-9 09:02:00 | 显示全部楼层 |阅读模式
AcDbObjectId blockId ;
AcDbDatabase *pDb=new AcDbDatabase(Adesk::kFalse);
pDb->readDwgFile(name);
blockId=pDb->xrefBlockId();
AcDbBlockReference *pBlkRef =new AcDbBlockReference ;
pBlkRef->setBlockTableRecord (blockId) ;
pBlkRef->setScaleFactors(AcGeScale3d(Scale,Scale,Scale));
pBlkRef->setPosition(pt) ;
pBlkRef->setRotation (Rotation) ;
AcDbBlockTable *pBlockTable ;
acdbHostApplicationServices()->workingDatabase()->getBlockTable (pBlockTable, AcDb::kForRead) ;
AcDbBlockTableRecord *pBlockTableRecord ;
pBlockTable->getAt (ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite) ;
pBlockTable->close () ;
pBlockTableRecord->appendAcDbEntity(pBlkRef);
pBlockTableRecord->close();
pBlkRef->close();
运行的时候提示** 未定义的块 #-1
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
2
发表于 2008-6-15 20:51:00 | 显示全部楼层
同问
我试着用一个insert()函数来插入块。但是insert()函数老是没执行成功,没返回 Acad::eOk
也是提示找不到块定义
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2008-6-17 08:55:00 | 显示全部楼层
你这样试试:
HDR_API BOOL fdm_InsertDwgFile(const TCHAR *FileName,const AcGePoint3d &insPt,AcDbObjectId &BlkRefId,const double ang,const TCHAR *lay)
{
  BOOL state=FALSE;
  TCHAR FullPath[128];
  if(ads_findfile(FileName,FullPath)==RTNORM)
  {
    AcDbDatabase *pDb=new AcDbDatabase(Adesk::kFalse);
    if(pDb->readDwgFile(FullPath)==Acad::eOk)
    {
      if(pDb!=NULL)
      {
        AcDbObjectId ObjId;
        if(acdbCurDwg()->insert(ObjId,_T("*U"),pDb)==Acad::eOk)
        {
          AcDbObjectId ReferenceId=AcDbObjectId::kNull;
          AcDbBlockReference *pReference=new AcDbBlockReference;
          pReference->setBlockTableRecord(ObjId);
          pReference->setPosition(insPt);
          pReference->setRotation(ang);
          pReference->setLayer(lay);
          if(fdm_addToModelSpace(BlkRefId,pReference)==Acad::eOk)
          {
            state=TRUE;
          }
          else delete pReference;
        }
        delete pDb;
      }      
    }
  }
  
  return state;
}
//将实体加入到(模型/图纸)空间
HDR_API Acad::ErrorStatus fdm_addToModelSpace(AcDbObjectId &ObjId,AcDbEntity *pObj,BOOL IsToMs)
{
  AcDbBlockTable *pBlockTable;
AcDbBlockTableRecord *pSpaceRecord;
  Acad::ErrorStatus es;
  es=acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForRead);
if(es==Acad::eOk)
  {
    if(IsToMs) es=pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord,AcDb::kForWrite);
    else es=pBlockTable->getAt(ACDB_PAPER_SPACE,pSpaceRecord,AcDb::kForWrite);
   if(es==Acad::eOk)
    {
      es=pSpaceRecord->appendAcDbEntity(ObjId,pObj);
      if(es==Acad::eOk) pObj->close();
     pSpaceRecord->close();
    }
    pBlockTable->close();
  }
return es;
}
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2008-6-17 10:55:00 | 显示全部楼层
非常感谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-6 06:49 , Processed in 0.173761 second(s), 60 queries .

© 2020-2025 乐筑天下

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