c# - 如何创建可在项目标准传输时共享的共享参数
问题描述
我正在做一个项目,我需要创建多个由墙类型组成的 revit 文件并在其中创建共享参数。我完成了这个过程。
但是通过 revit 界面
手动单击“项目名称”>“墙类型”中的“
管理”>“传输项目标准
副本”。我将创建的不同 Revit 文件的墙类型导入到一个文件中。
但是共享参数似乎在一组数据的墙类型的类型参数列表中重复,并且重复的集合没有数据。
看起来我创建的参数不可共享。
if (Convert.ToString(value) != "")
{
Type type = value.GetType();
string originalFile = uiApp.Application.SharedParametersFilename;
string tempFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()) + ".txt";
using (File.Create(tempFile)) { }
uiApp.Application.SharedParametersFilename = tempFile;
try
{
if (ele.LookupParameter(param) == null)
{
ExternalDefinitionCreationOptions edco = null;
if (type.Name.Equals("Double"))
edco = new ExternalDefinitionCreationOptions(param, ParameterType.Number);
else
edco = new ExternalDefinitionCreationOptions(param, ParameterType.Text);
edco.Visible = true;
var definition = uiApp.Application.OpenSharedParameterFile().Groups.Create("Custom Parameters").Definitions.Create(edco);
var newCategorySet = uiApp.Application.Create.NewCategorySet();
newCategorySet.Insert(doc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls));
Autodesk.Revit.DB.Binding binding = uiApp.Application.Create.NewTypeBinding(newCategorySet);
doc.ParameterBindings.Insert(definition, binding, BuiltInParameterGroup.PG_IDENTITY_DATA);
if (!string.IsNullOrEmpty((string)value))
ele.LookupParameter(param).Set((string)value);
}
else
{
if (!string.IsNullOrEmpty((string)value))
ele.LookupParameter(param).Set((string)
}
}
catch (Exception ex)
{
}
finally
{
uiApp.Application.SharedParametersFilename = originalFile;
}
}
在这里,这个代码块在循环中执行,其中“元素”是需要添加共享参数的元素。“param”是参数名称,“value”是参数的值。
请让我知道这是否是创建可以在项目墙类型转移到另一个项目时共享的共享参数的正确方法。
谢谢
解决方案
肯定会发生这种情况,只要您处于循环中,并不断为每个文件创建一个共享参数。这将导致为每个 revit 文件创建唯一的 GUID。当您将所有内容组合在一起时,您会发现所有具有不同 Guid 但名称相同的共享参数。
您需要创建一次共享参数,然后为每个 revit 文件设置共享参数文件(已使用 sharedparameter 创建)并从中获取共享参数,然后将其分配给每个 revit 文件所需的类别。
更多关于共享参数的信息在这里
希望有帮助。
推荐阅读
- go - 将结构字段的切片转换为可变参数
- android - 将上下文从自定义视图传递给类
- r - 如何添加一个变量来估计自第一次看到某人的天数比例
- mysql - Mysql join - 检查具有某些列值的不存在的行
- javascript - How do I watch the element size on load AND resize of the window with vanilla JS?
- c# - 如何从 c# 客户端获取在 s3 存储桶中的 json 文件上执行的 sql 查询的结果?
- javascript - 在 django-template 中显示聊天发件人的用户个人资料图像
- javascript - How do I keep Javascript Parsley from submitting when a button (not submit) is clicked?
- java - 带有垂直文本的java swing单选按钮
- excel - 我如何开发一个可以有四种输出可能性的工作班次公式