|
使用 ObjectARX 在 AutoCAD 中同步发送(并等待)命令
芬顿.韦伯报道
从这篇文章开始,我认为你们至少应该知道如何在ObjectARX中做同样的事情......
问题
如何允许用户从 ObjectARX 绘制多点折线?我尝试使用 acedCommand 将"_pline"命令发送到 AutoCAD,但无法预先确定用户将决定输入多少折线点。
溶液
可以实现一个函数,该函数首先发出 PLINE 命令,然后不断检查 PLINE 在 AutoCAD 命令缓冲区中是否仍处于活动状态。如果是这样,命令暂停将发送到命令行以允许用户进一步输入。
此活动可以重复发生,直到用户转义或按 Enter 键完成折线。
下面的代码段执行此操作:
[code]
Adesk::Boolean isPlineActive()
{
struct resbuf rb;
acedGetVar(_T("CMDNAMES"),&rb);
if(rb.restype == RTSTR && rb.resval.rstring != NULL)
{
//"PLINE" contained in CMDNAMES?
if(_tcsstr(rb.resval.rstring,_T("PLINE")))
return Adesk::kTrue;
}
return Adesk::kFalse;
}
void mkline()
{
acedCommand(RTSTR,_T("_.pline"),RTSTR,PAUSE,RTNONE);
while(isPlineActive())
acedCommand(RTSTR,PAUSE,RTNONE);
acutPrintf (_T("\nContinue processing"));
}[/code] |
|