明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1790|回复: 0

[求助]AcDbDictionary问题

[复制链接]
发表于 2007-11-28 17:51:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-11-29 18:07:50 编辑

我以前用lsp写的程序中,使用了命名辞典. lsp函数: vlax-ldata-put DictName Key Value.
这个命名词典:
  1. 命令: (vlax-ldata-list "Dream.Fei")
  2. (("vpscale" . 45) ("Printscale" . "45") ("pmlx" . "3") ("blkn" . "2006112810484498"))
复制代码
  1. 名称: Dream.Fei
  2. 包含的数据: (("vpscale" . 45) ("Printscale" . "45") ("pmlx" . "3") ("blkn" . "2006112810484498"))
复制代码
我现在想取出 "rintScale" 这个key 所对应的值来. 请问用C++应该怎么搞?
我现在写成这样出错:
  1. AcDbDictionary *pNameObj = NULL;
  2.   if (acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNameObj, AcDb::kForRead) != Acad::eOk)
  3.    return;
  4.   
  5.   AcDbObjectId dictId = NULL;
  6.   if (pNameObj->getAt(_T("Dream.Fei"), dictId) != Acad::eOk)
  7.   {
  8.    pNameObj->close();
  9.    return;
  10.   }
  11.   pNameObj->close();
  12.   
  13.   AcDbXrecord *pXrec = NULL;
  14.   if(acdbOpenObject((AcDbObject*&)pXrec, dictId, AcDb::kForRead) != Acad::eOk)
  15.    return;
  16.   
  17.   struct resbuf *pRb = NULL;
  18.   pXrec->rbChain(&pRb);
  19.   pXrec->close();
  20.   if (pRb != NULL)
  21.   {
  22.    struct resbuf *tmp;
  23.    tmp = pRb;
  24.    while (tmp)
  25.    {      
  26.     acutPrintf(_T("\n获取的字符串数据: %s"),tmp->resval.rstring );
  27.     tmp= pRb->rbnext;
  28.    }
  29.    acutRelRb(pRb);
  30.   }
复制代码
如果您打算回答我去看帮助文档的话. 我看你还是不要回复了,省得浪费大家时间. 帮助我已经看过了,对不上号.

把函数改动了一下,但还是取不到值:
  1. static void PlanType_tst(void)
  2. {
  3.   AcDbDictionary *pNameObj = NULL;
  4.   if (acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNameObj, AcDb::kForRead) == Acad::eOk)
  5.   {
  6.    AcDbDictionary *pDict = NULL;
  7.    if(pNameObj->getAt(_T("Dream.Fei"), (AcDbObject*&)pDict, AcDb::kForRead) == Acad::eOk)
  8.    {
  9.     AcDbXrecord *pXrecd = NULL;
  10.     if (pDict->getAt(_T("PrintScale"), (AcDbObject*&)pXrecd, AcDb::kForRead) == Acad::eOk)
  11.     {
  12.      struct resbuf *pRb = NULL;
  13.      pXrecd->rbChain(&pRb);
  14.      if (pRb != NULL)
  15.       acutPrintf(_T("\n得到的结果: %s."), pRb->resval.rstring);
  16.      pXrecd->close();
  17.      acutRelRb(pRb);
  18.     }
  19.     pDict->close();
  20.    }
  21.    pNameObj->close();
  22.   }
  23. }
复制代码

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:37 , Processed in 0.228466 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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