QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,6 w4 r6 |2 Y! b4 X
2 T5 c& B' M: n- e5 w: v
如何做一个把所选图形别存为一个文件的命令
0 z# e3 k% [' s$ I3 Q& Z7 k" N8 K( C, ^# x& L* g# T0 k
请各位指点一二。谢谢了。) Z5 }, d* S" d7 z2 [& P# j4 P9 z
) X; J) d' n# e

$ x5 B) p  P- h7 s我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
; \. o/ X  u8 D! q! Y) H% Y, X' Y8 \% {9 {7 x# d3 v0 l* ?" d: v
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
8 [& Y$ v+ ], e4 j请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
  h# |, g& e; N  K8 |8 M
1 x& b# S3 x/ Z- `1 N3 \您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
; {- ^8 ?/ D7 {$ H+ ]1 s, m: q. |$ y/ j2 @. X2 O) R
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!* |% p. d# d+ k1 v2 e
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)# {: ~. Z- ?; @# G; W& \

  1. / `" y6 |2 d$ C; h, H# S! B
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String. G$ t6 @6 Q, B+ t& Y* I
  3.     '创建选择集5 [' k" p6 ], s; J7 }
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS"). G4 [7 P( {+ O: j8 m/ K
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    " b, b8 L; l- a& R- ]
  6.     SS.SelectOnScreen
    9 k; T" T0 u+ Z+ H
  7.     '遍历选择集,查找其中Name图层的单行文字) O# z& @  H, ?! Z! J
  8.     For Each E(0) In SS
    ' R4 [2 P/ ~1 H, F( K
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    ) X# r2 l7 T, z% G
  10.             '找到文字后提取字符串! D  q3 b9 W" ^* V  S+ {- Y' d0 R
  11.             S = E(0).TextString
    . K' h/ x+ H1 U* N
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.( V! j4 x9 y0 J& d5 c
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行6 t- P- H/ a( m) @
  14.             SS.RemoveItems E
    % l5 L0 O7 _6 G
  15.             Exit For
    ) `  k. Z! a' e, U
  16.         End If# n0 g' L7 `; j7 b% f7 A2 c  H
  17.     Next. T1 A2 U- D9 l8 \. H
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    - q: z/ y" h- @4 G6 A
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS1 x6 N2 J' D' M: I" Z/ r
  20.     '删除用过的选择集
    ( j  j8 G) _. f& ?. j* R5 h/ `, x9 A
  21.     SS.Delete
    & ]: ?1 q1 i5 b; d) L
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
" {: f( r& I9 v7 o. x( O
8 {$ B- L, A; Y0 o6 y) X+ m; ~5 ~1 Y6 _# f3 k# F
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
8 Z7 Z1 s  V3 P3 r1 q/ J9 }借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974
& p: W1 Q" G' `; h* f1 f) D, s1 u  e2 p: e: t8 Z- X5 c1 a; e

$ L9 G% T. ]/ J. L+ N: p+ \; V
- a0 U, R! Q: Z6 `8 g1 ]) @$ ^4 o谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
( K( j5 k* ^, G5 j( j. C. k! P1 ?6 E! @( K, ^( G
( d/ S$ j! k7 x7 v7 n6 u  @" u; I  Y
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
  B, s% i7 `. U1 T; A* q* V7 M% i, ]- i! K( U
这应该怎么解决啊??请大哥指点一二。谢谢了。" e: ~& P* l/ K

8 N( {  P+ b2 g" _
  1. . b  a. v; w$ Y$ N( J* D
  2. 令: wxssh-tt
    % Q7 p2 E9 ]. |; P
  3. 选择对象: 指定对角点: 找到 1 个; x. x+ q) M& y' h, n" u1 c8 `
  4. 选择对象:
    ( i' o8 q' [* r5 ^
  5. ._select7 N1 t  W% Y. w8 a, M7 w1 W
  6. 选择对象: CP
    + g$ @4 V3 Y2 I; A. G2 C* y; L
  7. 第一圈围点: none8 v# I) M- E' M6 t9 O
  8. 指定直线的端点或 [放弃(U)]: none
    ( f, _3 K0 G/ o! Z
  9. 指定直线的端点或 [放弃(U)]: none; Z, I; e0 B, ]9 ^! }' i' g4 P
  10. 指定直线的端点或 [放弃(U)]: none
    : D) C* d8 k% Z0 i3 h% i' R  t
  11. 指定直线的端点或 [放弃(U)]: none
    + _8 W7 K4 T7 X4 k1 h3 w9 K$ R
  12. 指定直线的端点或 [放弃(U)]: none
    $ ?6 g$ a! P: O8 h' L
  13. 指定直线的端点或 [放弃(U)]: none4 I% x! Y& ]- v9 `: U# B/ Y9 f% k* k
  14. 指定直线的端点或 [放弃(U)]: none
    ; }9 j0 n; f& u+ m( J3 S
  15. 指定直线的端点或 [放弃(U)]: none6 r4 _; l1 x- F
  16. 指定直线的端点或 [放弃(U)]: none# q- I& B: b) j1 N+ t
  17. 指定直线的端点或 [放弃(U)]: none9 i& I+ e5 |8 k5 M% C2 u
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    ' _  e+ S. X& }: i
  19. 选择对象:: H/ ]( l8 E7 y$ Q; f' S: O
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    6 s, m+ o- r# G
  21. 宏名称(M): tt 执行错误
    / `2 O6 W7 V, ?% {2 Y2 L+ ~
  22. 命令: <选择集: 476>' @4 t& |( J% Y. |( \
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。  f8 Q5 e2 m" q% a
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。5 P" M1 V: q$ t" e4 I/ \
  25. 命令: -1
    / O- g, M/ j+ _1 E! t
  26. . K( F, d- q$ z- `4 J& e3 H
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...0 u) [" h/ t9 x1 |! }% B  ?
8 {& x6 f1 V9 p8 h- E; ?8 h
宏名称(M): tt 执行错误) U2 X1 p/ \5 U" Z; a
. W* U7 T8 f. [3 `, s3 |
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
/ ]3 K# i+ g0 W) {! V, e) _& _' l" e+ b" A' }8 Y8 [
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,  w! }" c3 s3 z' c: _& E. O

$ t0 |# J, |9 I. t# I8 p; a( t; s' ?按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    # c' w- y+ X/ M/ y5 k/ ]
  2. & X2 e+ F" Q  j+ w; \3 C' Q, o6 O
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
# H1 g& @5 b3 ^4 S  b( z4 |0 K上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
5 Y9 }8 u$ L, K" a! P1 i1 C加载的方法是:点出"工具"菜单下的"加载应用程序..."
( _! j- C$ v7 E0 c+ J' Y在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia . K9 k' v* `% i2 g  q8 E
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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