QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
* D) b$ ?7 d( x$ C- @/ a( U5 L1 P0 g2 ?- K) x/ Y; w. Q# t! n# p1 T
如何做一个把所选图形别存为一个文件的命令
3 ~, u2 ]* ?% r' G7 Q
# G; D# P  c; Q' S3 b% \请各位指点一二。谢谢了。
5 I, ^; V) v+ [! b2 T8 C# _9 M" }: D9 C% z

9 x# j2 h- G% N$ U' d我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????7 ^" @9 G/ u' K8 [: J* t. r4 S; C

% X. J- M7 V/ w" P' F: w ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby * s1 c  \! p$ K5 ]5 S. Y
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
% F- T, E5 x2 z* w8 \4 i& r5 u9 B- d( h' T* o' Q- {
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
" i# t3 [8 z- ]3 P2 }3 B9 e' C* n) c: C0 _
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!) L) f4 z6 e* x
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
" _/ }& x& B$ b. V
  1. ( s( `" u3 E, s& M6 s
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    ' k5 K7 K% B  C4 F" }/ ^4 r% r
  3.     '创建选择集6 J+ E4 O2 T7 F
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")" p9 m  [+ B. P0 o) V+ \* d9 Y
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    1 u! z- I* h/ Z0 \: Y* S
  6.     SS.SelectOnScreen
    8 a0 D6 j2 j- l! n( z
  7.     '遍历选择集,查找其中Name图层的单行文字
    / |( J7 z4 Y! K3 Y' T3 ^
  8.     For Each E(0) In SS. ~+ F# i& ~. J- s( i5 M4 u
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    0 {) B) s) A$ u, K" w
  10.             '找到文字后提取字符串! y" c3 {% c8 P0 f$ }
  11.             S = E(0).TextString8 ]# f7 L( [+ K$ \3 P7 b
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.: U  W9 U4 g  e2 f8 F0 q& e5 E  E
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
    ( L5 I9 m5 y' ^; D1 L- d  f6 F
  14.             SS.RemoveItems E2 M& _5 n2 P, J3 o# A
  15.             Exit For
    9 e- A4 |, q" W5 z- K7 A0 u4 |7 y
  16.         End If9 e) f2 C& G6 G
  17.     Next- u5 T/ }2 [( c, k+ B. @% ]
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    4 u, ]+ z2 {1 g2 G3 z8 l+ c, x
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    " T2 V) Z: p6 l/ C* h2 E
  20.     '删除用过的选择集  y. @6 i/ z+ z" j# ^/ `2 v
  21.     SS.Delete
    & Y/ |! a: w8 E( d6 o" z
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
' m+ ]. J7 b: [9 N8 F# {% P9 c2 S9 u  F/ p3 H

% {6 R. j9 b4 B+ j  M! m' u你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby ' D' k4 i* Z2 U1 a; M* V) E5 Y
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 $ N% x! m6 c3 o6 }* r

/ z6 h8 j. J8 A7 o3 j8 j6 N
0 [( f% x% X  k- I; l
# E! ?4 U& i& x谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 8 U! d* r; I6 D6 O0 x. U
, L0 O- |# ~7 G
/ i: i+ u$ J2 ^' ]2 h
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
+ [% `9 V% p5 N4 r5 h% F$ k4 O  i& {5 a3 F
这应该怎么解决啊??请大哥指点一二。谢谢了。
( }# `! x$ R1 n7 Y: Y1 u
8 v- X' C0 l% h
  1. 1 u: Q) q- Q1 z# b& Z
  2. 令: wxssh-tt
    3 P( j0 p- b. h" h( H
  3. 选择对象: 指定对角点: 找到 1 个
    5 v" |2 F; O+ Z+ R4 o! y1 D! f
  4. 选择对象:- o+ S& _! J& l- c
  5. ._select! ~& ?( k: i1 j& Q- I4 Z; T2 s
  6. 选择对象: CP) Y1 _% G. e7 z1 f
  7. 第一圈围点: none
    : I5 W# I8 L# f2 }1 E) H
  8. 指定直线的端点或 [放弃(U)]: none, l3 k, v' h8 k: O% N7 H" O: n
  9. 指定直线的端点或 [放弃(U)]: none7 N6 L4 e- \& ^3 f  I7 y
  10. 指定直线的端点或 [放弃(U)]: none
    2 V  K" z; _# l
  11. 指定直线的端点或 [放弃(U)]: none! j! k. c7 ]/ ?* v3 A% U
  12. 指定直线的端点或 [放弃(U)]: none( {) @7 m0 C& n! a0 O
  13. 指定直线的端点或 [放弃(U)]: none1 a/ o$ Y7 F- x5 u
  14. 指定直线的端点或 [放弃(U)]: none
    + [" B" q" P  E* L+ E7 I
  15. 指定直线的端点或 [放弃(U)]: none1 {( J, C) X! U# O( @
  16. 指定直线的端点或 [放弃(U)]: none" |1 y1 S8 j# M" y5 Q: q. |
  17. 指定直线的端点或 [放弃(U)]: none
    * K: H8 }; [% e  h( N+ I# _, F) W6 A
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个/ a4 N8 e, ?! l0 m% n! ~
  19. 选择对象:
    5 m4 r; U8 I) o8 y7 n
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    : Q% \& r1 Q8 {  `% \
  21. 宏名称(M): tt 执行错误
    + D' i! b' i$ ]
  22. 命令: <选择集: 476>+ d5 |' L, M! n. t& @
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    0 K9 I8 R$ B0 t7 H
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    8 [' g5 D% L7 H6 {+ ~
  25. 命令: -1
    3 C5 n! \( ^  M0 [. V. j
  26. 8 ]# Q8 A  `( ^3 z
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
& H0 G9 Y( F- e& d. |( i$ @6 P0 T& R0 {- D
宏名称(M): tt 执行错误& V+ }5 G: `$ v0 h) B

( }7 r  u) |) M( T& U# P2 y把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 & o* u9 T6 V' V7 }
  Q1 q7 G) l9 u( {; D& Q
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
9 `) l; {9 j7 c- C! ]4 O" i4 I) L* Q" e; N5 o/ v- [* C2 j7 V
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    ' O( Y1 R9 [. X& W4 p

  2. 4 k3 U9 i6 r4 I3 J, d$ O) @- A- _
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.4 j7 @2 Z7 [3 @1 w& w
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.) `5 W2 l' p* C; q( J$ f. z
加载的方法是:点出"工具"菜单下的"加载应用程序..."0 e) {' ^" ^, {* ~4 ?
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
$ f; `4 c: u" Y1 P4 b谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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