gpt4 book ai didi

c# - Revit C# API 在族内重命名或添加参数

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:49 24 4
gpt4 key购买 nike

我修改了一些 Revit 梁和柱族以添加一个参数,用于关联一系列模型元素以用于计划目的。现在我的老板要求我更改该参数的名称(根据他最初建议的名称)。

请注意,此参数是实例参数,不是共享参数。

现在我想以编程方式做两件事 -- 首先,我想将该参数重命名为新名称。其次,如果该参数(新名称)尚未在其他梁/柱系列中定义,我想将该参数(新名称)添加到这些系列中。

我在网上摸索了几种方法,比如:

    BindingMap All_Binding = doc.ParameterBindings;
DefinitionBindingMapIterator Iterator = All_Binding.ForwardIterator();
Iterator.Reset(); List<string> BindingList = new List<string>();
while (Iterator.MoveNext())
{
Definition def = Iterator.Key;
ElementBinding Binders = (ElementBinding)Iterator.Current;
BindingList.Add(def.Name);
}
BindingList.Sort();

这将返回项目中可用的共享参数列表。

我也研究过 FamilyManager,但没有详细记录。我试过:

doc.FamilyManager.RenameParameter(FamilyParameter *****, "标签组")但是 FamilyManager 选项没有很好的记录(我什至不确定列出的“FamilyParameter”是否与“.rfa”文件中定义的参数匹配,或者完全匹配其他东西)。我尝试将与 ElementName.Parameters 关联的参数作为 FamilyParameter *******,但 Visual Studio 提示类型错误,当我尝试添加“作为 Family Parameter”时,它提示“不能将 Parameter 隐式转换为 FamilyParameter”。

谁能指导我如何为项目中已有的族添加或重命名参数?

最佳答案

如果您知道要更改的参数的名称,则可以使用以下解决方案(编辑系列模式):

Document doc = this.ActiveUIDocument.Document;

if( !doc.IsFamilyDocument )
{
TaskDialog.Show("Error","This is not a family document");
return;
}

//give here old and new name
string oldname = "Reverse_direction";
string newname = "Reverse direction";

FamilyManager fman = doc.FamilyManager;

if (fman.get_Parameter(oldname) != null)
{
using (Transaction t = new Transaction(doc,"Change name"))
{
t.Start();
FamilyParameter param = fman.get_Parameter(oldname);
fman.RenameParameter(param, newname);
t.Commit();
}
}

关于c# - Revit C# API 在族内重命名或添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com