[急求][绝对高分悬赏]AUTO LISP如何获取DCL编辑框中的值?

输入在编辑框中的数值无法返回。在编辑框内输入参数之后,变量依然是NIL。不知何故。AUTOLISP部分代码如下:;;;获取数据(DEFUNGETDATA()(SETQH0... 输入在编辑框中的数值无法返回。在编辑框内输入参数之后,变量依然是NIL。不知何故。

AUTO LISP部分代码如下:

;;;获取数据
(DEFUN GETDATA()
(SETQ H0 (ATOF (GET_TILE "H0")))
(SETQ HB (ATOF (GET_TILE "HB")))
(SETQ HN (ATOF (GET_TILE "HN")))
)

;;;*******************************省略

(SETQ SDT 0)
(SETQ DCL_ID (LOAD_DIALOG "D:\\P-initializer.DCL"))

(IF (< DCL_ID 0)
(EXIT)
)
(IF (NOT (NEW_DIALOG "INITIALIZER" DCL_ID))
(EXIT)
)

(ACTION_TILE "ACCEPT" "(GETDATA) (DONE_DIALOG 1)")

(ACTION_TILE "CANCEL" "(DONE_DIALOG -1)")
(SETQ SDT (START_DIALOG))
(UNLOAD_DIALOG DCL_ID)

以下是DCL代码
INITIALIZER: dialog{ label= "工程参数";

:column{ //加框列

:edit_box{ //编辑框——层高
label="层高(mm):";
edit_width=8; //编辑框的宽度
key="H0"; //编辑框的关键字
} //编辑框层高引用结束

:edit_box{ //编辑框——梁高
label="梁高(mm):";
edit_width=8; //编辑框的宽度
key="HB"; //编辑框的关键字
} //编辑框梁高引用结束

:edit_box{ //编辑框——砌块高
label="砌块高高(mm):";
edit_width=8; //编辑框的宽度
key="HN"; //编辑框的关键字
} //编辑框砌块高引用结束

} //加框列引用结束

ok_cancel;
}
希望能够在北京时间2013年5月27日8:00之前收到满意答案。非常感谢
展开
 我来答
llsheng_73
2013-05-27 · TA获得超过1312个赞
知道小有建树答主
回答量:449
采纳率:87%
帮助的人:114万
展开全部
不好意思,今天上班才刚看到这个问题
你的对话框和程序看似没问题,但是你把(getdata)放在"ACCEPT"后运行,而你的"ACCEPT"是在ok_cancel里边的慎棚森,它是不需要执行DONE_DIALOG的,当你点取它的时候,它会自动结束对话框,这样就有了一个问题,你点取ACCEPT的时候,对宽亩话框已经被结束了,所以(getdata)里边的(GET_TILE ....) 无法获取数据
解决的办法是,不要用ok_cancel,自己定义它们,这样才能点取ACCEPT后,在你执行DONE_DIALOG前,对话框是存在的,这样GETDATA里边的(GET_TILE ...)才能得到数据
将ok_cancel;替换为
:boxed_row{ : button {key = "ACCEPT";label = "确定";is_default = true;}
: button {key = "CANCEL";label = "取消"和巧;is_cancel = true;}}
就一切正常了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式