- UID
- 257799
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-5-12
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我创建了一个停靠对话框.点击按钮出现一模态的对话框.点击模态对话框上的按钮我想实现创建面域功能.函数中调用我注册的命令.但不能同步.
void CBlastRegion::OnOrerockregion() //模态对话框按钮响应函数
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
SendCommandToAcad("createregion\n");
int rc = RTNORM;
char kw[2];
while(rc == RTNORM)
{
acedInitGet(NULL, "Y N");
rc = acedGetKword("\n指定完所有的矿岩分块吗?[Y/N]<Y>: ", kw);
switch(rc)
{
case RTERROR:
case RTCAN:
return;
break;
case RTNONE:
strcpy(kw, "Y");
rc = RTNORM;
break;
}
if(strcmp(kw, "Y") == 0)
{
rc = RTNONE;
}
else
{
// acDocManager->sendStringToExecute(pDoc,"createregion\n");
SendCommandToAcad("createregion\n");
}
}
acDocManager->unlockDocument(curDoc());
}
createregion是注册的命令.代码为:
void LLSUSTBCREATEREGION()
{
// TODO: Implement the command
ads_point pt;
ads_name entname;
AcDbObjectId entId;
AcDbEntity * pEnt;
// if(RTNORM != acedGetPoint(NULL, "请在爆区内任意指定一点以确定爆破等级: ", pt))
int i = acedGetPoint(NULL, "请在爆区内任意指定一点以确定爆破等级: ", pt);
if(i!=RTNORM)
return;
int nReturn = acedCommand(RTSTR, "-boundary",RTSTR,"A",RTSTR,"O",RTSTR,"R",RTSTR,"B",RTSTR,"E",RTSTR,"", RTPOINT, pt,RTSTR,"", RTNONE);
acdbEntLast(entname);
acdbGetObjectId(entId,entname);
acdbOpenAcDbEntity(pEnt,entId,AcDb::kForRead);
AcDbDatabase *pCurDb;
AcDbBlockTable *pBlkTable;
AcDbBlockTableRecord *pBlkTableRecord;
AcDbObjectId regionId;
pCurDb = acdbHostApplicationServices()->workingDatabase();
pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);
pBlkTable->getAt(ACDB_MODEL_SPACE, pBlkTableRecord, AcDb::kForWrite);
pBlkTable->close();
pBlkTableRecord->appendAcDbEntity(regionId,pEnt);
pEnt->close();
pBlkTableRecord->close();
}
CAD中用createregion可以.但点击按钮时执行到这里:
int i = acedGetPoint(NULL, "请在爆区内任意指定一点以确定爆破等级: ", pt);
就不往下执行了(返回了).从而执行while循环了.
论坛搜索了帖子. Hellow大哥开的帖子我试了不行 |
|