找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2671|回复: 7

[编程申请]:[ARX]请问MTEXT实体文字如何读出来,下面是读text实体文本。

[复制链接]
发表于 2002-3-8 00:48:01 | 显示全部楼层 |阅读模式

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

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

×
下面代码是读text实体文本,请问MTEXT实体文字如何读出来,我想把两行文字mtext读出来放到一个字符串中,请问如何实现?
例如:
034
MT
这是个MTEXT,我想读出来成为034MT(字符串).


                for(;;)
                {
                        ads_name ent;
                        ads_point pt;
                        if(acedEntSel("\n选择设备,用鼠标选择相应文字:",ent,pt)!=RTNORM)
                        {
                                acutPrintf("\n没有选中相应实体,程序退出!");
                                break;
                        }

                        AcDbObjectId objId;
                        acdbGetObjectId(objId,ent);
                        AcDbEntity *pEnt;
                        acdbOpenObject(pEnt,objId,AcDb::kForRead);

                        AcDbHandle objHand;
                        char handbuf[17];
                        pEnt->getAcDbHandle(objHand);
                        objHand.getIntoAsciiBuffer(handbuf);

                            acutPrintf("\nCLASS NAME:==%s,\nID:==%1x,\n handle:==%s\n",pEnt->isA()->name(),pEnt->objectId().asOldId(),handbuf);


                        if(pEnt->isKindOf(AcDbText::desc()))
                        {
                                pEnt->highlight();
                                AcDbText *pTxt;

                                if (Acad::eOk==acdbOpenObject(pTxt,objId,AcDb::kForRead))
                                {
                                        char *ptxt=pTxt->textString();
                                        acutPrintf("\n文字:==%s\n",ptxt);
                                               
                                }
                                pTxt->close();
                        }
                       
                        pEnt->unhighlight();
                        pEnt->close();
               
                }
        }

评分

参与人数 1D豆 +1 收起 理由
ScmTools + 1 很给力!经验;技术要点;

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-3-8 02:42:06 | 显示全部楼层
{
        ads_name ent;
        ads_point pt;
        if(acedEntSel("\n选择设备,用鼠标选择相应文字:",ent,pt)!=RTNORM)
        {
                acutPrintf("\n没有选中相应实体,程序退出!");
                break;
        }
       
        AcDbObjectId objId;
        acdbGetObjectId(objId,ent);
        AcDbEntity *pEnt;
        acdbOpenObject(pEnt,objId,AcDb::kForRead);
       
        AcDbHandle objHand;
        char handbuf[17];
        pEnt->getAcDbHandle(objHand);
        objHand.getIntoAsciiBuffer(handbuf);
       
        acutPrintf("\nCLASS NAME:==%s,\nID:==%1x,\n handle:==%s\n",pEnt->isA()->name(),pEnt->objectId().asOldId(),handbuf);
       
       
        if(pEnt->isKindOf(AcDbMText::desc()))
        {
                pEnt->highlight();
                AcDbMText *pTxt = (AcDbMText*)pEnt;
               
                char *ptxt=pTxt->contents();
                CString sText = ptxt;
                delete ptxt;
                acutPrintf("\n文字:==%s\n",sText);
                CString sLeft = _T("");
                int iIndex = sText.Find(_T("\P;"));
                while (iIndex > -1)
                {
                        sLeft += sText.Left(iIndex);
                        sText = sText.Mid(iIndex + 2);
                }
                if (!sText.IsEmpty())
                        sLeft += sText;
                acutPrintf(_T("\n处理后的文字: = %s"), sLeft);
        }
       
        pEnt->unhighlight();
        pEnt->close();
       
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-3-8 06:00:53 | 显示全部楼层
就是处理pMText->contents();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-8 08:24:45 | 显示全部楼层
我用了你的例子
003
VP
,但是,结果为
文字={\fTahoma|b0|i0|p32;003\PVP}

处理过后的文字={\fTahoma|b0|i0|p32;003\PVP}

不知为何不变?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-8 08:36:17 | 显示全部楼层

Re: [编程申请]:[ARX]请问MTEXT实体文字如何读出来,下面是读text实体文本。

最初由 hotgirl 发布
[B]下面代码是读text实体文本,请问MTEXT实体文字如何读出来,我想把两行文字mtext读出来放到一个字符串中,请问如何实现?
例如:
034
MT
这是个MTEXT,我想读出来成为034MT(字符串).


                for(;;)
                {
                        ads_n... [/B]


一个方法:

使用AcDbMtext::explodeFragments(..)方法,把MTEXT“炸”成单个AcDbText的实体,然后从AcDbText对象得到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-8 09:32:26 | 显示全部楼层
我不想破坏原来AcDbMtext!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-8 09:36:42 | 显示全部楼层
最初由 hotgirl 发布
[B]我不想破坏原来AcDbMtext! [/B]


换个AcDbEntity::explode(..)也可以,不会破坏原来的MTEXT对象的,仅仅是生成内存模型,你操作完它,delete掉他们
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-9 00:36:35 | 显示全部楼层
XDsoft:给个代码例子好不好?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 10:18 , Processed in 0.451540 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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