|
|
发表于 2015-11-25 18:26:16
|
显示全部楼层
来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-11-25 21:17 编辑
* C% |9 L; E; U: V/ z( Jlinuxbyte 发表于 2015-11-25 11:23+ _! e& Y5 J! i/ b! V' ?+ Q7 _
首先谢谢梁大提供了那么好的东西~7 g. B$ r' }$ Q+ ~9 D/ D: D" W) H" r# S
再来,SW API 里面提供了两个函数可以满足您的使用要求。8 P* L4 | i2 P
1. iModel ... ( C4 L: a' a( z0 {. U8 L3 J- k9 f
想想重點如下:
: W N' W5 M Z/ g' F+ w1. 應該是用 swApp.ActiveDoc.GetPathName 不管是否隱藏擴展名都可以抓到擴展名 .SLDPAT OR .SLDASM
; d( R( f3 x) n, F# n% V2. 而用 swApp.ActiveDoc.GetTitle() 僅抓出所要的名稱,但在隱藏擴展名時就抓不到 .SLDPAT OR .SLDASM
5 G8 q1 @8 y6 o" W
- X+ e6 N% b: p r2 K- s8 D3. 但用第1項雖是找到名稱帶擴展名,但同時也抓出路徑非所要的,所以就需多做處理過濾掉.: |: A9 y1 h; _0 G D) u5 u
總而言之,N大問題是可解!
& B6 i' k' h. q8 L# x參考如下,藍色是所要的.
6 X9 }( y4 q6 `% E( V5 ?/ |% A8 l
& {, B0 z" P! Q2 jPath_Name = swApp.ActiveDoc.GetPathName '取得"路徑名稱及擴展名"(不管擴展名是否隱藏)2 b' P. a) x2 }6 h% [1 d
S1 = InStrRev(Path_Name, "\") '\符號在路徑之最後位置數
$ F' _& q9 A& Y' ?Code_Name_C = Right(Path_Name, Len(Path_Name) - S1) '取得"件號_名稱.擴展名"3 {1 j( ?# `* }5 j8 E) _! }5 d
S2 = InStr(Code_Name_C, "_") '_符號在"件號_名稱.擴展名"之位置數
+ V- O' U* {3 b" M5 Q: KCode_ = Left(Code_Name_C, S2 - 1) '取得"件號"
8 o: t5 I; S! M0 |Name_ = Mid(Code_Name_C, S2 + 1, Len(Code_Name_C) - S2 - 7) '取得"名稱"
- U5 Y- I. y, P+ U- ?. G: K& m0 ? H' t' P/ @1 E; k/ |+ Q
" o d- n* a: w
6 g# m O$ g9 |
; U" N0 l( W* y0 y, N" V4 z' g9 v) _- r6 I0 `. H
0 e: J2 G8 r& ]/ a. t
# w& G# ^2 C9 X% q1 [& y+ i6 w( A& t6 J8 G/ I: x, O# m& |( m5 P
6 X5 ?& w$ ]* Z) T0 }
|
|