QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 3678|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,' [! F9 W! ?  V2 A! [, I

" F' }5 z" l! p& K/ M9 j如何做一个把所选图形别存为一个文件的命令# t0 L  K3 T  g3 }# e( o# f' |- V

% Z, S2 z3 O# g4 u6 e+ g9 X, `) b请各位指点一二。谢谢了。
9 w& N) f: _! V
  p4 B0 ~2 i/ Z/ J8 U( R9 F8 {; d5 P+ W
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????  v2 M' W7 b5 m. h9 W
7 H! |( }) c  U
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
9 C. U$ ?. F$ k: u6 ]请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia - Y* d6 t9 [) c$ X% e" C
& F7 p+ o  N% V4 m' l( |) ?0 O: n
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
% U  J: ?& H: }5 m3 G& x, c7 M
5 N$ W, [/ m) p- O# v* X9 M你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
! D2 n5 \' G" c- E如果保证该文字中没有非法字符,可以参考下面的代码(VBA)9 F" ?2 X8 l( f/ N/ K# D# {# o

  1. 2 ^* F! o) V2 C0 O
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    , m$ u* R# E6 q* G( M7 p0 b
  3.     '创建选择集: y- J' ~/ e' I8 I, w2 z
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    # A# A2 r: i. A0 R% y  I3 b  J
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    # [6 _" }1 C; ]5 U. |+ ]& p; S$ R5 t
  6.     SS.SelectOnScreen
    5 K& ~  m* O* k5 B) f+ ]( |) g, d
  7.     '遍历选择集,查找其中Name图层的单行文字3 Q" f% w# a! [/ A
  8.     For Each E(0) In SS) t& F# z' ]) h+ }' D
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    1 ?/ w0 L  N, s
  10.             '找到文字后提取字符串3 Z1 t# w7 s) N9 Q0 O# J! \
  11.             S = E(0).TextString
    % O, V: F6 ?' ?$ h* g" I
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.( b' M5 J- q& {
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行5 ^2 x/ U6 B4 A" R% \
  14.             SS.RemoveItems E" g8 ?8 k# C- H$ z9 c$ n
  15.             Exit For
    ! `6 k6 h. v) [
  16.         End If
    ) z' h% ~% R' h# A) a/ s
  17.     Next
    1 H; G. `/ p! z
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串- P, |9 c5 Y- k8 ^* k
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    : g, n/ f4 U$ p
  20.     '删除用过的选择集
      R& \/ P: D9 ^2 y; A) A8 p
  21.     SS.Delete  s# q* _# G# P1 a7 F
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
0 G; ]3 _: `# ~' w+ j/ u5 F! e. s
6 @9 i7 |6 n) V  j% `% z
8 J3 i: U* D" ]# a& Q* n8 I3 W. h  R你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby 2 _7 U8 X) `# {) J
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 3 T  W; n/ c) X2 R1 \
! l- {' I. B& s( J# i) L
+ q" d9 C/ Y' b/ @) u* T1 Q3 d

# W4 j% o6 J3 {2 M4 s, [( v谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
6 ~1 t/ {4 h' u3 m# t
( T, a  N& }; `) j* e8 _  y3 M, Z% ^0 N+ w1 ?+ b1 T
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西' r: _' \. Z8 [7 ]4 V0 ]

# Y: E/ }- T/ T/ E5 O这应该怎么解决啊??请大哥指点一二。谢谢了。
* `9 R: L' r# b0 S$ N/ b0 Y9 L3 f: ]& y

  1. 3 L2 U( ^6 e) O. V* H/ l7 P5 J  _0 {
  2. 令: wxssh-tt
    / @7 p$ A0 B- y6 q
  3. 选择对象: 指定对角点: 找到 1 个
    9 O* W/ n& U5 O5 V# S9 s- z1 q
  4. 选择对象:( J" C2 ]( t1 u: z) F; N' q
  5. ._select
    $ d% h5 w9 Y" W+ D: Y
  6. 选择对象: CP
    ; L/ D* _2 F' |
  7. 第一圈围点: none
    : _2 e" U) j8 ~
  8. 指定直线的端点或 [放弃(U)]: none
    + }8 k7 C6 z1 R
  9. 指定直线的端点或 [放弃(U)]: none% W- n+ j7 z6 I! ~
  10. 指定直线的端点或 [放弃(U)]: none5 Y% }" l6 l, {9 A9 N# g
  11. 指定直线的端点或 [放弃(U)]: none: d' w2 I9 J' z2 D; ^3 X
  12. 指定直线的端点或 [放弃(U)]: none1 G" C0 l1 z, n2 }5 t! m
  13. 指定直线的端点或 [放弃(U)]: none
    4 N! I2 c1 O/ x5 S$ O
  14. 指定直线的端点或 [放弃(U)]: none
    2 l' {/ B6 \9 \( k" I) e) U
  15. 指定直线的端点或 [放弃(U)]: none% z- b1 l* a$ O) z( w$ g
  16. 指定直线的端点或 [放弃(U)]: none# h, x5 N( g' V/ u& k- j
  17. 指定直线的端点或 [放弃(U)]: none: V+ d! W1 g- k) J4 K  A  F0 I" \
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个9 ^  _( F2 j3 q. Q( m2 L
  19. 选择对象:
    / h0 u. }( r% X" f8 v6 d
  20. 命令: ._vbarun 正在初始化 VBA 系统...7 K1 ]5 v/ K: E2 [; p* _! o1 a5 ?
  21. 宏名称(M): tt 执行错误
    1 ?- u9 H' a+ K, O
  22. 命令: <选择集: 476># S" ]# x5 `( V  F
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。  n0 k8 S8 U0 v9 v3 h. d& H
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。% H: Q% |! `; g& w
  25. 命令: -1
    , ^8 Z" q1 p0 _9 J
  26. 5 u3 E" M) n+ k6 n6 \! `9 v" A
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...
* t0 }6 |1 W3 M" Z
7 ~4 D6 Q  N# R) S/ s宏名称(M): tt 执行错误
4 |2 ?! H% @' B$ f0 I- k0 D  K: @
; \6 x3 A/ @9 P! i% _6 N9 Z把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 6 _# A0 c5 }* w/ N" C

0 A2 n4 ^$ H/ ^大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
3 R" m/ u% D3 V, I+ W' |
& ?' U! _; w( N8 U按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    4 Q+ D9 T- g$ E4 Z) r( n( `
  2. / `, N5 q- L4 G- k
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.. N6 M2 i/ _) D2 K
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
! I. ?! F: m( C& ?! ~加载的方法是:点出"工具"菜单下的"加载应用程序..."
) N6 i5 c, Z4 n在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia * V7 z0 W4 ^: W; j
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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