|
|
发表于 2015-11-25 18:26:16
|
显示全部楼层
来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-11-25 21:17 编辑 ; r2 C& ?. n' G: U* N
linuxbyte 发表于 2015-11-25 11:23
' W) I' @% d1 f( `' R首先谢谢梁大提供了那么好的东西~. E% X5 j( s+ B, B- d8 K
再来,SW API 里面提供了两个函数可以满足您的使用要求。, E, W& u1 t; M: K# z
1. iModel ... % G, c% S9 B2 F0 F, s G* |
想想重點如下:3 d" p+ X: |' e, ^- e5 T! i
1. 應該是用 swApp.ActiveDoc.GetPathName 不管是否隱藏擴展名都可以抓到擴展名 .SLDPAT OR .SLDASM
( v; k' a6 I Q: f v9 |2 a$ d2. 而用 swApp.ActiveDoc.GetTitle() 僅抓出所要的名稱,但在隱藏擴展名時就抓不到 .SLDPAT OR .SLDASM
0 ]) U! X- a6 `3 ^& d, M# k8 }2 W* n3 I+ u0 O) n9 p% |
3. 但用第1項雖是找到名稱帶擴展名,但同時也抓出路徑非所要的,所以就需多做處理過濾掉.5 K7 M8 N" y1 [3 o7 `4 h) g
總而言之,N大問題是可解!2 D Y6 n' M' e" |- X; |
參考如下,藍色是所要的.' z) y# {: k, C, @' e% ~
* P) y2 K; H$ I( Z+ {/ U- ^/ [- z
Path_Name = swApp.ActiveDoc.GetPathName '取得"路徑名稱及擴展名"(不管擴展名是否隱藏)
0 ^( P+ S+ `, r' C/ q8 DS1 = InStrRev(Path_Name, "\") '\符號在路徑之最後位置數
H4 Z, i% }2 qCode_Name_C = Right(Path_Name, Len(Path_Name) - S1) '取得"件號_名稱.擴展名": e: X* B- `9 i+ x' P0 r1 F( Q4 H1 b
S2 = InStr(Code_Name_C, "_") '_符號在"件號_名稱.擴展名"之位置數+ F# J* z3 w0 u0 Q1 g
Code_ = Left(Code_Name_C, S2 - 1) '取得"件號"% d9 {4 ?8 S& Y8 K
Name_ = Mid(Code_Name_C, S2 + 1, Len(Code_Name_C) - S2 - 7) '取得"名稱"
4 S' _6 ]1 V, O8 q0 {! J! H2 ?( J) d1 A, U
2 w( |/ i& l) Z
. J! j5 z6 ~# ]- A! o
. V( I3 V: Q. A+ U* E( @0 q( P1 l
- _9 Q6 S! Z; p8 e" A7 p# M. ~+ }: c% e& v* W! H: |% a( ~
# v2 F5 c0 y- ?5 L. z0 b! X7 W
" ^8 q l9 |* \5 k) x
; _' d) A! @+ G s* i9 b, Q' ^; p |
|