更新
This commit is contained in:
@@ -26,6 +26,53 @@ public class ParameterAssist
|
||||
return extDef;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加或附加绑定自定义共享参数
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <param name="paramName"></param>
|
||||
/// <param name="categories"></param>
|
||||
public static void AddOrAttachSharedParameter(Document doc, string paramName, BuiltInParameterGroup group = BuiltInParameterGroup.PG_ADSK_MODEL_PROPERTIES, ParameterType parameterType = ParameterType.Text, params Category[] categories)
|
||||
{
|
||||
if (IsExistProjectParam(doc, paramName, out var def, out var binding))
|
||||
{
|
||||
foreach (var cate in categories)
|
||||
{
|
||||
binding.Categories.Insert(cate);
|
||||
}
|
||||
doc.ParameterBindings.ReInsert(def, binding, group);
|
||||
}
|
||||
else
|
||||
{
|
||||
string addInPath = Assembly.GetExecutingAssembly().Location;
|
||||
string dirAssembly = Path.GetDirectoryName(addInPath);
|
||||
|
||||
var filePath = Path.Combine(Path.GetTempPath(), $"TempSharedParameters.txt");
|
||||
var app = doc.Application;
|
||||
var originSharedParametersFile = app.SharedParametersFilename.Clone().ToString();
|
||||
DefinitionFile tempFile = CreateTempSharedParameterFile(app, filePath);
|
||||
var g = tempFile.Groups.Create("TempGroup");
|
||||
var categorySet = app.Create.NewCategorySet();
|
||||
foreach (Category item in categorySet)
|
||||
{
|
||||
categorySet.Insert(item);
|
||||
}
|
||||
var newInstanceBinding = app.Create.NewInstanceBinding(categorySet);
|
||||
ExternalDefinitionCreationOptions options =
|
||||
new(paramName, parameterType);
|
||||
try
|
||||
{
|
||||
var definition = g.Definitions.Create(options);
|
||||
doc.ParameterBindings.Insert(definition, newInstanceBinding, group);
|
||||
}
|
||||
finally
|
||||
{
|
||||
app.SharedParametersFilename = originSharedParametersFile.ToString();
|
||||
//File.Delete(tempFile.Filename);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 关联族参数
|
||||
/// </summary>
|
||||
@@ -147,6 +194,60 @@ public class ParameterAssist
|
||||
var familyMgr = famdoc.FamilyManager;
|
||||
return familyMgr.AddParameter(paraName, paraGroup, paramType, isInstance);
|
||||
}
|
||||
/// <summary>
|
||||
/// 只读族参数
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <param name="familyManager"></param>
|
||||
public static void CreateReadOnlyParameter(Document doc, FamilyManager familyManager)
|
||||
{
|
||||
var file = Path.Combine(Environment.CurrentDirectory, "test.txt");
|
||||
if (!File.Exists(file))
|
||||
{
|
||||
File.Create(file);
|
||||
}
|
||||
doc.Application.SharedParametersFilename = file;
|
||||
var definitionFile = doc.Application.OpenSharedParameterFile();
|
||||
using (var trans = new Transaction(doc, "只读参数"))
|
||||
{
|
||||
try
|
||||
{
|
||||
trans.Start();
|
||||
var groupName = "分组名";
|
||||
var definitionGroup = definitionFile.Groups.get_Item(groupName);
|
||||
if (definitionGroup is null)
|
||||
{
|
||||
definitionGroup = definitionFile.Groups.Create(groupName);
|
||||
}
|
||||
var definitionName = "参数名";
|
||||
var definition = definitionGroup.Definitions.get_Item(definitionName);
|
||||
if (definition is null)
|
||||
{
|
||||
var options = new ExternalDefinitionCreationOptions(definitionName, ParameterType.Text)
|
||||
{
|
||||
UserModifiable = false,
|
||||
};
|
||||
definition = definitionGroup.Definitions.Create(options);
|
||||
}
|
||||
if (familyManager.get_Parameter(definition) is null)
|
||||
{
|
||||
var familyParameter = familyManager.AddParameter(definition as ExternalDefinition, BuiltInParameterGroup.PG_TEXT, true);
|
||||
if (familyParameter != null)
|
||||
{
|
||||
familyManager.Set(familyParameter, "参数值");
|
||||
}
|
||||
}
|
||||
trans.Commit();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (trans.HasStarted())
|
||||
{
|
||||
trans.RollBack();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void CreateSharedFamilyParam(Application app, Document famdoc)
|
||||
{
|
||||
@@ -600,53 +701,6 @@ public class ParameterAssist
|
||||
return isExist;
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加或附加绑定自定义共享参数
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <param name="paramName"></param>
|
||||
/// <param name="categories"></param>
|
||||
public static void AddOrAttachSharedParameter(Document doc, string paramName, BuiltInParameterGroup group = BuiltInParameterGroup.PG_ADSK_MODEL_PROPERTIES, ParameterType parameterType = ParameterType.Text, params Category[] categories)
|
||||
{
|
||||
if (IsExistProjectParam(doc, paramName, out var def, out var binding))
|
||||
{
|
||||
foreach (var cate in categories)
|
||||
{
|
||||
binding.Categories.Insert(cate);
|
||||
}
|
||||
doc.ParameterBindings.ReInsert(def, binding, group);
|
||||
}
|
||||
else
|
||||
{
|
||||
string addInPath = Assembly.GetExecutingAssembly().Location;
|
||||
string dirAssembly = Path.GetDirectoryName(addInPath);
|
||||
|
||||
var filePath = Path.Combine(Path.GetTempPath(), $"TempSharedParameters.txt");
|
||||
var app = doc.Application;
|
||||
var originSharedParametersFile = app.SharedParametersFilename.Clone().ToString();
|
||||
DefinitionFile tempFile = CreateTempSharedParameterFile(app, filePath);
|
||||
var g = tempFile.Groups.Create("TempGroup");
|
||||
var categorySet = app.Create.NewCategorySet();
|
||||
foreach (Category item in categorySet)
|
||||
{
|
||||
categorySet.Insert(item);
|
||||
}
|
||||
var newInstanceBinding = app.Create.NewInstanceBinding(categorySet);
|
||||
ExternalDefinitionCreationOptions options =
|
||||
new(paramName, parameterType);
|
||||
try
|
||||
{
|
||||
var definition = g.Definitions.Create(options);
|
||||
doc.ParameterBindings.Insert(definition, newInstanceBinding, group);
|
||||
}
|
||||
finally
|
||||
{
|
||||
app.SharedParametersFilename = originSharedParametersFile.ToString();
|
||||
//File.Delete(tempFile.Filename);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 判断参数是什么参数,true是项目参数的项目参数,false是共享参数的项目参数
|
||||
/// </summary>
|
||||
/// <param name="param"></param>
|
||||
@@ -842,7 +896,7 @@ public class ParameterAssist
|
||||
// select p;
|
||||
}
|
||||
|
||||
famdoc.LoadFamily(doc, new LoadFamilyOptions());
|
||||
famdoc.LoadFamily(doc, new DefaultFamilyLoadOptions());
|
||||
trans.Commit();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user