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

@robertast 

Here you go :slightly_smiling_face:

Sub Main
	Dim asm As AssemblyDocument = ThisDoc.Document
	copyParams(asm)
	iLogicVb.UpdateWhenDone = True
End Sub
Sub copyParams(oAsm As AssemblyDocument)
	For Each oDoc As Document In oAsm.ReferencedDocuments
		If oAsm.ComponentDefinition.Occurrences.AllReferencedOccurrences(oDoc).Count > 0
			If oDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject
				Dim oDef As PartComponentDefinition = oDoc.ComponentDefinition
				For Each oParam As Inventor.Parameter In oAsm.ComponentDefinition.Parameters.UserParameters
					Dim paramInPart As Inventor.Parameter
					Try
						paramInPart = oDef.Parameters.UserParameters.Item(oParam.Name)
						Try
							paramInPart.Expression = oParam.Expression
						Catch
							paramInPart.Value = oParam.Value
						End Try
					Catch
						Try
							oDef.Parameters.UserParameters.AddByExpression(oParam.Name, oParam.Expression, oParam.Units)
						Catch
							oDef.Parameters.UserParameters.AddByValue(oParam.Name, oParam.Expression, oParam.Units)
						End Try
					End Try
				Next
			ElseIf oDoc.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject
				'if the referenced document is an assembly
				'the sub will call itself with that document as the argument
				copyParams(oDoc)
			End If
		End If
	Next
End Sub