QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
" n* U/ ]5 b  ~! O8 p5 a  Y: ?2 ]) N2 G7 W
如何做一个把所选图形别存为一个文件的命令, {$ O6 v! p. p$ b
8 N0 J+ x, X8 V" O
请各位指点一二。谢谢了。
& X  `2 K: D; X8 Z5 F6 O$ Y
! n4 a/ Q$ s" `" Q5 o& W5 a3 N4 V8 ^9 P
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
" {6 u$ O* V# {& l; F
, d0 ^6 @- ~0 i8 m8 | ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby 6 m/ C( D% j/ z+ U4 g
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia ' H1 K2 N& c* g8 v0 w: m

  h; r; e" Y/ P3 r7 K3 u! N您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 ; R# o1 r" T0 v, g) z' e

( {9 p+ N5 P9 X6 f) |" f你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
0 s3 G% S$ T; `6 b0 a2 h如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
$ z0 d# s6 j) Y7 ]( C
  1. ! s: e) ?. V0 h4 V
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    3 I1 r. T% J9 Z- L' q1 Q
  3.     '创建选择集
    ' E; U' N2 O- x! W0 ]) t9 t
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    $ ?  [5 O" s' t
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字  a( z. o' }1 q
  6.     SS.SelectOnScreen4 ~. [9 P; k  l0 s; ]2 U6 t
  7.     '遍历选择集,查找其中Name图层的单行文字
    8 K5 P! N3 T3 U- E
  8.     For Each E(0) In SS
    6 _5 G% z7 ?& f$ p' o
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    $ V, R1 G: |% p1 A3 H. U% e
  10.             '找到文字后提取字符串! H9 {; i9 L2 W: S9 S. E0 P
  11.             S = E(0).TextString
    ) |$ M& v! }/ K- |: c% {9 d
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.7 C0 Y2 l1 k! m! [; s8 i
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行# n8 K; k( \: R0 q" v7 ^
  14.             SS.RemoveItems E7 ~  e1 w) q7 b4 _% I" D7 m# ?. k! l
  15.             Exit For
    $ A% g" Q- b1 o7 u
  16.         End If
    3 L8 A- _: ], J% L8 W
  17.     Next
    / g: z' a3 g, V9 r4 s
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    & A" u/ v% [) f; _) W# k1 Z. v
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    - x3 R. H. L! }8 x
  20.     '删除用过的选择集8 Y- i, K) b5 _) _' ?
  21.     SS.Delete0 F+ I1 w. l/ }; M  H; f- b4 p% Y, W
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia . ]. F- K: Y0 _9 n: k: h

- u$ v. o! {8 w  t6 X* j
1 J* u/ c7 G3 e( k3 _你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby 5 r) d& {. a6 d4 l: p
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974
# s4 E+ ~* q7 x2 s
% q* M3 h' P2 b) E9 T' Y  _. W2 t) c7 x9 h' N' L
$ M4 q5 G5 t0 @2 n$ o6 a* F$ F
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
# j. I. P: t7 ?; K# b! H/ U
( N3 U8 o" A4 u0 |
4 V4 m' q4 q" @+ D4 L你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西# z' z  C3 G! ~5 J6 O

' l, T8 E  K, f! |' V% e7 w这应该怎么解决啊??请大哥指点一二。谢谢了。
" b- Q) a! S! z) s; \& w/ [- b  h
: E2 H7 J6 {1 P* e9 N* H! s
  1. , I/ y5 h9 d. s' ], w
  2. 令: wxssh-tt9 ?& C# g! q6 R$ y7 C
  3. 选择对象: 指定对角点: 找到 1 个
    : h6 g" p1 `" G7 a* y4 v
  4. 选择对象:
    8 }/ @  z1 W" m. E
  5. ._select
    ( D/ B2 p( S, n% G
  6. 选择对象: CP
    * O5 W) d* B' h, y6 v) p$ c0 M
  7. 第一圈围点: none
    9 |7 V+ X5 {1 ]8 N/ M+ F
  8. 指定直线的端点或 [放弃(U)]: none5 O& i+ X- O$ n7 _
  9. 指定直线的端点或 [放弃(U)]: none
    % E9 K3 K; Q. ~: v- O, R7 |
  10. 指定直线的端点或 [放弃(U)]: none4 K! ]7 e! k6 J# R. k1 r# G
  11. 指定直线的端点或 [放弃(U)]: none- `: Z4 l) M3 v1 C
  12. 指定直线的端点或 [放弃(U)]: none
    0 e2 J* }/ v1 O5 Q7 o9 @
  13. 指定直线的端点或 [放弃(U)]: none
    $ ~' `) t( l9 T8 y. A1 y
  14. 指定直线的端点或 [放弃(U)]: none; c9 G# `  ]9 g% c) u9 j. A1 h. s% e; D
  15. 指定直线的端点或 [放弃(U)]: none( D  y3 V+ t% T8 |! o7 q
  16. 指定直线的端点或 [放弃(U)]: none
    ( g& k. o* P' D& a6 |2 f( z
  17. 指定直线的端点或 [放弃(U)]: none
    ) q! k5 \1 H8 n" s
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个2 d+ d+ Z' T( c$ }- C& |, T: U
  19. 选择对象:: f" p1 q9 b5 G3 v6 i
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    8 k3 Q, n7 E- b( ^6 R  S$ H
  21. 宏名称(M): tt 执行错误5 E) w6 G/ v( u/ G" f/ p
  22. 命令: <选择集: 476>
    7 t  D1 v  Y  ?% X+ O( {3 G8 E
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    * n2 Y  J! P! k5 e1 G4 N2 S
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    4 V1 {- u. F6 \) U7 X9 u. G1 M
  25. 命令: -1
    0 u& m- P6 d1 E
  26. $ `9 ]6 y& L( l! p8 F
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...$ ~% i' D7 H/ Q

( l/ a1 U# v3 ]) X9 O& j& a( @宏名称(M): tt 执行错误
; m& b$ P: E8 b  x3 y! U& I) @* v- B& ]" S- H+ n9 C3 _0 o$ X3 j
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 9 U5 U) {4 n4 g7 E+ i9 f$ G

, I) N& @- j2 t' q8 O5 {大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
( u; i" m3 V6 a- \' Y
& Q" }/ c0 @$ U) y7 ~4 }按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    6 o6 l& D: C' h, M8 T7 m, m" P
  2. 2 ?2 Q9 O. \# j8 ^; U
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序., [, q) W3 a" M
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.$ O- W+ O! R) d4 K; |
加载的方法是:点出"工具"菜单下的"加载应用程序..."' I, Z" _/ ]6 E! d) U
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia 3 X  K6 i0 b3 m
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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