乐筑天下

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

大家好 请过来看看下段代码有何问题(字符串替换),谢谢!

[复制链接]

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-4 16:53:00 | 显示全部楼层 |阅读模式
AcDbDatabase* pDb = new AcDbDatabase(false, true);
                         pDb->readDwgFile(File);
        AcDbBlockTable *pBlockTable;
                         pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
                         AcDbBlockTableRecord *pBlockTableRecord;
                         pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
                         pBlockTable->close();
                         AcDbBlockTableRecordIterator *pBlockIterator;
                         pBlockTableRecord->newIterator(pBlockIterator);
                         for (; !pBlockIterator->done(); pBlockIterator->step())
                         {
                                                         AcDbEntity *pEntity;
                                                         pBlockIterator->getEntity(pEntity, AcDb::kForWrite);
                                                         const char *pCname = pEntity->isA()->name();
         if(!strcmp(pCname, "AcDbText"))
         {
                         const char *pText = ((AcDbText*)pEntity)->textString();
                                 CString st(pText);
                                 st.Replace(m_SearchStr,m_ReplaceStr);
if (((AcDbText*)pEntity)->setTextString(st) != Acad::eOk)
                         {
                                                         acutPrintf("\nSorry, that draing is probably already open.");
                                                         return;
                         }
         }
         else if(!strcmp(pCname, "AcDbMText"))
         {
                 const char *pMText = ((AcDbMText*)pEntity)->contents();
                 CString st(pMText);
                 st.Replace(m_SearchStr,m_ReplaceStr);
                 ((AcDbMText*)pEntity)->setContents(st);
                 if(pMText)
                         pMText = NULL;                 
         }
                                                         pEntity->close();
                         }
                         delete pBlockIterator;
                         pBlockTableRecord->close();
        pDb->saveAs(File);
delete pDb;
其他代码省略,我在运行后,一般DWG文件能够正常替换,但有个别文件不能够替换,报出致命错误:“内部错误 ",调试过程中发现问题出在“((AcDbText*)pEntity)->setTextString(st)”,但为何有的文件又能够替成功呢,请大家指教,谢谢!

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

22

主题

71

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2005-6-4 17:19:00 | 显示全部楼层
我试了一下,就没什么错误。。。
如果你要读取的文件已经在CAD中打开了,运行就会有错误,你应该注意到这个问题吧???
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-6 08:20:00 | 显示全部楼层
不是这个原因,同样不能替换的文件,操作几次,乃至单独替换都不行
,而其他文件又可以,真不知道什莫原因,拜托大家了!
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-6 08:22:00 | 显示全部楼层
不能替换的文件如下:举一例:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:a54hrfsqg4i.33锟斤拷锟dwg 
下载次数:0  文件大小:55.87 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-6 08:23:00 | 显示全部楼层
大家能不能试一试,看看!
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-6-6 10:52:00 | 显示全部楼层
。。。我猜是因为前面打开块表和遍历打开实体的时候都没有检查可能不回返eOk,后面就堆积错误。。
虽然没看出来为什么,但是至少可以考虑在所有的操作上都检查回返值,确定最先出错的是什么地方。。
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-6 11:02:00 | 显示全部楼层
我通过查找能够替换和不能够替换的DWG文件得到了答案:原来竟然是图纸中有一图层:ASHADE层是否被锁,只要打开,就可以正常替换,可我所替换的文字不再此层啊,为啥?
怎样用ARX设置此层被打开,谢谢!
回复

使用道具 举报

3

主题

97

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2005-6-6 11:17:00 | 显示全部楼层
。。果然。。
代码遍历Model Space的时候对每一个实体进行写打开,因为处在被锁的图层上的实体是不能修改的,所以写打开操作很可能回返了错误,但是代码没有处理错误,内部堆积到后面就暴走。。
果然对所有的打开操作都是要检查检查再检查的。。
只为了修改文字而把图层解锁不好吧,建议楼主遍历的时候先以读打开,检查实体类型,如果是文字实体再upgradeToWrite。。
回复

使用道具 举报

4

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2005-6-6 11:44:00 | 显示全部楼层
我明白了!谢谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 09:03 , Processed in 0.226708 second(s), 86 queries .

© 2020-2025 乐筑天下

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