三维网
标题:
如何做一个把所选图形别存为一个文件的命令???
[打印本页]
作者:
hellojaby
时间:
2011-4-15 14:09
标题:
如何做一个把所选图形别存为一个文件的命令???
先上个图,看图说话,
' f" A" c. e2 `8 w, J
8 {0 F! i; J; {; r7 t; H
如何做一个把所选图形别存为一个文件的命令
; q. H$ m9 {5 T" R0 J; ?
l8 y" w. w! u0 o
请各位指点一二。谢谢了。
$ v& @, Z! X+ s9 S2 o+ P9 k
0 `! h' ], J+ D5 M( h5 Q' n
' X. ]; B- A" q5 _ a3 i2 `8 N3 f$ S
我在网上搜了一下说W命令可以,但是用那个命令文件名还是得手动输入,如何才能自动点呢????
, e# M. S: L w; o) m- f
8 k/ u7 f: g+ e. T- k t# g/ Z4 y
[attach]1875264[/attach]
作者:
hb-park
时间:
2011-4-16 15:09
使用写块命令即可
作者:
woaishuijia
时间:
2011-4-19 09:57
1#
hellojaby
! q# C/ h- n; e; Q
请上传DWG文件
作者:
hellojaby
时间:
2011-4-19 13:59
3#
woaishuijia
. u3 A l7 f0 v+ o
) ]! k _ h, S+ w; b+ m9 A0 M
您好,现在我上传的就是零件的图,每个零件上面的字是零件名(Name图层)。现在是想让每个零件都存为一个DWG文件,文件的文件名变成零件名子,不知道怎么样实现,用W命令虽然可以,但是我有些图有几百个上千个零件一个个手工做起来太麻烦了
作者:
woaishuijia
时间:
2011-4-19 16:16
本帖最后由 woaishuijia 于 2011-4-19 16:24 编辑
2 H/ x) ?- X' c
3 \+ `: E3 p/ @! d# M. `
你准备用作零件文件名的字符串中含有非法字符,不能做文件名!
5 \2 S) O. o& z9 W+ S g
如果保证该文字中没有非法字符,可以参考下面的代码(VBA)
8 r6 h. }' C7 J1 O1 r' D; h- A
4 Q6 Z) R9 \" g1 d
Dim SS As AcadSelectionSet, E(0) As AcadEntity, S As String
" |" Q7 s# p0 j% F$ ?8 C; P
'创建选择集
# s* L# e/ B- a' p7 F N
Set SS = ThisDrawing.SelectionSets.Add("SS")
2 c# v6 q/ C! D$ h# ?2 M, K
'由用户在屏幕上选取零件图图元,包括准备用作文件名的Name图层的单行文字
5 U0 A6 p. j4 W0 ~/ j; }
SS.SelectOnScreen
+ c; C8 ]8 y3 U: H( t; V' w
'遍历选择集,查找其中Name图层的单行文字
6 m+ l3 `% s9 {' M2 {, J9 @ X
For Each E(0) In SS
/ r. J0 `: X H! Y* X
If E(0).ObjectName = "AcDbText" And E(0).Layer = "Name" Then
. k7 F( j2 @6 R% b% G
'找到文字后提取字符串
9 ?# Y7 _4 S, d7 I/ l
S = E(0).TextString
; L# z2 ~$ L% J& ~& `# Q
'从选择集中移除该单行文字,在新的零件文件中不保存它.
4 U) O5 I2 d! s
'如果在零件文件中需要保存该文字,则删掉下面这行
) D5 V& h3 s3 [" z
SS.RemoveItems E
- y0 G. w h" I
Exit For
& E0 N( C- i7 K6 f
End If
* C5 u" \+ ]5 I2 H# c6 G
Next
2 n! e: Z6 \& |. v1 y) P5 _
'调用写块方法在新文件中保存选择集中的图元,路径与当前文档相同,文件名使用从单行文字中提取的字符串
9 L) L: }) x& c" ^6 `9 }) R
ThisDrawing.Wblock ThisDrawing.Path & "" & S & ".dwg", SS
3 |) R9 } k3 t" V
'删除用过的选择集
; t k7 p( S3 P9 R6 E% P/ {% A+ D; U
SS.Delete
! A* [9 b: k2 }4 e$ D5 j
复制代码
作者:
hellojaby
时间:
2011-4-19 18:35
5#
woaishuijia
|" m" H7 O8 {! q5 W4 a
* U1 w) N0 K* Q8 C
9 Y* Q! L- T2 `- p: ~8 C$ a
你好啊,大哥,真是谢谢你了, 不过你能不能教教我这个东西怎么用啊,我实在是不会用这代码怎么去实现功能,谢谢。
作者:
www1974
时间:
2011-4-19 22:59
6#
hellojaby
* g; x- }6 R/ U+ }* |" z* c
借用上面的VBA,加载附件的vlx后,运行wxssh-tt,可以自动批量导出。注意斑竹提示把斜杠用其他字符替代。
作者:
hellojaby
时间:
2011-4-20 08:26
7#
www1974
、
: t, W) `& T) p
/ X* y& y+ ]& n% L- p; T. u
& l5 m( f' P: A; `. L( V
$ h# a* U* }0 F6 v
谢谢大哥了,真的很感谢你们。
作者:
hellojaby
时间:
2011-4-20 08:49
7#
www1974
4 B k# C8 R0 u
% b! g% c. e& ]* @" s; d
' C# q- D$ K# K4 w+ K( }/ H; M
你好,发现个问题就是我在运行的时候不成功,我把“/”分别给换成“-”和“&”试了一下,都出现以下的东西
. _% E% R, H0 L" V
1 J# M. w& b3 l& ], m& L- I% v) ?" l. |
这应该怎么解决啊??请大哥指点一二。谢谢了。
. D! T2 N6 F& \: V1 k
, ]5 [: A" _4 G; k
D& M3 p) t7 l9 x2 l' N
令: wxssh-tt
, Z: m1 y0 T2 q+ L) R2 R
选择对象: 指定对角点: 找到 1 个
1 I( W. T" \ l: p
选择对象:
' ^7 A6 g+ N5 |& G5 d% N
._select
6 x# d0 ~- `6 D1 Z, j1 l" P
选择对象: CP
5 A0 H$ ], D; `/ @, N- P/ m6 e2 H: A1 Q& Y
第一圈围点: none
# A, N2 t7 e; T, T) l! N' q
指定直线的端点或 [放弃(U)]: none
& B1 w% c8 u1 B* j6 O! X
指定直线的端点或 [放弃(U)]: none
9 P1 n- N4 K; F/ M7 V! Y
指定直线的端点或 [放弃(U)]: none
8 e3 q# }+ l8 L9 |' F7 b
指定直线的端点或 [放弃(U)]: none
2 K3 k$ @1 }$ q
指定直线的端点或 [放弃(U)]: none
' ]/ K& H; g8 h( A$ o1 D7 ~
指定直线的端点或 [放弃(U)]: none
2 Z+ S. \% }; W# u0 j
指定直线的端点或 [放弃(U)]: none
# L$ A. r- } b! i1 Z
指定直线的端点或 [放弃(U)]: none
; ?" y. j3 Z2 o; U9 p! @
指定直线的端点或 [放弃(U)]: none
6 ^* d/ M- m* b
指定直线的端点或 [放弃(U)]: none
8 B2 o1 ^( g9 r! m: D
指定直线的端点或 [放弃(U)]: 找到 3 个
, `, `0 X N: c) R3 f
选择对象:
& J- `' i. g" g9 r5 P3 q1 ?/ F& h
命令: ._vbarun 正在初始化 VBA 系统...
^% j$ _- Q) Q& f: Y5 ?( L0 \
宏名称(M): tt 执行错误
, T8 d5 Y- @! D6 }2 `
命令: <选择集: 476>
* ?8 {- q; {3 v8 Z% Z; S5 a
WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
- M9 Z( O$ J& ]
命令: WXSSH-TT 未知命令“WXSSH-TT”。按 F1 查看帮助。
* r" x y" M. I3 v/ J
命令: -1
! M3 Z6 y0 S* `3 N
, _# V+ l. g9 K
复制代码
作者:
www1974
时间:
2011-4-20 20:26
命令: ._vbarun 正在初始化 VBA 系统...
0 ^! \4 _/ H6 H& Z5 [
2 h( j0 ^' x7 ~
宏名称(M): tt 执行错误
( [6 a# `9 d% D$ {% @9 F. @
6 I$ M* X, _ P, z% Z
把斑竹的VBA定义宏tt
作者:
hellojaby
时间:
2011-4-21 09:18
10#
www1974
1 F) Y3 [6 h( n$ K4 Z& x
" U! @5 U; } s- m6 d( G8 Y. H" l
大哥我还没懂那个怎么用啊.我用2005和2008的都试了,
' K) K( _# H* a
( w3 u' c6 t9 Z# a$ k
按你说把那个加载到VBA咋加载啊,这方面一门不门啊.多指点指点一下,谢谢了
作者:
woaishuijia
时间:
2011-4-21 10:16
在CAD图形界面按"Alt+F11"(高版本可能需要按两次)打开VBA IDE界面,双击"工程资源管理器"中的"thisdrawing"对象,弹出代码窗口,在其中输入"sub tt"(没有引号,注意中间有空格),回车.代码窗口会出现
Sub tt()
; X0 q+ k$ @( D* y
# d1 L, C7 n) X( n9 c# ]
End Sub
复制代码
在中间的空行粘贴5#的代码.回到CAD图形界面,按"Alt+F8"(高版本可能需要按两次),在弹出的"宏"对话框上点击"运行"按钮即可运行程序.
8 r: ~! L* v1 h0 O' R( z2 b
上面的VBA代码是一个输出单个文件的程序,加载7#的LISP程序后就可以自动反复调用VBA代码,从而批量输出零件文件.
+ A) f4 D, | F9 w5 ]: \6 P
加载的方法是:点出"工具"菜单下的"加载应用程序..."
7 {) l9 R L% j0 z! x( a A
在VBA IDE界面,点"文件"菜单下的"保存",把VBA程序保存为".dvb"文件,便于以后使用.以后使用时加载的方法同上.
作者:
koutx
时间:
2011-5-22 14:59
12#
woaishuijia
+ D" U2 u+ Q& q n
谢谢版主
欢迎光临 三维网 (http://www.3dportal.cn/discuz/)
Powered by Discuz! X3.4