QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
2 Y7 D8 o% a, T) c$ z; f! F9 D( m- g
如何做一个把所选图形别存为一个文件的命令# R. c; D1 i% Q% x3 N/ x0 B

9 K9 h3 n$ e7 [1 S! \请各位指点一二。谢谢了。
( [. U1 z% `* ^0 ?( Z' [! Q( j1 g0 T/ v6 |6 e  \- c% U! l
" }' b- C4 {9 K9 t5 w+ s
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
8 S7 T2 |9 O+ H* K7 }# h1 v1 j. ?( `
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
4 B/ }6 V5 m+ e6 ]0 D6 F( {$ `请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
0 |% X2 P! N1 c* F5 x. ^6 T: a5 q0 k$ O
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
8 i" E& V, l; Y9 l8 Y
% m0 y, |! ]3 T/ @8 L你准备用作零件文件名的字符串中含有非法字符,不能做文件名!0 p6 B1 _" A& M/ O; L* k  l
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
2 q# [2 n, L7 h$ D+ w
  1. 8 j: w# o1 R3 _" ?1 Y
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    6 M# W! [/ N/ W( b
  3.     '创建选择集1 }% s$ {+ O7 A) J/ G% o
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    * N( z" E4 s5 }
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    3 d! R- y$ p( c" `' W  `9 ^# L
  6.     SS.SelectOnScreen
    : x" a" A$ z1 M! H
  7.     '遍历选择集,查找其中Name图层的单行文字
    4 g, g; |1 z* B; T
  8.     For Each E(0) In SS: o4 O: |( a+ @8 S
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    ' T+ q& T8 N7 b  K$ t+ P
  10.             '找到文字后提取字符串
    9 W; b) y& s* L( F0 E" _
  11.             S = E(0).TextString
    3 }. b+ W: |  I
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.7 d* @6 ?) K! G6 ~, `7 _
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行7 ]6 ?$ z3 T/ \8 T4 _
  14.             SS.RemoveItems E
    0 b8 \& y, B  N$ j, K- E+ n9 U* y0 X
  15.             Exit For- w- I! l. q7 V' x  o
  16.         End If/ x& ~' r8 b% L
  17.     Next
    1 O4 h4 V' K: y- l7 G( o) R
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    + ~5 b& f7 {3 k6 R9 J
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    & D2 l3 x$ \' @- J
  20.     '删除用过的选择集
    % ^/ V' a: }- H5 t
  21.     SS.Delete' V# \1 C# W$ x7 q+ h
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia & \4 l- |6 _+ }3 N) p4 X4 `
9 {, V- k& z7 r# x7 P

- b2 W) p% a" [9 u0 _4 R你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
$ w8 g1 V* v; Q' ~6 a5 N' E借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 ) A1 W9 n# _6 S# P% L

/ {$ L: K: u6 a7 l( I2 H; i7 N' ~  P- A8 g

1 {5 ?4 S/ x+ c' u# z3 c( a谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 - ?, d8 c& F7 @+ q
  V. a" h& b" w1 c0 N9 I

9 e; p1 \4 }7 w, H7 n3 H5 J你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
4 K+ L5 x# s$ x2 S, e2 G& @* l* p% M5 B+ p* u
这应该怎么解决啊??请大哥指点一二。谢谢了。1 K* A. O: x/ w0 S

$ s' C% c- a9 _) Z, \

  1. " i4 G3 _# o: h
  2. 令: wxssh-tt
    ; |+ i" D$ J' q) k1 B) a
  3. 选择对象: 指定对角点: 找到 1 个" Z9 i+ w/ _/ j' A6 \
  4. 选择对象:* h: Q5 K  j% i& Q
  5. ._select
    $ d( @- y$ R# z, E% q7 v
  6. 选择对象: CP$ F$ u9 N5 q$ r& L
  7. 第一圈围点: none; b, e& u" l- ]/ E3 d( v+ ]$ e5 e
  8. 指定直线的端点或 [放弃(U)]: none
    ) ~; S7 C! D! k# f2 ^
  9. 指定直线的端点或 [放弃(U)]: none- ?4 U) h* C. \9 J
  10. 指定直线的端点或 [放弃(U)]: none
    % b5 y" q4 e/ A# V7 H
  11. 指定直线的端点或 [放弃(U)]: none
    4 d1 F: Z& A# n. M: ~; E; v& P
  12. 指定直线的端点或 [放弃(U)]: none
    / E, `" W, N# \
  13. 指定直线的端点或 [放弃(U)]: none8 |# G3 J7 i# v$ D9 j- V( F. o2 i+ O  E
  14. 指定直线的端点或 [放弃(U)]: none
    ' Y+ F) l( ]; d. Q% r# L
  15. 指定直线的端点或 [放弃(U)]: none
    ' e5 b* G0 j. D
  16. 指定直线的端点或 [放弃(U)]: none
    & |! M7 B( N7 X/ l( q
  17. 指定直线的端点或 [放弃(U)]: none
    ! F* |( v; _) j
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    ! e; u3 Y% Q- f. A
  19. 选择对象:( y; M6 K+ P6 ^. D' H: E: D* O
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    # N7 o" z& p$ O6 a- l. C. Z# W4 E
  21. 宏名称(M): tt 执行错误: T) y8 Q* A6 t- v* [1 x+ k
  22. 命令: <选择集: 476>/ E; K$ s7 j" F9 D
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。" @2 t3 f1 z: N+ ]
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    ( ]. u! c% P9 P
  25. 命令: -1* i$ `4 m8 m+ i+ A7 z" |( G

  26. ) Q2 R/ A) h( b3 i  f8 a
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统..." X% g  G8 K7 v4 _5 S9 j' X

) r) {7 ^% m0 h7 t, K宏名称(M): tt 执行错误4 `# W5 L; z' v7 j
3 V- K: D3 X% ~4 I2 g6 F
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 $ G0 O. R5 e; e
6 F1 S% m6 s8 |% l: U! }( i% e9 C
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,9 f1 M1 [6 M! [) H  W8 m- w

5 g1 G0 k2 e" X: R9 V按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()* Z4 q3 S2 ^. a! G: V
  2. 0 ^: l( q/ h6 r: b2 o" c  v
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.1 L# x+ Q1 B7 x
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
. N) V# h/ t% B3 ~加载的方法是:点出"工具"菜单下的"加载应用程序..."
+ u- c  u3 [2 w$ c7 L& Q- g在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia 3 x$ {  R6 G) R* J. g* A3 Q; g
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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