![]() |
【转帖】帮忙看下 这代代码有什么问题
帮忙看下 这代代码有什么问题
帮忙看下 这代代码有什么问题 ............ struct resbuf rb; ads_getvar("osmode",&rb); if(rb.resval.rint==0) { int newosmode=161; setosmode(newosmode); ads_printf("\nosmode=0"); } ........... void setosmode(int n) { struct resbuf rb1; rb1.restype = rtshort; rb1.resval.rint = n; ads_setvar("osmode",&rb1); } 环境arx14,现在if成立了,但是编译后执行却没达到预期结果.我的意图是如果捕捉是0的话,设置捕捉"端点,交点,垂足",即osmode=161. 我执行这个命令以后,查看osmode=16545, 也就是说必须再双击状态栏的"对象捕捉",才能设置捕捉"端点,交点,垂足", 但是这时它不会出现对话框要你勾选"端点,交点,垂足".只是必须要双击这一步才能正式打开需要 的捕捉.请问这是为什么?(不知道 我描述清楚没有.) 小学的时候老师在台上讲“帅”的含义, 我听不懂,同桌的女孩红着脸递给我一面 镜子,那一霎那,我明白了。 思路是不错的 问题出在判断上,因为你判断的条件根本不成立,一致没有执行. 试试下边的办法: struct resbuf rb1,rb2; ads_getvar("osmode",&rb1); rb2.restype=rtshort; rb2.resval.rint=(short)161); ads_setvar("osmode",&rb2); ..... ads_setvar("osmode",&rb1); 我的if是成立的啊. 我是手工把捕捉设为0,再来执行这段代码的. 奇怪的是,我如果把这段代码做成一个普通的命令,它可以执行,而且结果正确. 实际 上我是把这段代码放在一个f3的钩子程序里面,我是想按下f3,如果osmode是0的话,就打默认的捕捉(161),但是放钩子里面执行就不行.真是相当的奇怪. 百思不得其解. 更奇怪的 是,我如果不定义f3,而是定义f2键什么的,都执行正确.绝对正确. 哈哈,就f3不行.真是....不晓得么办. 谁知道如何屏蔽cad系统的f1~f12这种热键么. 小学的时候老师在台上讲“帅”的含义, 我听不懂,同桌的女孩红着脸递给我一面 镜子,那一霎那,我明白了。 |
| 所有的时间均为北京时间。 现在的时间是 01:39 AM. |