本人以前用solidworks,是在操作系统的资源管理器里手工管理零件模型装配体工程图这些资源。办法很土,文件名字以“零件代号#零件名称”的方式命名。所以写了个vba宏,自动从文件名拆出来零件代号和零件名称,填入零件的属性中。
# b0 k7 K* T3 [8 Y9 s7 V! m3 ?9 T% t, _ S3 l" D
最近学习inventor 2017,想用ilogic也做类似的事。发现ilogic的“标准字符串函数参考”文档里,竟然没有 instr 函数。
# P; v$ ?5 A% V+ v/ } i" H5 H
0 u) v8 O# o8 r+ K: w正发愁呢,无意中往代码区写了 instr,发现文字颜色变了!一试,能正确运行!2 M# j' X& d7 M3 H6 q4 `( m5 B/ e
0 U" R, H p' y( S
0 R0 a1 D. z6 A4 f; `* a) n/ V/ a0 R- modelFullFileName = ThisDoc.ModelDocument.FullFileName* v* \; r. a' g( x2 ^2 W
- modelDirectoryName = IO.Path.GetDirectoryName(modelFullFileName)8 z+ `" S6 J% L
- modelFileName = IO.Path.GetFileName(modelFullFileName)7 ]8 _3 T/ V" _% S
- modelFileNamewithoutextentionsion = IO.Path.GetFileNameWithoutExtension(modelFullFileName)
* i( y: e2 r2 ?! n, w0 m& c" ^ - 'MsgBox( modelFullFileName )
+ Q2 B4 p! w$ `4 l+ [. x& t% W - 'MsgBox( modelDirectoryName )
4 a, P6 z' i3 ]) a - 'MsgBox( modelFileName )* l3 s; v2 |7 e
- MsgBox( modelFileNamewithoutextentionsion )
$ N( t7 p9 W' C, w. N* G - position=InStr(modelFileNamewithoutextentionsion,"#")9 S/ _/ j" Q- E6 N! _; T
- MsgBox(position)
复制代码
% r) J% a) b" w估计ilogic里还隐藏了不少这种vba的标准函数吧。文档里不写,实际却能调用。
) p! w$ @1 m: W9 F6 ]; i4 V6 ^% \$ B9 m( N$ J, J6 N
5 ~8 _: f7 V8 Z9 C/ {
" n6 \2 s( D; c5 V6 ]昨晚看《Inventor-iLogic程序设计解析与实战》,第124页,作者也遇到了这个功能需求,只能辗转遍历字符串逐一对比,相当于自己写了一个类似instr简单函数。当时是inventor 2013,不知道是否也有这个隐藏的函数。
, Q) |" j7 O" n: v0 @ {$ O1 p# ~3 T9 o& b4 Q
, G V/ f: k8 e' X6 P! }, `% n5 P' s |