I have a code that works perfectly in VBA, but when I try to use it for VB.net purpose, I get this error message: "The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))".
This is the code I'm working with (for Autodesk Inventor application) Anyone knows what the problem might be?
This is the code I'm working with (for Autodesk Inventor application) Anyone knows what the problem might be?
Structure udtPartInfo
Public Number As Integer
Public ReferencedFile As String
End Structure
Sub Main RenumberBalloonsToFirstSheet()
If ThisApplication.ActiveDocumentType <> _
kDrawingDocumentObject Then
MsgBox ("A drawing must be active.")
Exit Sub
End If
Dim drawDoc As DrawingDocument
drawDoc = ThisApplication.ActiveDocument
Dim baseSheet As Sheet
baseSheet = drawDoc.Sheets.Item(1)
Dim valSet As BalloonValueSet
valSet = baseSheet.Balloons.Item(1).BalloonValueSets.Item(1)
Dim drawBOM As DrawingBOM
drawBOM = valSet.ReferencedRow.Parent
Dim partInfo() As udtPartInfo
ReDim partInfo(drawBOM.DrawingBOMRows.Count - 1)
Dim itemColumn As Integer
Dim i As Integer
For i = 1 To drawBOM.DrawingBOMColumns.Count
If drawBOM.DrawingBOMColumns.Item(i).PropertyType = _
kItemPartsListProperty Then
itemColumn = i
Exit For
End If
Next
For i = 1 To drawBOM.DrawingBOMRows.Count
Dim drawBOMRow As DrawingBOMRow
drawBOMRow = drawBOM.DrawingBOMRows.Item(i)
Dim partDef As PartComponentDefinition
partDef = drawBOMRow.BOMRow.ComponentDefinitions.Item(1)
partInfo(i - 1).ReferencedFile = partDef.Document.FullFileName
partInfo(i - 1).Number = drawBOMRow.Item(itemColumn).Value
Next
For i = 2 To drawDoc.Sheets.Count
Dim currentSheet As Sheet
currentSheet = drawDoc.Sheets.Item(i)
Dim checkBalloon As Balloon
For Each checkBalloon In currentSheet.Balloons
Dim matchFound As Boolean
matchFound = False
Dim valueSet As BalloonValueSet
valueSet = checkBalloon.BalloonValueSets.Item(1)
Dim checkFilename As String
checkFilename = _
valueSet.ReferencedFiles.Item(1).FullFileName
Dim j As Integer
For j = 0 To UBound(partInfo)
If checkFilename = partInfo(j).ReferencedFile Then
matchFound = True
If valueSet.ItemNumber <> partInfo(j).Number Then
valueSet.OverrideValue = partInfo(j).Number
End If
Exit For
End If
Next
Next
Next
End Sub
Last edited by a moderator: