QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3743|回复: 12
收起左侧

[已解决] 如何做一个把所选图形别存为一个文件的命令???

 关闭 [复制链接]
发表于 2011-4-15 14:09:20 | 显示全部楼层 |阅读模式 来自: 中国广东中山

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

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

x
先上个图,看图说话,
* G! O/ C4 i# x# I! a$ w, i) O+ b7 f; s2 s4 F" Y, Y
如何做一个把所选图形别存为一个文件的命令
9 f. h) T4 O' Z+ T
3 T! M! f* |; D请各位指点一二。谢谢了。
6 M3 i5 i: l$ s9 {) i, ?. k9 z# s4 n% I9 H1 A/ s0 }

; c6 W6 {; p- t3 |* K$ Z: ^我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????" {2 i; N; h' Z* B9 `# @" A# D' B$ T

+ }( u+ O6 p3 y2 p7 @7 u" C: t8 ~2 ] ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
- b: `' [; M% g! q请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
* V% t0 G" [0 E- ]" h. ]) A" M4 T
# K- r' J- ]: B+ q" w您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
9 W$ C' S% \5 g, V# q8 J
6 U& i! L* K  T! k0 n2 I你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
. V- `& P' v* k1 b; [* }& J如果保证该文字中没有非法字符,可以参考下面的代码(VBA)( c" U8 @( K' |# }% e. @% R  o
  1. & e% E5 y. t1 l$ g( Z3 n
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String; M* g' e2 L% v" ]) }0 J
  3.     '创建选择集) L2 }9 [  {1 p
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    0 I! c4 c- l. G( m
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    : C6 b4 m; i/ C/ y" B. R* r
  6.     SS.SelectOnScreen+ T9 P2 C2 a/ S) H, E0 W+ K
  7.     '遍历选择集,查找其中Name图层的单行文字
    % k$ \+ o# t: R& L  h3 r9 X9 _
  8.     For Each E(0) In SS7 f0 ?; y7 o* I# v9 g- z+ @
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    ! g+ `/ p2 _7 p9 K5 T! L4 @7 y. R/ O
  10.             '找到文字后提取字符串
    6 \2 S- `, p1 U+ ?( Q% j9 S
  11.             S = E(0).TextString* F) O; }, S9 Q1 W% @
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    ( R7 J# W: |& p6 ^- B. \
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行$ F7 u" x' A/ _( b" w
  14.             SS.RemoveItems E" K' b1 z5 _0 d! s
  15.             Exit For
    " s* _  N; S- ^
  16.         End If$ E  R2 O5 v! u6 Z- e( }- Y+ o
  17.     Next
    " F4 S% E! I, Z) |
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串, k: }( ^/ ]5 L  w5 v) H0 Q
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    , m; _2 S4 S  d+ `* x
  20.     '删除用过的选择集
    / F/ K6 P7 f2 H
  21.     SS.Delete
    2 C7 s! ]; }+ O' _5 P+ T; z0 {. ~
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
) W7 A9 B5 k( D- K# O3 e$ E. O6 l7 }5 m1 u2 t1 S2 ^4 C
0 p1 i& i: d( r! r' T
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby ( j9 [) }: T) F0 A" o' g
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

参与人数 1三维币 +2 收起 理由
asdolmlm + 2 应助

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 ( Q2 Z8 |  }" {4 y4 Y. h, {, @
  P" t+ T* U6 ^8 L6 @8 X( h: N
1 @  E5 q, [2 Y9 z7 t: A$ \) y

: g4 O, M3 X9 Q1 h$ ?2 S谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 ! _( F8 e* i# D9 j9 o" Z

! g& S% I: c+ [1 P+ I, _) ^
7 d+ y- K0 F& `你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
9 G! A; W' |# b  e& f. P) t  }, g8 F
这应该怎么解决啊??请大哥指点一二。谢谢了。0 H. D5 A# J% B# x1 X
8 `# U8 s( m5 U1 J& {& Y' C2 j

  1. 0 q/ |( g# k& t( w4 R- X! g" |+ B, x
  2. 令: wxssh-tt- J& L9 g8 v& B1 Q3 D- N
  3. 选择对象: 指定对角点: 找到 1 个9 M. u8 b6 p+ Q! ~0 p
  4. 选择对象:
    ( ~3 b7 K4 N# F
  5. ._select5 g2 l) |1 @1 Y( D  s' d
  6. 选择对象: CP
    . F$ w# C5 d" ^
  7. 第一圈围点: none
    8 U- H4 |( x9 q0 G6 Y
  8. 指定直线的端点或 [放弃(U)]: none. M2 n% ^  r* ]' z  a
  9. 指定直线的端点或 [放弃(U)]: none
    7 w/ O+ k: O: n; t' w# T: [- o
  10. 指定直线的端点或 [放弃(U)]: none
    + m4 v7 \0 Z: U4 I% F4 _
  11. 指定直线的端点或 [放弃(U)]: none
    9 ?6 q$ u( q: m+ H# s; ]4 V5 M; P
  12. 指定直线的端点或 [放弃(U)]: none
    1 f$ P  ~1 F7 X0 b4 f& k
  13. 指定直线的端点或 [放弃(U)]: none
    9 s8 H, T2 K6 Z- O- L5 K
  14. 指定直线的端点或 [放弃(U)]: none
    $ e" s  ~5 {9 e* b2 L
  15. 指定直线的端点或 [放弃(U)]: none
    7 e5 t$ {2 W1 i" N- ]  T
  16. 指定直线的端点或 [放弃(U)]: none# n- L8 _: M( f/ p2 N* k
  17. 指定直线的端点或 [放弃(U)]: none
    2 w7 l# Q6 c  o
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个3 A1 _# c' |/ f0 T3 W" @8 P) I' A
  19. 选择对象:
    1 {$ v" H3 t5 l3 J" Q$ [5 f; @
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    7 s$ v1 u+ o5 l. N
  21. 宏名称(M): tt 执行错误
    8 k! @5 s& Q4 [( U; v: F
  22. 命令: <选择集: 476>/ O8 J) A0 g8 z& ]
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    " f& _7 f8 \8 ]* o; ~) @
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    " ~2 P! _- j$ D# }
  25. 命令: -1
    % \- s& a: w( O( ^4 m- ^+ [

  26. ) G% M, G' g% Z0 S
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...8 O2 }( t+ ?) [( N5 ^1 |
" s2 L& Z2 _% S, H& `9 u: Q
宏名称(M): tt 执行错误2 `1 N1 ]) o7 y, n
9 V# s+ x9 _* m, h/ k
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
# P) h. d7 j& l0 h3 I/ j  d: e3 u  y6 h8 n0 B9 H
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
" [. q$ n+ ~: R3 Q
9 ?& X4 }* n7 h, n; g4 Y5 V按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    . {; M% s+ f9 U' x; |. O

  2. " |, U9 i2 q$ _! y/ ~
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
5 {0 c8 m) G; p上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.) v. V$ M" c( g' a' [
加载的方法是:点出"工具"菜单下的"加载应用程序..."
; s. \! X! r. I3 T) V( ~1 \) [- J. ^在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

参与人数 1三维币 +2 收起 理由
asdolmlm + 2 应助

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
5 p3 Z! z* F$ j) n' r9 H谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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