找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 699|回复: 0

[ARX函数]:如何修改AcDbText实体,并马上显示修改结果?

[复制链接]
发表于 2006-5-10 16:38:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位,今天有时间测试了一下各位提出的方法,结果还是不行!

现把程序粘贴如下:

        //定义变量
        AcDbObjectId transId;
        AcDbObjectIdArray objIdArray;
       
        /*---------------获取前面选中文件的图形数据库---------------*/
        AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse,true);
        Acad::ErrorStatus es = pDb->readDwgFile(filepath,_SH_DENYNO,false);
        if (es!=Acad::eOk)
        {
                acutPrintf("\nThe file %s cannot be opend",filepath);
                return;
        }

        AcDbBlockTable *pBlockTbl;
        pDb->getSymbolTable(pBlockTbl,AcDb::kForRead);

        AcDbBlockTableRecord *pBlockTblRec;
        pBlockTbl->getAt(ACDB_MODEL_SPACE,pBlockTblRec,AcDb::kForWrite);
        pBlockTbl->close();

        //创建遍历器
        AcDbBlockTableRecordIterator *pBTRIterator;
        pBlockTblRec->newIterator(pBTRIterator);

        CString strText;
        for(;!pBTRIterator->done();pBTRIterator->step())
        {
                AcDbEntity *pEnt;
                pBTRIterator->getEntity(pEnt,AcDb::kForWrite);
                if(strcmp(pEnt->isA()->name(),"AcDbText")==0)
                {
                        AcDbText *pText;
                        pText = AcDbText::cast(pEnt);
                        strText = pText->textString();
                        if(strText.Compare(strFindWhat)==0)
                        {
                                objIdArray.append(pText->objectId());
                                if(pText->setTextString(strDisplace) != Acad::eOk)
                                        acedAlert("Can't displace text string!");

                                strText = pText->textString();
                                acedAlert(strText);

//                                pText->recordGraphicsModified();
//                                pText->downgradeOpen();
//                                pText->draw();
                        }
                        pText->close();
                }       
                pEnt->close();       
        }       
        delete pBTRIterator;
        pBlockTblRec->close();
       
        if(objIdArray.isEmpty())
        {
                acutPrintf("\n用户所选文件中没有%s",strFindWhat);
                return;
        }

       
        //保存原数据库、关闭数据库并删除此对象
        pDb->saveAs(filepath);
        delete pDb;
        pDb = NULL;

请各位大侠帮忙,看看程序错在哪里,怎样才能马上显示?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 13:59 , Processed in 0.369443 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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