明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1471|回复: 2

帮忙看下 这代代码有什么问题

[复制链接]
发表于 2006-7-21 20:44:00 | 显示全部楼层 |阅读模式

............
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,

也就是说必须再双击状态栏的"对象捕捉",才能设置捕捉"端点,交点,垂足",

但是这时它不会出现对话框要你勾选"端点,交点,垂足".只是必须要双击这一步才能正式打开需要 的捕捉.请问这是为什么?(不知道 我描述清楚没有.)

发表于 2006-7-25 16:20:00 | 显示全部楼层

思路是不错的

问题出在判断上,因为你判断的条件根本不成立,一致没有执行.

试试下边的办法:

struct resbuf rb1,rb2;

ads_getvar("osmode",&rb1);

rb2.restype=RTSHORT;

rb2.resval.rint=(short)161);

ads_setvar("osmode",&rb2);

.....

ads_setvar("osmode",&rb1);

 

 楼主| 发表于 2006-7-25 21:31:00 | 显示全部楼层

我的IF是成立的啊.

我是手工把捕捉设为0,再来执行这段代码的.

奇怪的是,我如果把这段代码做成一个普通的命令,它可以执行,而且结果正确.

实际 上我是把这段代码放在一个F3的钩子程序里面,我是想按下F3,如果OSMODE是0的话,就打默认的捕捉(161),但是放钩子里面执行就不行.真是相当的奇怪. 百思不得其解.

更奇怪的 是,我如果不定义F3,而是定义F2键什么的,都执行正确.绝对正确.

哈哈,就F3不行.真是....不晓得么办.

谁知道如何屏蔽CAD系统的F1~F12这种热键么.

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:50 , Processed in 0.165715 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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