Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
RoyWickrama_RWEI
1092 Views, 3 Replies

To extract parameters in to model document (which is a derived part) in drawing

I am developing a rule in which I need to deal with derived parts where I need to get some of the selected parameters added in to the current model document in the drawing.
I can't get this around: I request help

(Note: I have removed much of unnecessary lines from code)

 

2019-08-20 21 1st.png 2019-08-20 21 2nd.png

Sub main		'Function oFix_D3_FG(oDwgModelDoc, oDN_DwgModelDoc, oDN_woExt_TDMD, oExtn_TDMD, oExit, oCancel)
	oDwgModelDoc = ThisDoc.ModelDocument		'ThisDrawing.ModelDocument		'
	oFFN_DwgModelDoc = oDwgModelDoc.FullFileName	'ThisDrawing Full File Name
	oDN_DwgModelDoc = oDwgModelDoc.DisplayName	'Display Name of ThisDrawing
	oCustomPropertySet_DwgModelDoc = oDwgModelDoc.PropertySets.Item("Inventor User Defined Properties")
	
	'Some working parameters
	Dim oSelect_Other As String = "Select from a REFERENCE Document"
	Dim oCancel As String = "Cancel"

	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 = oDwgModelDoc.ComponentDefinition.Parameters
	'User parameters
	Dim oUserParams_DwgModelDoc As UserParameters 
	oUserParams_DwgModelDoc = oDwgModelDoc.ComponentDefinition.Parameters.UserParameters
	'Reference Parameters
	Dim oReferenceParams_DwgModelDoc As ReferenceParameters 
	oReferenceParams_DwgModelDoc = oDwgModelDoc.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_RefParamsDwgModelDoc As New ArrayList
	oList_RefParamsDwgModelDoc.Add(oSelect_Other)
	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)
	Next oRefParamsDwgModelDoc_X 	
	oList_RefParamsDwgModelDoc.Add(oCancel)
		
	oRefParamsDwgModelDocX_Selected = InputListBox("LIST OF REFERENCE PARMETERS (MODEL DOC)", oList_RefParamsDwgModelDoc, oList_RefParamsDwgModelDoc(0), Title := "ASSIGN VALUE TO " & oName_Para, ListName := "SELECT d23 or A REF. PARAMETER")
	If oRefParamsDwgModelDocX_Selected = oCancel Then
		'Do nothing
	End If
	
	If oRefParamsDwgModelDocX_Selected = oSelect_Other Then
		oD3_DP(oDwgModelDoc, oDN_DwgModelDoc, oAllParams_DwgModelDoc, oReferenceParams_DwgModelDoc)
	End If

	iLogicVb.UpdateWhenDone = True
	InventorVb.DocumentUpdate()

End Sub	



Function oD3_DP(oDwgModelDoc, oDN_DwgModelDoc, oAllParams_DwgModelDoc, oReferenceParams_DwgModelDoc)		'Public Sub ModifDerivedParams()
		'Dim oName_DP_Selected As DerivedPartComponent
		Dim oList_DPs_ModelDoc As New ArrayList()

		For Each oDP_ModelDoc In oDwgModelDoc.ComponentDefinition.ReferenceComponents.DerivedPartComponents
			oList_DPs_ModelDoc.Add(oDP_ModelDoc.Name)
		Next oDP_ModelDoc

		Dim oName_DP_Selected As String	'To select a derived (reference) part
		oName_DPX_Selected = InputListBox("Prompt, oList_DPs_ModelDoc: ", oList_DPs_ModelDoc, oList_DPs_ModelDoc(0), Title := "SELECT DP FROM", ListName := "LIST OF oList_DPs_ModelDoc")
		xIndex  = oList_DPs_ModelDoc.IndexOf(oName_DPX_Selected)

		Dim oRefDP_ModelDoc_Selected As DerivedPartComponent
		oRefDP_ModelDoc_Selected = oDwgModelDoc.ComponentDefinition.ReferenceComponents.DerivedPartComponents(xIndex + 1)
		'MessageBox.Show("oRefDP_ModelDoc_Selected.Name: " & oRefDP_ModelDoc_Selected.Name, "Title")

		'To retrieve parameters from selected derived part
		Dim oDef_Selected_RefDP_ModelDoc As DerivedPartUniformScaleDef
		oDef_Selected_RefDP_ModelDoc = oRefDP_ModelDoc_Selected.Definition
		Dim oDPE_RefDPSelected_ModelDoc As DerivedPartEntity		'For Each oDPE_RefDPSelected_ModelDoc In oDef_Selected_RefDP_ModelDoc.Parameters
	
	Dim oList_Params_RefDP_Selected As New ArrayList()
	For Each oDPE_RefDPSelected_ModelDoc In oDef_Selected_RefDP_ModelDoc.Parameters	'Parameters	'oDef_Selected_RefDP_ModelDoc.Parameters
		oList_Params_RefDP_Selected.Add(oDPE_RefDPSelected_ModelDoc.ReferencedEntity.Name)
	Next oDPE_RefDPSelected_ModelDoc
	
	Dim oShortList_Params_RefDP_Selected As New ArrayList()		'Short list of paramaters from the derived part selected

	Do	'To add selected Parameters To list
		oParam_RefDP_Selected = InputListBox("Prompt", oList_Params_RefDP_Selected, oList_Params_RefDP_Selected(0), Title := "CLICK ''X'' TO CLOSE!", ListName := "Parameters from " & oRefDP_ModelDoc_Selected.Name)
		If oParam_RefDP_Selected = "" Then Exit Do
		oShortList_Params_RefDP_Selected.Add(oParam_RefDP_Selected)
		oIndex = oList_Params_RefDP_Selected.IndexOf(oParam_RefDP_Selected)
		oList_Params_RefDP_Selected.Remove(oList_Params_RefDP_Selected(oIndex))
	Loop While oParam_RefDP_Selected IsNot Nothing
		
	If oShortList_Params_RefDP_Selected.Count = 0 Then
		'Donothing
	Else	'to get a display of parameters selected
	d0 = InputListBox("Prompt", oShortList_Params_RefDP_Selected, oShortList_Params_RefDP_Selected(0), Title := "PARAMETERS", ListName := "PARAMETERS SELECTED")
	end if
	
	'NOTE"
	'REQUEST HELP WITH SOME CODE HERE (OR AS SUITABLE OTHERWISE)TO GET THE SELECTED PARAMETERS ADDEd IN THE MODEL DOCUMENT
	
	' ----
	'------
	

iLogicVb.UpdateWhenDone = True
InventorVb.DocumentUpdate()
ThisDoc.Save

End Function