我想用自己写的Move命令取代ACAD的Move命令,怎么做?
我想用自己写的Move命令取代ACAD的Move命令,怎么做?有两个办法:
1。使用AcEdCommandStack::removeCmd Function virtual Acad::ErrorStatusremoveCmd(const char* cmdGroupName,const char* cmdGlobalName) = 0;
注销MOVE命令,但是其中的参数具体是什么,谁能告诉我????
我用AcEdCommandIterator找不到"MOVE"命令,
代码如下:
AcEdCommandIterator* iter = acedRegCmds->iterator();
if (iter == NULL)
{
ASSERT(0);
return;
}
// walk through the command stack and make a map of
// command group to command.
AcDbVoidPtrArray* tmpVoidPtrArray;
for (; !iter->done(); iter->next())
{
AcEdCommand *pcommand = const_cast<AcEdCommand*>(iter->command());
acutPrintf("Command LocalName:%s Command GlobalName:%s\n",
pcommand->localName(),pcommand->globalName());
if(0 == strcmp(pcommand->localName(),"move"))
{
acutPrintf("LocalName.\n");
acutPrintf("GroupName:%s",iter->commandGroup());
}
if(0 == strcmp(pcommand->globalName(),"_move"))
{
acutPrintf("GlobalName.\n");
acutPrintf("GroupName:%s",iter->commandGroup());
}
}
delete iter;
2。使用AcEditorReactor::commandWillStartFunction
virtual void commandWillStart(const char* cmdStr);
但是要终止原来MOVE命令如何做?
我发送ESC可以做到,但是在命令行出现"*ESC*"字样,不好,请问有好的办法么? 用后一种方法直接就可以不留痕迹吧?
记得以前读的一本书上说:如果自定义命令的名称与系统命令重名,会自动屏蔽掉系统内部命令,你试试看。 Group不一样。。。
页:
[1]