・ 図面ファイルを開く
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)
)