|
|

楼主 |
发表于 2013-9-28 11:30:55
|
显示全部楼层
来自: 中国湖北武汉
我的CAD已经安装ET工具且运行时也出现版主说的对话,也选择了目录,只是此程序只对所选择的目录下存在的dwg文件进行查找,而对于所选择目录下的子目录或子目录下的子目录内的dwg文件不进行查找,我觉得此程序存着这点不足,往往对下级目录及下下级目录遍寻查找dwg文件却又很有必要,若有十级的子目录再一级一级去选目录有些显麻烦了,再者此程序不能记忆刚选过的目录,操作略显麻烦,所以请版主及各位lisp大师们帮帮忙修改一下程序,使之可以遍寻选择目录及其子目录下的所有dwg文件,谢谢!
: D" r& E& W5 g3 d4 H$ j/ u; [- S附件中上传原程序。- (arxload "acetutil.arx" NIL)4 w8 A- J+ D- X. T( @
- ;;需要相应版本的ET(Express Tools)工具支持( q# B0 L/ F i; y5 P* M
- (vl-load-com); ]/ e$ E' u; C: @, _
- (defun c:GText (/ OLDECHO APP DWGNAME2 path num dwgname OLDLSP doc ent)
% s/ Z- P$ h8 C( v% |1 @, C4 o - ;;主程序定义3 ?0 @( q9 V, h H( ^( e
- (setq OLDECHO (getvar "cmdecho"))
( o0 c8 k$ N$ R, | - ;;保存系统变量值
, h$ N+ I: I }$ F% L# p- [ - (setvar "cmdecho" 0)
) c, D" C8 R% K, c( j" z1 V' o/ m - (setq path: A2 S$ U& F6 J& r5 d+ w- S
- (strcat- b& t$ n- S* ?% E! F2 P
- (vl-string-right-trim8 }) e- ~9 l: ~( e% {/ p) e( t
- "\"+ o$ w- A6 Z% x
- (strcase (acet-ui-pickdir s b4 G, O5 f: j, K* ~
- "选择目录"5 x: ?1 h' _' d* X. @9 |
- (vl-string-right-trim "\" (getvar "dwgprefix"))
- ]3 I6 f, J9 w+ L: Q' N - "批量修改"! p; U& L$ `# x {, y1 a, p
- ); _* Y& Z; u% R: m, ]
- )$ y. g# T8 s! `9 T: m% R& F0 W
- )
9 _- K5 d' r8 u! x; @ - "\"
7 |) L& V& d! o3 P& a( i5 s- ? - ), {: E" {; T6 V; [, X. j! z7 w
- )0 U0 N/ q0 V, o$ C* y" d
- (setq OLDLSP (getvar "ACADLSPASDOC"))6 Z+ R' D( T6 D: N7 o O6 s
- ;;保存系统变量值
( d. A6 ^0 w; ~2 |7 v: ~ - (setvar "acadlspasdoc" 0), `1 L4 q! d: L2 |- r; A
- (setq dwgname (vl-directory-files path "*.DWG"))
$ N0 q, K+ {. j! ` d7 ` - (setq num 0)
* j% w: x& Q% k, o8 ^; Y2 B5 Q - (if (/= dwgname NIL); v0 {3 ^* T, V% f! g9 I
- (progn! l4 t: q9 Q$ m9 s- G2 N/ \
- (setq APP (vlax-get-acad-object)) ;获得Acad 对象
5 h9 E2 ?3 ?9 m) }- U - (repeat (length dwgname)
- e1 L" z! z. O - (setq DWGNAME2 (strcase (strcat path (nth num dwgname))))1 J5 X# ?+ \; a( i1 K( d4 W/ O
- (setq doc (vla-open (vla-get-documents APP) DWGNAME2))1 Y8 C" k6 Y1 H+ S8 k0 s8 \) E
- ;打开图形并获+ B R4 F6 G2 [' g; Q1 w$ D7 C
- 得其对象
, Z' D3 x2 f% M6 x8 M1 l ]% L ? - ;;以下用省略号代表具体处理程序,用户可在此处添加自己所需的处理的代码。. R3 H% a4 T3 `& w9 U
- ;; …
6 r& g6 h/ Y0 U- Q& J' @# p, C - ;; …8 X; m* @9 q* K- a3 ~9 g8 e' l
- (vla-close doc :vlax-false) ;关闭图形(不检查是否保存)
9 t! e0 Y G3 m - (setq num (1+ num))( g" {! b# `, ^5 }& Q) j
- ) |7 P n, U* y' M* ~! u
- (vlax-release-object doc)
/ r4 O* Z k( s% m0 O2 I% T( F8 } - (vlax-release-object APP)
, Y, K' _) n" f3 C# u* g - )" {- A' B- @2 b6 C* W
- (prompt "\n所选目录中未有任何图形!!")
* g5 d: ]+ W+ M9 W( x - )
4 d: {% |+ e' z5 l' F+ P3 J - (setvar "acadlspasdoc" OLDLSP)
# {3 o" o" O& a1 {+ U7 l+ Q) s - ;;恢复系统变量值& j. O4 D _# ^1 k7 w! \
- (setvar "cmdecho" OLDECHO)
7 h- P% e0 U m( R0 r - ;;恢复系统变量值
& I, j$ n2 v/ C0 p - (princ)
& [5 p; Z1 a8 z$ n - )
复制代码 |
|