Dave我稍微修改了你的代码,
查看如何删除新数据库
Soory没有时间测试
-
- <CommandMethod("EFM")> _
- Public Sub ExtractFromMultiple()
- 'this bit can open lots of drawings. Use it to print FERRULES text
- Dim myOFD As New Autodesk.AutoCAD.Windows.OpenFileDialog("Select DWG", "", "dwg", "Select DWG", _
- Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.AllowMultiple)
- If myOFD.ShowDialog = System.Windows.Forms.DialogResult.OK Then
- For Each myFileName As String In myOFD.GetFilenames
- Dim FileName As String = myFileName
- Dim FolderName As String = ""
- '' Call FindFolder(FileName, FolderName)
- FolderName = Path.GetDirectoryName(FileName)
- Dim myList As New List(Of String)
- 'Dim myDB As New Database
- If (System.IO.File.Exists(myFileName)) Then
- Using myDB As Database = New Database(False, True)
- 'Big delay here.....
- myDB.ReadDwgFile(myFileName, FileOpenMode.OpenForReadAndAllShare, False, "")
- Using myTr As Transaction = myDB.TransactionManager.StartTransaction()
- Dim myBT As BlockTable = myDB.BlockTableId.GetObject(OpenMode.ForRead)
- Dim myBTR As BlockTableRecord = myBT(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForRead)
- For Each myObjID As ObjectId In myBTR
- Dim myEntity As Entity = myObjID.GetObject(OpenMode.ForRead)
- If Left(UCase(myEntity.Layer), 4) = "FERR" Then
- Select Case (myEntity.ObjectId.ObjectClass.Name)
- Case "AcDbText"
- Dim textObj As DBText = DirectCast(myTr.GetObject(myEntity.ObjectId, OpenMode.ForRead, False, True), DBText)
- myList.Add(textObj.TextString)
- textObj.Dispose()
- Case "AcDbMText"
- Dim mtextObj As MText = DirectCast(myTr.GetObject(myEntity.ObjectId, OpenMode.ForRead, False, True), MText)
- myList.Add(mtextObj.Contents)
- mtextObj.Dispose()
- End Select
- End If
- Next
- End Using
- End Using
- Call PrintList(myList, FileName, FolderName)
- End If
- '' myDB.Dispose() no need Dispose coz this one is inside [using ... End Using] code block
- Next
- MsgBox("Finished")
- End If
- End Sub
|