在AutoCAD中不仅可以用鼠标画图,还可以通过键盘输入命令、参数来画图,请问这些命令是如何处理和实现的?怎样得到参数?怎样把参数传给画图函数?
------在线等待

解决方案 »

  1.   

    你可以用VC和ARX对AUTOCAD进行二次开发,现在CAD时常已经很规范,你很难
    开发一套系统超过AUTOCAD
      

  2.   

    用VC和objARX对AutoCAD进行二次开发,同意xc(xc)
      

  3.   

    只是一个方法的问题,当用命令的话,如:MyLineTO 11,11;这个命令就是
    你自己定义的,你可以自己去解析,把它变成一个执行的命令,如你可以先取出
    MyLineTo,你在判断是画线,还是画园,这又你在程序中来定,。。关键是对
    执行命令的解析问题。
      

  4.   

    如果不是在AutoCAD中进行二次开发
    可以将所有的键盘消息捕捉,然后具体进行消息处理。
      

  5.   

    int ParseCommand(LPCTSTR lpCmd)
    {
      if(lpCmd==NULL) return ERROR_CMD_EMPTY;
      char szCmd[MAX_CMDSIZE]={0};
      strncpy(szCmd,lpCmd);
      
      FormatCmd(szCmd);//格式化命令字符串,去掉多余的空格,TAB,
                       //同时变成小写
      if(szCmd[0]==0)  return ERROR_CMD_EMPTY;  char* pCmdLine=szCmd;
      int nRet=ERROR_CMD_INVOLID;
      if(strstr(pCmdLine,"lineto ")==pCmdLine)
      {
         pCmdLine+=strlen("lineto ");//取参数
         nRet=LineTo(pCmdLine);
      }
      else if(strstr(pCmdLine,"textout ")==pCmdLine)
      {
         pCmdLine+=strlen("textout ");//取参数
         nRet=TextOut(pCmdLine);
      }
      ....
      return nRet;
    }
      

  6.   

    看你一个人在UP,好辛苦啊!
    我帮你UP!
    UP
    UP
      

  7.   

    AutoCAD用过吗?输入命令如‘l’,可以用鼠标按键画图,也可以通过输入坐标点等参数来画图,坐标点是用空格或逗号分开的。鼠标和键盘操作可以交互使用,效果类似。哎呀,到底怎么做呀???
      

  8.   

    我不同意 xc(xc) 和 bufferly(缓冲器) 的说法,autocad虽然做得很好,但他也有它的致命伤,例如由于它的内核不公开,企业和erp做集成就很麻烦了,还有他的兼容性做得好,但有的企业有保密的需求却没法满足。还有它的价格也太贵了,中有多少企业能买得起正版呢?还有很多问题,这里没法一一表述。我觉得现在开发一套二维的cad软件,只要切合企业的需求,应该很有市场的。
      

  9.   

    使用键盘和鼠标控制画图其实就是捕捉键盘鼠标消息,然后自己解析绘图
    如果有兴趣,可以看看OpenGL的书,如清华有本《OpenGL编程指南》,作图很方便,2D+3D……附盘
      

  10.   

    本人就是用VC+ObjectARX做AutoCAD的二次开发,当然其内部机理也多少研究了一些,原理很简单,就是Windows的消息机制.你用VC的工具Spy++跟踪以下,就会发现AutoCAD会有两个进程!在主进程里,即AutoCAD的主窗口有不同的窗口(线程),以响应不同的事件.至于如何处理这些消息,事件就是你的事了.比如:在命令行里输入"L "(画线),可以在命令行里输入第一点坐标,在绘图区用鼠标确定第二点!
      

  11.   

    呵呵!最好站在别人的肩膀上做事!别抛开ACAD,这样得不偿失!建议用AutoListp语言,进行二次开发,这样你可以写出个性的CAD来!
      

  12.   

    听说用AutoListp语言进行二次开发,可以提高一个人的水平。
      

  13.   

    其实AutoCAD还是有很多可以改进的地方!
      

  14.   

    建议使用ARX开发.稳定,速度快,但需要较高的C根基
      

  15.   

    caxa电子图板,一个很好的例子。至于命令解释,看编译原理里的句法分析,自己做一个分析器(其实我感觉做这个甚至还没有做计算器的句法分析难)。当然工作量是很大的。具体的我也没做过。
      

  16.   

    nod. CAD里命令解析很简单的。只是一条一条去做就是了。
    我们的CAD产品这部分实现的方式大概是这样的:把所有的命令每个做一个交互类。
    每个交互类负责管理该命令过程中的交互处理。
    有一个全局的命令Controller,维护一个交互对象堆栈;从键盘、鼠标等处把Windows消息搜集过来,首先看是否是一个交互命令,如果是,产生新的交互对象并压栈;否则,简单地把消息传递给交互对象进行处理。