- 创建txt文件路径(string)
- 通过System.IO.FileStream fs = System.IO.File.Create(paraFile)建文件
- 通过app.SharedParametersFilename = paraFile指定文件
- 通过 DefinitionFile DefFile = app.OpenSharedParameterFile();打开文件
- DefinitionFile-------DefinitionGroups------DefinitionGroup-----Definitions------Definition
- CategorySet-----Category
- 创建TypeBinding或InstanceBinding
- 通过BindingMap的Insert方法将5或7步创建的文件链接。返回bool值
BingMap Insert方法
public override bool Insert( Definition key, Binding item ) |
TypeBinding和InstanceBinding都继承自ElementBinding ,ElementBinding继承自Binding。ExternalDefinition继承自Definition
//创建共享参数文件路径,后缀为txt格式文本文件
string paraFile = System.IO.Path.Combine(AppConfig.AddinDirectory, "PS_Shared_Params.txt");
//基于路径创建共享文件
System.IO.FileStream fs = System.IO.File.Create(paraFile);
fs.Close();
//将应用的共享参数文件指定为指定文件
app.SharedParametersFilename = paraFile;
//打开指定定义文件
DefinitionFile DefFile = app.OpenSharedParameterFile();
//获取组
DefinitionGroups myGroups = DefFile.Groups;
//新创建组
DefinitionGroup Group1 = myGroups.Create("Group1");
//从原来组中选择组
DefinitionGroup Group2 = myGroups.get_Item("Group2");
//获取定义
Definitions MyDefinitions = Group1.Definitions;
//选择定义
ExternalDefinition definition1 = MyDefinitions.get_Item("Definition1") as ExternalDefinition;
//新建定义,需要指定参数名和参数类型。
//可以先建选型也可以直接构造一个选型再创建定义
ExternalDefinitionCreationOptions options = new ExternalDefinitionCreationOptions("Def1",ParameterType.Text);
Definition definition2 = MyDefinitions.Create(new ExternalDefinitionCreationOptions("Definition2",ParameterType.Image));
//改变定义分组
definition1.OwnerGroup = myGroups.get_Item("Group3");
//创建类别集合
CategorySet myCategories = app.Create.NewCategorySet();
//找到某类
Category myCategory = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls);
//将类添加到类别集合
myCategories.Insert(myCategory);
//基于类别集合创建类型绑定
TypeBinding typeBinding = app.Create.NewTypeBinding(myCategories);
//基于类别集合创建实例绑定
InstanceBinding instanceBinding = app.Create.NewInstanceBinding(myCategories);
//获取文档的bingdingMap
BindingMap bindingMap = doc.ParameterBindings;
//类别绑定
bool typeBindOK = bindingMap.Insert(definition1,typeBinding);
//实例绑定,最后一个参数为分组,可加可不加
bool instanceBindOK = bindingMap.Insert(definition2,instanceBinding,BuiltInParameterGroup.PG_TEXT);