QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 3664|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,/ y4 s6 s& D7 g% ^- @$ z( M+ K
8 E9 t/ S6 q8 S- V" U( g  v
如何做一个把所选图形别存为一个文件的命令
$ i4 ^. `8 B$ \" Z8 q2 k2 n4 X
# X3 `9 l8 S4 u" ]请各位指点一二。谢谢了。2 q, r: v' t" x" U
/ K6 K7 B  @; d- A3 i
" y: J/ m) O( t; x
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
( u; C$ ~, Z: y1 b
' c9 k7 @7 O7 t( B" h2 o7 L( P ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
$ G) z. D$ K9 h' _请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia $ z: J  a+ q/ y( G( H& c; S, y
. J/ d! Y' d; T% t
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
& h4 l$ {7 j/ V
# O% ?9 a: H3 ]0 s1 K& f) j你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
/ c7 d$ n* H! X# K如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
3 |# Q- X! ?. j; A6 J  h8 ^* d

  1. $ V: p. B& c9 j, ]% }5 z4 q
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String) u/ |0 w  R7 @  z2 q: q
  3.     '创建选择集8 c( Q' G* \* g: E  }6 \* K9 I6 W
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS"); k4 r, @1 x. c% g9 ]
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字* w7 N* |3 O" [1 D# @5 P4 R# N
  6.     SS.SelectOnScreen, y9 J' V$ }. F4 Z: V
  7.     '遍历选择集,查找其中Name图层的单行文字
    " K) }8 K! C1 h2 a- A1 Q  a
  8.     For Each E(0) In SS
    # Q6 [9 S& |* K, i
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    2 ?1 W. T2 I% g- N
  10.             '找到文字后提取字符串
    ( j* w" ]* ]( i+ u9 F/ n
  11.             S = E(0).TextString: ^4 ?7 h3 a& L& f5 g& _% z1 d
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.: |' C3 U0 D$ g9 M+ {4 P
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行& `6 I5 ^+ B) h; H. {) R
  14.             SS.RemoveItems E& F4 z! n" W. [. b2 i
  15.             Exit For
    7 M9 B; a$ g; J) B* v; S* r$ _) `
  16.         End If
    . S" o* [9 X1 D4 o  @: P, i6 `
  17.     Next
    " p! H' N1 x9 x$ e
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    - E! I4 N8 X9 `
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    1 @+ w# j, e3 I* k- v% S
  20.     '删除用过的选择集
    4 y8 F/ w" v9 u
  21.     SS.Delete  a0 o3 d" C- @2 ?& \; w4 J$ c
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia 3 |7 O* U  M1 L* f4 R/ I9 f

+ ?9 q9 g  {& x9 E$ s
. q. ]# M' Y" N0 P你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
! w# c  _! v7 K7 q& ^借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 5 z% I" }- z3 Q+ A6 P
' H, u& |9 B2 `' e
7 }8 m* Z1 f$ K/ ~, o

- @0 t: z" w' w1 I谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
* R  i$ M& L) s& N; Q, T: C7 E/ J# M% U( Z+ z
0 f# R  M; {; B1 r# t6 l: O
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
5 Q( R8 b( e; L1 @9 n# o9 f/ c
) a$ q) D$ ~" ?这应该怎么解决啊??请大哥指点一二。谢谢了。  E8 ~( Q( G8 @

7 `0 J& s' ^( |; U+ s" \9 D& Y

  1.   ~) a" h! ]  n" m; H& z$ I9 E
  2. 令: wxssh-tt7 c7 h% t( l9 ]9 }/ g, v6 `6 a  K
  3. 选择对象: 指定对角点: 找到 1 个: X6 N, d8 h: S9 c% v
  4. 选择对象:
    : T) x. d1 V9 x: D, Q
  5. ._select, D" W# G# D) M* i' ]1 w8 P) c7 M
  6. 选择对象: CP  k" u  N- ^* p. l  }
  7. 第一圈围点: none
    1 ]- D. p9 h3 ]4 i4 r  p/ H
  8. 指定直线的端点或 [放弃(U)]: none
    , |4 M- ^- w9 V7 A' W
  9. 指定直线的端点或 [放弃(U)]: none
    8 _: H2 z# D$ n$ V
  10. 指定直线的端点或 [放弃(U)]: none
    % _' _* g( k  ]6 y! @
  11. 指定直线的端点或 [放弃(U)]: none
    ' v3 C6 p( H( S! t0 o* d! y: p
  12. 指定直线的端点或 [放弃(U)]: none/ E6 M/ Y7 k5 @/ J" ]' X- u' f, m
  13. 指定直线的端点或 [放弃(U)]: none
    ' @' X9 J3 \% D
  14. 指定直线的端点或 [放弃(U)]: none0 q* I, R) L8 V: T0 a
  15. 指定直线的端点或 [放弃(U)]: none$ G* A/ i: L) y# A$ v; Z& q$ C
  16. 指定直线的端点或 [放弃(U)]: none0 K7 Q7 V6 \9 b% F: P
  17. 指定直线的端点或 [放弃(U)]: none
    # b* N! w5 V4 h* U: W8 R
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    5 Q/ \# L) E8 n" F# Z1 n1 |% i' J
  19. 选择对象:3 Y( H/ p( m! H2 z% B2 d
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    - }" x1 G: Y. o$ [
  21. 宏名称(M): tt 执行错误
    6 l. Q" `0 e2 \# R4 Q6 q* k
  22. 命令: <选择集: 476>. W  y9 [/ H0 N7 ?: b( ^
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    0 T' q" W/ h. D9 u- z1 D
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    2 i( P- e2 E* |5 V/ I
  25. 命令: -19 K' Q4 M9 J5 R  b# C
  26. 2 k& A0 q+ s6 {' B* k. R" A7 g
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...1 k. I. u" S5 V# i% ?

% x5 S/ _8 u+ \6 Y" t; z6 h宏名称(M): tt 执行错误3 M3 Y( b; J; M3 C& ^
2 `6 }  w( J+ E6 J1 Z
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
$ h+ {0 v1 m$ m, l
; ^$ F; _$ I% K7 G# E8 t) d6 j+ `: M大哥我还没懂那个怎么用啊.我用2005和2008的都试了,% r# p" p8 y! X

, b9 i( L$ F$ F& U% r# e, z3 {按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    6 e' D3 G3 Z. P. I5 ^' ~! D, G

  2. 2 u; ~+ {8 g. {8 F
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
7 L* P/ ?& ]4 M上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
5 n1 k. n7 d. _" c5 D加载的方法是:点出"工具"菜单下的"加载应用程序..."! k. Y5 L% n9 e+ A
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
* m9 }" D7 q1 J+ }$ W; ~谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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