找回密码
 注册会员
查看: 1281|回复: 1

[文章] 如何在DCL文件中的下拉框显示指定文本文件的内容?

[复制链接]
发表于 2008-11-29 22:02:21 |Error| 显示全部楼层 |阅读模式

我们不再是孤独的探索者;让我们的手紧紧相连,一起成长。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如何在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)   
      (stare_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)

  至此,编程大功告成了。

  源程序见附件:pop.rar

[ 本帖最后由 水晶蓝 于 2008-11-29 22:10 编辑 ]

pop.rar

1.11 KB, 下载次数: 9

 楼主| 发表于 2008-12-4 19:56:20 |Error| 显示全部楼层
更正一个错误,更正如下:

编写加入对话框弹出列表子函数popup_box 如下:  
  (defun popup_box (list_name list_tab)   
      (start_list list_name)                 ;更正的一句
      (mapcar 'add_list list_tab)
      (end_list)
   )


重新上传源代码如下:pop.rar

[ 本帖最后由 水晶蓝 于 2008-12-4 20:07 编辑 ]

pop.rar

1.12 KB, 下载次数: 10

回复 顶 踩

使用道具 举报

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

本版积分规则

闭关者|手机版|© 2005-2026|Cncad.Net ( 苏ICP备2026083443号 )|网站地图

GMT+8, 2026-11-4 03:37 , Processed in 0.281728 second(s), 32 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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