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