代码改变世界

VB中对AutoCAD对象图形文件操作

2011-06-11 20:40  精诚所至 金石为开  阅读(3261)  评论(0编辑  收藏  举报

AutoCAD图形的绘制、编辑均在其图形文件中进行,可以利用VB代码创建新的文件、打开已有文件、保存文件等。

VB中按按照以下步骤创建新的图形文件。

首先将VB于AutoCAD进行链接,可以用到典型的链接代码,然后在VB工程窗体中添加一个按钮用来由用户创建新的CAD图形文件,应用按钮的单击事件,在按钮上添加如下代码创建新的图形文件。

Private Sub Command1_Click()
    acadapp.Documents.Add
End Sub

这里利用Acadapp对象的下一级对象Documents的Add方法,以默认文件名创建新的图形文件。

VB中打开已有图形文件的代码如下。

Private Sub Command2_Click()
    Dim myfilename As String
    myfilename = "这里是已有文件的路径"
    If Dir(myfilename) <> "" Then
        acadapp.Documents.Open myfilename
    Else
        MsgBox ("文件不存在")
    End If
End Sub

Dir函数用来检测要打开的图形文件是否存在,利用公用对话框CommonDialog控件的ShowOpen方法,可以让用户自行选择要打开的图形文件,用CommonDialog控件的FileName属性返回用户在对话框中选择的路径和文件名,并将其复制给myfilename变量。

VB中保存CAD图形文件的代码如下。

Private Sub Command3_Click()
    acadapp.ActiveDocument.Save
End Sub

也可以使用SaveAs方法,以指定的文件名和保存路径保存文件。

Private Sub Command4_Click()
    acadapp.ActiveDocument.SaveAs "这里是要指定文件路径和文件名"
End Sub

可以先对图形文件被修改过之后是否进行保存进行判断,如果进行过保存,则以当前文件名和文件路径保存文件,否则不保存文件。

Private Sub Command5_Click()
    If Not acadapp.ActiveDocument.Saved Then
        If MsgBox("是否保存文件?", vbYesNo) = vbYes Then
            acadapp.ActiveDocument.Save
        End If
    End If
End Sub

利用Close方法以当前文件名和路径保存修改过后的文件,然后关闭图形文件。

Private Sub Command6_Click()
    acadapp.ActiveDocument.Close
End Sub

如果在Close函数后加上参数False,则表示不保存修改,直接关闭文件。

Private Sub Command6_Click()
    acadapp.ActiveDocument.Close (False)
End Sub

为了和其他图形处理文件进行交互工作,利用文件的导入导出功能将其它格式的文件导入到AutoCAD中进行编辑或将AutoCAD图形文件保存成其它格式的文件,方便用其它软件进行处理。

导入文件用到文档对象的Import方法,可以导入SAT、EPS、DXF或WMF格式的文件,语法如下:objcet.Import(filename,InsertPoint,ScaleFactor)。导入文件代码如下。

Private Sub Command7_Click()
    Dim importfile As String
    Dim insertpoint(0 To 2) As Double
    Dim scalefactor As Double
    importfile = "这里是需要导入的文件名和路径"
    insertpoint(0) = 0#: instertpoint(1) = 0#: insertpoint(2) = 0#
    scalefactor = 2
    acadapp.ActiveDocument.Import.importfile , insertpoint, scalefactor
    ZoomExtents
End Sub

利用文档对象的Export方法,可以将AutoCAD制作的图形用WMF、SAT、EPS、DXF或BMP格式导出并保存,语法objcet.export filename,extentsion,selectionset。导出文件代码如下。

Private Sub Command8_Click()
    Dim explortfile As String
        explortfile = ""
    Dim sset As AcadSelectionSet
    Set sset = acadapp.ActiveDocument.SelectionSets.Add("TEST")
    acadapp.ActiveDocument.Export.explortfile , "WMF", sset
    sset.Delete
End Sub