using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ShareParameters
{
[Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document revitDoc = commandData.Application.ActiveUIDocument.Document; //取得文档
UIApplication uiApp = commandData.Application;
Application revitApp = commandData.Application.Application; //取得应用程序
Transaction trans = new Transaction(revitDoc, "CreatSharedParams");
trans.Start();
string groupname = "建筑信息自己建设";
string definitionname = "构件名字";
string definitionname2 = "施工单位名称";
string definitionname3 = "监理单位名称";
List<string> list = new List<string>();
list.Add(definitionname);
list.Add(definitionname2);
list.Add(definitionname3);
ParameterType parameterType = ParameterType.Text;
//创建共享参数文档
string sharedparameterfilename = @"C:\Users\Documents\共享参数.txt";
if (!System.IO.File.Exists(sharedparameterfilename))
{
try
{
System.IO.StreamWriter sw = System.IO.File.CreateText(sharedparameterfilename);
sw.Close();
}
catch
{
throw new Exception(" canont create share parameter file" + sharedparameterfilename);
}
}
//设置共享参数文件
revitApp.SharedParametersFilename = sharedparameterfilename;
//打开共享参数文件
DefinitionFile definitionFile = revitApp.OpenSharedParameterFile();
if (definitionFile == null)
{
throw new Exception("不能够打开共享文件");
}
//获取参数组集合
DefinitionGroups groups = definitionFile.Groups;
//获取参数组
DefinitionGroup group = groups.get_Item(groupname);
//如果参数组不存在,则创建一个
if (null == group)
{
group = groups.Create(groupname);
}
//获取参数定义
List<Definition> list2 = new List<Definition>();
for (int i = 0; i < list.Count; i++)
{
//Definition definition = group.Definitions.get_Item(list[i]);
list2.Add(group.Definitions.get_Item(list[i]));
if (list2[i ] == null)
{
//definition = group.Definitions.Create(definitionname, parameterType);
ExternalDefinitionCreationOptions externalDefinitionCreationOptions = new ExternalDefinitionCreationOptions(list[i], parameterType);
//definition = group.Definitions.Create(externalDefinitionCreationOptions);
list2.Add(group.Definitions.Create(externalDefinitionCreationOptions));
}
}
// 创建类别集合用于绑定,把墙这个类别加入
CategorySet categorySet = new CategorySet();
Category wallcategory = revitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls);
categorySet.Insert(wallcategory);
//创建 InstanceBinding
InstanceBinding instanceBinding = uiApp.Application.Create.NewInstanceBinding(categorySet);
trans.Commit();
return Result.Succeeded;
}
}
}
共享参数s ---多个参数
最新推荐文章于 2024-04-30 09:22:32 发布