・現在の図面ファイル名の取得
・現在の図面ファイルのパスの取得
・現在の図面ファイルの拡張子の取得
現在の図面ファイル名は、システム変数 "DWGNAME"
で取得できます。
ただし、R13以前は、パス付(拡張子なし)が返りますが、R14以後は、ファイル名(拡張子付)だけが返ります。
現在の図面ファイルのパスは、システム変数 "DWGPREFIX"
で取得できます。
現在のファイル名をフルパスで取得(R13以前のバージョンでは拡張子なし)
(defun Jof_ful_path2 ( / file_name file_path )
(setq file_name (getvar "DWGNAME"))
(if (not (wcmatch file_name "*`\\*")) ;\マークが有るかどうか
(setq file_path (strcat (getvar "DWGPREFIX")
file_name))
)
file_path
)
現在のファイル名をフルパスで取得(R14以後)
(defun Jof_full_path ( / file_name file_path )
(setq file_name (getvar "DWGNAME"))
(setq file_path (findfile file_name)) ;サポートディレクトリー以外でもOK
file_path
)
****************************************************************
ファイル名だけ(パスなし)を取得(R13以前のバージョンでは拡張子なし)
(defun Jof_file_name ( / file_name i e n )
(setq file_name (getvar "DWGNAME"))
(if (wcmatch file_name "*`\\*") ;\マークが有るかどうか
(progn
(setq i 1)
(repeat (strlen file_name)
(setq e (substr file_name i 1))
(if (= e "\\" )
(setq n (1+ i)) ;\マークの次の位置
)
(setq i (1+ i))
)
)
(setq file_name (substr file_name n)) ;
最後の\マーク以後を取得
)
file_name
)
***************************************************************
拡張子の取得(R14以後)
(defun Jof_ext_name ( / file_name i e n ext_name )
(setq file_name (getvar "DWGNAME"))
(if (wcmatch file_name "*.*") ;"."が有るかどうか
(progn
(setq i 1)
(repeat (strlen file_name)
(setq e (substr file_name i 1))
(if (= e "." )
(setq n (1+ i)) ;"."の次の位置
)
(setq i (1+ i))
)
(setq ext_name (substr file_name n)) ; 最後の"."以後を取得
)
)
ext_name
)
**************************************************************************
(defun Jof_file_name ( / file_name full_name file_base file_ext file_path) (vl-load-com) (setq file_name (getvar "DWGNAME")) (princ (strcat "\n図面のファイル名(拡張子付):" file_name)) (setq full_name (findfile file_name)) (princ (strcat "\n図面のフルパス:" full_name)) (setq file_base (vl-filename-base full_name)) (princ (strcat "\n図面のファイル名(baseのみ):" file_base)) (setq file_ext (vl-filename-extension full_name)) (princ (strcat "\n図面の拡張子:" file_ext)) (setq file_path (vl-filename-directory full_name)) (princ (strcat "\n図面のパス:" file_path)) (princ) )