easypower 发表于 2004-10-29 16:41:00

我想用自己写的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*"字样,不好,请问有好的办法么?

zfbj 发表于 2004-10-30 10:08:00

用后一种方法直接就可以不留痕迹吧?


记得以前读的一本书上说:如果自定义命令的名称与系统命令重名,会自动屏蔽掉系统内部命令,你试试看。

easypower 发表于 2004-10-30 11:39:00

Group不一样。。。
页: [1]
查看完整版本: 我想用自己写的Move命令取代ACAD的Move命令,怎么做?