![]() |
【转帖】如何在dcl文件中的下拉框显示指定文本文件的内容?
如何在dcl文件中的下拉框显示指定文本文件的内容?
www.dimcax.com 如何在dcl文件中的下拉框显示指定文本文件的内容? 如何在dcl文件中的下拉框显示指定文本文件的内容? 最近,我在其他论坛看到如下问题: 即在一文本文件中列出: 中国 英国 美国 在dcl的下拉框中显示这几个选项,如果文本文件修改了,比如增加"日本",则在下拉框中的选项也相应增加?如何实现这样的功能? 上论坛已有时日,我编了一段autocad lisp程序,已供像我一样的初次学习者作个参考借鉴,废话少说了切入正题。 1.首先,如何将文本文件中的词条读入程序中? 假定pop.txt文本文件的路径为:e:\ck 且pop.txt文本文件的内容为: 中国 英国 美国 在主程序中编写如下代码,就能完成将pop.txt中的词条读入变量txti中。 ;;读取文件中的词条 (setq pf "e:\\ck\\pop.txt") (setq f (open pf "r")) (setq txti (read-line f)) (while (/= txti nil) (progn (setq txt (append txt (list txti))) (setq txti (read-line f)) ) );end of while (close f) 2. 如何将获得的词条加入对话框的弹出列表中? 创建对话框文件pop.dcl如下: pop:dialog{ label="弹出列表应用"; :row{ :popup_list{ key="pop_i"; width=20; } } spacer; ok_cancel; } 编写加入对话框弹出列表子函数popup_box 如下: (defun popup_box (list_name list_tab) (start_list list_name) (mapcar 'add_list list_tab) (end_list) ) 在主程序中编写如下代码运行对话框: ;;运行对话框 (while (< 2 what_n) (popup_box "pop_i" txt) ;加入对话框弹出列表 (action_tile "cancel" "(done_dialog 0)") (action_tile "pop_i" "(get_zhi $value)") (setq what_n (start_dialog)) (cond ((= 1 what_n) (do txt_zhi))) );end of while (unload_dialog dcl_id) 至此,编程大功告成了。 源程序见12 谢谢,参考价值很大,只是你的源程序有点小错误, defun popup_box (list_name list_tab) (stare_list list_name) (mapcar 'add_list list_tab) (end_list) ) 中stare应该改为start才能用!!! 感谢1楼指出的错误,我马上更正。 学以致用 看不懂。这里的牛人真多。 |
| 所有的时间均为北京时间。 现在的时间是 07:37 PM. |