QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
8 X8 J* L7 g7 ^+ Z8 I# [1 w$ [4 a! a/ w5 N3 {/ P4 B$ v
如何做一个把所选图形别存为一个文件的命令. p1 ~0 D$ f! M
/ G7 l" b3 s" H! b
请各位指点一二。谢谢了。( S& h4 h' Y; i0 I; y

9 F, B/ Z- ]  D+ o5 A1 k# @! ?- N- s/ Q' q
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
+ }2 n2 Q8 ^. a+ F
7 R0 k4 t8 {" l# N( ]1 o0 l, f ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
* Q7 E" ?# ~5 |+ S- j请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia 3 j: q' p: e' L0 s6 F3 |

9 ]( ~: O# {! g4 i: u  J; T' p) }您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 ) o  K$ Q3 f  K' Q( b( K4 w' ^

4 I/ n+ m  T; E. A( I9 [你准备用作零件文件名的字符串中含有非法字符,不能做文件名!5 Y' g0 m! S7 m+ r% V% [% I
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)3 j/ I5 Z0 _* b4 ^6 t- B6 h* T
  1. 0 Z# }- {- m# V% y' c' T- H
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String8 B$ n; J! a! @( ]. H
  3.     '创建选择集# A% R5 h  n/ i$ m; ]
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS"): U, N" e! u" v" s5 b7 w
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字6 `4 S, l6 L) @5 \
  6.     SS.SelectOnScreen
    ' G& C, ~% u% E6 o6 q7 L# v
  7.     '遍历选择集,查找其中Name图层的单行文字. r  S3 ^* d7 X0 C
  8.     For Each E(0) In SS
    ; @' H1 n1 h4 E+ \6 V$ t* C" v  u
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    6 Z/ d9 J) b: V- C' i+ d" q
  10.             '找到文字后提取字符串
    $ i4 @2 T  a' _7 R
  11.             S = E(0).TextString
    $ c6 F& j$ R: C' N0 Q% j' v
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    1 C7 U* o7 f: w  ~% Y! @6 Y
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行2 G5 U6 u' K- m) c, g
  14.             SS.RemoveItems E  V# C# {% H9 K: Z: [
  15.             Exit For& P7 X6 K. U+ g5 L* |' {+ o
  16.         End If
    ) y( ^) q- j+ N( o: C2 G% }, h
  17.     Next
    + k3 r( u0 Q1 l% \* @( n8 Q
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    ; u6 u% r6 `' J$ F& ^
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS* }: Z( R4 A8 F, a- i
  20.     '删除用过的选择集
    4 [; x+ p' W  ~) v) }
  21.     SS.Delete
    8 }8 A- A9 {# J5 T4 f" h& b
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
* R( W/ t6 d% B& o( ]- A
# \6 E- T) s2 E/ [5 B3 W
- y+ `1 q6 s" u  ~# ~* a! P( O4 q你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
% m' d. w! ^& V. }借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 " f0 s, z$ A0 P5 I" C- }

* a. e3 w- ]! w5 T4 x
( `  N0 M  j" |" V, w
8 [) K& j5 H+ ~8 e! m谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
2 X. A* B* R2 _% Z9 J2 E$ A( P+ L2 O
" x6 n# |$ G/ O6 e8 H
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西# D, Y. y- q" U  z9 f: l+ X! b+ O) B5 X
+ h, s  x. r$ i0 c. J8 j; U* |
这应该怎么解决啊??请大哥指点一二。谢谢了。4 _4 y' H9 h& B

& h3 @; i' M8 N$ ^) ?

  1. 5 E6 {; Y! R) }" u- [9 l+ x0 P
  2. 令: wxssh-tt
    1 |" o1 v) g6 f$ E0 Y
  3. 选择对象: 指定对角点: 找到 1 个
    & t( T% m. m9 l& p: G# h6 _% X
  4. 选择对象:
    ' v7 I4 q) p7 v# ?& G1 ?7 ?
  5. ._select
    2 Q% b' H, g) p) Z/ J! X9 ]4 S
  6. 选择对象: CP" \5 L; w' }- t0 x$ ~5 n; \" v
  7. 第一圈围点: none
    $ g6 g6 n- d4 D6 B& }
  8. 指定直线的端点或 [放弃(U)]: none5 y( M6 \. E% g
  9. 指定直线的端点或 [放弃(U)]: none
    / Z0 N$ T( Y! {0 @$ G9 H3 W/ h( ?7 y
  10. 指定直线的端点或 [放弃(U)]: none
    1 \+ P% G4 v/ R. m+ ~
  11. 指定直线的端点或 [放弃(U)]: none/ N/ W6 g- x1 p( o1 ~
  12. 指定直线的端点或 [放弃(U)]: none
    3 o/ J. n3 Z7 ~2 S# X& d  [  l3 U
  13. 指定直线的端点或 [放弃(U)]: none8 _% I: g2 h+ r0 r' A
  14. 指定直线的端点或 [放弃(U)]: none  Y+ Z# \; S. g; Z5 k: G: f! G
  15. 指定直线的端点或 [放弃(U)]: none
    3 G/ ]/ k) j0 W0 n& E
  16. 指定直线的端点或 [放弃(U)]: none" ~3 G; E& V0 E: j. ^/ a! X- `9 z; ^
  17. 指定直线的端点或 [放弃(U)]: none
    ( ?7 P9 b* _6 u1 i4 ?8 p
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个# v$ l7 A% f5 ?: t( ^# ^
  19. 选择对象:% W9 [  R( @. g' ?% b" `
  20. 命令: ._vbarun 正在初始化 VBA 系统...$ M! h! ?/ a, B4 o. Q6 y+ w
  21. 宏名称(M): tt 执行错误7 e' g6 T- {, F8 D9 [+ q! b
  22. 命令: <选择集: 476>" p) {0 c6 R8 S( g- x" r
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。$ ^6 F" t* C  {/ C# _( y
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    " U/ X  A6 ]' \) g8 R% Q' |
  25. 命令: -12 n0 C. r% t) K; Y1 l  W

  26. 9 m; b9 f, }- a( G1 K
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
) M* I: H0 }& l5 G0 b! q8 I- H- k6 j0 v4 ?4 u% i
宏名称(M): tt 执行错误+ s# U0 w8 {( E8 ]% x

2 l) T, K/ ]8 L! ?4 I! s: ^$ I  G把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 ) E5 u1 h/ M% m6 ?7 l- s

$ N- p- o9 e4 k! d- q2 Y大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
* D# i8 S1 z" |$ ~4 U; ]$ h0 `( e
% V1 h+ y- E) ^' V0 e* ^按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt(); W# |4 U7 J. L# y1 h. R& B$ J6 ^

  2. " G  j* p& ?; J
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
7 V% c  f; O4 n7 J4 g上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.( h$ H; x/ l0 {' O' [
加载的方法是:点出"工具"菜单下的"加载应用程序..."
% k) l, u; V, c, _4 v: \在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
, l) i. ?3 e! M9 Q' Q8 z谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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