- 积分
- 3266
- 明经币
- 个
- 注册时间
- 2002-7-5
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
我在CAD系统快捷菜单中添加了几个命令,当用户选择了某个命令后,我希望能得到用户预先选择的一些图元,并提取部份DXF组码,我的程序是这样:
void myEntityContext::onCommand(Adesk::UInt32 cmdIndex)
{ CString str1;
m_pMenu->GetMenuString(cmdIndex,str1,MF_BYCOMMAND);//str1为用户选择的菜单命令名
if (str1.Right(3)=="DBF"){
struct resbuf* prbGrip = NULL;
struct resbuf* prbPick = NULL;
acedSSGetFirst(&prbGrip, &prbPick);//获取用户预先选择集
long pickLen;
acedSSLength(prbPick->resval.rlname, &pickLen);
acutPrintf("\n用户通过acedSSGetFirst()函数预先选择了%d个图元对象", pickLen);
//程序在这能正确输出
for(int i=0;prbGrip!=NULL;i++,prbGrip=prbGrip->rbnext)
{
acutPrintf("\nRETURN: %d,%X\t",prbGrip->restype,prbGrip->resval.rlname[0]);
}
//for循环只执行一次,->restype为4007,->resval.rlname[0]不是任何图元的DXF码
//我感觉for循环构造有问题,但不知道该如何修改。
........
}
说明:源程序很长,编译能通过,在这省略了与问题无关的部分代码。 |
|