Is this possible? I was trying to make a simple windows program that prompted the user to select a .dwg file and the program would list all the layers in a listbox. But the Database.ReadDWGFile procedure doesn't appear to work outside of AutoCAD (FileNotFound Exception). Can I have my windows program open AutoCAD in the background to achieve this?
Here's my code:
Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Public Class Form1 Dim myLayers As ArrayList Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myDB As New Database(False, True) myDB.ReadDwgFile("C:\test.dwg", FileOpenMode.OpenForReadAndAllShare, True, "") Using myTrans As Transaction = myDB.TransactionManager.StartTransaction Dim myLayerTable As LayerTable = myDB.LayerTableId.GetObject(OpenMode.ForRead) Dim layerName As String = "" For Each myObjectID As ObjectId In myLayerTable Dim myLayer As LayerTableRecord = myObjectID.GetObject(OpenMode.ForRead) myLayers.Add(myLayer.Name) Next myTrans.Abort() End Using myDB.Dispose() For Each layerxx In myLayers ListBox1.Items.Add(layerxx) Next End Sub End Class
Solved! Go to Solution.
Solved by AlexanderRivilis. Go to Solution.
You can use either AutoDesk RealDWG
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=770257
or Teigha™.NET for .dwg files
To modify files without Autocad.
These are both pay options.
The only free options is to have Autocad Installed and use ActiveX.