This commit is contained in:
ShrlAlgo
2025-07-11 09:20:23 +08:00
parent c7b104f44f
commit 4d35cadb56
840 changed files with 102347 additions and 11595 deletions

View File

@@ -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();
}