//-----------------------------------------------------------------------------
//----- acrxEntryPoint.cpp
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include "acedCmdNF.h "
//-----------------------------------------------------------------------------
#define szRDS _RXST("")
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CTestCommandCApp : public AcRxArxApp {
public:
CTestCommandCApp() : AcRxArxApp() {}
virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
return (retCode);
}
virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
return (retCode);
}
virtual void RegisterServerComponents() { }
// Проверка на продолжение работы команды
static Adesk::Boolean isCommandActive(const ACHAR *cmd)
{
struct resbuf rb;
acedGetVar(L"CMDNAMES", &rb);
if (wcsstr(rb.resval.rstring, cmd))
return Adesk::kTrue;
return Adesk::kFalse;
}
// Функция обратного вызова
static int MyCallback(void *pData)
{
ACHAR *cmd = static_cast<ACHAR *>(pData);
if (acedCmdCWasCancelled())
{
acutPrintf(L"\nКоманда %s прервана...", cmd);
return 0;
}
if (isCommandActive(cmd))
{
int res = acedCommandC(&MyCallback, pData, RTSTR, PAUSE, RTNONE);
acedCallBackOnCancel();
acutPrintf(L"\nMyPlineCallback: Команда %s активна. res=%d", cmd, res);
return 1;
}
CommandIsDone(cmd);
if (wcsstr(L"PLINE", cmd)) {
// Теперь можно запустить вторую команду
acedCommandC(&MyCallback, L"3DPOLY", RTSTR, L"_.3DPOLY", RTSTR, PAUSE, RTNONE);
}
else if (wcsstr(L"3DPOLY", cmd)) {
// Теперь можно запустить третью команду
acedCommandC(&MyCallback, L"ARC", RTSTR, L"_.ARC", RTSTR, PAUSE, RTNONE);
}
return 0;
}
static void CommandIsDone(const ACHAR *cmd)
{
acutPrintf(L"\nКоманда %s завершена...", cmd);
}
static void RivilisMyCommand() {
acedCommandC(&MyCallback, L"PLINE", RTSTR, L"_.PLINE", RTSTR, PAUSE, RTNONE);
}
};
//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CTestCommandCApp)
ACED_ARXCOMMAND_ENTRY_AUTO(CTestCommandCApp, Rivilis, MyCommand, MyCommand, ACRX_CMD_MODAL, NULL)