AnsweredAssumed Answered

Save Drawing View as DXF Macro

Question asked by Salman Faiz on Jul 12, 2018
Latest reply on Jul 12, 2018 by Salman Faiz

Hi All,


I had this nice macro on Autodesk Inventor to convert each drawing view to DXF and assign the part file name along with drawing revision.


I was wondering if someone could help me to convert it for solidworks?


Dim oDoc As Document

oDoc = ThisApplication.ActiveDocument


Dim oViews as DrawingViews

oViews = oDoc.ActiveSheet.DrawingViews


strDrawingPath = ThisDoc.Path


strInterPath = Left(strDrawingPath,Len(strDrawingPath)-21)


strDXFPath=strInterPath & "01 Issued Drawings" & "\DXF Files"


oFolder = strDXFPath


If Not System.IO.Directory.Exists(oFolder) Then




End If


strInterPathRdrive = Mid(Left(strDrawingPath,Len(strDrawingPath)-21),22)


strDXFRdrivePath=strInterPathRdrive & "01 Issued Drawings" & "\DXF Files"


strDXFRdrivePath = "R:\Drafting and Drawing\Contracts\" & strDXFRdrivePath


If Not System.IO.Directory.Exists(strDXFRdrivePath) Then




End If




'Determine the number of views


Dim intViews,intViewsCount As Integer

Dim strViews as String


'strViews=InputBox("How many base views are there?","iLogic Question", 0)

'If strViews="" Then strViews="0"




intViewsCount = oViews.Count


Dim oView As DrawingView



  • oDoc.DrawingSettings.DeferUpdates="False"



For k = 1 To intViewsCount



  • oViews.Item(k).Suppressed


Next k


For j = 1 To intViewsCount


'This portion of the rule gets the part file name from a view.




If oViews.Item(j).ParentView Is Nothing Then


strView = j


  • oViews.Item(j).Suppressed


oView = oViews.Item(j)

strFileName = oView.ReferencedDocumentDescriptor.DisplayName




strFileName = Left(strFileName,y-4)



strDXFName = strFileName & "-Rev" & iProperties.Value("Project", "Revision Number")


strDXFPathandName = strDXFPath & "\" &strDXFName


strDXFRdrivePathandName = strDXFRdrivePath & "\" &strDXFName



'For creating DXF files on local drive   

folder = CreateObject("Scripting.FileSystemObject")

source = folder.getfolder(strDXFPath)

count = source.files.count



      For Each file In source.files


            If File.Name = strDXFName & ".dxf" Then


                  question1 = MessageBox.Show("The file "& File.Name &" already exists on Local Drive. Do you want to overwrite it?", "iLogic Question" ,MessageBoxButtons.YesNo ,MessageBoxIcon.Question)



                              If question1 = vbYes Then


                                    ThisDoc.Document.SaveAs (strDXFPathandName & (".dxf") ,True)


                              End If


            End If







            If x<>1 Then


                  ThisDoc.Document.SaveAs(strDXFPathandName & (".dxf") , True)


            End If



'This is for creating DXF files on the R drive

folder = CreateObject("Scripting.FileSystemObject")

source = folder.getfolder(strDXFRdrivePath)

count = source.files.count



      For Each file In source.files


            If File.Name = strDXFName & ".dxf" Then


                  question2 = MessageBox.Show("The file" & File.Name &" already exists on R Drive. Do you want to overwrite it?", "iLogic Question" ,MessageBoxButtons.YesNo ,MessageBoxIcon.Question)



                              If question2 = vbYes Then


                                    ThisDoc.Document.SaveAs (strDXFRdrivePathandName & (".dxf") ,True)


                              End If


            End If




            If a<>1 Then


                  ThisDoc.Document.SaveAs(strDXFRdrivePathandName & (".dxf") , True)


            End If









  1. ThisDoc.Save

'MsgBox(strDXFPathandName) 'The message box displays the part file name


  • oViews.Item(j).Suppressed


End If


Next j


For a = 1 To intViewsCount


'strView = l


  • oViews.Item(a).Suppressed


Next a


  • oDoc.DrawingSettings.DeferUpdates="True"