文本输入框
本帖最后由 wosiguwozai0830 于 2023-3-7 20:25 编辑[*];文本输入框
[*](defun inputbox(msg / res dcl_id )
[*](setq res "")
[*](setq dcl_id(fy_DclWrite
[*] (list "tywbk:dialog{"
[*] (strcat "label=\""msg "\";" )
[*] ":edit_box{label=\"输入:\";key=\"tywbk_wb\";edit_limit=100;edit_width=60;fixed_width=true;allow_accept=true;}"
[*] ":row{"
[*] ":ok_button{label=\"确定\";key=\"tywbk_ok\";}"
[*] ":cancel_button{label=\"关闭\";}"
[*] "}"
[*] "}"
[*] )
[*] ))
[*](new_dialog "tywbk" dcl_id)
[*](action_tile "tywbk_ok" "(setq res(get_tile \"tywbk_wb\" ))(DONE_DIALOG)")
[*](action_tile "cancel" "(setq res \"\")")
[*](start_dialog)
[*](unload_dialog dcl_id)
[*]res
[*])
[*];来源于明经论坛,临时生成Dcl文件,返回dcl_id;by nonsmall
[*](defun fy_DclWrite (lst / dcl_file file str dcl_id dcl-name)
[*](vl-load-com)
[*](setq dcl_file (vl-filename-mktemp nil nil ".dcl"))
[*](setq file (open dcl_file "w"))
[*](foreach str lst (write-line str file))
[*](close file)
[*](setq dcl_id (load_dialog dcl_file)) ;对话框加载
[*](vl-file-delete dcl_file) ;加载后删除dcl文件
[*];(setq dcl-name (substr (car lst) 1 (vl-string-search ":dialog" (car lst))))
[*];(new_dialog dcl-name dcl_id)
[*]dcl_id
[*])
[*];使用(setq a1(inputbox "输入文本"))
干嘛的啊? 如果可能,最好是把这些常规简单输入框,全部写出来,作为标准函数库。
我之前是把doslib中那些主要的UI函数写了一个对应的lisp/dcl版本。后续写具体功能程序时只需要调用即可。这些函数与doslib函数可以对应替换,这样在AutoCAD for Mac 中因为没有doslib库可用时,就使用lisp/dcl版本的函数。 一个InputBox解决的事儿,lisp真费劲 感谢楼主分享 感谢大佬分享
XPG 发表于 2023-3-8 09:18
干嘛的啊?
命令行输入,涉及中英文转换时,容易出错,直接就跳到下一行,用文本输入框能避免这个问题 感谢楼主分享{:1_1:} 研究下,不知道有没有多参数的写法,很实用
页:
[1]