如下示例代码,还需增加检索参数所属草图和检索抑制特征的参数。
'['........................获取参数列表展示.....................
' 定义一个ArrayList对象用于存储参数名
Dim oCSB As New ArrayList
' 获取模型参数集合
Dim modelParam As ModelParameters
modelParam = ThisApplication.ActiveDocument.ComponentDefinition.Parameters.ModelParameters
' 遍历模型参数集合,并将参数名称添加到数组中
oCSB.Add("[模型参数区段]") ' 添加模型参数区段的标识
For Each Item In modelParam
oCSB.Add(Item.Name) ' 将模型参数名称添加至数组,不包含参数值
Next
' 获取参考参数集合
Dim ReferenceParam As ReferenceParameters
ReferenceParam = ThisApplication.ActiveDocument.ComponentDefinition.Parameters.ReferenceParameters
' 遍历参考参数集合,并将参数名称添加到数组中
oCSB.Add("[参考参数区段]") ' 添加参考参数区段的标识
For Each Item In ReferenceParam
oCSB.Add(Item.Name) ' 将参考参数名称添加至数组,不包含参数值
Next
' 获取用户参数集合
Dim UserParam As UserParameters
UserParam = ThisApplication.ActiveDocument.ComponentDefinition.Parameters.UserParameters
' 遍历用户参数集合,并将参数名称添加到数组中
oCSB.Add("[用户参数区段]") ' 添加用户参数区段的标识
For Each Item In UserParam
oCSB.Add(Item.Name) ' 将用户参数名称添加至数组,不包含参数值
Next
' 显示一个输入列表框,让用户从参数列表中选择一个参数
XX = InputListBox("Fx参数", oCSB, oCSB, Title:="非官方 Inventor", ListName:="从列表中选择Fx参数")
' 检查用户是否选择了有效参数,而不是区段标识
If XX = "" Or (XX = "[用户参数区段]" Or XX = "[模型参数区段]" Or XX = "[参考参数区段]") Then
MessageBox.Show("请选择一个实际参数,而不是区段标题。", "提示")
Exit Sub
End If
']
'.......................................................................................................................................
'['...............................查找参数所属草图或特征....................................
oDoc = ThisApplication.ActiveEditDocument
oCompDef = oDoc.ComponentDefinition
'声明参数集
Dim oparams As Parameters = oCompDef.Parameters
Try
oparam = oparams.Item(XX)
Catch ex As Exception
MessageBox.Show("未能找到参数 '" & userInput & "'。请确保输入的参数名正确且存在于当前组件定义中。","温馨提示")
Exit Sub
End Try
' 声明标志位,记录是否找到匹配特征
Dim matchingFeatureFound As Boolean = False
' 遍历特征
For Each feat As PartFeature In oCompDef.Features
' 遍历特征参数
For Each opar As Parameter In feat.Parameters
' 对比特征参数和目标参数
If opar.Name = oparam.Name Then
' 选中特征
ThisApplication.ActiveDocument.SelectSet.Select(feat)
matchingFeatureFound = True ' 找到匹配特征时,设置标志位为 True
Exit For ' 找到匹配特征后,无需继续遍历当前特征的其他参数
End If
Next
If matchingFeatureFound Then
Exit For ' 找到匹配特征后,无需继续遍历其他特征
End If
Next feat
If Not matchingFeatureFound Then ' 如果未找到匹配特征,则触发错误处理
Err.Raise(-1, "FindMatchingFeature", "未找到与参数 '" & oparam.Name & "' 对应的特征")
End If
']
@王承之pmhker 王老师。有空帮忙分析下是否可行。感谢!
已解决! 转到解答。
Link copied