Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 public FamilyParameterValueWrapper(Rvt.FamilyType current, Rvt.FamilyParameter rvtRarameter)
 {
     parameter   = rvtRarameter;
     currentType = current;
 }
Ejemplo n.º 11
0
 public FamilyParameterValueWrapper(Rvt.FamilyManager manager, Rvt.FamilyParameter rvtParameter)
     : this(manager.CurrentType, rvtParameter)
 {
 }
Ejemplo n.º 12
0
 internal void AddParameter(Rvt.FamilyParameter parameter, object value)
 {
     parameterValues.Add(parameter.Definition.Name, value);
 }
Ejemplo n.º 13
0
 public FamilyParameterAdapter(Rvt.FamilyParameter parameter)
 {
     familyParameter = parameter;
 }
Ejemplo n.º 14
0
 internal FamilyParameter(Autodesk.Revit.DB.FamilyParameter internalFamilyParameter)
 {
     this.InternalFamilyParameter = internalFamilyParameter;
 }