QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
先上个图,看图说话,
3 `# E5 u( O) F' G) L) f' G
* m) f8 m. a: s* w如何做一个把所选图形别存为一个文件的命令
! B; D& M9 t* a  ?7 X# H  g# }2 T" L9 a2 w; r/ p
请各位指点一二。谢谢了。% Z9 Z3 H6 H8 a! w, }
: n$ {4 Y& Z0 O9 s

, P, Z1 w) c% G1 F0 l: m* J我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????9 e$ H3 M2 ]6 N. A( r/ m+ O2 N

: Y/ n$ l8 ]% L2 t7 C5 { ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby
: b0 H: j& }# v4 k请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia 6 M9 ^4 U7 J' ^5 C3 `
. \' Y1 _5 D) @# y/ z  t+ e
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 0 U/ E3 D" Y' m

8 P) q% W" W( I( }你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
# g1 R" Z( T4 T7 Q/ X; W( X如果保证该文字中没有非法字符,可以参考下面的代码(VBA)! Z1 U2 t: ^- r+ X+ @  P
  1. 2 {) ^/ w8 l: T5 H/ K: T
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String9 T( u& f- e; ^" s8 S/ v4 h
  3.     '创建选择集
    ' z6 Y( z& {% p0 u' I; g
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
      Z% j$ \$ Q% V0 k! \6 |
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    " J! B9 k) S, f
  6.     SS.SelectOnScreen/ W" G3 S( z( ^( p' O4 I) H* \0 p
  7.     '遍历选择集,查找其中Name图层的单行文字
    , m  M, k' B. a
  8.     For Each E(0) In SS9 v& P3 j2 K* M
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then% ]& K9 Y% h! x6 Q4 c  z
  10.             '找到文字后提取字符串
    ' b8 g. P3 r7 K, c& R
  11.             S = E(0).TextString
    1 N' v+ Q$ K9 i9 T
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    / `5 N# i/ T( {/ F
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行# U' |1 [4 `; g$ r/ F0 E
  14.             SS.RemoveItems E% J: i+ x; G' t4 ~+ f% y* s
  15.             Exit For& F0 v& Q9 S$ Q4 `" s; ?
  16.         End If
    : ~4 x, p0 t" w4 {5 U
  17.     Next6 m$ {  ?# L! h& _/ L: y
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    - P' j9 |) a; z" X
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS% g# B2 G9 ]: f4 E2 [
  20.     '删除用过的选择集! J9 ]( w9 j& F# X; F
  21.     SS.Delete# R7 G# z) a! h* ~4 M8 u2 K$ X2 h
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia
7 h6 n, X8 F7 D  J  }' g' H4 C
$ q+ p, ~! |4 C0 B4 i4 l8 q% z
+ u8 X7 @  f! Z2 J+ c: O, @" I你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby
( \% f, z# s/ u3 p; ~借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 4 P  I; v% z. o' {

  E( ~; s" a; H) S" ?* @% V' N6 n, r/ t0 U$ C7 b

) F- k3 \. m3 ~' I* K* _8 W谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
# A- ?; k, W7 Y$ I0 q( [
. S( O/ u- C: f4 }& M2 X% x1 Q  T$ m7 q8 j8 ?  ^8 d% U, [
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
7 I0 f, |% k# u
- _6 L8 ^! d0 y. ~$ b4 M6 @这应该怎么解决啊??请大哥指点一二。谢谢了。
' d1 u/ K9 r3 a1 G) l: |6 U: G$ Z$ ~( h  ^  j# c' D
  1. 2 I* i# S& [/ n; h+ [# Q* D. w
  2. 令: wxssh-tt
    ; u; U; E. v3 z, b: `& P
  3. 选择对象: 指定对角点: 找到 1 个
    : S- B: i! x* E
  4. 选择对象:! Q$ S6 n' C  T, ]2 e- e4 R
  5. ._select" f$ j( a. x* c# t! i/ f0 E
  6. 选择对象: CP9 L" k- ^7 |# L2 A- s
  7. 第一圈围点: none4 Z; l4 b8 m+ Z: \% Y
  8. 指定直线的端点或 [放弃(U)]: none& n: M5 P) A& z7 B3 m, V: o. ?
  9. 指定直线的端点或 [放弃(U)]: none
    8 n6 u# ^, w. `) q. O0 H, s
  10. 指定直线的端点或 [放弃(U)]: none
    : I7 e* N% V! d& X
  11. 指定直线的端点或 [放弃(U)]: none! R) `1 a2 o2 }' x
  12. 指定直线的端点或 [放弃(U)]: none* h2 a/ p  {1 p0 @: q+ @9 r
  13. 指定直线的端点或 [放弃(U)]: none
    4 t* R* s) m( k" `1 Y
  14. 指定直线的端点或 [放弃(U)]: none
    & \: \6 f* E, A# `/ J1 d3 U8 p
  15. 指定直线的端点或 [放弃(U)]: none+ U, A( ?. j  M8 [
  16. 指定直线的端点或 [放弃(U)]: none
    : D, `" l+ W  i8 j
  17. 指定直线的端点或 [放弃(U)]: none( S1 m0 G7 i% d+ Y
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个, b* E1 C* G+ Z) }- T6 z
  19. 选择对象:0 Y7 Z; X) k" J8 x
  20. 命令: ._vbarun 正在初始化 VBA 系统...+ U, k: g- O1 `& s3 L
  21. 宏名称(M): tt 执行错误( U: a8 N+ A: Z* A; {6 t$ b5 s. n
  22. 命令: <选择集: 476>
    9 y/ @: c4 L9 w; g$ S5 ~+ B: m0 B2 s
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。' |! T6 {( c3 M
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。5 Y" o+ ]& Y% v
  25. 命令: -1
    , ^8 {+ M' Q2 l5 ~! B& D6 B; P

  26. , X+ A7 X1 v3 C/ s/ z
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...9 E2 v) f+ K1 ~5 u) J, d" P$ V
+ ~- {' Y0 \* N
宏名称(M): tt 执行错误' j( p+ d. s% E- k
+ T* ?+ y, e2 j+ \2 C8 Y3 x" K0 H
把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 : h) \; Q/ K  Q+ p7 G6 G
. X7 \- q  U, K9 N
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,7 }. E& f" Q% E8 b1 y5 L6 M' d

5 f* @& A! }" X按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()) ~* e. n; T2 S% R6 Q
  2.   ?( y5 N' Y1 q% ^3 K
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
& y0 d3 r3 c( b& N上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
( _4 F2 A7 n( ]7 I$ T加载的方法是:点出"工具"菜单下的"加载应用程序..."3 n; r+ r5 }# \2 D
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia # J5 a5 Y1 k  x! f3 y
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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