概要 - 図面を開く、保存する、閉じる(ActiveX)

AutoCAD ファイルの機能にアクセスするには、Documents コレクションおよび Document オブジェクトを使用します。

図面を新規作成したり、既存の図面を開いたりするには、Documents コレクションに対してメソッドを使用します。Add メソッドは、図面を新規作成し、その図面を Documents コレクションに追加します。Open メソッドは、既存の図面を開きます。Documents コレクションには、AutoCAD セッションで開いたすべての図面を閉じる Close メソッドもあります。

図面を保存するには、Save メソッドまたは SaveAs メソッドを使用します。アクティブな図面に保存されていない変更がないかどうか調べたい場合があります。AutoCAD セッションを終える前に、または新規図面の開始前に、このような確認を行うことをお勧めします。現在の図面に未保存の変更が含まれていないことを確認するには、Saved プロパティを使用します。

図面を読み込んだり書き出したりするには、Document オブジェクトの Import メソッドおよび Export メソッドを使用します。

既存の図面を開く。

Open メソッドを使用して、既存の図面を開くことができます。VBA の Dir 関数、および AutoLISP の findfile 関数を使用して既存のファイルを開く前に、ファイルの存在を確認することができます。

注: 次の例で、お使いのシステム上の既存の AutoCAD 図面ファイルを指定するには、図面ファイルの名前またはパスを変更する必要があります。
AutoLISP
(vl-load-com)
(defun c:Ch3_OpenDrawing ( / )
    (setq acadObj (vlax-get-acad-object)
          docs (vla-get-Documents acadObj))
  
    (setq dwgName "c:\\Autodesk\\campus.dwg")
    (if (findfile dwgName)
        (vla-Open docs dwgName)
        (alert (strcat "File " dwgName " does not exist."))
    )
)
VBA (AutoCAD のみ)
Sub Ch3_OpenDrawing()
  Dim dwgName As String
  dwgName = "c:\campus.dwg"
  If Dir(dwgName) <> "" Then
    ThisDrawing.Application.Documents.Open dwgName
  Else
    MsgBox "File " & dwgName & " does not exist."
  End If
End Sub

新しい図面を作成する

以下の例では、Add メソッドを使って、既定のテンプレートに基づいて新規図面を作成します。

AutoLISP
(vl-load-com)
(defun c:Ch3_NewDrawing ( / )
    (setq acadObj (vlax-get-acad-object)
          docs (vla-get-Documents acadObj))

    (setq docObj (vla-Add docs))
)
VBA (AutoCAD のみ)
Sub Ch3_NewDrawing()
  Dim docObj As AcadDocument
  Set docObj = ThisDrawing.Application.Documents.Add
End Sub

アクティブな図面を保存する

以下の例は、現在の名前でアクティブな図面を保存し、再度新しい名前で保存します。

AutoLISP
(vl-load-com)
(defun c:Ch3_SaveActiveDrawing ( / )
    (setq acadObj (vlax-get-acad-object)
          doc (vla-get-ActiveDocument acadObj))
  
    ;; Save the active drawing under the current name
    (vla-Save doc)

    ;; Save the active drawing under a new name
    (vla-SaveAs doc "MyDrawing.dwg")
)
VBA (AutoCAD のみ)
Sub Ch3_SaveActiveDrawing()
  ' Save the active drawing under the current name
  ThisDrawing.Save

  ' Save the active drawing under a new name
  ThisDrawing.SaveAs "MyDrawing.dwg"
End Sub

図面に未保存の変更がないかテストする

以下の例は、未保存の変更がないかどうかをテストし、ユーザに図面を保存してよいかどうかを確認します(OK でなければ、最後にスキップします)。OK ならば、次のように Save メソッドを使用して現在の図面を保存します。

AutoLISP
(vl-load-com)
(defun c:Ch3_TestIfSaved ( / )
    (setq acadObj (vlax-get-acad-object)
          doc (vla-get-ActiveDocument acadObj)
          utilObj (vla-get-Utility doc))
    
    ;; Define and call InitializeUserInput to set up the keywords
    (setq keywordList "Yes No")
    (vla-InitializeUserInput utilObj 0 keywordList)
	  
    (if (= :vlax-false (vla-get-Saved doc))
        (if (/= "No" (vla-GetKeyword utilObj "\nDo you wish to save this drawing? [Yes/No] <Yes>: "))
            (vla-Save doc)
        )
    )
)
VBA (AutoCAD のみ)
Sub Ch3_TestIfSaved()
  If Not (ThisDrawing.Saved) Then
    If MsgBox("Do you wish to save this drawing?", _
      vbYesNo) = vbYes Then
      ThisDrawing.Save
    End If
  End If
End Sub