Please check if this code works as you wanted.
Sub main
oDoc = ThisDoc.Document
Dim oFileDlg As Inventor.FileDialog = Nothing
InventorVb.Application.CreateFileDialog(oFileDlg)
oFileDlg.Filter = "Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*"
oFileDlg.FileName = "Select the file storage path"
oFileDlg.ShowSave()
MyFile = oFileDlg.FileName
If MyFile Is Nothing Or MyFile = "" Then Exit Sub
Dim sPath As String = System.IO.Path.GetDirectoryName(oFileDlg.FileName)
Dim sCutName As String = sPath.Remove(0, sPath.IndexOf("Projects\") + 9)
Dim sA_Name As String = sCutName.Substring(0, sCutName.IndexOf("\"))
sCutName = sCutName.Remove(0, sCutName.IndexOf("\") +1)
Dim sB_Name As String = sCutName.Substring(0, sCutName.IndexOf("\"))
sCutName = sCutName.Remove(0, sCutName.IndexOf("\") +1)
Dim sC_Name As String = sCutName.Substring(0, sCutName.IndexOf("\"))
sCutName = sCutName.Remove(0, sCutName.IndexOf("\") +1)
Dim sD_Name As String = sCutName.Substring(0, sCutName.IndexOf("\"))
sCutName = sCutName.Remove(0, sCutName.IndexOf("\") +1)
Dim sE_Name As String = sCutName.Substring(0, sCutName.IndexOf("\"))
Dim sF_Name As String = sCutName.Remove(0, sCutName.IndexOf("\") + 1)
Dim sShortName As String = sA_Name & sB_Name & "-" & sC_Name & "-" & sD_Name & "-" & sE_Name & "-" & sF_Name
Dim sFullDocName As String
Dim lUnqNumb As String
If TypeOf oDoc Is AssemblyDocument Then
If Not System.IO.File.Exists(sPath & "\" & sShortName & ".iam") Then
sFullDocName = sShortName & ".iam"
Else
lUnqNumb = GetUnqNumbAssemb(sPath & "\" & sShortName)
sFullDocName = sShortName & "_" & lUnqNumb & ".iam"
End If
Else If TypeOf oDoc Is PartDocument Then
lUnqNumb = GetUnqNumbPart(sPath & "\" & sShortName)
If lUnqNumb Is Nothing Or lUnqNumb = "" Then Exit Sub
sFullDocName = sShortName & "_" & lUnqNumb & ".ipt"
End If
Dim sFullName As String = sPath & "\" & sFullDocName
oDoc.SaveAs(sFullName, False)
End Sub
Private Function GetUnqNumbAssemb(sShortName As String) As String
Dim sInt As String
For i As Integer = 1 To 999
sInt = i
If InStrRev(sInt, "", -1) = 1 Then
sInt = "000" & sInt
Else If InStrRev(sInt, "", -1) = 2 Then
sInt = "00" & sInt
Else If InStrRev(sInt, "", -1) = 3 Then
sInt = "0" & sInt
End If
If Not System.IO.File.Exists(sShortName & "_" & sInt & ".iam") Then
Return sInt
End If
Next i
Return Nothing
End Function
Private Function GetUnqNumbPart(sShortName As String) As String
Dim sInt As String
For i As Integer = 1000 To 9999
sInt = i
If InStrRev(sInt, "", -1) = 1 Then
sInt = "000" & sInt
Else If InStrRev(sInt, "", -1) = 2 Then
sInt = "00" & sInt
Else If InStrRev(sInt, "", -1) = 3 Then
sInt = "0" & sInt
Else If InStrRev(sInt, "", -1) = 4 Then
sInt = sInt
End If
If Not System.IO.File.Exists(sShortName & "_" & sInt & ".ipt") Then
Return sInt
End If
Next i
Return Nothing
End Function
