QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 3665|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,9 W$ Z( L/ B1 Q( k6 Y
  c2 @0 }, k8 a+ U* T( V3 e7 y2 h
如何做一个把所选图形别存为一个文件的命令  M' ~  M% i4 G9 {4 X  y
6 K! F5 W0 s2 d6 G- O4 w: W0 i
请各位指点一二。谢谢了。
6 g$ D7 E! p# ^' E
/ `" D7 |8 D1 R- X5 ^0 R3 [  V  x  {4 F+ \9 ~! O, N
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????+ a9 I- u- D+ T5 P7 Y2 n9 d
$ i7 W# V: }% C. D) }, v
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
* ]" Q& Q6 k/ c8 S请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia 1 L  D( ]; ~) T5 e

2 ]9 L$ |! ~* V您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
6 F) Z2 a# L# ~, i, K+ p
3 j. C/ J, C5 r, G" z你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
; ^7 D; k8 a/ a; Z6 z如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
. d5 T! {) |* a. C
  1. . i3 a( P- J# ?4 L% d
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    $ W5 H3 T: |; A4 `6 `- j2 N
  3.     '创建选择集, H. I4 \0 U/ U  j& c8 a
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")1 ?! Q# J) `  y. G
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    , U# G$ W( k" p& F% m# @
  6.     SS.SelectOnScreen
    4 ?8 s, p3 ?4 [; w  g  e5 e( e! J
  7.     '遍历选择集,查找其中Name图层的单行文字
    ' b1 s  |* M" i
  8.     For Each E(0) In SS
      N1 q$ m9 T/ h5 Z0 c
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then. {* [3 l# i$ `. ?' y
  10.             '找到文字后提取字符串
    $ h& Z8 m/ ?/ ^0 _$ Z
  11.             S = E(0).TextString
    4 R  w; `* \1 \3 \* k# b: n
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.1 l. Z% x6 e! k! W9 I
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
    $ O0 _" b" j( \8 O$ n
  14.             SS.RemoveItems E
    0 k$ M8 o8 s# ]( @, f  T
  15.             Exit For
    $ r0 k. j9 R. `: _( Q2 k
  16.         End If% m* Y; _2 W4 @3 \  [  A  V
  17.     Next
    / Y0 z* P6 K" o! z
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串& A* j7 j6 g! \! V
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS. C' m4 C) j+ E. T$ k3 F
  20.     '删除用过的选择集
    2 o5 X& \- G5 H5 C. u
  21.     SS.Delete
    + u+ f: e- E: i6 ]8 @3 b
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
8 y8 S4 J( U) `; ]) N# N+ O( z$ C. Z5 n; v

1 U& I* J: \) t5 L; E8 t  R. _你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby . d2 @. h: H7 O: l# j
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 1 ?* `- t' O7 ?$ k+ M/ ~/ q3 ^% f
; m; s% {! M5 |. H5 |; H7 C& \# [+ R% c

4 p/ n, P- R0 i% w' {; V5 H2 ^* w) [( {. P
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 9 C2 K; E3 z! M! l

0 t  E/ V# U& w' ^8 i
" m: u! V/ q/ F( {1 W6 e# X) A( m你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
) f) J" @2 P% k4 X1 A. Z$ m9 E8 j, Z* D; v3 Y
这应该怎么解决啊??请大哥指点一二。谢谢了。
( u0 Q3 L- j+ c% N2 A( V8 B+ G: Y* `' w) S0 H
  1. 6 l$ T7 y8 f& o4 L2 @# u; A
  2. 令: wxssh-tt8 ^- v, I/ a. [$ y
  3. 选择对象: 指定对角点: 找到 1 个$ }; y( A# k- @& s$ M: ?' d
  4. 选择对象:
    9 ^6 M0 x# W( E! x
  5. ._select
    * R' j2 v7 W  Q7 r" A, g
  6. 选择对象: CP
    4 x0 {. I# r" }
  7. 第一圈围点: none
    3 y4 {6 N( L* O' D
  8. 指定直线的端点或 [放弃(U)]: none
    3 r7 q8 H: K) ?/ I
  9. 指定直线的端点或 [放弃(U)]: none' E; b8 k+ ~$ [) D
  10. 指定直线的端点或 [放弃(U)]: none; l- x& Z; K! s
  11. 指定直线的端点或 [放弃(U)]: none
    % [! X( L+ ~1 E8 V: x# F( ~6 P
  12. 指定直线的端点或 [放弃(U)]: none
    ! p' ~5 c7 H' Y  _5 H4 {
  13. 指定直线的端点或 [放弃(U)]: none
    " P5 |1 r9 ?- g9 T& c
  14. 指定直线的端点或 [放弃(U)]: none
    * ^( _% E8 p7 T+ h" v! P) k
  15. 指定直线的端点或 [放弃(U)]: none
    # }( V$ P7 ]! O+ |8 s- [
  16. 指定直线的端点或 [放弃(U)]: none
    * n2 B; d6 T. m- T, {' U
  17. 指定直线的端点或 [放弃(U)]: none
    % k" F8 g# x7 Q% N3 D3 e5 P5 x3 K; J
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个4 X& G4 W6 V. }5 H1 A, v
  19. 选择对象:+ M4 _  J0 O5 x( m( I
  20. 命令: ._vbarun 正在初始化 VBA 系统...$ q+ c) s( `  w$ Q% C
  21. 宏名称(M): tt 执行错误
    / b* X8 v- A* o0 b, z
  22. 命令: <选择集: 476>" M2 `$ G+ p. l9 s7 z. A- L" D0 x' M
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。2 k4 b, T  l. f% F
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。0 g3 a$ @. v$ y/ N6 [2 x
  25. 命令: -1; c# X  m0 C: g! q- l

  26. ' {1 r1 o( x+ J! t& O
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...7 q7 N) @4 {3 `6 E
; }) w2 n" I, y1 `; r1 E
宏名称(M): tt 执行错误$ A( z) B6 p9 _) A3 K
4 s; }, x' A/ C7 C8 w
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 9 Z) U9 [6 ~& n4 z6 Y5 ]- }
  O0 e; r1 Z; x6 M, h
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,- j: r' z) `" c  ~* O
2 Q; W7 X* z" n( ?$ n
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()6 k" H0 o9 ]9 b0 _

  2. / [5 W4 O* v4 l2 `8 E
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
6 ~( I* f2 q  c$ o( B上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
& i3 ^* A5 j/ [7 M: i加载的方法是:点出"工具"菜单下的"加载应用程序..."8 `# [9 ?) T- s1 |  {
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
3 |9 k3 i5 G) F4 m6 S谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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