/// <summary> /// Set the value of a family parameter of the current family type, this applies to all family parameters (instance and type). /// </summary> /// <param name="familyTypeName">The name of Family Type</param> /// <param name="parameter">A family parameter of the current type.</param> /// <param name="value">The new value for the family parameter.</param> /// <returns>The family document with an updated value for the specified parameter.</returns> public FamilyDocument SetParameterValueByName(string familyTypeName, string parameter, object value) { TransactionManager.Instance.EnsureInTransaction(this.InternalDocument); Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameter); if (familyParameter == null) { throw new InvalidOperationException(Properties.Resources.ParameterNotFound); } SetFamilyDocumentCurrentType(familyTypeName); switch (familyParameter.StorageType) { case Autodesk.Revit.DB.StorageType.Integer: SetIntValue(value, familyParameter); break; case Autodesk.Revit.DB.StorageType.Double: SetDoubleValue(value, familyParameter); break; case Autodesk.Revit.DB.StorageType.String: SetStringValue(value, familyParameter); break; case Autodesk.Revit.DB.StorageType.ElementId: SetElementIdValue(value, familyParameter); break; default: break; } TransactionManager.Instance.TransactionTaskDone(); return(this); }
/// <summary> /// Gets the value of a family parameter of the current family type, this applies to all family parameters (instance and type). /// </summary> /// <param name="parameterName">A family parameter of the current type.</param> /// <param name="familyTypeName">The name of the family type.</param> /// <returns>The parameter value.</returns> public object GetParameterValueByName(string familyTypeName, string parameterName) { Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameterName); if (familyParameter == null) { throw new InvalidOperationException(Properties.Resources.ParameterNotFound); } TransactionManager.Instance.EnsureInTransaction(this.InternalFamilyDocument); SetFamilyDocumentCurrentType(familyTypeName); TransactionManager.Instance.TransactionTaskDone(); switch (familyParameter.StorageType) { case Autodesk.Revit.DB.StorageType.Integer: return(FamilyManager.CurrentType.AsInteger(familyParameter) * UnitConverter.HostToDynamoFactor(familyParameter.Definition.GetSpecTypeId())); case Autodesk.Revit.DB.StorageType.Double: return(FamilyManager.CurrentType.AsDouble(familyParameter) * UnitConverter.HostToDynamoFactor(familyParameter.Definition.GetSpecTypeId())); case Autodesk.Revit.DB.StorageType.String: return(FamilyManager.CurrentType.AsString(familyParameter)); case Autodesk.Revit.DB.StorageType.ElementId: Elements.Element element = ElementSelector.ByElementId(FamilyManager.CurrentType.AsElementId(familyParameter).IntegerValue); return(element); default: return(null); } }
/// <summary> /// Gets the formula of a family parameter. /// </summary> /// <param name="parameterName">The family parameter.</param> /// <returns>The family parameter formula.</returns> public string GetFormula(string parameterName) { Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameterName); if (familyParameter == null) { throw new InvalidOperationException(Properties.Resources.ParameterNotFound); } return(familyParameter.Formula); }
/// <summary> /// Set the formula of a family parameter (syntax is exactly as Revit, whatever works in Revit's formulas works here). /// </summary> /// <param name="parameterName">The family parameter.</param> /// <param name="formula">The formula string.</param> /// <returns>The document family</returns> public FamilyDocument SetFormula(string parameterName, string formula) { Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameterName); if (familyParameter == null) { throw new InvalidOperationException(Properties.Resources.ParameterNotFound); } TransactionManager.Instance.EnsureInTransaction(this.InternalDocument); FamilyManager.SetFormula(familyParameter, formula); TransactionManager.Instance.TransactionTaskDone(); return(this); }
private void SetElementIdValue(object value, Autodesk.Revit.DB.FamilyParameter familyParameter) { Autodesk.Revit.DB.ElementId id; try { id = ((Elements.Element)value).InternalElement.Id; } catch (Exception) { throw new InvalidOperationException(string.Format(Properties.Resources.WrongStorageType, typeof(Elements.Element))); } FamilyManager.Set(familyParameter, id); }
private void SetStringValue(object value, Autodesk.Revit.DB.FamilyParameter familyParameter) { string strValue; try { strValue = (string)value; } catch (Exception) { throw new InvalidOperationException(string.Format(Properties.Resources.WrongStorageType, familyParameter.StorageType)); } FamilyManager.Set(familyParameter, strValue); }
/// <summary> /// Remove an existing family parameter from the family. /// </summary> /// <param name="parameterName">The family parameter name.</param> /// <returns>The id of the deleted family parameter.</returns> public int DeleteParameter(string parameterName) { Autodesk.Revit.DB.FamilyParameter familyParameter = FamilyManager.get_Parameter(parameterName); if (familyParameter == null) { throw new InvalidOperationException(Properties.Resources.ParameterNotFound); } int parameterId = familyParameter.Id.IntegerValue; TransactionManager.Instance.EnsureInTransaction(this.InternalDocument); FamilyManager.RemoveParameter(familyParameter); TransactionManager.Instance.TransactionTaskDone(); return(parameterId); }
private void SetIntValue(object value, Autodesk.Revit.DB.FamilyParameter familyParameter) { int intValue; try { intValue = (int)value; } catch (Exception) { throw new InvalidOperationException(string.Format(Properties.Resources.WrongStorageType, familyParameter.StorageType));; } var intValueToSet = intValue * UnitConverter.DynamoToHostFactor(familyParameter.Definition.GetSpecTypeId()); FamilyManager.Set(familyParameter, intValueToSet); }
private void SetDoubleValue(object value, Autodesk.Revit.DB.FamilyParameter familyParameter) { double doubleValue; try { if (Type.GetTypeCode(value.GetType()) == TypeCode.Int64 || Type.GetTypeCode(value.GetType()) == TypeCode.Int32) { doubleValue = Convert.ToDouble(value); } else { doubleValue = (double)value; } } catch (Exception) { throw new InvalidOperationException(string.Format(Properties.Resources.WrongStorageType, familyParameter.StorageType)); } double doubleValueToSet = doubleValue * UnitConverter.DynamoToHostFactor(familyParameter.Definition.GetSpecTypeId()); FamilyManager.Set(familyParameter, doubleValueToSet); }
public FamilyParameterValueWrapper(Rvt.FamilyType current, Rvt.FamilyParameter rvtRarameter) { parameter = rvtRarameter; currentType = current; }
public FamilyParameterValueWrapper(Rvt.FamilyManager manager, Rvt.FamilyParameter rvtParameter) : this(manager.CurrentType, rvtParameter) { }
internal void AddParameter(Rvt.FamilyParameter parameter, object value) { parameterValues.Add(parameter.Definition.Name, value); }
public FamilyParameterAdapter(Rvt.FamilyParameter parameter) { familyParameter = parameter; }
internal FamilyParameter(Autodesk.Revit.DB.FamilyParameter internalFamilyParameter) { this.InternalFamilyParameter = internalFamilyParameter; }