我正在一个项目中,我需要创建多个由墙类型组成的revit文件,并在其中创建共享参数。我完成了这个过程。
但是手动点击
管理>传输项目标准
通过revit界面从“项目名称”> Wall Types复制。
我将创建的不同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”是参数的值。
请让我知道这是否是创建共享参数的正确方法,当将项目墙类型转移到另一个项目时可以共享该参数。
谢谢
答案 0 :(得分:0)
肯定会发生这种情况,只要您处于循环中,并且会继续为每个文件创建一个共享参数。这将导致为每个revit文件创建唯一的GUID。当您将所有参数组合在一起时,会发现所有具有相同Guid且名称相同的共享参数。
您需要一次创建一个共享参数,然后为每个revit文件设置sharedparameter文件(已使用sharedparameter创建的文件)并从中获取sharedparameter,然后将其分配给每个revit文件所需的类别。
有关共享参数here的更多信息
希望有帮助。