QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,! X' M8 d2 U& [+ ?3 k

2 M) r" M; B5 B1 N& x& r9 \. N3 v如何做一个把所选图形别存为一个文件的命令7 N3 E$ C1 f& l+ J. j* E* \; w3 P( j
- ]; U  U1 N4 k9 L. j
请各位指点一二。谢谢了。
. j3 q5 a3 _$ k+ t0 U3 M- c% v# A# y# G7 O" X* g& j

  l; p- F4 k6 r7 Q: }) r我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
+ s  ^/ T# F$ r( Z8 b1 q8 W$ V2 e# \+ N8 N9 L( E, |
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby + C$ M3 C4 ]$ v6 [- q. P
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia - q; K7 b* N. r. Z8 d' ]

2 q2 M2 D6 P: Y. G/ r0 s您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
9 U$ f0 q' E4 @% m  T1 P6 R; R- \) D% U( F" B
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!% T4 L- S) B2 ^5 w% v8 E
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
% ~; r5 h3 ?% v6 L- R6 n* m6 O

  1. # Y" x8 {( f* a) T/ R
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String/ f5 a$ }/ v9 i& o$ [8 g* H
  3.     '创建选择集
    7 M6 Z: M/ H2 C+ _# \
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    # t# w- h1 p( g# L# w  L
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    6 h" r# |% v. {, k4 k2 U1 G
  6.     SS.SelectOnScreen
      g' R0 m& ^: f0 [$ c& r" Z! l
  7.     '遍历选择集,查找其中Name图层的单行文字
    % q# b1 m$ P& a& J8 C5 @7 G6 j6 @7 P
  8.     For Each E(0) In SS, o/ |4 M5 U5 H( @) z% j
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    " n* T' O0 |; x- g+ H, x& h! Q; M; M
  10.             '找到文字后提取字符串& H# Z2 `- F5 m* ~. F! k
  11.             S = E(0).TextString. o: f% c7 d% r( ]
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    ' e; @9 Z( Q* ?# ~6 Z5 r" Q
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行3 K2 O% z! I& w' h" X/ V% o' o
  14.             SS.RemoveItems E( J6 |; Y/ b7 q- ~+ s" x
  15.             Exit For
    : E! S: b( B4 ~: K
  16.         End If
    # X6 M. H  ~/ c0 b. D$ N
  17.     Next
    $ X9 i8 K! {" m% ]$ w1 l0 _
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    , E6 ~6 z7 b2 X( G8 i
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
      n2 ^% V; Y* c9 a: W) b
  20.     '删除用过的选择集
    , n% V, H) l4 ?9 I: k
  21.     SS.Delete
    . f& L& y7 h' ]2 v! V
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
, C$ d& z/ v# @& T* Z  l) `9 ]5 ^8 d
* `6 k* A2 F8 B' X! g
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
( [/ e3 w' o2 o) K: T) A+ _借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 ( p: X) Z" b8 A, t0 S0 F% t

. D. v* D- Y& t7 X. ]
8 t6 \0 G- a8 `" r0 @, ]/ G" i6 o3 n  ^. @7 t0 o8 Q
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 - I$ V+ |5 H$ i2 a  V

1 k$ g, e  _! A6 i: W: q9 X7 f0 \2 R( x  X: d& j
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西+ i- |# q/ ~( Q: a4 b

2 j' K, Y' a8 r  q7 R这应该怎么解决啊??请大哥指点一二。谢谢了。7 _. H5 `& `& i' j& D* `) I

0 i  S/ z. k9 W  f5 k6 o5 ^
  1. % a" J# t3 F$ v5 z+ N2 B& n5 {
  2. 令: wxssh-tt
    4 x7 S* [& L" j" R
  3. 选择对象: 指定对角点: 找到 1 个
    # y; ~  ~" N' y, C% H; B
  4. 选择对象:' t& q5 W) O3 h& N
  5. ._select  `" n- f5 E5 Y' X
  6. 选择对象: CP( i5 H( W7 ?) b  U1 d
  7. 第一圈围点: none1 W( ~, r) T9 J* t. v# S
  8. 指定直线的端点或 [放弃(U)]: none' c2 q3 a7 |0 b* X3 k3 ~$ }
  9. 指定直线的端点或 [放弃(U)]: none
    2 k9 o5 E2 C% T) U: N" Z9 d
  10. 指定直线的端点或 [放弃(U)]: none1 ?" \# x* s* E3 [* z) J7 s
  11. 指定直线的端点或 [放弃(U)]: none
    ) c; z$ ]) O( {3 [
  12. 指定直线的端点或 [放弃(U)]: none
    3 R+ u, ?$ X8 _( Y) o
  13. 指定直线的端点或 [放弃(U)]: none
    ) M' _( ^& ~0 {
  14. 指定直线的端点或 [放弃(U)]: none
    " J& T" H  M7 Z$ a0 k6 \
  15. 指定直线的端点或 [放弃(U)]: none
    - l5 g2 ^. w) ~) ^$ g" \
  16. 指定直线的端点或 [放弃(U)]: none
    # E8 \/ X* G& [9 T' b9 E
  17. 指定直线的端点或 [放弃(U)]: none
    - y2 e9 |. z1 u. N& Z; \
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    . \$ Q* ]8 k- R& M
  19. 选择对象:
    $ ~- x' C( o% K7 b
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    7 l. f2 o0 N7 p; C$ h) o: G4 R- i3 P
  21. 宏名称(M): tt 执行错误
    , `% z* s, g: l& H: L, @& b+ j$ S" k
  22. 命令: <选择集: 476>
    / ~/ r6 s4 a2 M. t+ W2 \
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。6 s; {9 q( T  Z5 E
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    ( V0 g" O3 q) j5 M
  25. 命令: -1
    ' q; E, Y! b5 ?6 _# B$ j

  26. ' J1 k4 _, v- t1 k
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
. |7 c8 T8 g8 ?5 t( x  V3 t( @% W( `9 _' N9 H+ p
宏名称(M): tt 执行错误
, b& S; p8 y$ o. \( x- N" ~; S5 l: P3 {9 c- _
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 * ?. M; C. q6 O* n1 r6 p4 y# b( n
9 ]  ]. k. `9 T
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
. f/ x1 [' m3 k, i; s. s/ [1 @
3 t) E5 Y; d, F/ n- j4 h按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()8 ]% W0 a$ X2 u" M% A) T  d' S
  2.   `- Q  g5 d/ `7 G" U
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序." w8 \( N. B! L$ \, t% o& \  K
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.$ x% R6 V/ S6 r2 g3 F6 w% g
加载的方法是:点出"工具"菜单下的"加载应用程序..."
4 I; G* k' }/ w4 M7 ^6 ?1 }4 y在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
( B4 q- V# t# C# `3 ^! x' Y谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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