QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 3671|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,1 C3 u, a' y1 E" Y/ I7 U

0 i- S, U4 `; F如何做一个把所选图形别存为一个文件的命令
0 P+ W7 U% X( g$ m( |, I% e' w6 |- i9 {/ M
请各位指点一二。谢谢了。5 j% B/ R) ?7 i1 Z
: l, h+ p. U( [% F

  V/ e% j* t; f我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????) c" K3 O1 K, x% S. j- {7 C. f
1 @0 V, \, @2 P/ `7 ?  {1 g7 ?
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby " n$ X9 J5 N+ W5 @+ V; L
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
. Z: i, Z( p- h: w6 d
1 }0 B, o6 V& L9 ~& J6 n* ?& b您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 0 h/ v  ?; p& J8 U
! W# o9 g( F( ~" u2 b
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!4 i; Y4 W1 r$ r! G
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
& v+ X0 a# R+ g. O

  1. - E1 D; z# o/ r. @+ y* e1 g' X
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    8 b5 x* D) W( P- `; e& q
  3.     '创建选择集
    ( i. ]7 [! p) H. U
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")( _5 l. D% ]$ ]2 \
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    " B' `3 V$ K6 q) I3 D% y  i
  6.     SS.SelectOnScreen
    * w& Z; U3 c6 q) F8 p, d4 B
  7.     '遍历选择集,查找其中Name图层的单行文字0 \! Y0 b- j4 n
  8.     For Each E(0) In SS% ]/ F/ Z) @+ y
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then+ O% g% c+ U" S8 {- [$ a  `; ~) L
  10.             '找到文字后提取字符串, D$ ~. D' g& m1 X, g. G
  11.             S = E(0).TextString6 ]! Y( P5 B/ f" s( {) z% \; m
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.- ?! Q- r; k2 @
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
    " o9 D! s( I, e3 O' P% }
  14.             SS.RemoveItems E
    2 r5 y3 e) Z+ C- ~) l1 S
  15.             Exit For4 x' U% _. O& p* W# w
  16.         End If
    8 i' ]: V/ k! m) v9 L
  17.     Next5 u- i: v3 o3 U9 N; u' o, {
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    ! V. O9 C  W& O% [
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS8 B7 C  W1 l, `- |2 Z
  20.     '删除用过的选择集; d: z- h" {6 o! f/ L, L0 }$ h! B
  21.     SS.Delete5 {" ?" u0 H. C( {5 K( C
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia ! p! A& K1 e- a" `1 @$ h

0 d# Y/ b7 B! P) o
/ D6 J% C1 I  `, {3 Y1 Z0 c你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby # _' X4 N4 b; Q, ]7 X; Z
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974
, o* V) q+ I: t: G
8 r6 N1 b0 B+ ^; E* L  H, F* _3 |( _8 G7 b9 w& y" j+ Y
' P0 d) R# ^( t& K9 x; l# Z
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 9 d: y7 X* u( v) V( m% m

; T' H( i' J& Z( F5 b
5 B6 V7 V7 x. O4 ~. s0 k" k你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
) T4 ?+ ^% Q  g8 I  q* z3 |+ l- z# J2 F
这应该怎么解决啊??请大哥指点一二。谢谢了。
, a5 u, z! _+ S% \3 ?
: D2 y* @, ]/ e* b& H0 S0 I. W+ c( q$ B

  1. 0 N: `& k% H. n7 T! L
  2. 令: wxssh-tt
    3 O5 l- ?8 Y0 w$ a2 g8 |/ C+ Y
  3. 选择对象: 指定对角点: 找到 1 个. B' \* ~) |6 z# ]- j
  4. 选择对象:
    ; `6 J' n0 l- G/ t
  5. ._select2 e; R: e' G& f4 W4 @
  6. 选择对象: CP5 b( ~+ [' B" S7 f0 p: G
  7. 第一圈围点: none
    3 W( \5 l$ s" e0 _1 Z
  8. 指定直线的端点或 [放弃(U)]: none
    ' B, t" x8 t' k/ Y
  9. 指定直线的端点或 [放弃(U)]: none; v" y& [/ {5 g3 M
  10. 指定直线的端点或 [放弃(U)]: none, c, s5 ~* D: p1 i6 _9 d0 @$ r
  11. 指定直线的端点或 [放弃(U)]: none! c) i1 B7 Q  K, U6 X. \$ I
  12. 指定直线的端点或 [放弃(U)]: none
    - ~' U3 x3 m) |+ ~; r# L) v. w2 f
  13. 指定直线的端点或 [放弃(U)]: none" p) @, B' `" ~5 q+ ]) U
  14. 指定直线的端点或 [放弃(U)]: none
    " ~+ Q$ d3 C* U3 @. ]6 z1 t7 c+ p
  15. 指定直线的端点或 [放弃(U)]: none9 e) ], V/ j" v1 P
  16. 指定直线的端点或 [放弃(U)]: none# I/ E( Z3 Q+ g/ |4 D2 X
  17. 指定直线的端点或 [放弃(U)]: none, T: z. S) Z4 M3 v
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    # \7 y0 u1 K- [5 ~( B# f$ i+ Q: }
  19. 选择对象:- n7 B6 I) p7 Y2 a6 a
  20. 命令: ._vbarun 正在初始化 VBA 系统...4 Z. g5 G/ P* A
  21. 宏名称(M): tt 执行错误0 b1 h& j: }& T2 u: F( U
  22. 命令: <选择集: 476>$ j- e0 j0 t2 J6 y4 @
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。/ |* Y- N  o8 J- C
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    - h1 ]( E9 I) a# N
  25. 命令: -1- ^; e1 m" {5 M! x

  26. ! q6 `3 s- x/ A6 l4 }9 m
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...) P; A; {: L; z8 G% \+ y1 n

' t; G2 {" V* O; [1 [0 P: ^3 p* C1 r宏名称(M): tt 执行错误
' W  [4 s/ V  j7 ~( m& \. |% y+ M& h8 P: M2 M" x& `" [
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 . b4 V/ a5 a9 s' ^, w( b  D0 Q! l
2 b! o& f- z& M0 N* W. x) r8 O
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
( W. p/ ?8 y$ t# Y% Z/ G; A$ b4 P2 L
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    . D( m4 ]6 x7 U' t

  2. 8 [* G6 ?3 u! {7 s) w* I. ~$ R
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.9 J' _- N: l0 Z: F1 i: V- h
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
; b# q% l8 }5 z0 p+ T& h5 d加载的方法是:点出"工具"菜单下的"加载应用程序..."
2 n# r' n7 m$ [+ L% }在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
* W& m: T) U9 s7 Z谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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