QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
21小时前
查看: 3791|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,
* ]! a3 c: n6 u- N3 u  T( L4 }/ k$ r& L
如何做一个把所选图形别存为一个文件的命令
6 k: p" k7 z% e1 ~/ z- C# g# J& {, u+ p: L
请各位指点一二。谢谢了。3 u2 M3 z) i  W4 i

7 I& O0 ^, `; j" ^# }) @9 w
* J! Q" [& B2 Y. V" W2 q我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
! Q& ]' ~3 E  N1 i. y, v! D: g! x* `5 `3 Z; I
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
' s  \$ r3 j& n. b/ F8 Z$ q请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
0 x+ o. Z- T( Z; U6 ?0 T" O. i" {
& ^4 J; l4 A0 {6 g您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
4 A9 H1 W, q# b# x2 r( S8 N4 U8 P0 O% S; j
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
( l6 v# o% x$ J5 b如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
  i- W: e! }) r0 S

  1. + v' b; l7 {5 D/ F3 Q
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String, [/ k5 P% u1 l9 \/ ^; t3 L
  3.     '创建选择集6 m. y( \- b9 G3 B3 _
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")" W- A8 l2 t5 |  U
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字  q3 h' h( a5 z  l/ V6 W; f4 l" m
  6.     SS.SelectOnScreen# q4 `2 l# F) g2 }* s( P8 J
  7.     '遍历选择集,查找其中Name图层的单行文字9 L3 H4 c8 R, H
  8.     For Each E(0) In SS/ G4 C8 t: Z. X3 G2 ]7 u
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    / y' j& N/ }( N7 H; C
  10.             '找到文字后提取字符串  e5 o+ t$ {6 s# a
  11.             S = E(0).TextString
    & f* r! c  a$ F% Y6 L  h
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.& l0 a  ?  @" v
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行9 X; y* V% J1 _
  14.             SS.RemoveItems E
      B9 l  K; h1 K+ }* x5 K+ I% c2 N
  15.             Exit For
    2 a- E( m  h. b0 Z, q6 }% {9 V
  16.         End If2 t) W) {: O* T9 O' m3 F# m  h& e
  17.     Next8 i1 r( k: w5 V1 d! I
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    - r! F: I. S- U- {2 `
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    4 z. |$ t2 ^9 v1 b9 ~/ C2 [, y
  20.     '删除用过的选择集
    * Q6 |8 k5 j. C" N
  21.     SS.Delete. w/ ]8 m& |: ?  q% k6 o6 R
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
6 N3 r3 M+ R; t# z6 @
+ B3 \: a6 a7 c) N) @
/ ^& g/ K  `) Y4 M: P1 T) J9 t8 s你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby 9 S! x2 `% ?% V- v6 c- F
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 8 p# W2 I5 ~6 R) M

. F- n# ?6 F) ^: `" x- @+ L5 o
" a1 ^" p) [9 j# {- F
7 Y$ C. x; W- Q6 h# I+ q  E  q谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
9 d5 S9 l! X" _/ m* g5 T
! ^: y3 C' Y, q8 A& g& D& t# H8 Z' V5 B
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西0 W& X) ~) T. x. \: a
; y/ b( C, t$ ~) I
这应该怎么解决啊??请大哥指点一二。谢谢了。2 R$ D3 r7 W9 \4 ]4 x1 D
9 `1 \4 b& |2 D4 y' f, }) M
  1. + {3 J; v, ^9 {6 u# B6 q! e
  2. 令: wxssh-tt/ @- e% H9 F$ m% V
  3. 选择对象: 指定对角点: 找到 1 个
    0 o! @! ^$ l- `( W( c- J
  4. 选择对象:
    : d7 L/ _0 _5 G
  5. ._select
    - f- P* N; g1 l
  6. 选择对象: CP
    % p1 |+ X; o, N  M
  7. 第一圈围点: none
    " u2 n! U0 p; |9 r2 a1 D
  8. 指定直线的端点或 [放弃(U)]: none
    2 p* g: S1 S% ?% e* ~9 o. S# U
  9. 指定直线的端点或 [放弃(U)]: none
    - G7 H5 e$ S8 ^4 p4 f7 Y: d
  10. 指定直线的端点或 [放弃(U)]: none
    ' s& O8 K1 v" e+ B/ W4 ~
  11. 指定直线的端点或 [放弃(U)]: none
    9 x+ U3 o0 T3 E9 X9 `0 }4 T0 n
  12. 指定直线的端点或 [放弃(U)]: none. m  ~- H' k# d
  13. 指定直线的端点或 [放弃(U)]: none
    * z1 P( N" f( G7 {
  14. 指定直线的端点或 [放弃(U)]: none- C+ D- t, O6 G; h, G# {3 i
  15. 指定直线的端点或 [放弃(U)]: none
    6 t! ?/ m" ~) m" R$ r# L
  16. 指定直线的端点或 [放弃(U)]: none
    3 \* [/ V5 Q* Q& H  ^
  17. 指定直线的端点或 [放弃(U)]: none9 `8 I8 Q1 |, W( o: c  A
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个+ @6 T' G0 m' Y
  19. 选择对象:
    " Q/ v9 ^% G% Q- ~8 A/ F
  20. 命令: ._vbarun 正在初始化 VBA 系统...: E, ]! S# s& p0 Q$ q2 y
  21. 宏名称(M): tt 执行错误- j( S' d  n" C; |. a
  22. 命令: <选择集: 476>
    + q  h- {1 V' Y+ o. \" |4 _) C/ I
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    : J+ y+ e: f4 P
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。( J& w% }& P3 q# D" _
  25. 命令: -1, I, Z. i; o& j  R) A5 l# V0 w
  26. ' g9 L  }- ^" O
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
  u% E1 D  D& a/ K2 o3 s6 u
4 d0 d: B- U2 q; Z宏名称(M): tt 执行错误" C* R5 `4 a* j  s" ^7 \# ^1 h
- X/ J- s" z* A* t, f- q
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 $ T& S/ k' B% M/ b

" U& s, H5 r9 H4 d大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
# w' Z) b( q1 G( q# W9 p. L
, ^  \& t8 _7 K按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()  P! `0 d+ l6 M7 |# y7 s6 y* M
  2. & ~6 B! B0 w% p1 S# f, u
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.5 v9 x, ^7 u0 X9 |2 v" }
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件./ a( W: Q( E+ j$ W
加载的方法是:点出"工具"菜单下的"加载应用程序...": Q+ w4 Z: Y. x7 r, G$ G. B! @* a6 F, g
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia * ^: e) D5 ?3 o' `
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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