JA_JERRY 发表于 2005-4-1 20:30:00

[求助]各位高手帮帮忙:(扩展字典问题)

本帖最后由 作者 于 2005-4-8 12:03:49 编辑 <br /><br /> 我想为各个层添加扩展字典,来记录层上的一些信息,下面是我的函数(我把层名作为字典的名字)<BR>CreateDictionary()<BR>{<BR>        <BR>        AcDbObjectId pCurLayerId;<BR>        pCurLayerId=acdbHostApplicationServices()-&gt;workingDatabase()-&gt;clayer();        <BR>        AcDbLayerTableRecord* pTRec;<BR>        acdbOpenObject(pTRec,pCurLayerId,AcDb::kForWrite);        <BR>        pTRec-&gt;createExtensionDictionary();<BR>        AcDbObjectId dictObjId,xrecObjId;<BR>        AcDbXrecord *pXrec = new AcDbXrecord;<BR>        AcDbDictionary* pDict;<BR>        dictObjId=pTRec-&gt;extensionDictionary();<BR>        pTRec-&gt;close();<BR>        acdbOpenObject(pDict,dictObjId,AcDb::kForWrite);<BR>        pDict-&gt;setAt(pCLname,pXrec,xrecObjId);<BR>        pDict-&gt;close();<BR>                <BR>        resbuf* head;<BR>        head=acutBuildList(AcDb::kDxfText,name,AcDb::kDxfReal,area,AcDb::kDxfReal,<BR>                RLength,AcDb::kDxfReal,RWidth,AcDb::kDxfInt16,num,RTNONE);<BR>        pXrec-&gt;setFromRbChain(*head);<BR>        pXrec-&gt;close();<BR>        acutRelRb(head);<BR>}//其中name、area、length、Width、num分别为CString double double double int型<BR>为了验证扩展字典的正确性,我编写了下面的函数进行验证<BR>ReadDictionary(CString name)<BR>{<BR>        AcDbLayerTable *pLayer;<BR>        AcDbLayerTableRecord *pRec;<BR>        AcDbObjectId dictObjId;<BR>        AcDbDictionary *pDict;<BR>        AcDbXrecord *pXrec;



        acdbHostApplicationServices()-&gt;workingDatabase()<BR>                -&gt;getSymbolTable(pLayer,AcDb::kForRead);<BR>        pLayer-&gt;getAt(name,pRec,AcDb::kForRead);<BR>        pLayer-&gt;close();<BR>        dictObjId=pRec-&gt;extensionDictionary();<BR>        pRec-&gt;close();<BR>        acdbOpenObject(pDict,dictObjId,AcDb::kForRead);<BR>        pDict-&gt;getAt(name,(AcDbObject*&amp;)pXrec,AcDb::kForRead);<BR>        pDict-&gt;close();<BR>        struct resbuf* pRbList;<BR>        pXrec-&gt;rbChain(&amp;pRbList);<BR>        pXrec-&gt;close();<BR>        <FONT style="BACKGROUND-COLOR: #d5d52b">pRbList-&gt;rbnext</FONT>;//从第二个数据开始输出


        acedPrintf("area=%f\n",pRbList-&gt;resval.rreal);<BR>        <FONT style="BACKGROUND-COLOR: #cccc33">pRbList-&gt;rbnext</FONT>;<BR>        acedPrintf("length=%f\n",pRbList-&gt;resval.rreal);<BR><FONT style="BACKGROUND-COLOR: #d5d52b">        pRbList-&gt;rbnext;<BR></FONT>        acedPrintf("width=%f\n",pRbList-&gt;resval.rreal);<BR>        <FONT style="BACKGROUND-COLOR: #d5d52b">pRbList-&gt;rbnext;<BR></FONT>        acedPrintf("num=%f\n",pRbList-&gt;resval.rint);<BR>        acutRelRb(pRbList);<BR>}<BR>编译运行都没有问题,可就是得不到我输入的结果,请问各位高手,我的程序哪里有问题;还是不可以为层添加扩展词典<BR>

JA_JERRY 发表于 2005-4-8 12:12:00

问题解决了,这是一个愚蠢而低级的错误出错的地方我已经做了标注,下面是改进后的代码,希望大家不要犯和我类似的错误


        resbuf *pRbList;<BR>        resbuf *pTemp;<BR>        pXrec-&gt;rbChain(&amp;pRbList);<BR>        pTemp=pRbList;<BR>        pXrec-&gt;close();<BR>        pTemp=pTemp-&gt;rbnext;<BR>        acedPrintf("area=%f\n",pRbList-&gt;resval.rreal);<BR>        pTemp=pTemp-&gt;rbnext;<BR>        acedPrintf("length=%f\n",pRbList-&gt;resval.rreal);<BR>        pTemp=pTemp-&gt;rbnext;<BR>        acedPrintf("width=%f\n",pRbList-&gt;resval.rreal);<BR>        pTemp=pTemp-&gt;rbnext;<BR>        acedPrintf("num=%f\n",pRbList-&gt;resval.rint);<BR>        acutRelRb(pRbList);<BR>
页: [1]
查看完整版本: [求助]各位高手帮帮忙:(扩展字典问题)