Всем Доброго,
Вроде разобрался как добавлять общие параметры в проект и как извлечь все общие параметры из проекта.
Теперь понадобилось получить список категорий объектов (BuiltInCategory) назначенных общему параметру. Как это правильно делается?
Для поиска общих параметров в проекте и их записи в класс я использую такой код:
//Class for shared parameters
public class SharedParameterInfo
{
public SharedParameterElement element { get; set; }
public Guid guid { get; set; }
public string name { get; set; }
public ParameterType type { get; set; }
public BuiltInParameterGroup group { get; set; }
public SharedParameterInfo(Autodesk.Revit.DB.Document rvtDoc, InternalDefinition iDefinition)
{
//get SharedParameterElement by Id
if (rvtDoc.GetElement(iDefinition.Id) is SharedParameterElement sharedParamElement)
{
element = sharedParamElement;
guid = sharedParamElement.GuidValue;//get guid
name = iDefinition.Name;
type = iDefinition.ParameterType;
group = iDefinition.ParameterGroup;
}
}
}
//Function to get shared parameters
public static void UgetSharedParameters(Autodesk.Revit.DB.Document rvtDoc)
{
BindingMap bindMap = rvtDoc.ParameterBindings;
DefinitionBindingMapIterator dbmIterator = bindMap.ForwardIterator();
dbmIterator.Reset();
while (dbmIterator.MoveNext())
{
InternalDefinition iDefinition = (InternalDefinition)dbmIterator.Key;//adduction Def to InternalDef
if (null != iDefinition)
{
SharedParameterInfo spi = new SharedParameterInfo(rvtDoc, iDefinition);
if(spi.element != null) sharedParamsList.Add(spi);
}
}
}