马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
问题:
Batch process in-memory
解答:
When we try batch process files in memory, we must take special attention to which transaction is in use, but the real trick is how to save the file: AutoCAD will lock the file in use and therefore the SaveAs method is not available for the current file, so the trick could be save as a temporary file and then replace it. This approach can be used to batch process and is faster then open drawings “on scree” (visible). The trade-off is that some features may not be available, such as Layout Manager.
-
- Public Sub batchProcess()
- ' get all DWG files from a specific folder
- Dim directory As New System.IO.DirectoryInfo("C:\temp")
- Dim files As System.IO.FileInfo() = _
- directory.GetFiles("*.dwg")
- For Each file As System.IO.FileInfo In files
- ' generate a temp file location
- Dim tempFileName As String = _
- System.IO.Path.GetTempFileName()
- Using db As New Database(False, True)
- ' open the current file
- db.ReadDwgFile(file.FullName, _
- System.IO.FileShare.ReadWrite, _
- True, String.Empty)
- Using trans As Transaction = _
- db.TransactionManager.StartTransaction()
- ' ToDo:
- ' Do your processing here
- ' commit changes
- trans.Commit()
- End Using
- ' save as temp file
- db.SaveAs(tempFileName, DwgVersion.Current)
- End Using ' dispose the database
- ' now replace
- System.IO.File.Copy(tempFileName, file.FullName, True)
- ' and erase the temp file
- System.IO.File.Delete(tempFileName)
- Next
- End Sub
|