[急求][绝对高分悬赏]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之前收到满意答案。非常感谢 展开
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之前收到满意答案。非常感谢 展开
展开全部
不好意思,今天上班才刚看到这个问题
你的对话框和程序看似没问题,但是你把(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;}}
就一切正常了
你的对话框和程序看似没问题,但是你把(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;}}
就一切正常了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询