QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 3281|回复: 7
收起左侧

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

[复制链接]
发表于 2008-8-28 08:48:29 | 显示全部楼层 |阅读模式 来自: 中国辽宁鞍山

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
如何在DCL文件中的下拉框中显示指定文本文件的内容?
7 o( O) h* a5 a% w即在一文本文件中列出:
) ]! `* n) f- p( T( [中国
: W1 X3 Y; j1 H/ a" u英国
$ C; d# g0 k; J4 K1 ^美国  D0 `& p2 R% z  E
在DCL的下拉框中显示这几个选项, 如果文本文件修改了,比如增加"日本",则在下拉框中的选项也相应增加?
5 A4 c; R; ]( X  r如何实现这样的功能???
头像被屏蔽
发表于 2008-8-28 16:50:45 | 显示全部楼层 来自: 中国江苏南京
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-8-28 19:28:05 | 显示全部楼层 来自: 中国浙江宁波
如果只是想在当前CAD中实现,比较简单将增加的项存在列表的变量中即可;如果想CAD关闭后再次打开还可用,就要把列表内的项存在文件中,如txt文件,程序启动时读取txt的列表项,然后加入,新增要写txt文件;

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

 楼主| 发表于 2008-9-5 18:37:07 | 显示全部楼层 来自: 中国辽宁鞍山
二楼的能不能提供一下实例?随便编写一段LSP程序?
发表于 2008-9-19 21:55:06 | 显示全部楼层 来自: 中国四川成都
楼主又发贴了,但无人接招。建议各位高手对求助类的帖子经常关注,直到解决为止,也不枉我等菜鸟的一片期待啊,谢谢
发表于 2008-11-29 22:06:41 | 显示全部楼层 来自: 中国四川成都
本人编了一段AutoCAD Lisp程序,已供作个参考借鉴。
; [5 ^; T+ w2 d+ w1.首先,如何将文本文件中的词条读入程序中?: @9 f' q. a" |. K/ D: _
    假定pop.txt文本文件的路径为:e:\ck 2 ?& A& T" `  p" Z
   且pop.txt文本文件的内容为:
, n2 r% j' X! c% w中国
) ~% _$ A" P& ~  {& m2 Y+ B, I英国
- {0 q% ?2 v2 \- k5 Z, K1 e美国; t/ [; R* f3 B

5 \6 \" F4 Z3 k0 `" `, ]  E- R   在主程序中编写如下代码,就能完成将pop.txt中的词条读入变量txti中。  
' \1 K* F% P3 k# i4 {  e4 J6 A7 E+ U. Z) h
   ;;读取文件中的词条
: y4 R8 i. O* x  ~   (setq pf "e:\\ck\\pop.txt")
7 }* J$ |, e, L6 J   (setq f (open pf "r")). a% [4 u+ o! a
   (setq txti (read-line f))
# w2 w1 x4 `3 x( O/ @   (while (/= txti nil)  I! j! z' v/ I4 I9 V& m7 l
      (progn
4 l" T5 z7 N" b5 E8 Z* S          (setq txt (append txt (list txti)))/ l! n: O9 D& J% K- S- g) P$ r
          (setq txti (read-line f))) o9 a4 S/ P, x' Q- Q# `
      ): h7 [& D; q) f9 Q
    );end of while2 ]+ f. y6 @) N  E: r2 X, H
    (close f)
  K+ x: |. M, @4 r
& L& K8 G# k0 D" x- O, }2. 如何将获得的词条加入对话框的弹出列表中?3 T2 M8 ?9 N3 a8 a. g
   创建对话框文件pop.dcl如下:) o" Q6 Z2 t8 |( H0 j9 H
   pop:dialog{/ X% \# a( @) s! h3 w# X
          label="弹出列表应用";* e  J6 ^8 i& z
         :row{
  e& F% F. X0 |3 ]! f              :popup_list{. L$ h7 P4 O7 B: X5 Q
                         key="pop_i";3 w5 K: S7 W, I. o6 H
                         width=20;
1 x9 l. X  j$ u, P6 R& r                         }6 _0 f* |) [$ F, t. D
             }
8 a5 f7 ]$ B7 p; G3 r$ ^! C" K         spacer;, ?3 r; ^6 p3 o3 P+ G2 ?0 n
         ok_cancel;( @; W! _; R/ c. L$ G, ?
   }
! T  y+ \: j/ w
& o& _+ K& C) n1 B6 I" T1 q# y   编写加入对话框弹出列表子函数popup_box 如下:  
! S/ f/ g5 k! h  J6 F  (defun popup_box (list_name list_tab)   
) G# x9 a! `' ]: h      (stare_list list_name)6 L  P. @0 q2 |* K& i
      (mapcar 'add_list list_tab)
, F9 o4 A; h# ?0 i7 u2 r. H      (end_list)
& k' G  a) Z5 q) O' p3 m   )& _' [  a1 Z2 s1 Z+ {% ~- F
# d* s$ A' H7 ^% W: t$ n& a/ z3 ^1 _
  在主程序中编写如下代码运行对话框:
8 W2 M! L, v- I0 `+ @8 A! @* r* G   ;;运行对话框
3 s2 Y3 s5 v3 }! J9 u( B: U, \   (while (< 2 what_n)  Y0 V6 J6 N, J7 q- [7 H/ I
      (popup_box "pop_i" txt)   ;加入对话框弹出列表; A5 N# v$ q0 ]) A" g) N
      (action_tile "cancel" "(done_dialog 0)")
1 g. c( U2 a  W, S      (action_tile "pop_i" "(get_zhi $value)")
/ n- r2 W, \& J5 M      (setq what_n (start_dialog))
. F& I( i# r) _' R  r& s; t      (cond ((= 1 what_n) (do txt_zhi)))
0 n: B/ K: D7 b' a. e    );end of while
$ i0 r% K! i: S- K/ w    (unload_dialog dcl_id); [# I# t9 v9 T- m

  f! a0 b2 W; R# K0 y  至此,编程大功告成了。
) G: J# [& k3 b; M6 [8 g  v9 w/ N: w
[ 本帖最后由 ljm68 于 2008-11-29 22:13 编辑 ]
发表于 2008-12-4 20:00:12 | 显示全部楼层 来自: 中国四川成都
更正一个错误,更正如下:. G6 f7 J8 V+ d" n; x* U" c
/ H1 V3 p  r" n! Y0 b  p
  编写加入对话框弹出列表子函数popup_box 如下:  
0 J- K5 c& ~  D: T+ i+ M. I  (defun popup_box (list_name list_tab)   ( \8 W3 w& d0 Z/ Z& A" W: d9 l
      (start_list list_name)                      ;更正的一句7 _: P8 `: V, p
      (mapcar 'add_list list_tab)- m* W; H' i- `' b
      (end_list): S/ H5 s' j( t; m
   )
发表于 2010-10-14 17:11:32 | 显示全部楼层 来自: 中国广东深圳
很好!试验一下,谢谢!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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