- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
I have master assembly, in which there is subassembly, which has derived parameters based on another part. The derived parameters were created in Parameter Window by using Link button (not by Derive part tool). From master assembly I am unable to delete either derived parameters or derived parameter table object. On command DerivedParameterTable.Delete which should delete derived parameter table of subassembly, I keep getting eroor: "Run-time error '-214767259 (80004005)': Method 'Delete' of object 'DerivedParameter Table' Failed"
Funny thing is that this happens only in Inventor 2022 when trying to delete DerivedParameter Table of subassembly. Doing the same for part of assembly is working, and both cases are working in Inventor 2020.
Do you have any idea what could cause this error or how to make deleting derived parameter tables working?
Thank you in advance!
Code:
Sub Main()
Dim oDoc As Inventor.Document
Set oDoc = ThisApplication.ActiveDocument
Dim oAsmCompDef As AssemblyComponentDefinition
Set oAsmCompDef = oDoc.ComponentDefinition
Dim oSubDoc As Inventor.Document
Dim oOccurrence As ComponentOccurrence
For Each oOccurrence In oAsmCompDef.Occurrences
If oOccurrence.Name = "IP_101_R:1" Then
Set oSubDoc = oOccurrence.Definition.Document
Exit For
End If
Next
Remap_derived_parameters oSubDoc
End Sub
Sub Remap_derived_parameters(oDoc As Inventor.Document)
' Create a new Assembly document.
If oDoc.DocumentType = kPartDocumentObject Then
Dim oCompDef As PartComponentDefinition
Set oCompDef = oDoc.ComponentDefinition
Set oModelParams = oCompDef.Parameters.ModelParameters
Set oReferenceParams = oCompDef.Parameters.ReferenceParameters
ElseIf oDoc.DocumentType = kAssemblyDocumentObject Then
Dim oCompDef2 As AssemblyComponentDefinition
Set oCompDef2 = oDoc.ComponentDefinition
End If
Dim oDerivedParam As DerivedParameter
Dim DerivedParameterTable As DerivedParameterTable
If oDoc.DocumentType = kPartDocumentObject Then
For Each DerivedParameterTable In oCompDef.Parameters.DerivedParameterTables
For Each oDerivedParam In DerivedParameterTable.DerivedParameters '20210819 - před smazáním tabulky smazání parametrů
oDerivedParam.Delete
Next
DerivedParameterTable.Delete
Next
ElseIf oDoc.DocumentType = kAssemblyDocumentObject Then
For Each DerivedParameterTable In oCompDef2.Parameters.DerivedParameterTables 'tady je novší verze
'zde začátek vložení
'zde konec vložení
For Each oDerivedParam In DerivedParameterTable.DerivedParameters '20210819 - před smazáním tabulky smazání parametrů
'oDerivedParam.Delete
Next
oDoc.Update
DerivedParameterTable.Delete
Next
End If
End Sub
Public Function BaseFilename(ByVal fullFilename As String) As String
' Extract the filename by getting everttgubg to
' the right of the last backslash.
Dim temp As String
temp = Right(fullFilename, Len(fullFilename) - InStrRev(fullFilename, "\"))
' Get the base filename by getting everything to
' the left of the last period ".".
' BaseFilename = Left(temp, InStrRev(temp, ".") - 1)
BaseFilename = temp
End Function
Sub Delete_derived_tables(oDoc As Inventor.Document)
If oDoc.DocumentType = kPartDocumentObject Then
Dim oCompDef As PartComponentDefinition
Set oCompDef = oDoc.ComponentDefinition
Set oModelParams = oCompDef.Parameters.ModelParameters
Set oReferenceParams = oCompDef.Parameters.ReferenceParameters
ElseIf oDoc.DocumentType = kAssemblyDocumentObject Then
Dim oCompDef2 As AssemblyComponentDefinition
Set oCompDef2 = oDoc.ComponentDefinition
End If
Dim DerivedParameterTable As DerivedParameterTable
If oDoc.DocumentType = kPartDocumentObject Then
For Each DerivedParameterTable In oCompDef.Parameters.DerivedParameterTables
DerivedParameterTable.Delete
Next
ElseIf oDoc.DocumentType = kAssemblyDocumentObject Then
For Each DerivedParameterTable In oCompDef2.Parameters.DerivedParameterTables 'tady je novší verze
DerivedParameterTable.Delete '20210818 zde chyba
Next
End If
End Sub
Solved! Go to Solution.