Sub main 'Function oFix_D3_FG(oDerivedPart, oDN_DwgModelDoc, oDN_woExt_TDMD, oExtn_TDMD, oExit, oCancel) oDerivedPart = ThisDoc.ModelDocument 'ThisDrawing.ModelDocument ' oFFN_DwgModelDoc = oDerivedPart.FullFileName 'ThisDrawing Full File Name oDN_DwgModelDoc = oDerivedPart.DisplayName 'Display Name of ThisDrawing oCustomPropertySet_DwgModelDoc = oDerivedPart.PropertySets.Item("Inventor User Defined Properties") 'Some working parameters Dim oSelect_Other As String = "Select from a REFERENCE Document" Dim oCancel As String = "Cancel" Dim oExit As String = "Exit" oName_Para = InputBox("Name of ueser parameter (edit if necessary)", "Title", "D3") 'Name of user parameter reqyuired to be defined 'Parameters (all in general) Dim oAllParams_DwgModelDoc As Parameters oAllParams_DwgModelDoc = oDerivedPart.ComponentDefinition.Parameters 'User parameters Dim oUserParams_DwgModelDoc As UserParameters oUserParams_DwgModelDoc = oDerivedPart.ComponentDefinition.Parameters.UserParameters 'Reference Parameters Dim oReferenceParams_DwgModelDoc As ReferenceParameters oReferenceParams_DwgModelDoc = oDerivedPart.ComponentDefinition.Parameters.ReferenceParameters 'Create Name_Para user prameter in model cdocument Try 'To crete user parameter assigned to oName_Para oTry = oUserParams_DwgModelDoc.Item(oName_Para).Value Catch oUserParams_DwgModelDoc.AddByValue(oName_Para, 0, UnitsTypeEnum.kMillimeterLengthUnits) param = oUserParams_DwgModelDoc.Item(oName_Para) param.IsKey = True param.ExposedAsProperty = True End Try Dim oList_TargetParamsDwgModelDoc As New ArrayList oList_TargetParamsDwgModelDoc.Add(oSelect_Other) Dim oList_RefParamsDwgModelDoc As New ArrayList For Each oRefParamsDwgModelDoc_X In oReferenceParams_DwgModelDoc oRefParamsDwgModelDoc_XName = oRefParamsDwgModelDoc_X.Name oRefParamsDwgModelDoc_XExpression = oRefParamsDwgModelDoc_X.Expression ' oList_RefParamsDwgModelDoc.Add(oRefParamsDwgModelDoc_XName & ": " & oRefParamsDwgModelDoc_XExpression) oList_RefParamsDwgModelDoc.Add(oRefParamsDwgModelDoc_XName) If oRefParamsDwgModelDoc_XName = oName_Para Then 'Do Nothing Else If oRefParamsDwgModelDoc_XName.Units = "ul" Then 'Do nothing Else oList_TargetParamsDwgModelDoc.Add(oRefParamsDwgModelDoc_XName) End If Next oRefParamsDwgModelDoc_X oSelectt_Multiple_for_D3 = InputListBox("LIST OF REFERENCE PARMETERS (MODEL DOC)", oList_TargetParamsDwgModelDoc, oList_TargetParamsDwgModelDoc(0), Title := "ASSIGN VALUE TO " & oName_Para, ListName := "SELECT d23 or A REF. PARAMETER") If oSelectt_Multiple_for_D3 = oCancel Then 'Do nothing Else If oSelectt_Multiple_for_D3 = oSelect_Other Then oD3_DP(oDerivedPart, oDN_DwgModelDoc, oAllParams_DwgModelDoc, oReferenceParams_DwgModelDoc) Dim oList_AllParamsDwgModelDoc As New ArrayList For Each oList_EachParamDwgModelDoc In oAllParams_DwgModelDoc oName_EachParamDwgModelDoc = oList_EachParamDwgModelDoc.Name oExpression_EachParamDwgModelDoc = oList_EachParamDwgModelDoc.Expression 'oList_RefParamsDwgModelDoc.Add(oRefParamsDwgModelDoc_XName & ": " & oRefParamsDwgModelDoc_XExpression) oList_RefParamsDwgModelDoc.Add(oName_EachParamDwgModelDoc) If oName_EachParamDwgModelDoc = oName_Para Then 'Do Nothing Else If oList_EachParamDwgModelDoc.Units = "ul" Then 'Do nothing Else oList_TargetParamsDwgModelDoc.Add((oName_EachParamDwgModelDoc)) End If Next oList_EachParamDwgModelDoc oList_TargetParamsDwgModelDoc.Add(oCancel) oList_TargetParamsDwgModelDoc.Add(oExit) 'oSelectt_Multiple_for_D3 = InputListBox("2. LIST OF REFERENCE PARMETERS (MODEL DOC)", oList_TargetParamsDwgModelDoc, oList_TargetParamsDwgModelDoc(0), Title := "2. oSelect_Other: " & oName_Para, ListName := "2. SELECT d23 or A REF. PARAMETER") End If param_D3 = oAllParams_DwgModelDoc(oName_Para) 'oName_Para) param_D3_Current = param_D3.Expression '? oList_TargetParamsDwgModelDoc.Add(param_D3_Current) oList_TargetParamsDwgModelDoc.Add(oCancel) oList_TargetParamsDwgModelDoc.Add(oExit) oSelectt_Multiple_for_D3 = InputListBox("Select for D3", oList_TargetParamsDwgModelDoc, oList_TargetParamsDwgModelDoc(0), Title := "D3", ListName := "User Parameter: D3") oIndex_Ref_Selected_forD3 = oList_TargetParamsDwgModelDoc.IndexOf(oSelectt_Multiple_for_D3) oItem_Ref_forD3 = oList_TargetParamsDwgModelDoc(oIndex_Ref_Selected_forD3) 'param_D3 = oUserParams.Item(oItemD3) param_Ref_forD3 = oAllParams_DwgModelDoc.Item(oItem_Ref_forD3) If oSelectt_Multiple_for_D3 = oCancel Then 'Do nothing Else If oSelectt_Multiple_for_D3 = oExit Then ' Return oSelectt_Multiple_for_D3 Else param_D3.Expression = oSelectt_Multiple_for_D3 End If 'oName_Para = "D3" 'param_D3 = oUserParams.Item("D3") '(oName_Para) 'MessageBox.Show("param_D3: " & param_D3.Name _ '& vbLf & "param_D3.Expression: " & param_D3.Expression _ '& vbLf & "oUserParams(2): " & oUserParams(2).ModelValue, "Title") iLogicVb.UpdateWhenDone = True InventorVb.DocumentUpdate() End Sub Function oD3_DP(oDerivedPart, oDN_DwgModelDoc, oAllParams_DwgModelDoc, oReferenceParams_DwgModelDoc) 'Public Sub ModifDerivedParams() Dim oDerPartComp As DerivedPartComponent 'Dim oName_SeletedRef_DerivedPart As DerivedPartComponent Dim oList_RefDocs_DerivedPart As New ArrayList() For Each oRefDoc_DerivedPart In oDerivedPart.ComponentDefinition.ReferenceComponents.DerivedPartComponents oList_RefDocs_DerivedPart.Add(oRefDoc_DerivedPart.Name) Next oRefDoc_DerivedPart Dim oName_SeletedRef_DerivedPart As String 'To select a derived (reference) part oName_SeletedRef_DerivedPart = InputListBox("Prompt, oList_RefDocs_DerivedPart: ", oList_RefDocs_DerivedPart, oList_RefDocs_DerivedPart(0), Title := "SELECT DP FROM", ListName := "LIST OF oList_RefDocs_DerivedPart") xIndex = oList_RefDocs_DerivedPart.IndexOf(oName_SeletedRef_DerivedPart) Dim oRefDPComp_ModelDoc_Selected As DerivedPartComponent oDerPartComp = oDerivedPart.ComponentDefinition.ReferenceComponents.DerivedPartComponents(xIndex + 1) Dim oDef_SelectedDerivedPart As DerivedPartUniformScaleDef oDef_SelectedDerivedPart = oDerPartComp.Definition Dim oDerEntity As DerivedPartEntity Dim oList_Params_RefDP_Selected As New ArrayList() For Each oDerEntity In oDef_SelectedDerivedPart.Parameters 'Parameters 'oRefDP_Def_ModelDoc_Selected.Parameters oList_Params_RefDP_Selected.Add(oDerEntity.ReferencedEntity.Name) Next oDerEntity 'oList_View = InputListBox("Prompt", oList_Params_RefDP_Selected, oList_Params_RefDP_Selected(0), Title := "Title", ListName := "List") Dim oShortList_Params As New ArrayList() 'Short list of paramaters from the derived part selected Do 'To add selected Parameters To list oParam_RefDP_Selected = InputListBox("oD3_DP 1: Prompt", oList_Params_RefDP_Selected, oList_Params_RefDP_Selected(0), Title := "oD3_DP 1: CLICK ''X'' TO CLOSE!", ListName := "oD3_DP 1: Parameters from " & oName_SeletedRef_DerivedPart) If oParam_RefDP_Selected = "" Then Exit Do 'If "X" at top left corner hit oShortList_Params.Add(oParam_RefDP_Selected) oIndex = oList_Params_RefDP_Selected.IndexOf(oParam_RefDP_Selected) oDerEntity = oDef_SelectedDerivedPart.Parameters.Item(oParam_RefDP_Selected) oDerEntity.IncludeEntity = True oList_Params_RefDP_Selected.Remove(oList_Params_RefDP_Selected(oIndex)) Loop While oParam_RefDP_Selected IsNot Nothing 'Set Definition back, so DerivedPart Document is updated oDerPartComp.Definition = oDef_SelectedDerivedPart iLogicVb.UpdateWhenDone = True InventorVb.DocumentUpdate() ThisDoc.Save End Function