找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 880|回复: 11

[讨论]:怎样实现像AutoDesk公司那样既能用鼠标进行输入也能用键盘输入相应的关键字

[复制链接]
发表于 2004-12-26 09:54:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
怎么实现
指定下一个点或 [圆弧(A)/半宽(H)/长度(L)/放弃(U)/宽度(W)]:
能够像AutoDesk公司那样既能用鼠标进行输入也能用键盘输入相应的关键字,        acedInitGet(0,"A C H L U W");//定义关键字表后,我调用acedGetKword函数时,不能用鼠标录入,我用acedGetPoint函数时不能实现关键字的使用,恳请提示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-26 18:30:43 | 显示全部楼层
存在两个问题,
1:acedInitGet 与输入函数中间不要有其他语句。
2:你是否关闭了右键菜单。
3:我在实践中发现有些关键字是有问题,改改试试关键字定义即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-27 12:20:29 | 显示全部楼层
这个我也想知道,我现在工程项目中就遇到这个问题,高手解答一下啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-27 16:31:58 | 显示全部楼层
这个问题已经解决了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3532个

财富等级: 富可敌国

发表于 2004-12-27 20:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最初由 ninuo 发布
[B]这个问题已经解决了 [/B]


能传上来大家学习吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-28 13:12:44 | 显示全部楼层
这个很简单, 什么也不要处理,主要在命令请求用户提示里格式是这样的
[ str/str]就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-30 09:25:43 | 显示全部楼层
if ((stat = acedGetPoint(asDblArray(startPt),
            "\n指定下一点或[圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]: ",
            asDblArray(nextPt)))== RTKWORD)//判断acedGetPoint返回值,从而做出相应的处理
     {
            acedGetInput(cKeyword);
          }
      else {
            if (stat == RTCAN)
            {
          terminated = TRUE;
          return;
           }
     }
用一个判断语句就解决了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-14 21:25:04 | 显示全部楼层
这个问题我也遇到过,但我是采用AcEdJig来做的,效果还是比较好的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-15 11:43:48 | 显示全部楼层
根据楼主的代码进行了一下整理,具体如下
////////////////////////////////////////////////////////////////////
//以下代码为调试根据关键字选择输入~ ~
//若选择点,则以该点为圆心画圆
//若输入关键字,则打印出信息
//若按cancel键则退出
//////////////////////////////////////////////////////////////////////////
void keyword()
{
        ads_point nextPt;
        char cKeyword[255];       
        int stat;
        //定义关键字列表
        acedInitGet(0,"A C H L U W");

        if ((stat = acedGetPoint(0,
                "\n指定下一点或[圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]: ",
                        nextPt))== RTKWORD)
                //判断acedGetPoint返回值,从而做出相应的处理
        {
                acedGetInput(cKeyword);

                        if (strcmp(cKeyword,"A")==0)
                                acutPrintf("\nthis is a  arc!");
                        else if (strcmp(cKeyword,"C")==0)
                        {
                                acutPrintf("\nthis is a close!");
                        }
                        else if (strcmp(cKeyword,"H")==0)
                        {
                                acutPrintf("\nthis is a half!");
                        }
                        else if (strcmp(cKeyword,"L")==0)
                        {
                                acutPrintf("\nthis is a longth!");
                        }
                        else if (strcmp(cKeyword,"U")==0)
                        {
                                acutPrintf("\nthis is a undo!");
                        }
                        else if (strcmp(cKeyword,"W")==0)
                        {
                                acutPrintf("\nthis is a width!");
                        }                                                                                               
               
        }
        else
        {
                if (stat == RTCAN)
                {
                return;
                }
                acutPrintf("\nthis is a point!");
                acedCommand(RTSTR,"circle",RTPOINT,nextPt,RTSTR,"50",RTSTR,"",0);
                return;                       
        }       
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-8 14:27:54 | 显示全部楼层
我也碰到这个问题,在网上找了都没找到,QQ群里也没人知道,看看楼上的讨论能不能解决,大家都把方法贴出来共享阿
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-8 19:07:31 | 显示全部楼层
真好,可以用了,我也来一段
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-9 10:43:35 | 显示全部楼层
这个还是与CAD的有一点不同,在没有acedInitGet(0,"A C H L U W")时,用acedGetPoint你可以在命令栏输入长度,CAD会按照当前橡皮条线的方向画该长度的线。但当你acedInitGet(0,"A C H L U W")后,输入长度会没有反应,非要用鼠标点选。

不知道RedCAD用AcEdJig做的是不是可以实现上面的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 00:28 , Processed in 0.193416 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表