QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
' C/ F, ?8 l3 \+ B4 J2 Q8 n: O3 X$ o0 L! G3 L# q+ J
如何做一个把所选图形别存为一个文件的命令
6 j6 A! l/ f' x9 A6 d. E" D& x3 ]+ i, S8 M! k  d* i
请各位指点一二。谢谢了。
$ d" X- {$ q3 D
6 |; a0 x. w# C5 B4 C
3 o" X4 E6 P8 H! B$ ?2 j我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????  G+ t4 i" f8 L- D* [

; S, S% o' F8 M# `: u8 ]' | ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby ! L! r% q' a* ~
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia
+ {) A$ x' A5 i2 o& L3 [5 R6 O1 ?; s% H) ]# U
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 $ j7 b0 D: z# E$ ~# b

6 f% v! O# S7 D( z' Z5 u你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
/ S+ ^7 ^& ]. V  k' f+ W6 O如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
0 A  E2 g& H; x( P  ^4 s$ h0 E! u- o
  1. ( r5 Z. I/ q% @
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String# s6 r7 t7 y0 p
  3.     '创建选择集9 @+ d7 R( P) _& E- n* `. d
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")" C4 ~% P$ s! k& u3 Q2 v- D6 l: K
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字4 O5 M, ~$ w& `3 B/ [- r$ `
  6.     SS.SelectOnScreen
    # Y: `9 w! I1 b) }5 c
  7.     '遍历选择集,查找其中Name图层的单行文字2 c' H- D) I' K) `
  8.     For Each E(0) In SS$ u$ i! _" i/ f, V$ p$ T6 E' J
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    7 C0 |* M) i5 t9 X- w9 Y
  10.             '找到文字后提取字符串
    " [% x% e7 j' f. D' m# h
  11.             S = E(0).TextString
    % ~3 R; e/ y+ ~! L7 I
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    0 a9 B$ Z$ h0 j# V" ]- A2 W. C; W% n$ i
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行
      B1 {9 Y, E% R8 c  E1 T+ v
  14.             SS.RemoveItems E
    & ?+ i, E9 u& |( @$ J' l
  15.             Exit For
    7 w" F2 ~' ]) Z& c
  16.         End If
    ) P$ u. u$ b4 p$ x7 A2 O( r: d
  17.     Next
    ) @' ?! C% Y, p
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串: ~) J3 g$ `' S% V
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    ! a" |: h; t* k% e
  20.     '删除用过的选择集5 ?3 o$ X% Y1 a9 C; i: [
  21.     SS.Delete
    ) J$ `& z+ j% T- A" M9 c0 d
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia 6 k3 p, M* X2 @/ p9 R
# v1 e7 j& J% p' e! d) ^! M9 k+ C1 X
0 R3 e- P' ^0 |7 C
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby + R$ y$ `- _& [6 M* o, A; t; F
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974
3 @% r2 E3 v: l1 A" j1 c/ q. q2 j4 t4 |% R: v& r
1 N/ D/ Z# }$ e) O2 o

% z$ m) n9 o+ `7 X谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974 ) v# E! B7 V( {4 q. P  @4 Q$ t
% \: X' I0 @6 ~2 d7 z. P( }5 }5 V

, }/ k% |4 Q' h% t  i你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西" P& d6 b( p% t5 [
  R" D- |: k. ~  {! X* k
这应该怎么解决啊??请大哥指点一二。谢谢了。
  S# \% c% |9 F# o$ r1 n' G2 O
. D; ^  l" q: F$ e) U- @7 C& a

  1. ' J+ r/ w- D9 g) L8 d6 i
  2. 令: wxssh-tt! R0 Z' n! h, y+ s
  3. 选择对象: 指定对角点: 找到 1 个
    4 {% K6 S7 F) h7 f/ Y
  4. 选择对象:( m' }+ |$ v/ d3 B) i' l& {7 @
  5. ._select
    ( o7 x4 k- k7 j3 y( t+ D
  6. 选择对象: CP- m3 r) d/ G( b3 r& r
  7. 第一圈围点: none
    ) j6 p- [9 Z  A/ V
  8. 指定直线的端点或 [放弃(U)]: none
      l% M: y  `/ g- }
  9. 指定直线的端点或 [放弃(U)]: none1 i' ?; M! b' R# b. P
  10. 指定直线的端点或 [放弃(U)]: none+ K& o* G* b8 ?$ G8 L  c
  11. 指定直线的端点或 [放弃(U)]: none
    ) k: Y3 m" C5 z2 H" C
  12. 指定直线的端点或 [放弃(U)]: none5 e( T/ I, f% c* n
  13. 指定直线的端点或 [放弃(U)]: none
    + d( v& _* _) o7 r) w# u' T. R
  14. 指定直线的端点或 [放弃(U)]: none
    # \% v. K% c' V* d: G
  15. 指定直线的端点或 [放弃(U)]: none
    % c$ k7 L8 d" P% [9 L8 G/ |* g
  16. 指定直线的端点或 [放弃(U)]: none* a! h* `' N, N' X. R
  17. 指定直线的端点或 [放弃(U)]: none
    7 x7 v6 P% d+ x8 {+ d
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个
    + ^# w0 `. ?7 C! R  C2 e
  19. 选择对象:. d6 u1 p" f% \8 b! |
  20. 命令: ._vbarun 正在初始化 VBA 系统...% t1 G! n' G' f3 r3 B. L. ~
  21. 宏名称(M): tt 执行错误
    ) }1 Y3 w$ o2 y6 t1 ^9 K
  22. 命令: <选择集: 476>4 I  }% L' X* O4 t. r
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    3 h$ C( T- Q5 G
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    & J: |" J: v; l  Q: ~# p5 {
  25. 命令: -1
    , o: u! D9 \  o' S0 a- O9 W

  26.   Y/ b4 f& C$ d. Q3 q
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
4 @' O5 g: P4 y/ o$ F3 t* S- s% @! ]( V0 J" K
宏名称(M): tt 执行错误
) z9 E# F5 U3 H- P3 }- R; b, Q
2 s) h+ W- c+ o) P! n! I+ q" B& Y把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974
) V! r) g; ]$ j5 G4 G- O  w+ R& C, f$ Y3 [
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,; e3 H( C- j& j9 e% ~, ^4 w. C. n4 [

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

  2. + L" S9 K8 R2 W, X7 h# t. |
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.0 k3 l5 e! e6 z1 i% X& r& T
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
# ~! S4 K- U  U7 ]3 {2 H加载的方法是:点出"工具"菜单下的"加载应用程序..."/ P+ D7 |% X9 N2 w1 o
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
) Q. g1 B+ g7 P. H9 J. |. p谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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