QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,' w- B1 D4 O0 ~  q8 A2 h

/ y  }8 ~. r1 ]" k4 d1 w如何做一个把所选图形别存为一个文件的命令$ Z. }5 k* ]" d; r6 G* B

1 B" L5 U& C* P! f: Z/ X2 R0 u请各位指点一二。谢谢了。
0 F9 r1 u2 ~* j* N3 {
" r3 q; q$ l$ s5 H) V) w* I# p6 p7 Q4 |4 H
7 B# @* k# V$ V$ N1 k( i4 Z' E: K我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????9 [' \' z8 g2 `* \3 E
& [3 o0 W$ E4 z* W, L
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby 3 R7 \2 s" f% T$ m5 ~! Z9 F
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia 9 o0 f2 x/ {: G3 V& j

. t# m) Y$ \9 Y: @  X& }- F5 W您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
; R- b# _) m+ k: `# R+ H/ p# ~; z$ E0 E
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
6 u9 n  [" z' g8 ^4 B6 A8 w如果保证该文字中没有非法字符,可以参考下面的代码(VBA)* _- r7 K/ @  x$ N

  1. / U, A% {  D' l2 F8 [, l2 Q
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    1 \& V1 V2 j: G
  3.     '创建选择集' A* w6 Q, K- B4 U* N+ y
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    " \: K/ b$ C6 J' g' L
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字1 s5 o4 F2 {; n
  6.     SS.SelectOnScreen
      J, F! x+ Y+ k
  7.     '遍历选择集,查找其中Name图层的单行文字# G0 }# N3 v+ H4 r/ g7 s
  8.     For Each E(0) In SS# A' M* h( s$ C8 x& W
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    $ y' c  ~$ H5 [+ S3 @
  10.             '找到文字后提取字符串
    , b  Z) g! ]9 W+ K+ \
  11.             S = E(0).TextString; P* m# [. f& }4 P5 u2 m: \% ^" d2 U
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    6 w( o8 O8 s4 m
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
    6 X2 p" f1 F5 A: q0 p; M
  14.             SS.RemoveItems E8 L1 [9 |: }& g% k3 ]  }
  15.             Exit For
      B- y7 t- g: \# f2 G
  16.         End If
    8 E9 s+ z* O+ ]' M4 k! z
  17.     Next
    # r# l9 b4 i% n/ d% y8 H5 z7 n' w
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    0 r* Q/ J+ D7 z7 m; j
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS) x7 V3 f  U; _- U8 K6 R
  20.     '删除用过的选择集
    9 g3 z# l9 W) S: g% b8 @. L. s$ z
  21.     SS.Delete
    ( `5 h3 d% [" m' C, b
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia 5 |# S2 l( `3 P1 ?

) T6 |; o9 w" `* T& r" x5 O! t( s) s, t1 a% y+ W, D* M: c
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
, C* y% p6 T5 [2 H7 k- ?, ~借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 $ A3 C( i7 G' R: Q# s  @7 _. d; O' j

& [, }) U8 g7 M  V  [# M
8 V  I8 u0 b; @. C- Z
+ y% B+ F. b! G- A/ Y* j5 m- G谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 1 w" P# T8 _& U% z3 M
" o( _, E; }: p7 L/ l1 f( T
+ _$ B7 \/ L) z; V5 z/ V+ u
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
& |4 A) e6 o" [( i4 Z2 A  T0 H. `
这应该怎么解决啊??请大哥指点一二。谢谢了。
. B8 g; v. F& B
, K# q6 c1 l4 }- t, j: P/ C' Q( z& u

  1. " `9 K: K" g" W4 W4 V3 J( K$ e0 }
  2. 令: wxssh-tt5 A. a9 f' i  G+ b$ ?8 V
  3. 选择对象: 指定对角点: 找到 1 个
    ( B* A& F- ]% U2 D
  4. 选择对象:
    * V$ K9 d" Y3 n& g1 [; L
  5. ._select( S' g3 h& I! O( ?3 D/ [9 t& c: Z
  6. 选择对象: CP
    + L8 h5 h$ e6 n+ P
  7. 第一圈围点: none- d% V# S1 l3 `8 G
  8. 指定直线的端点或 [放弃(U)]: none
    % x, T& j# s8 {- q6 c5 f
  9. 指定直线的端点或 [放弃(U)]: none
    ; g' R8 T: d$ s/ j' G
  10. 指定直线的端点或 [放弃(U)]: none
    9 ]4 x# s$ Z, k' ]7 k
  11. 指定直线的端点或 [放弃(U)]: none
    0 y1 a" X. X! l% I0 D! L4 l
  12. 指定直线的端点或 [放弃(U)]: none
    % B; P' B+ d, C
  13. 指定直线的端点或 [放弃(U)]: none% @, ~: U$ K( f7 h3 I3 N( Y
  14. 指定直线的端点或 [放弃(U)]: none
    1 z, ]# J2 ]: R0 C+ f1 A
  15. 指定直线的端点或 [放弃(U)]: none; A7 o$ d" |# K. g; Y+ p
  16. 指定直线的端点或 [放弃(U)]: none
    & c: i$ l) B5 ~' @
  17. 指定直线的端点或 [放弃(U)]: none, T2 Y3 f/ a" `
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    ' I- H. m2 ]+ l5 F, _% M
  19. 选择对象:* t. d0 n# M, L* t7 }' ?
  20. 命令: ._vbarun 正在初始化 VBA 系统...' x6 r1 V3 t& m1 Q0 M% J' v* u8 r
  21. 宏名称(M): tt 执行错误
    6 g1 U# N. F/ m) H' E$ n9 D8 |
  22. 命令: <选择集: 476>
    . X& F% k$ ]# r' k5 R/ P) u+ Z4 ~
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    4 n3 z9 {; M. l; s4 C6 _. Q
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。. l2 X2 m0 x" @+ r& p
  25. 命令: -1% I9 a6 o  a% c0 n+ s& G( `6 R
  26. % c" @, `5 ^/ r; U
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...8 l$ w; ~2 [" |8 I$ @0 ?% \

+ _- a" @  |: h8 M+ \2 f+ H" B; P宏名称(M): tt 执行错误, [4 K1 ~; [' B9 s0 _8 }) {" z, Z

% c: U7 J/ _9 g2 o把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 ) q8 a; `& p2 u) a

5 r7 b' {. v5 r; i大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
+ J/ x8 K6 U/ j) l+ k' u% [" |# P% h4 e. H3 N4 z. _; E& y: I0 ~
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    0 u( f. n8 n4 L: h

  2. + y0 b" v  Z3 T
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
: B1 K9 _+ N% u7 ?1 W上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
0 R  |$ S5 r& d1 V5 a( b8 V* Q加载的方法是:点出"工具"菜单下的"加载应用程序..."
. i& `7 L9 S8 E; _) X" w在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
& [8 t- C* L; Q" N谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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