明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2023|回复: 2

[求助]插入指定图形数据库块问题

[复制链接]
发表于 2009-11-23 18:15:00 | 显示全部楼层 |阅读模式

AcDbObjectId CDraw::CreateBlock(AcDbDatabase *pDb,CString blkName,AcGePoint3d origin,int num,...)
{
 // 获得当前图形数据库的块表
 AcDbBlockTable *pBlkTbl;
 /*acdbHostApplicationServices()->workingDatabase()
  ->getBlockTable(pBlkTbl, AcDb::kForWrite);*/
  pDb->getSymbolTable(pBlkTbl, AcDb::kForRead);
 // 创建新的块表记录
 AcDbBlockTableRecord *pBlkTblRcd;
 pBlkTblRcd = new AcDbBlockTableRecord();
 /* AcDbBlockTableRecord *pBlkTblRcd;
  pBlkTbl->getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForWrite);*/

 // 根据用户的输入设置块表记录的名称
 //char blkName[40];
 //if (acedGetString(Adesk::kFalse, "\n输入图块的名称:", blkName) !=
 // RTNORM)
 //{
 // pBlkTbl->close();
 // delete pBlkTblRcd;
 // return;
 //}
 pBlkTblRcd->setName(blkName);
 // 将块表记录添加到块表中
 AcDbObjectId blkDefId;
 pBlkTblRcd->setOrigin(origin);
 pBlkTbl->add(blkDefId, pBlkTblRcd); //为什么运行到这出错,提示eNotOpenWrite?高手帮帮忙?
 pBlkTbl->close();
 // 向块表记录中添加实体
 AcDbObjectId entId;
 va_list pa;
 va_start( pa, num );     /* Initialize variable arguments. */
 for(int i=0;i<num;i++)
 {
  AcDbEntity *pEnt;
  pEnt = va_arg( pa, AcDbEntity*);
  pBlkTblRcd->appendAcDbEntity(entId, pEnt);
  pEnt->close();
 }
 va_end( pa );     
 // 关闭实体和块表记录
 pBlkTblRcd->close();
 return blkDefId;
}

发表于 2009-11-25 17:44:00 | 显示全部楼层

 pBlkTbl->add(blkDefId, pBlkTblRcd); //为什么运行到这出错,提示eNotOpenWrite?高手帮帮忙?

你的块表打开的状态不是【写】的!

 楼主| 发表于 2009-11-27 17:53:00 | 显示全部楼层

谢谢!已解决~

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

本版积分规则

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

GMT+8, 2024-11-25 12:56 , Processed in 0.148871 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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