在此先感谢您的帮助。我不知道我做错了什么,这变得非常令人沮丧。首先,一点背景...
程序:Revit MEP 2015 IDE:VS 2013 Ultimate
我创建了一个共享参数文件并将该文件中的参数添加到项目参数中。这些参数已应用于 Conduit Runs、Conduit Fittings 和 Conduit。
我正在使用 VB.NET 毫无问题地填充参数。代码运行后,我可以看到元素属性窗口中应用的预期文本。这是用于填充值的代码:
填充:
Dim p as Parameter = Nothing
Dim VarName as String = "Parameter Name"
Dim VarVal as String = "Parameter Value"
p = elem.LookupParameter(VarName) <-- elem is passed in to the function as an Element
If p IsNot Nothing Then
p.Set(VarVal)
End if
这是我遇到错误的地方。当我尝试检索该值时,我可以通过参数的定义名称获取参数,但该值始终为空白。这是用于检索的代码...
Try
For Each e As Element In fec.OfCategory(BuiltInCategory.OST_ConduitRun)
sTemp = sTemp & "Name: " & P.Definition.Name & vbCrLf & "Value: " & P.AsString & vbCrLf & "Value As: " & P.AsValueString & vbCrLf & vbCrLf
sTemp2 = sTemp2 & "Name: " & GetParamInfo(P, doc)
Next
MessageBox.Show(sTemp)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
消息框正确显示了所有参数名称,并且为 Revit 参数提供了一个值。但是,共享参数仅显示参数名称,值始终为空白。还有另一种我应该解决这个问题的方法吗?奇怪的是,如果我像这样使用用户选择的引用,我可以看到共享参数值......
Dim uiDoc As UIDocument = app.ActiveUIDocument
Dim Sel As Selection = uiDoc.Selection
Dim pr As Reference = Nothing
Dim doc As Document = uiDoc.Document
Dim fec As New FilteredElementCollector(doc)
Dim filter As New ElementCategoryFilter(BuiltInCategory.OST_ConduitRun)
Dim sTemp As String = "", sTemp2 As String = ""
Dim elemcol As FilteredElementCollector = fec.OfCategory(BuiltInCategory.OST_ConduitRun)
Dim e As Element = Nothing, el As Element = Nothing
Dim P As Parameter
pr = Sel.PickObject(ObjectType.Element)
e = doc.GetElement(pr)
For Each P in e.Paramters
sTemp = sTemp & "Name: " & P.Definition.Name & vbCrLf & "Value: " & P.AsString & vbCrLf & "Value As: " & P.AsValueString & vbCrLf & vbCrLf
sTemp2 = sTemp2 & "Name: " & GetParamInfo(P, doc)
Next
MessageBox.Show(sTemp)
使用上面的方法,当用户直接选择对象时,我可以看到共享参数的值和名称。它们有何不同?
当值设置为开始时,我应该查看某种绑定吗?提前感谢大家的帮助。
问候,格伦