Hi @WCrihfield , this is pretty much the whole rule.
The part that errors is straigt copy paste of someone else code that i also just tested.
That one also gives an error for the same line of code when in a model state.
Hope this helps.
Dim oAssyDoc As AssemblyDocument
oAssyDoc = ThisApplication.ActiveDocument
Dim oAssyDef As AssemblyComponentDefinition
oAssyDef = oAssyDoc.ComponentDefinition
Dim openDoc As Inventor.Document
Dim docFile As Inventor.Document
openDoc = ThisApplication.ActiveDocument
'set a reference to the BOM
Dim oBOM As BOM
oBOM = oAssyDef.BOM
'set a reference to the "Parts Only" BOMView
Dim oBOMView As BOMView
oBOM.PartsOnlyViewEnabled = True
oBOMView = oBOM.BOMViews.Item("Parts Only")
Dim oBOMRow As BOMRow
For Each docFile In openDoc.AllReferencedDocuments
'MsgBox(docFile.FullFileName)
If docFile.DocumentType = kPartDocumentObject Or docFile.DocumentType = kAssemblyDocumentObject Then
If docFile.FullFileName.Contains("Content") Or docFile.FullFileName.Contains("Standard parts") Then Continue For
Totalname = docFile.FullFileName
Dim Bestandsnaam As String
Dim BestandsnaamMetExtentie As String
Bestandsnaam = IO.Path.GetFileNameWithoutExtension(Totalname)
BestandsnaamMetExtentie = IO.Path.GetFileName(Totalname)
StockNumber = iProperties.Value(BestandsnaamMetExtentie, "Project", "Stock Number")
PartNumber = iProperties.Value(BestandsnaamMetExtentie, "Project", "Part Number")
RevisionNumber = iProperties.Value(BestandsnaamMetExtentie, "Project", "Revision Number")
Dim StockNumberLength As Integer
StockNumberLength = StockNumber.length
If StockNumberLength <> 14 Then
MsgBox("Controleer op stocknumber en gelinkte bestanden" & vbCrLf & vbCrLf & Totalname)
Exit sub
End If
Stockdeel1 = (Left(StockNumber, (InStr(StockNumber, "-")) -1))
Stockdeel2 = (Right(StockNumber, (3)))
For Each oBOMRow In oBOMView.BOMRows
Dim oCompDef As ComponentDefinition
oCompDef = oBOMRow.ComponentDefinitions.Item(1)
Dim oBOMRowDoc As Document
oBOMRowDoc = oCompDef.Document
Dim oFileName As String
oFileName = oBOMRowDoc.FullFileName
If oFileName.Contains("Content") Or oFileName.Contains("Standard parts") Then Continue For
StockNumber2 = oBOMRow.ComponentDefinitions(1).Document.PropertySets("Design Tracking Properties")("Stock Number").Value
PartNumber2 = oBOMRow.ComponentDefinitions(1).Document.PropertySets("Design Tracking Properties")("Part Number").Value
'MsgBox(oFileName)
If StockNumber2 = "" Then
MsgBox("Controleer dit onderdeel" & vbCrLf & "PartNumber: " & PartNumber2)
Exit sub
End If
If StockNumber2 = StockNumber And
StockNumber = "" Then
MessageBox.Show("LET OP!" & vbCrLf & "Sommige bestanden hebben geen Stocknumber" & PartNumber2 & vbCrLf &
"Optie 1: Laat de Titelblok rule lopen en probeer deze regel opnieuw" & vbCrLf &
"Optie 2, stap 1: Controleer de Bill of Materials op lege vakken bij het stocknumber (parts only tabblad)" & vbCrLf &
"Optie 2, stap 2: Als het een content center part is moet deze in de bibliotheek worden aangepast, meld dit bij Wouter!" & vbCrLf , "Lege waarde Stock Number")
Exit Sub
End If
If StockNumber2 = StockNumber And
PartNumber2 <> PartNumber Then
question1 = MessageBox.Show("LET OP!" & vbCrLf & "Tekeningnummer " & StockNumber2 & " dubbel gebruikt" & PartNumber & PartNumber2 & vbCrLf &
"Optie 1: Laat de Titelblok rule lopen en probeer deze regel opnieuw" & vbCrLf &
"Optie 2, stap 1: Verander het tekeningnummer van 1 van de parts met nummer " & StockNumber2 & vbCrLf &
"Optie 2, stap 2: Laat de Titelblok rule lopen" & vbCrLf & " " & vbCrLf & "WIL JE DE RULE BEEINDIGEN ?!", "Dubbele waarde Stock Number", MessageBoxButtons.YesNo, MessageBoxIcon.Error)
If question1 = vbYes Then
Exit Sub
Else If question1 = vbNo Then
MessageBox.Show("Rule loopt gewoon door", "LET OP !!",MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End If
If StockNumber2 = "" Then
Else
Stockdeel1_1 = (Left(StockNumber2, (InStr(StockNumber2, "-")) -1))
Stockdeel2_1 = (Right(StockNumber2, (3)))
If Stockdeel1_1 = Stockdeel1 And Stockdeel2_1 = Stockdeel2 And
PartNumber2 <> PartNumber Then
question2 = MessageBox.Show("LET OP!" & vbCrLf & "Tekeningnummer dubbel gebruikt met een ander revisie/versie nummer" & vbCrLf &
Stockdeel1 & " " & Stockdeel2 & " " & PartNumber & vbCrLf &
Stockdeel1_1 & " " & Stockdeel2_1 & " " & PartNumber2 & vbCrLf &
"Stap 1: Verander het tekeningnummer van het nieuwste part" & vbCrLf &
"Stap 2: Laat de Titelblok rule lopen" & vbCrLf & " " & vbCrLf & "WIL JE DE RULE BEEINDIGEN ?!", "Dubbele waarde Stock Number", MessageBoxButtons.YesNo, MessageBoxIcon.Error)
If question2 = vbYes Then
Exit Sub
Else If question2 = vbNo Then
MessageBox.Show("Rule loopt gewoon door", "LET OP !!",MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End If
End If
Next
End If
Next
'Updaten mass van assembly (door het accessen van de mass wordt hij ook geupdate)
mass = iProperties.Mass
'BOM Publisher
oDoc = ThisDoc.ModelDocument
If oDoc.DocumentType = kPartDocumentObject Then
MessageBox.Show("You need to be in an Assembly to Export a BOM", "Databar: iLogic - BOM Publisher")
Return
End If
oDoc = ThisApplication.ActiveDocument
'Dim oBOM As BOM
oBOM = oDoc.ComponentDefinition.BOM
'Options.Value("Author") = iProperties.Value("Summary", "Author")
'==========================================================================================
'STRUCTURED BoM ===========================================================================
oBOM.ImportBOMCustomization("T:\01 ALGEMEEN\Inventor 2018\Templates\Bill of Materials.xml")
Try
' the structured view to 'all levels'
oBOM.StructuredViewFirstLevelOnly = False
Catch
MsgBox("Handmatig aanpassen van de kolommen en opslaan BOM")
End Try
' Make sure that the structured view is enabled.
oBOM.StructuredViewEnabled = True
Dim oStructuredBOMView As BOMView
oStructuredBOMView = oBOM.BOMViews.Item("Structured")
' Export the BOM view to an Excel file
oStructuredBOMView.Export(ThisDoc.Path + "\" + iProperties.Value("Project", "Stock Number") + ".xlsx", kMicrosoftExcelFormat, "BOM")
'==========================================================================================
'PARTS ONLY================================================================================
oBOM.PartsOnlyViewEnabled = True
'==========================================================================================
'TECUMA BOM================================================================================
filename=iProperties.Value("Project", "Stock Number")