・ 図面ファイルを開く
AutoLisp には図面を開くための関数は用意されていない。
なぜなら、図面を開いた時点で LISP
はキャンセルされてしまうから。
コマンド使うなら
(if (= DBMOD 0) (command "OPEN" "d:\\path\\drawing.dwg") (command "OPEN" "Y" "d:\\path\\drawing.dwg") )
2005以後はコマンド名が変わってるらしい > なんでそういうことするかな・・・(-_-;)
(if (= DBMOD 0) (command "FILEOPEN" "d:\\path\\drawing.dwg") (command "FILEOPEN" "Y" "d:\\path\\drawing.dwg") )
2006/11/06 追記
(vla-Open) (vla-Save) (vla-Close) を使えばMDE環境(マルチデザイン環境)でファイルを開く・保存・閉じることが可能です
ただし、Lispは実行したファイルの名前空間を使用するため、すべてをActiveXオブジェクトとして操作する必要があります
さんぷるです
(defun Jo_bat_test ( / ) (defun Jo_vla_open ( obj_docs full_path / ) (vla-open obj_docs full_path :vlax-false) ) (defun Jo_vla_save ( obj_dwg / ) (vla-save obj_dwg) ) (defun Jo_vla_close ( obj_dwg / ) (vla-close obj_dwg :vlax-true) ) (vl-load-com) (setq path "d:\\sample\\");***************適宜設定のこと; (setq dwg_name "1.dwg");******************適宜設定のこと; (setq full_path (strcat path dwg_name)) (setq sdi_def (getvar "SDI")) (setvar "SDI" 0) (setq obj_acad (vlax-get-acad-object)) (setq obj_docs (vlax-get-property obj_acad 'Documents)) (setq obj_this_doc (vlax-get-property obj_acad 'ActiveDocument)) (setq obj_dwg (Jo_vla_open obj_docs full_path)) (setq obj_model (vla-get-ModelSpace obj_dwg)) (vla-AddLine obj_model (vlax-3D-point '(0 0 0)) (vlax-3D-point '(10 0 0))) (alert "OK");>Lispを実行した図面にメッセージが表示される (-_-;) (Jo_vla_close obj_dwg) (vlax-release-object obj_model) (vlax-release-object obj_dwg) (vlax-release-object obj_docs) (vlax-release-object obj_this_doc) (vlax-release-object obj_acad) (setvar "SDI" sdi_def) )