QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 3486|回复: 12
收起左侧

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

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

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

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

x
先上个图,看图说话,
+ h' Z( P) z& R
8 y5 ^7 o# \9 l如何做一个把所选图形别存为一个文件的命令7 T1 G) f; D6 `- R* n
# b: X) t+ D& i- Y3 v
请各位指点一二。谢谢了。
2 r/ `% T4 J3 e- }
$ i- }- I6 c% g: G# S7 U3 x4 r0 {8 |+ t) j5 z/ Z
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
2 q" V( O7 c% N- C; D- f9 ~( D# G4 Z+ u
ssss.JPG
发表于 2011-4-16 15:09:37 | 显示全部楼层
使用写块命令即可
发表于 2011-4-19 09:57:36 | 显示全部楼层
1# hellojaby ; _4 Z* q- q# z4 g* A: {# ^
请上传DWG文件
 楼主| 发表于 2011-4-19 13:59:58 | 显示全部楼层
3# woaishuijia 5 J3 x5 {( k# G% b: [  q: y

7 T, f) N# q4 P# A8 X0 W您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了

partdwg.dwg

38.27 KB, 下载次数: 9

发表于 2011-4-19 16:16:16 | 显示全部楼层
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
' f" e$ ^' D4 c$ u3 u
6 X1 ^- `2 D2 e8 \4 o8 u8 }4 d你准备用作零件文件名的字符串中含有非法字符,不能做文件名!2 z! c6 a8 P6 h
如果保证该文字中没有非法字符,可以参考下面的代码(VBA); q3 n& ~3 r8 \/ v# Z

  1. + Q* k- b- c: Y8 d! A
  2.     Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
    ( P) s! H$ ]) O  T( c
  3.     '创建选择集( ?3 P" y; T: C" z/ ]
  4.     Set SS = ThisDrawing.SelectionSets.Add("SS"); D* W) H9 }! J( Q4 [
  5.     '由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
    8 |+ R3 r( x# y. S
  6.     SS.SelectOnScreen" d; g/ Z9 h- ~9 U* n) D1 T
  7.     '遍历选择集,查找其中Name图层的单行文字" x. w# l7 ^' f2 A' L) h
  8.     For Each E(0) In SS
    0 z( ]. v2 m2 i% F8 Y  \$ U
  9.         If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
    3 k4 z1 D& L& F, X
  10.             '找到文字后提取字符串/ o' b$ N* K1 x0 N5 t" I+ M8 k) d
  11.             S = E(0).TextString
    / K! ~( U, |# d# m& t
  12.             '从选择集中移除该单行文字,在新的零件文件中不保存它.
    5 V8 V; r) o( k, X) q1 p
  13.             '如果在零件文件中需要保存该文字,则删掉下面这行, V( Y: `: J; e+ g: K6 {% O. {
  14.             SS.RemoveItems E
    # p: q, @- o/ D
  15.             Exit For: {1 ]# h. q$ n' r" `# H3 R9 b
  16.         End If
    ' @! k1 k" z1 |7 o) ^
  17.     Next
    ' C6 G1 o" p- r
  18.     '调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串0 t. a7 L2 }, F
  19.     ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
    * K. }+ J3 Z/ w
  20.     '删除用过的选择集
    / L0 K) W  f4 u/ h
  21.     SS.Delete7 u, g0 r; K0 m5 f
复制代码
 楼主| 发表于 2011-4-19 18:35:38 | 显示全部楼层
5# woaishuijia 6 P2 h6 _: i6 H) t7 Y2 Y$ o/ ?

) Y" S  v! S  v; Q$ g, W' T# b5 _6 j9 v5 N5 S2 Y
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
发表于 2011-4-19 22:59:01 | 显示全部楼层
6# hellojaby
' V) D( Z0 F8 I1 H, r借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。

wxssh-tt.rar

992 Bytes, 下载次数: 6

评分

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

查看全部评分

 楼主| 发表于 2011-4-20 08:26:35 | 显示全部楼层
7# www1974
- n$ [7 }1 P( R( m
5 i8 r5 n% I7 Z1 E
* a  j( v+ \. K9 S" d+ l* r+ P8 z" w
谢谢大哥了,真的很感谢你们。
 楼主| 发表于 2011-4-20 08:49:07 | 显示全部楼层
7# www1974
9 m' E8 D9 c1 M* d
5 Q* }4 j+ K) u5 D* E! N$ W
7 Z6 o4 N! d7 T' U你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西. X! ~$ X' b3 o5 f: n" ]
& ~1 m) I; v, W) T+ E
这应该怎么解决啊??请大哥指点一二。谢谢了。) E, X0 @  q8 ]1 _3 `% e

  |2 F* u' Y9 a2 k; X3 o2 R4 n
  1. , T6 {' _9 T! @
  2. 令: wxssh-tt
    # q+ q, ~$ C* T" F5 w
  3. 选择对象: 指定对角点: 找到 1 个
    7 b0 v; Q& y% O5 O1 j
  4. 选择对象:& ?. y7 l+ V* U/ _. V9 h, j0 o8 j9 W
  5. ._select. `7 C8 r2 b- B
  6. 选择对象: CP/ K2 G# o6 L, x6 M/ J) `
  7. 第一圈围点: none
    3 n! n& e% {) U2 h
  8. 指定直线的端点或 [放弃(U)]: none/ Y& O" t; F4 i& s: @( z
  9. 指定直线的端点或 [放弃(U)]: none
      N& N. Y* J- A: |
  10. 指定直线的端点或 [放弃(U)]: none1 X: K# ]4 r8 e7 G8 o' X
  11. 指定直线的端点或 [放弃(U)]: none6 s' h* Z, Q* j" {8 x$ S
  12. 指定直线的端点或 [放弃(U)]: none7 ~! Z2 W$ k: h
  13. 指定直线的端点或 [放弃(U)]: none6 j* u0 B- V4 U* I* e, h4 D
  14. 指定直线的端点或 [放弃(U)]: none
    3 J7 Z1 B  {- Y& c( i
  15. 指定直线的端点或 [放弃(U)]: none" c$ [; }+ d; f) _. f
  16. 指定直线的端点或 [放弃(U)]: none
    + L- E2 L1 R9 v& n: I+ Y2 e
  17. 指定直线的端点或 [放弃(U)]: none( y* P5 G* x0 A! d" ?0 E
  18. 指定直线的端点或 [放弃(U)]: 找到 3 个3 _5 f" K' G9 m# f! ?9 \, Z
  19. 选择对象:
    1 B9 {! K0 d4 v) u$ L
  20. 命令: ._vbarun 正在初始化 VBA 系统...
    $ y. Y2 N  ]4 c4 D
  21. 宏名称(M): tt 执行错误
    5 [3 Z7 C; R  H
  22. 命令: <选择集: 476>. |. `: r- x$ ^* h
  23. WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。/ j2 Z0 `$ b$ C. I) \/ d: L* S
  24. 命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
    / J3 S# ]  B% i
  25. 命令: -1
    " B* A6 ~( P" q; g

  26. 7 N! K/ f7 t; u4 [. C
复制代码
发表于 2011-4-20 20:26:34 | 显示全部楼层
命令: ._vbarun 正在初始化 VBA 系统...
5 ]  m4 j( h9 o  }- T  k9 Q8 T/ m0 H: w
宏名称(M): tt 执行错误8 U9 y5 q% w: ~2 b4 t

( Z) y: Q% q! v把斑竹的VBA定义宏tt
 楼主| 发表于 2011-4-21 09:18:30 | 显示全部楼层
10# www1974 7 w6 [- ~3 z% b0 x- d' k0 P
5 L3 B, w3 X1 m: J: D  c
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,1 U! g6 Q9 F. R  X: w8 B9 h

+ R( J2 W# M! `0 H9 W5 x按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
发表于 2011-4-21 10:16:58 | 显示全部楼层
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
  1. Sub tt()) H3 [: ~7 O! c4 E

  2. 0 ^' n! P: ]. d- \1 B& h" \
  3. End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
/ u& ~( n) m  l' A7 Q( f上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
" M! P( c* X0 _" d# K加载的方法是:点出"工具"菜单下的"加载应用程序..."6 ]. |; M. C5 _
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.

评分

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

查看全部评分

发表于 2011-5-22 14:59:13 | 显示全部楼层
12# woaishuijia - x2 }3 M/ c5 X  V' i
谢谢版主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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