Autocadで作図した図面は、
知らぬ間に「図面編集時間」や「最終登録者」「更新日時」等の情報が、登録されます。
特に 「図面編集時間」はリセット出来ない。
図面が出来て、客先等に送信する場合には、
この情報も行っちゃうんです。(@@;)
------------------------------------------------------------------
●例:
●送信は汎用性のある中間ファイル「DXF」にて送る場合が多いのですが、
DXF変換しても「図面編集時間」等が引き継がれます。(^0^;)
今回は、出来たDXF内の「図面編集時間」、「最終登録者」等を
リセットするプログラムを作りました。
変換後、できあがったDXFを読んでみると、
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
↑無くなってるでしょ?\(^O^)/
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
以下を メモ帳で開き デスクトップに dxf.lsp で保存
変換したい図面を読み
[ツール] → [AutoLisp] → [アプリケーションロード]で
デスクトップの dxf.lsp を読み込み
コマンド DXF で動作します。
読み込んだ図面からコマンド実行で,
デスクトップに 編集時間を削除したDXFファイルができあがります。
↓------ここから
(defun c:dxf ( / DATA DNAME1 DNAME2 FULLNAME1 HNAME1 MNAME1 OPENFILE1 OPENFILE2 TMP1 TMP8 TXT TXT1 UNAME)
;DXFをデスクトップに作成後 編集時間を消して再登録します。
;
(setq data "2000-DXF");下の5種から選べる
;
(VL-LOAD-COM)
(setvar "CMDECHO" 0)
(command ".clayer" "0")
(vla-purgeall (vla-get-activedocument (vlax-get-acad-object)));purge_all
(command ".zoom" "e")
(while (= 1 (getvar "cmdactive"))(command pause));コマンド終了まで待つ
(setq hname1 (getvar "dwgprefix"));図面ホルダー名
(setq hname1 (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\"));デスクトップへ
(setq mname1 (getvar "dwgname"));元ファイル名(変換用ファイル名.dwg)
(setq fullname1 (strcat hname1 mname1));元のホルダー+ファイル名
(setq uname (getenv "USERNAME"));ユーザー名
;
(setq dname1 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) ) ))
(setq dname2 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) ) "[0TIME]"))
;
(setq tmp1 (getvar "FILEDIA"))
(setq tmp8 (getvar "EXPERT"))
(setvar "FILEDIA" 0)
(setvar "EXPERT" 2)
(princ "\n━━━━━━━━━━━━━━━━━━━━━━━")
(princ (strcat "\n" dname2 "\n["data"] 形式で保存中"))
(cond
((= data "2000-DXF") (command "_SAVEAS" "DXF" "V" "2000" "" dname2))
((= data "2004-DXF") (command "_SAVEAS" "DXF" "V" "2004" "" dname2))
((= data "2007-DXF") (command "_SAVEAS" "DXF" "V" "2007" "" dname2))
((= data "2010-DXF") (command "_SAVEAS" "DXF" "V" "2010" "" dname2))
((= data "2013-DXF") (command "_SAVEAS" "DXF" "V" "2013" "" dname2))
)
(while (= 1 (getvar "cmdactive"))(command pause));保存終了まで待つ
(princ (strcat "\n" dname2 "\n["data"] 形式で保存完了"))
(princ (strcat "\n" dname2 "\n["data"] 編集時間調査中"))
(setvar "FILEDIA" tmp1)
(setvar "EXPERT" tmp8)
(command "_SAVEAS" "2000" (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\変換ファイル削除可.dwg"))
(setq openfile2 (open (strcat dname1 ".dxf") "w"))
(setq openfile1 (open (strcat dname2 ".dxf") "r"))
(setq txt (read-line openfile1))
(while txt
(cond
((or (= txt "$TDCREATE")(= txt "$TDUCREATE")(= txt "$TDUUPDATE")(= txt "$TDINDWG")(= txt "$TDUSRTIMER"))
(read-line openfile1)
(read-line openfile1)
(read-line openfile1)
)
((= txt uname)
(write-line "-----" openfile2)
)
(T
(write-line txt openfile2)
)
)
(setq txt (read-line openfile1))
)
(close openfile1)
(close openfile2)
(princ (strcat "\n" dname1 "\n["data"] 編集時間編集済み"))
(vl-file-delete (strcat dname2 ".dxf"))
(command ".delay" 2000);待ち時間
(if (>= (atof (substr (getvar "ACADVER") 1 4)) 19.1);2014
(progn
(command "_.wipeout" "_f" "_off")
(command-s "_.close" "Y")
)
(progn
(command ".close" "Y")
)
)
(princ)
)
↑----------------ここまで
;DXFをデスクトップに作成後 編集時間を消して再登録します。
;
(setq data "2000-DXF");下の5種から選べる
;
(VL-LOAD-COM)
(setvar "CMDECHO" 0)
(command ".clayer" "0")
(vla-purgeall (vla-get-activedocument (vlax-get-acad-object)));purge_all
(command ".zoom" "e")
(while (= 1 (getvar "cmdactive"))(command pause));コマンド終了まで待つ
(setq hname1 (getvar "dwgprefix"));図面ホルダー名
(setq hname1 (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\"));デスクトップへ
(setq mname1 (getvar "dwgname"));元ファイル名(変換用ファイル名.dwg)
(setq fullname1 (strcat hname1 mname1));元のホルダー+ファイル名
(setq uname (getenv "USERNAME"));ユーザー名
;
(setq dname1 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) ) ))
(setq dname2 (strcat hname1 (substr mname1 1 (- (strlen mname1) 4) ) "[0TIME]"))
;
(setq tmp1 (getvar "FILEDIA"))
(setq tmp8 (getvar "EXPERT"))
(setvar "FILEDIA" 0)
(setvar "EXPERT" 2)
(princ "\n━━━━━━━━━━━━━━━━━━━━━━━")
(princ (strcat "\n" dname2 "\n["data"] 形式で保存中"))
(cond
((= data "2000-DXF") (command "_SAVEAS" "DXF" "V" "2000" "" dname2))
((= data "2004-DXF") (command "_SAVEAS" "DXF" "V" "2004" "" dname2))
((= data "2007-DXF") (command "_SAVEAS" "DXF" "V" "2007" "" dname2))
((= data "2010-DXF") (command "_SAVEAS" "DXF" "V" "2010" "" dname2))
((= data "2013-DXF") (command "_SAVEAS" "DXF" "V" "2013" "" dname2))
)
(while (= 1 (getvar "cmdactive"))(command pause));保存終了まで待つ
(princ (strcat "\n" dname2 "\n["data"] 形式で保存完了"))
(princ (strcat "\n" dname2 "\n["data"] 編集時間調査中"))
(setvar "FILEDIA" tmp1)
(setvar "EXPERT" tmp8)
(command "_SAVEAS" "2000" (strcat "C:\\Users\\"(getenv "USERNAME") "\\Desktop\\変換ファイル削除可.dwg"))
(setq openfile2 (open (strcat dname1 ".dxf") "w"))
(setq openfile1 (open (strcat dname2 ".dxf") "r"))
(setq txt (read-line openfile1))
(while txt
(cond
((or (= txt "$TDCREATE")(= txt "$TDUCREATE")(= txt "$TDUUPDATE")(= txt "$TDINDWG")(= txt "$TDUSRTIMER"))
(read-line openfile1)
(read-line openfile1)
(read-line openfile1)
)
((= txt uname)
(write-line "-----" openfile2)
)
(T
(write-line txt openfile2)
)
)
(setq txt (read-line openfile1))
)
(close openfile1)
(close openfile2)
(princ (strcat "\n" dname1 "\n["data"] 編集時間編集済み"))
(vl-file-delete (strcat dname2 ".dxf"))
(command ".delay" 2000);待ち時間
(if (>= (atof (substr (getvar "ACADVER") 1 4)) 19.1);2014
(progn
(command "_.wipeout" "_f" "_off")
(command-s "_.close" "Y")
)
(progn
(command ".close" "Y")
)
)
(princ)
)
↑----------------ここまで
0 件のコメント:
コメントを投稿