首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建可在传输项目标准时共享的共享参数

如何创建可在传输项目标准时共享的共享参数
EN

Stack Overflow用户
提问于 2019-09-03 14:19:03
回答 1查看 1.1K关注 0票数 0

我正在进行一个项目,在这个项目中,我需要创建由墙壁类型组成的多个revit文件,并在其中创建共享参数。我完成了这个过程。

但在手动单击

管理>转移项目标准

复制从“项目名称”>墙类型通过修改接口。

我将创建的不同修复文件的墙壁类型导入到一个文件中。

但是共享参数似乎在墙壁类型的类型参数列表中重复,数据集中在一个集合中,而重复的集合没有数据。

看起来我创建的参数是不可共享的。

代码语言:javascript
复制
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;
                }
            }

在这里,这个代码块是在一个循环中执行的,其中" element“是需要向其中添加共享参数的元素。"param“是参数名," value”是参数的值。

请让我知道这是否是创建共享参数的正确方法,当项目墙类型转移到另一个项目时,该参数可以共享。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 06:27:25

这肯定会发生,只要您在一个循环中,并且一直为每个文件创建一个共享参数。这将导致为每个revit文件创建唯一的GUID。当您组合所有这些参数时,您会发现所有的共享参数都有不同的Guid,但是名称相同。

您需要创建一次共享参数,然后为每个revit文件设置shared参量文件(该文件已经用shared参数创建),并从中获取shared参数,然后将其分配给您希望为每个revit文件创建的类别。

关于共享参数这里的更多信息

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57773617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档