- UID
- 281509
- 积分
- 1054
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-6-21
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天遇到了又一个奇怪的问题,
AutoCAD数据库中有一个命名对象词典,我自己创建了一个词典,我在自己的词典中添加了10条记录,然后我将自己的词典加入到命名对象词典中。之后我用一个程序去遍历我刚才加入的哪个词典,能得到刚才加入的10条记录,但顺序不对,第一条记录跑到最后去了,实在是太奇怪了。代码如下:
int i,j,k;
CString Size1,Size2;
//创建尺寸表
AcDbDictionary* pNamedobj;
acdbHostApplicationServices()->workingDatabase()->
getNamedObjectsDictionary(pNamedobj,AcDb::kForWrite);
AcDbDictionary* pDict;
AcDbObjectId DictId,XrecId;
AcDbXrecord* pXrec;
struct resbuf* rbx;
if(pNamedobj->getAt("SIZE_TABLE",(AcDbObject*&)pDict,AcDb::kForWrite)==
Acad::eKeyNotFound)
{
pDict=new AcDbDictionary;
pNamedobj->setAt("SIZE_TABLE",pDict,DictId);
//添加记录
if(pDict)
{
pXrec=new AcDbXrecord;
rbx=acutBuildList(
AcDb::kDxfText,"尺码",
AcDb::kDxfInt32,3,
AcDb::kDxfText,"S",
AcDb::kDxfText,"M",
AcDb::kDxfText,"L",
AcDb::kDxfText,"XL",
AcDb::kDxfText,"XXL",
AcDb::kDxfText,"XXXL",
0);
pXrec->setFromRbChain(*rbx);
pDict->setAt("SIZEMODE",pXrec,XrecId);
pXrec->close();
CString temStr;
for(i=1;i<10;i++)
{
temStr.Format("%d",i);
Size1="尺寸"+temStr;
Size2="SIZE"+temStr;
pXrec=new AcDbXrecord;
rbx=acutBuildList(
AcDb::kDxfText,Size1,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
AcDb::kDxfInt32,0,
0);
pXrec->setFromRbChain(*rbx);
pDict->setAt(Size2,pXrec,XrecId);
pXrec->close();
}
}
pDict->close();
}
//此词典中有10条记录
。
。
。
//下面读词典
pNamedobj->getAt("SIZE_TABLE",DictId);
acdbOpenObject(pDict,DictId,AcDb::kForRead);
xRecItor=pDict->newIterator();
pDict->close();
for(; !xRecItor->done();xRecItor->next())
{
xRecItor->getObject((AcDbObject*&)pXrec,AcDb::kForRead);
pXrec->rbChain(&rbx);
pXrec->close();
sprintf(buf,rbx->resval.rstring);
pgModBar->m_wndTree.InsertItem(buf,subRoot);
}
delete xRecItor;
期望得到的记录顺序:
尺码
尺寸1
尺寸2
尺寸3
尺寸4
尺寸5
尺寸6
尺寸7
尺寸8
尺寸9
但实际得到的顺序:
尺寸1
尺寸2
尺寸3
尺寸4
尺寸5
尺寸6
尺寸7
尺寸8
尺寸9
尺码 |
|