Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Exporting .dwg with the PartNumber as it's name

Anonymous

Exporting .dwg with the PartNumber as it's name

Anonymous
Not applicable

hello, i have some code that exports all my drawings from an assembly in .dwg, with the part as there name but i need it to export with the part number. i've tried some variations but can't seem to figure it out.

 

Sub Main()

    Dim doc As AssemblyDocument = ThisDoc.Document
    For Each refDoc As Document In doc.AllReferencedDocuments

        Dim fileName As String = refDoc.FullFileName
        Dim ext As String = IO.Path.GetExtension(fileName)
        Dim inventorDwgFileName As String = fileName.Replace(ext, ".dwg")
        Dim autocadDwgFileName As String =(iProperties.Value("Project", "Part Number"), "-acad.dwg")

        If (IO.File.Exists(inventorDwgFileName) = False) Then
            MsgBox("Could not find inventor dwg: " & inventorDwgFileName)
            Continue For
        End If

        Dim dwgDoc As DrawingDocument = ThisApplication.Documents.Open(inventorDwgFileName)
        DWGOutUsingTranslatorAddIn(dwgDoc, autocadDwgFileName)
        dwgDoc.Close(True)
    Next

End Sub
Public Sub DWGOutUsingTranslatorAddIn(doc As DrawingDocument, newFileName As String)

    ' Set the path to your DWGOut.ini fiile here
    Dim dwgOutIniFile As String = "C:\Users\Monkey\Documents\Modularte\Cubo\DWGOut.ini"

    Dim oDWGAddIn As TranslatorAddIn = Nothing
    Dim i As Long

    For i = 1 To ThisApplication.ApplicationAddIns.Count
        If ThisApplication.ApplicationAddIns.Item(i).ClassIdString = "{C24E3AC2-122E-11D5-8E91-0010B541CD80}" Then
            oDWGAddIn = ThisApplication.ApplicationAddIns.Item(i)
            Exit For
        End If
    Next

    If oDWGAddIn Is Nothing Then
        MsgBox("DWG add-in not found.")
        Exit Sub
    End If

    If (IO.File.Exists(dwgOutIniFile) = False) Then
        MsgBox("Unable to find: " & dwgOutIniFile)
        Exit Sub
    End If

    If Not oDWGAddIn.Activated Then
        oDWGAddIn.Activate()
    End If

    Dim oNameValueMap As NameValueMap = ThisApplication.TransientObjects.CreateNameValueMap()
    oNameValueMap.Add("Export_Acad_IniFile", dwgOutIniFile)

    Dim oContext As TranslationContext = ThisApplication.TransientObjects.CreateTranslationContext()
    oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism

    Dim oOutputFile As DataMedium = ThisApplication.TransientObjects.CreateDataMedium()
    oOutputFile.FileName = newFileName
    Call oDWGAddIn.SaveCopyAs(doc, oContext, oNameValueMap, oOutputFile)

End Sub

 

 

0 Likes
Reply
Accepted solutions (1)
415 Views
1 Reply
Reply (1)

bradeneuropeArthur
Mentor
Mentor
Accepted solution

Change this:

 

Sub Main()

    Dim doc As AssemblyDocument = ThisDoc.Document
    For Each refDoc As Document In doc.AllReferencedDocuments

        Dim fileName As String = refDoc.FullFileName
        Dim ext As String = IO.Path.GetExtension(fileName)
        Dim inventorDwgFileName As String = fileName.Replace(ext, ".dwg")
        Dim autocadDwgFileName As String =iProperties.Value("Project", "Part Number")& "-acad.dwg"

        If (IO.File.Exists(inventorDwgFileName) = False) Then
            MsgBox("Could not find inventor dwg: " & inventorDwgFileName)
            Continue For
        End If

        Dim dwgDoc As DrawingDocument = ThisApplication.Documents.Open(inventorDwgFileName)
        DWGOutUsingTranslatorAddIn(dwgDoc, autocadDwgFileName)
        dwgDoc.Close(True)
    Next

End Sub
Public Sub DWGOutUsingTranslatorAddIn(doc As DrawingDocument, newFileName As String)

    ' Set the path to your DWGOut.ini fiile here
    Dim dwgOutIniFile As String = "C:\Users\Monkey\Documents\Modularte\Cubo\DWGOut.ini"

    Dim oDWGAddIn As TranslatorAddIn = Nothing
    Dim i As Long

    For i = 1 To ThisApplication.ApplicationAddIns.Count
        If ThisApplication.ApplicationAddIns.Item(i).ClassIdString = "{C24E3AC2-122E-11D5-8E91-0010B541CD80}" Then
            oDWGAddIn = ThisApplication.ApplicationAddIns.Item(i)
            Exit For
        End If
    Next

    If oDWGAddIn Is Nothing Then
        MsgBox("DWG add-in not found.")
        Exit Sub
    End If

    If (IO.File.Exists(dwgOutIniFile) = False) Then
        MsgBox("Unable to find: " & dwgOutIniFile)
        Exit Sub
    End If

    If Not oDWGAddIn.Activated Then
        oDWGAddIn.Activate()
    End If

    Dim oNameValueMap As NameValueMap = ThisApplication.TransientObjects.CreateNameValueMap()
    oNameValueMap.Add("Export_Acad_IniFile", dwgOutIniFile)

    Dim oContext As TranslationContext = ThisApplication.TransientObjects.CreateTranslationContext()
    oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism

    Dim oOutputFile As DataMedium = ThisApplication.TransientObjects.CreateDataMedium()
    oOutputFile.FileName = newFileName
    Call oDWGAddIn.SaveCopyAs(doc, oContext, oNameValueMap, oOutputFile)

End Sub

Regards,

Arthur Knoors

Autodesk Affiliations:

Autodesk Software:Inventor Professional 2025 | Vault Professional 2024 | Autocad Mechanical 2024
Programming Skills:Vba | Vb.net (Add ins Vault / Inventor, Applications) | I-logic
Programming Examples:Drawing List!|Toggle Drawing Sheet!|Workplane Resize!|Drawing View Locker!|Multi Sheet to Mono Sheet!|Drawing Weld Symbols!|Drawing View Label Align!|Open From Balloon!|Model State Lock!
Posts and Ideas:Dimension Component!|Partlist Export!|Derive I-properties!|Vault Prompts Via API!|Vault Handbook/Manual!|Drawing Toggle Sheets!|Vault Defer Update!


! For administrative reasons, please mark a "Solution as solved" when the issue is solved !