Я пытаюсь сгенерировать некоторые элементы в Revit, используя один макрос.Когда я пытаюсь определить какой-либо параметр для любого сгенерированного элемента, я использую метод Set()
из класса Parameter
.
Когда я пытаюсь определить любой параметр double
, int
или string
, он работает нормально.Однако, когда я пытаюсь определить параметр bool
, он не работает.
Я знаю, что в Revit вы должны определить все логические параметры как int, поэтому я преобразую все логические параметры в 0, когда ложь, и в 1, если истина.
public void Define_Parameter()
{
// I get the family.
Family family_test = Get_Family("STR_Top&BottomReinforcement_Fixed_pruebas");
// I get the symbols of the family.
FamilySymbol symbols_test = ActiveUIDocument.Document.GetElement(family_test.GetFamilySymbolIds().First()) as FamilySymbol;
// I initiate one transaction.
Transaction transaction_test = new Transaction(ActiveUIDocument.Document, "Test");
transaction_test.Start();
// I generate all elements requiered to generate a new family instance
Line line_test = Line.CreateBound(new XYZ(0, 10, ActiveUIDocument.ActiveView.Origin.Z), new XYZ(10, 10, ActiveUIDocument.ActiveView.Origin.Z));
FamilyInstance instance_test = ActiveUIDocument.Document.Create.NewFamilyInstance(line_test, symbols_test, ActiveUIDocument.ActiveView);
// I modify the boolean parameter.
Parameter parameter = Get_Parameter(instance_test, "Top_Hook90_Right");
parameter.Set(1);
transaction_test.Commit();
}
public static Family Get_Family(string Family_Name)
{
// I get all families of the model.
FilteredElementCollector filter = new FilteredElementCollector(Phantom.BIM.Revit.Recursos.Datos.Documento_Revit.Document);
List<Element> families = filter.OfClass(typeof(Family)).ToList();
// I go through the list of families and I try to get the one requested
foreach (Element family in families) if ((family as Family).Name == Family_Name) return family as Family;
// The family requested doesn't exists.
return null;
}
public static Parameter Get_Parameter(Element Host_Element, string Param_Name)
{
// I go through the list of parameters and I try to return the one requested.
foreach (Parameter param in Host_Element.Parameters) if (param.Definition.Name == Param_Name) return param;
// The parameter doesn't exists.
return null;
}
Это все требуемые методыдля макроса.Я не знаю, почему не работает с булевыми параметрами ... Есть идеи?
Спасибо