我想将参数值传递给Revit family。我在google上花了很多时间。结果我得到的链接很少,用VB.NET告诉读写参数值 Read and Write Parameter Values with VB.NET
在这个例子中,我们提取参数并在名为ParametersValue.txt
的文本文件中写入值。但我很困惑,我应该如何将此文件传递给Revit?
我希望有人能引导我朝着正确的方向前进。我真的很感激!
答案 0 :(得分:2)
下载上一篇文章中提到的SDK后,我要做的第一件事就是安装附带的revit lookup addin。这对于确定API中调用的元素以及确定参数使用的存储类型非常有价值。如果要更新的所有参数都是字符串,那么从文本文件设置这些参数将非常简单。但是,例如,如果您认为的字符串参数值实际上是由elementid设置的,那么将会有一些编码来获取正确的信息以设置参数值。
答案 1 :(得分:1)
您可以使用“ FamilyManager”类轻松地将参数传递给组件系列。 FamilyManager类提供对族类型和参数的访问。只需获取参数并设置其值即可。当我们使用组件族的族编辑器时,我们必须在项目中加载参数值。我已经在Revit 2019上尝试过此操作。您必须
然后在该系列的属性中检查参数值。
Public Sub SetParamtersForComponentFamilies(ByVal doc As Document, ByVal parameterValue As String)
Dim f As Family = doc.OwnerFamily
Using trans As Transaction = New Transaction(doc, "Creating transaction for parameters")
trans.Start()
Dim familyMgr As FamilyManager = doc.FamilyManager
Dim n As Integer = familyMgr.Parameters.Size
Dim comment As FamilyParameter = familyMgr.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_COMMENTS)
familyMgr.Set(comment, parameterValue)
TaskDialog.Show("Paramters", "TypeComments : Updated")
trans.Commit()
End Using
End Sub
答案 2 :(得分:0)
我在编写Revit API代码时使用C#,因为这就是所有示例都写入的内容,但我可能会指出正确的方向并附加一些其他细节。您是否希望为特定参数指定值?例如:身高= 30“? 如果是这样,你首先必须“获得”参数。在spidernet的例子中,他遍历所选元素的每个参数:
Dim元素As Autodesk.Revit.DB.Element = SelElement(cmdData.Application.ActiveUIDocument.Selection).Element'提示您选择元素
For Each p As Parameter In element.Parameters 'Goes through every parameter in "element" and assigns the parameter to "p"
If p.Definition.Name = "Height" Then 'Check if "p" is the name you want, "Height"
p.Set(2.5) 'Because Revit knows FEET, so in order to type in 30in you use 2.5
End If
Next 'Loop through parameters
如果您正在寻找其他内容,请再次发帖。
另外,不确定你是否知道,但是一个充满博客的博客是伟大的Revit API信息是Jeremy Tammik的:http://thebuildingcoder.typepad.com。他的很多例子都是C#,这就是我开始学习C#而不是VB.NET的原因。
如果您还没有,请确保在此处获取Revit 2014 SDK:http://images.autodesk.com/adsk/files/Revit2014SDK_RTM0.exe
它有一些TON样本也可能有所帮助。祝你好运!