找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1498|回复: 12

[ARX程序]:大家帮我看看怎么0层上的文本读不出来呢?

[复制链接]
发表于 2004-6-18 08:34:34 | 显示全部楼层 |阅读模式

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

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

×
大家帮我看看怎么0层上的文本读不出来呢?
void fikk()
{
        // TODO: Implement the command
   AcDbTextStyleTable *pBT;
   if( acdbHostApplicationServices()->workingDatabase()
        ->getTextStyleTable(pBT, AcDb::kForRead) != Acad::eOk)
                return;
       
        AcDbTextStyleTableRecord *pRec;
        if(pBT->getAt(ACDB_MODEL_SPACE, pRec,AcDb::kForRead) !=Acad::eOk)
                return;
        pBT->close();
        Acad::ErrorStatus es;
        AcDbTextStyleTableIterator *pIter;
        es=pBT->newIterator(pIter);

   
    int j=1;

        for (pIter->start();!pIter->done();pIter->step())
        {
          
             AcDbText *pText;
                es=pIter->getRecord(pRec,AcDb::kForRead);

                if (es!=Acad::eOk)
                        continue;
AcDbEntity *pEnt;
                if ((!stricmp(pEnt->layer(),"0"))&&(pText=AcDbText::cast(pEnt)))
                {

               
            char* str;
            str = pText->textString();                                
        acutPrintf("\第%d个文本为:%s\n",j++,str);             
      
                }
   
                pEnt->close();   
        
         }
         acutPrintf("\n **********共有%d个文本TEXT**********",j-1);


         delete pIter;
         pBT->close();
         pRec->close();
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-18 16:01:48 | 显示全部楼层
if ((!stricmp(pEnt->layer(),"0"))&&(pText=AcDbText::cast(pEnt)))
{


char* str;
str = pText->textString();
acutPrintf("\第%d个文本为:%s\n",j++,str);

}

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

使用道具 举报

 楼主| 发表于 2004-6-19 10:37:27 | 显示全部楼层
((!stricmp(pEnt->layer(),"0"))定义这个是为了显示0层上的文本,判断是否是0层

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

使用道具 举报

发表于 2004-6-19 15:21:15 | 显示全部楼层
我感觉上面有两点错误:
1.你先"pBT->close();";后来又用pBT定义遍历器"es=pBT->newIterator(pIter);".
2.你没有把遍历器和实体联系起来.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-21 09:43:44 | 显示全部楼层
我根据你们的提议做了适当的修改,,可是还不行呀
在AUTOCAD中操作时还是什么也没有做
但在VC里面编译时总是显示如下语句:
D:\OK\OKCommands.cpp(39) : warning C4700: local variable 'pEnt' used without having been initialized
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-21 19:36:12 | 显示全部楼层
肯定会出现上述警告,因为你没有把遍历器和实体联系起来.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-21 20:15:08 | 显示全部楼层
知道错在哪儿了,
一开始就错了
AcDbText也属于AcDbBlock,可我在上面却把它和AcDbTextStyleTable 混在一起了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-23 11:24:49 | 显示全部楼层
void  test(void)
{
int i=0;
    AcDbObjectId id;
    AcDbBlockTable* pBT;
    if (Acad::eOk != acdbCurDwg()->getBlockTable( pBT, AcDb::kForRead )){
      ads_printf( "\nError getting BlockTable of DWG" );
      return ;
      }
    AcDbBlockTableRecord* pBTR;
    Acad::ErrorStatus es = pBT->getAt( ACDB_MODEL_SPACE, pBTR, AcDb::kForRead );
    pBT->close();
    if (Acad::eOk != es) {
      ads_printf( "\nError getting model space of DWG" );
      return ;
      }
    AcDbBlockTableRecordIterator* pIT;
    if (Acad::eOk != pBTR->newIterator( pIT )) {
        ads_printf( "Error iterating model space of DWG" );
        pBTR->close();
        return ;
       }
    for ( ; !pIT->done(); pIT->step()) {
        AcDbEntity *pE;
        if ( Acad::eOk == pIT->getEntity(pE, AcDb::kForRead)) {
          if(strcmp(pE->layer(),"0")==0 && pE->isKindOf(AcDbText::desc())) {
            AcDbText *pT=AcDbText::cast(pE);
            ads_printf("\n%d %s",i++,pT->textString());
            }
           }   
        //AcDbMText 可类似处理   
        pE->close();
        }
    delete pIT;
    pBTR->close();
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-24 09:35:05 | 显示全部楼层
TO: ymd
谢谢你提供帮助!
  你的这个程序我编译时出现错误,就是这一句
if (Acad::eOk != acdbCurDwg()->getBlockTable( pBT, AcDb::kForRead ))出错,
显示如下:
D:\OK\OKCommands.cpp(19) : error C2065: 'acdbCurDwg' : undeclared identifier
D:\OK\OKCommands.cpp(19) : error C2227: left of '->getBlockTable' must point to class/struct/union
但要是改成:
if( acdbHostApplicationServices()->workingDatabase()
        ->getSymbolTable(pBT, AcDb::kForRead) != Acad::eOk)
编译就可通过,在CAD上也能正确执行

我不知道这是什么原因,,你能讲解一下吗???????

这种情况我在以前练习时也遇到过,,就是照着书敲的程序也出现了这个错误
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-24 10:19:40 | 显示全部楼层
仅是使用的arx版本不同,我用的是R14下的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-6 11:33:24 | 显示全部楼层
#include "dbapserv.h"
#include "migrtion.h"
加上这两句就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 01:24 , Processed in 0.211812 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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