QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 3672|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,& S1 o* a, c; P
/ G" T0 i) L: t9 y
如何做一个把所选图形别存为一个文件的命令
8 p, t! p4 J* B; C+ N; U* G7 W
请各位指点一二。谢谢了。8 `+ l  [7 Q+ a6 K' E2 U' ?  N

3 \! L) J1 z' ]) B* D( U7 j% G( C( H
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????8 T9 X/ y% o* Y7 V; ?: [3 L, H# l5 r

+ V  U6 r! d4 ], o5 ?7 V ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
: y2 j6 E; B* {7 |4 Y% `请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
0 u" z% U) r3 m( d9 M3 X* ~2 q3 n1 B
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑   }, G" Y2 r; T6 h# Q! F

1 A$ i& @% W3 f/ B你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
+ ~- {8 m2 U5 y. I3 `' r& O如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
3 \1 K" }5 g; m# \( F: f& |; l0 }

  1. + e' T4 q, o& |# J$ [3 Y
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String+ i; m# }2 ]9 ?
  3.     '创建选择集
    / P' ?! S# q" z& Q; G
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS"); N- E# T# k2 \$ M0 L4 O1 v
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    + }2 U4 X* c3 W5 ~+ ?
  6.     SS.SelectOnScreen
    7 ?7 y0 [# r/ S9 G
  7.     '遍历选择集,查找其中Name图层的单行文字- _# r, v$ [% B+ P1 Z/ {( Z  m/ j1 A
  8.     For Each E(0) In SS
    & q' b2 }7 q0 J$ K  z
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    7 K6 m9 w7 A5 m3 y
  10.             '找到文字后提取字符串
    . B5 j' _9 _) G8 G2 P
  11.             S = E(0).TextString
    + B$ H) u* q6 P4 a! M7 l
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.8 a* y1 J: F2 [. M/ X- S& i# Y; a
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
    ! u# T1 l. S1 P% p; H
  14.             SS.RemoveItems E8 }3 R1 g" |0 i7 u" j. T
  15.             Exit For+ p% `( p. f* U2 B7 w$ m
  16.         End If
    # R+ q5 I/ n' K* G1 V% {
  17.     Next
    + y( [  O6 S# d- O# C  w
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    $ X5 `( h) K# F% N
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
      P: I! V% e0 G4 E# l/ G, ]0 z
  20.     '删除用过的选择集
    : N0 s& _+ G5 [# |$ u
  21.     SS.Delete) {9 y: J, F  z( \" N1 p5 U
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia $ p. Y6 Y0 t- k' y
9 g) R7 h! t6 q) @4 I( N2 U

5 Z5 [3 F; ]2 o' ~5 M% S* D你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby - j) O* }. ]' `
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974
% O; X1 P6 l3 c& y
8 m- R' H; _3 o) O' L% d
' b1 {4 d8 V+ z+ }2 J2 J* b2 E, K( k/ l% o+ T% _/ X8 v. ~3 o8 r6 z
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
* L; V( w5 v$ M0 l* G
$ [- q- U/ K' }0 F4 ?) }( I/ ]+ j
2 ]1 r+ e, v3 u# U# e: q你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
$ x" Q2 o; z  E! W4 D1 b
7 D5 E2 l' f% z: l! S) Z7 N这应该怎么解决啊??请大哥指点一二。谢谢了。
1 c0 n+ |6 p2 T; Z0 |9 s: B2 H% p1 a' \* C
  1. 5 y8 t$ {. l7 H5 w: }. h( @
  2. 令: wxssh-tt
    ' ^5 }4 U% c7 k/ y, h9 t; [
  3. 选择对象: 指定对角点: 找到 1 个3 o0 W0 N& Y, n8 ]! p
  4. 选择对象:
    & @5 X3 j- e! P) c! a* b
  5. ._select
    9 D8 ]3 D" p5 z: v7 U; @
  6. 选择对象: CP% e# Z8 R6 |) x& W- A- {% D5 Y8 U
  7. 第一圈围点: none! z8 P8 W% {4 w0 l8 Y+ J- S6 V
  8. 指定直线的端点或 [放弃(U)]: none" B' S. C8 r5 L  o
  9. 指定直线的端点或 [放弃(U)]: none
    / `0 f% Y" X6 ~- A2 N
  10. 指定直线的端点或 [放弃(U)]: none
    . Y; c) x7 z9 n
  11. 指定直线的端点或 [放弃(U)]: none
    + ?& M5 J9 d. U. \
  12. 指定直线的端点或 [放弃(U)]: none
    ! Q- ~7 Z, s8 ?$ |/ K
  13. 指定直线的端点或 [放弃(U)]: none: y9 ], R" R; j0 K# O
  14. 指定直线的端点或 [放弃(U)]: none( m6 }% M0 V$ x# N, p7 B8 X$ R( l
  15. 指定直线的端点或 [放弃(U)]: none+ d; ~1 E  ]1 |. g$ V
  16. 指定直线的端点或 [放弃(U)]: none
    ' g2 z- \7 q: t) n6 O/ \
  17. 指定直线的端点或 [放弃(U)]: none
    - y! b. }8 S5 J5 F
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个+ D7 z8 x" f1 X) d/ ?8 {
  19. 选择对象:, C4 n& t. t7 g% _$ J% C9 T" H
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    2 @& f. E2 t- q
  21. 宏名称(M): tt 执行错误
    ) N5 m# p/ T9 b# A7 _, |6 G1 b6 n" t
  22. 命令: <选择集: 476>) ]' h9 _% m4 U5 c& v# O$ H+ e
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。0 D1 b2 V+ x9 J# ?( }$ t" p
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    - P6 l. u7 a( s/ P
  25. 命令: -1
    * t- {7 A0 u1 N4 \; D, ?7 g
  26. 9 s+ m6 T, W5 J: S: O
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
$ H8 W! z# Q! Y8 U
& f" ^) b% W& p( L9 W- c宏名称(M): tt 执行错误' ]; ?# K2 u% G; V: |

- |2 }7 z3 ~7 n3 B+ y6 N2 v把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
! R8 ~9 X- }. `2 O. X0 T/ {+ V/ p5 d  i' z, C; T
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,' n! r4 g1 K* n  a* S
0 z9 {2 t. @, i: I% w" v/ R) W
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    2 r! q0 u0 h3 T

  2. 2 _$ d, B* {5 Q6 o. o5 J
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.& Y# i' {) o; B+ X. d  E
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件., v" F+ e: V8 o' D$ e6 y: r4 b
加载的方法是:点出"工具"菜单下的"加载应用程序..."
8 e; s8 W) V( x- c* S& ~; B在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia 0 v, U+ K0 m5 E8 F
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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