QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,5 ~0 ]8 k/ ?* t
4 J2 U9 p# `6 e4 K) ?* w
如何做一个把所选图形别存为一个文件的命令# R4 U2 R$ Y7 T- i; i
. _- q* ]! N! [$ H' T  y3 t) h( f
请各位指点一二。谢谢了。
1 V" h% Q% U. R/ b" G. F- X$ V! f$ i. g

# W8 W9 U. U. _/ ~* ?  p我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????; p) F; V+ d& s- L4 Y, I
! s2 Z2 h$ }1 r
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
8 P+ A, [3 i. P+ L- `) P$ @请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia & J) t% R. f2 `( O. j
. _4 U" z6 r5 d; y$ k6 ?
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
5 Z  _: a: a9 j# H5 P! p" J0 X
3 g" Q9 S. H. Q, x你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
& D' V& c- p% N, ~4 f$ \1 z8 J9 c, g如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
7 @1 G0 A0 f/ N0 a

  1. , ]/ q8 [7 ]9 C
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String$ o  C3 d% G2 [1 G! K6 A) e5 f/ t. e
  3.     '创建选择集
    " O) w7 l' i1 H% \% r* ~2 f7 n* G
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")6 U% J9 b. {2 i8 n
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字6 }3 L$ |' `- i" x+ m- @" b
  6.     SS.SelectOnScreen; `6 ^9 H. S# k3 ]
  7.     '遍历选择集,查找其中Name图层的单行文字
    " S5 P; f: |( ?% j
  8.     For Each E(0) In SS
    . y( Z# ?' e' A
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    4 I6 N. r% O, K& y+ `; z9 l
  10.             '找到文字后提取字符串
    0 m) Q: A& |; {
  11.             S = E(0).TextString
    5 K: ~4 L3 M' K$ \1 C: S4 J0 v0 O
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.! u5 r  b8 e4 }
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行. P& p& V/ r  N! D! P( C) s
  14.             SS.RemoveItems E
    $ e% p: I1 r7 \* A3 [! g* i% q$ _
  15.             Exit For
      F4 ]4 q/ r2 V4 W- j
  16.         End If
    4 O: b3 I  @; [& E' u  I0 |
  17.     Next9 H; G) t2 C. q/ i# W) R
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    # q. Q' ]% A6 j& r
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS( C; r0 s% B3 g# P; B
  20.     '删除用过的选择集
    6 z2 ~- a$ U; O" i! q
  21.     SS.Delete3 u5 a" [- ]3 [# D4 ?( ~: ^
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
; d- ]; d! H  f% g+ r7 w* K+ C0 z% {7 H' L* e8 V4 r9 s, X
9 ?, s, f2 n  H2 I4 V2 R( [
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
( N  a/ F0 _" a2 X. a借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 * |' l8 W1 d+ g

; L: s* @" n5 l/ [8 X/ m: i5 i1 d6 p4 c7 b

# ?7 {8 U, d( n) `( Y谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
  C2 ~/ s* e, F) S# L0 o5 G* A2 c) i3 e7 O

1 r9 m9 j) l8 n" D) T: y# \你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西. |( Y) Q  ~6 N/ z" m5 E
1 Z# _4 c0 I' H; L. G
这应该怎么解决啊??请大哥指点一二。谢谢了。9 _1 ~8 a! u( X( ~& s

% a- G# i; H; C& L7 y8 b
  1. 3 Y% [8 H) q$ {; J0 V& |. K0 M; V
  2. 令: wxssh-tt
    ! R0 J$ ?5 P3 j- x1 p& H( n5 m
  3. 选择对象: 指定对角点: 找到 1 个
    5 H4 x. Q6 C. x$ ]
  4. 选择对象:# {$ n% D% A# O9 x" a
  5. ._select
    % E# n# ^% `" Y) b# L) L) y3 ^
  6. 选择对象: CP+ ^, |# z$ [  W9 `
  7. 第一圈围点: none* P, u; |! c% ^: e
  8. 指定直线的端点或 [放弃(U)]: none
    ' w# j" K" h# J, u/ I( h1 {
  9. 指定直线的端点或 [放弃(U)]: none$ d  h, X* h" P: V/ i" ~& |; i
  10. 指定直线的端点或 [放弃(U)]: none
    * V3 C$ |7 X! s
  11. 指定直线的端点或 [放弃(U)]: none% D! U9 l$ {8 Y/ {2 q
  12. 指定直线的端点或 [放弃(U)]: none, d  H% |5 O  _$ n! q7 Q
  13. 指定直线的端点或 [放弃(U)]: none
    / U" p$ m8 u9 L. M! [
  14. 指定直线的端点或 [放弃(U)]: none8 O! T1 z* J# A# H6 a6 g
  15. 指定直线的端点或 [放弃(U)]: none
    " M9 T1 V! S3 o6 J. \  J- X  m
  16. 指定直线的端点或 [放弃(U)]: none
    1 i% _& O2 w" i7 G$ J! ]
  17. 指定直线的端点或 [放弃(U)]: none
    " Y. _4 j  Z" y* D) @# u" m
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    7 y  {$ c7 W: k* J6 z
  19. 选择对象:2 Y: E+ b* `+ u1 Q" R
  20. 命令: ._vbarun 正在初始化 VBA 系统...& g$ n6 I7 l- U! \5 @% c- w; q
  21. 宏名称(M): tt 执行错误
    . f0 I5 w# S1 k! e$ d! e3 V0 x
  22. 命令: <选择集: 476>! z: j$ Q- U8 U- W# W8 i& B) [" m
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。2 g" Z( f6 g9 T5 W
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。. j) z. {; k9 j
  25. 命令: -1" W; q% H1 M3 y. e3 t) z
  26. 7 p" C3 z" M4 z, U3 W4 W+ O: W; }
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
" N9 h1 f" H, t$ w1 I% q, m6 y$ Z- `" D/ q
宏名称(M): tt 执行错误
% ?; H1 U+ j  l% L& |) V! Q
( }- R% q- M. ]9 ]把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
3 C7 G* k  Q3 _0 y5 z, G( e+ I4 n! ?: @" {* `% A1 N* a4 ?: X6 M
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,! i7 L  K! z! t! n4 {# c

8 J6 ]$ w( B6 O' a; @& [按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()) w4 m( u* w+ o* d' B

  2. ; G0 G" a  a! L# o" m
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.2 d+ ^8 S/ m9 H  L! {3 V# u
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
  E6 u7 S# C, D加载的方法是:点出"工具"菜单下的"加载应用程序..."3 V4 J0 r  B3 f% g6 J
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia # S" w/ W3 o' L( \0 L# v
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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