乐筑天下

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

帮助!!我是初学者?帮帮我!!

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2009-2-10 08:40:48 | 显示全部楼层 |阅读模式
嗨,我已经学习了几天的Objectarx。谁能告诉我我的功能有什么问题。我的英语不好。
谢谢。
  1. void leiArxMFC1_plist(void)
  2. {
  3.   AcDbLayerTable *pLayerTbl;
  4.   acdbHostApplicationServices()->workingDatabase()
  5.    ->getSymbolTable(pLayerTbl, AcDb::kForRead);
  6.   if (!pLayerTbl->has("dgx"))
  7.   {
  8.    acutPrintf("\n no"dgx"!");
  9.    pLayerTbl->close();
  10.    return;
  11.   }
  12.   AcDbObjectId layerId;
  13.   pLayerTbl->getAt("dgx", layerId);
  14.   pLayerTbl->close();
  15.   
  16.   AcDbBlockTable *pBlkTbl;
  17.   acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);
  18.   
  19.   AcDbBlockTableRecord *pBlkTblRcd;
  20.   pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,
  21.    AcDb::kForRead);
  22.   pBlkTbl->close();
  23.   
  24.   AcDbBlockTableRecordIterator *pItr;
  25.   pBlkTblRcd->newIterator(pItr);
  26.   AcDbEntity *pEnt;
  27.   ads_name entName;
  28.   for (pItr->start(); !pItr->done(); pItr->step())
  29.   {
  30.    pItr->getEntity(pEnt, AcDb::kForWrite);
  31.    AcDbObjectId entId;
  32.    entId = pEnt->objectId();
  33.   ------------------------------------------------------
  34.    acdbGetAdsName(entName,entId);
  35.    struct resbuf *rbEnt;
  36.    struct resbuf *rb;   
  37.   
  38.    rbEnt = acdbEntGet(entName);
  39.    rb = rbEnt;
  40.   ---------------------------------------------------
  41.    while (rb != NULL)
  42.    {
  43.     switch (rb->restype)
  44.     {
  45.     case 8:
  46.      acutPrintf("\n layer:%s", rb->resval.rstring);
  47.      break;
  48.     case 39:
  49.      acutPrintf("\n T:%s", rb->resval.rstring);
  50.      break;
  51.     case 30:
  52.      if (rb->resval.rreal == 60)
  53.      {
  54.       pEnt->setColorIndex(1);
  55.      }
  56.      acutPrintf("\n elven:%d", rb->resval.rreal);
  57.      break;
  58.     default:
  59.      break;
  60.     }  
  61.     rb = rb->rbnext;
  62.    }  
  63.    
  64.    pEnt->close();
  65.   }
  66.   delete pItr;
  67.   pBlkTblRcd->close();
  68. }

丹尼尔编辑:添加代码标签

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

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

使用道具 举报

0

主题

11

帖子

5

银币

初来乍到

Rank: 1

铜币
11
发表于 2009-2-10 10:46:01 | 显示全部楼层
我的另一个猜测是,也许你需要阅读UNICODE......
HTH,欢迎来到沼泽...
回复

使用道具 举报

0

主题

13

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2009-2-10 10:57:37 | 显示全部楼层
不太确定你想完成什么,但也许这会给你一些想法。
ps:欢迎来到沼泽
  1.   static void SwampHelpdoit(void)
  2.   {
  3.     const CString layerName = "dgx";
  4.     AcDbObjectId objId;
  5.     AcDbObjectId BTRid;
  6.     ads_name entName;
  7.     struct resbuf *rbEnt = NULL;
  8.     struct resbuf *rbTmp = NULL;
  9.     AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
  10.     AcDbLayerTablePointer pLayerTbl(pDb->layerTableId(),AcDb::kForRead);
  11.     if(pLayerTbl.openStatus() != Acad::eOk)
  12.     {
  13.       acutPrintf(_T("\nFailed to open LayerTable"));
  14.       return;
  15.     }
  16.     if(!pLayerTbl->has(layerName))
  17.     {
  18.       acutPrintf(_T("\nError: Layer %s was not found"),layerName);
  19.       return;
  20.     }
  21.     AcDbBlockTablePointer pBlkTbl(pDb->blockTableId(), AcDb::kForRead);
  22.     if(pBlkTbl.openStatus() != Acad::eOk)
  23.     {
  24.       acutPrintf(_T("\nFailed to open BlockTable"));
  25.       return;
  26.     }
  27.     if(pBlkTbl->getAt(ACDB_MODEL_SPACE,BTRid) != Acad::eOk)
  28.     {
  29.       acutPrintf(_T("\nFailed to get BlockTableRecord"));
  30.       return;
  31.     }
  32.     AcDbBlockTableRecordPointer pBlkTblRcd(BTRid,AcDb::kForRead);
  33.     if(pBlkTblRcd.openStatus() != Acad::eOk)
  34.     {
  35.       acutPrintf(_T("\nFailed to open BlockTableRecord"));
  36.       return;
  37.     }
  38.     AcDbBlockTableRecordIterator* pIterator = NULL;
  39.     pBlkTblRcd->newIterator(pIterator);
  40.     for (pIterator->start(); !pIterator->done(); pIterator->step())
  41.     {
  42.       pIterator->getEntityId(objId);
  43.       AcDbObjectPointer pEnt(objId, AcDb::kForRead);
  44.       acdbGetAdsName(entName,objId);
  45.       rbEnt = acdbEntGet(entName);
  46.       if (pEnt.openStatus() == Acad::eOk)
  47.       {
  48.         for (rbTmp=rbEnt;rbTmp->rbnext!=NULL;rbTmp=rbTmp->rbnext)
  49.         {
  50.           switch (rbTmp->restype)
  51.           {
  52.           case 8:
  53.             acutPrintf(_T("\n layer:%s"), rbTmp->resval.rstring);
  54.             break;
  55.           case 39:
  56.             acutPrintf(_T("\n T:%s"), rbTmp->resval.rstring);
  57.             break;
  58.           case 30:
  59.             if (rbTmp->resval.rreal == 60){
  60.               pEnt->upgradeOpen();
  61.               pEnt->setColorIndex(1);
  62.             }
  63.             acutPrintf(_T("\n elven:%f"), rbTmp->resval.rreal);
  64.             break;
  65.           default:
  66.             break;
  67.           }  
  68.         }
  69.       }               
  70.     }
  71.     delete pIterator;
  72.   }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-2 02:02 , Processed in 1.616604 second(s), 58 queries .

© 2020-2025 乐筑天下

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