QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3674|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,
2 C$ n3 s8 F; v+ i9 b/ u; A9 n6 W( T  V0 C; m0 {- z$ D7 K
如何做一个把所选图形别存为一个文件的命令
2 Y/ h5 K- p; v% n
$ J1 S7 K  H1 R请各位指点一二。谢谢了。) f$ a  C+ V- B- ]9 a
. t/ y$ y5 P" Z! T0 I8 m
. m9 [! C3 i% L2 o* k* E  P
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
: |) K6 U' N8 E* ]1 r9 c; T& B  c6 t& V. ?
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层 来自: 中国湖北襄阳
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层 来自: 中国云南保山
1# hellojaby * r) ]) D( z  [
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层 来自: 中国广东中山
3# woaishuijia 0 Z6 ~9 }4 v7 Z( h5 M

- E8 p( M1 n/ ?+ a: }您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层 来自: 中国云南保山
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑 & V, w0 }) K- K( K7 ~, p

1 @. g* ~3 [2 ?9 m! B你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
& F) H) w: p: t$ X4 H- Y如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
( [0 }7 b- V, U; U/ {

  1. ( X9 Z# n- [4 z  Y) A  l
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String5 P2 d8 i0 X/ Y: F* [3 B
  3.     '创建选择集# j& n/ S) K+ q: @) [4 m* ^
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS")
    0 x! ]/ W) V" b1 u3 U3 w0 X  r
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字/ q" f) Z7 g9 O' }0 t/ }: p
  6.     SS.SelectOnScreen/ [/ b8 i$ I9 k
  7.     '遍历选择集,查找其中Name图层的单行文字8 Z4 \" }7 Z/ F  G0 G/ h/ P* q
  8.     For Each E(0) In SS
    9 d6 I/ e& |$ v( ~
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    $ i$ Y% G8 j) J3 _
  10.             '找到文字后提取字符串' G% m+ \% B% t! p- z
  11.             S = E(0).TextString
    ) W$ a& {8 |3 R7 P/ I; ?0 E) i
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.' ]3 C: O3 W; k
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行0 @) {  G8 Q1 M6 U. l
  14.             SS.RemoveItems E0 f4 r  `. ~) V9 N) N# O
  15.             Exit For! J" J3 w" @; Z* ~: l
  16.         End If
    ; y5 S  l% D3 Q. B3 v; Y
  17.     Next( a$ j9 X2 w2 L4 {, q
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
    ! _) i" J; L0 ~; q5 |
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS! e; R4 `1 D) _0 C
  20.     '删除用过的选择集! Y* n7 b& ^  K7 u. \
  21.     SS.Delete
    2 t/ u7 N6 G9 \/ T
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层 来自: 中国广东中山
5# woaishuijia 7 X" N4 G6 R4 m) N
- ^! j4 p( N& d6 v

9 o" z$ z- g. v你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层 来自: 中国江苏无锡
6# hellojaby ; h( X2 H/ P& i) S8 t+ c! h
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层 来自: 中国广东中山
7# www1974 : O; W! I5 [3 S9 p. w' q
  R1 Q! G/ G7 Q0 p
3 y  y5 {! j/ d" H2 Z8 e
3 b% y$ y% n* G9 v& |( z# D- D
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层 来自: 中国广东中山
7# www1974
0 X3 f  y" j& y4 ?2 i* ], }- ?& C# u3 }( |2 ?) P8 s

3 Y/ S) M8 U2 y" F3 l) L你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
% i; w/ K) i) ]5 ?5 v0 v* a
# Q: k: ^; [2 c* h! X  _9 G( P这应该怎么解决啊??请大哥指点一二。谢谢了。. q: K9 O9 u! E8 x7 `/ h) o8 A

, K* n: M' T# ?7 v$ U

  1. , r) K0 x: x6 k& Y. B4 n& x) o
  2. 令: wxssh-tt1 q/ y2 A# R2 Q. U: b2 X+ P# U3 X  ?8 b
  3. 选择对象: 指定对角点: 找到 1 个
    ( G* O& r2 ?0 Z" B2 d( o9 P
  4. 选择对象:8 y; z" n" j2 b- p
  5. ._select
    ' `0 T& a& V4 {" s& z2 ?$ a
  6. 选择对象: CP/ _1 ^" \/ {# v% c3 }, ]
  7. 第一圈围点: none+ [$ M* N, L& n1 [! |# V! e
  8. 指定直线的端点或 [放弃(U)]: none7 z+ L# `6 B  R- i
  9. 指定直线的端点或 [放弃(U)]: none
    % T: y9 T+ }9 q2 d/ k
  10. 指定直线的端点或 [放弃(U)]: none9 Q1 g3 ]9 h1 O+ p
  11. 指定直线的端点或 [放弃(U)]: none
    7 Z6 G3 y9 R) j0 S5 V) D' B3 R4 z+ y
  12. 指定直线的端点或 [放弃(U)]: none
    / E5 U) t4 r5 s& ?8 I  {7 i
  13. 指定直线的端点或 [放弃(U)]: none
    ! t, B. B7 l' [: V
  14. 指定直线的端点或 [放弃(U)]: none
    ! P, F# K0 S; l" M
  15. 指定直线的端点或 [放弃(U)]: none$ j3 p& a9 O; A6 ?; S) x' X
  16. 指定直线的端点或 [放弃(U)]: none
      e- W, ?! |( M" T7 P: {
  17. 指定直线的端点或 [放弃(U)]: none2 p' \5 |' E: C0 X$ G# a6 _
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个. Z+ J, g, a$ Q. a
  19. 选择对象:
    8 |/ D/ m+ ^: C* t
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    4 I' j, F% D1 P) l5 t* P! V
  21. 宏名称(M): tt 执行错误
    $ f& R7 M, @* K4 Q" |# A/ ^
  22. 命令: <选择集: 476>' O" Z( {- P1 y8 Y5 k
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    & Q& a, L% L) M9 @1 {
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。4 p3 Z+ ^* K- t- L
  25. 命令: -1
    " a4 E: ^. t' m; \. n# ]8 j
  26. , k* X* b3 u7 y
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层 来自: 中国江苏无锡
命令: ._vbarun 正在初始化 VBA 系统...1 Z& c; s( |* I4 A* r

* L) x6 B' f' I4 f7 p3 Y5 D宏名称(M): tt 执行错误4 ]7 ^$ F/ w$ G) e4 {

+ a, F% n$ q( L# Z1 M+ m把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层 来自: 中国广东中山
10# www1974 * f6 \& C4 P* f" k
0 W: v! B0 i6 i* ?
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,. E3 M# P$ ]3 k' F- b
( T1 o$ {) A; n- m! J# u
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层 来自: 中国云南保山
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()
    . V% Z6 l' ^) \: A" d" u; w" b) _1 C2 b
  2. ; M7 E3 a  G; t1 b
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
; e2 e9 `- e; m3 j上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.3 y2 f. R3 X1 }$ B1 c, m# K
加载的方法是:点出"工具"菜单下的"加载应用程序..."
0 \0 Z7 z. T, x在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层 来自: 中国北京
12# woaishuijia
9 E+ g0 K& u- w! g4 ?8 ]' @谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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