关于打开、保存和关闭图形 (ActiveX)
集合和文档对象提供对 AutoCAD 文件功能的访问。Documents
若要创建新图形或打开现有图形,请使用集合中的方法。该方法创建一个新图形,并将该图形添加到集合中。该方法将打开现有图形。集合中还有一种方法,用于关闭在 AutoCAD 任务中打开的所有图形。DocumentsAddDocumentsOpenCloseDocuments
使用 或 方法保存图形。有时,您需要检查活动图形是否有任何未保存的更改。在退出AutoCAD任务或开始新图形之前执行此操作是个好主意。使用该属性可确保当前图形不包含任何未保存的更改。SaveSaveAsSaved
要导入和导出图形,请在对象上使用“导入”和“方法。ExportDocument
打开现有图形
该方法可用于打开现有图形。在尝试使用VBA中的函数和AutoLISP中的函数打开文件之前,可以检查文件是否存在。OpenDirfindfile
注意:对于示例,请确保更改图形文件名或路径以指定系统上的现有 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
测试图形是否有未保存的更改
本示例检查是否有未保存的更改,并与用户验证是否可以保存图形(如果不可以,请跳到末尾)。如果确定,请使用该方法保存当前图形,如下所示。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
|