Exemple #1
0
        public SelectParameterForm(SetRevitDataForm _parent, List <RevitParameter> allParams, List <RevitParameter> selectedParams)
        {
            parameters = allParams;
            parent     = _parent;
            InitializeComponent();

            // Add list items for each parameters
            listView.ItemsSource       = parameters;
            listView.DisplayMemberPath = "ParameterName";

            // Preselected parameters
            if (selectedParams.Count > 0)
            {
                foreach (object t in listView.Items)
                {
                    RevitParameter rp = t as RevitParameter;
                    foreach (RevitParameter sp in selectedParams)
                    {
                        if (rp != null && rp.ParameterName == sp.ParameterName)
                        {
                            listView.SelectedItems.Add(rp);
                        }
                    }
                }
            }
        }
Exemple #2
0
        private void okButton_Click(object sender, RoutedEventArgs e)
        {
            List <RevitParameter> selectedParams = new List <RevitParameter>();

            try
            {
                foreach (RevitParameter item in listView.SelectedItems)
                {
                    try
                    {
                        RevitParameter rp = item;
                        selectedParams.Add(rp);
                    }
                    catch (Exception exception)
                    {
                        Debug.WriteLine(exception.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            parent.SelectedParameters = selectedParams;
            parent.AddControls();
            Close();
        }
        public IList <Element> GetElementValueDouble(RevitParameter valRevitParameter, List <ElementId> valCategoryElementId, string valValue)
        {
            IList <Element> vResult = new List <Element>();

            foreach (var vCategoryId in valCategoryElementId)
            {
                BuiltInCategory        vBuiltInCategory = (BuiltInCategory)vCategoryId.IntegerValue;
                ParameterValueProvider vPovider         = new ParameterValueProvider(valRevitParameter.ElementId);
                string vRulestring = valValue;
                FilteredElementCollector vCollector = new FilteredElementCollector(_Doc);
                vCollector.OfCategory(vBuiltInCategory);
                LibNumeric insLibNumeric = new LibNumeric();
                double     ruleValDb     = 0.0;
                if (insLibNumeric.IsDouble(valValue))
                {
                    Double vNum = 0;
                    Double.TryParse(valValue, out vNum);
                    ruleValDb = vNum;
                }
                ParameterValueProvider pvp  = new ParameterValueProvider(valRevitParameter.ElementId);
                FilterNumericEquals    fnrv = new FilterNumericEquals();
                var vFilterDoubleRule       = new FilterDoubleRule(pvp, fnrv, ruleValDb, 10e-10);
                var epf = new ElementParameterFilter(vFilterDoubleRule);
                vCollector.WherePasses(epf);
                IList <Element> vElements = vCollector.ToElements();
                if (vElements != null)
                {
                    if (vElements.Count > 0)
                    {
                        vResult = vElements.Concat(vElements).ToList();
                    }
                }
            }
            return(vResult);
        }
 public ParameterControl(RevitParameter rp)
 {
     parameter = rp;
     InitializeComponent();
     paramNameLabel.Content   = parameter.ParameterName;
     isTypeLabel.Content      = parameter.IsType ? "Type Parameter" : "Instance Parameter";
     storageTypeLabel.Content = parameter.StorageType;
 }
        public IList <Element> GetBy(RevitParameter valRevitParameter, List <ElementId> valCategoryElementId, string valValue)
        {
            IList <Element> vResult        = new List <Element>();
            bool            vIsParse       = false;
            double          vData          = 0;
            string          vValueToString = valValue;


            if (!StringClasses.lstNames().Contains(valRevitParameter.Name))
            {
                if (IsParsed(valValue, out vData))
                {
                    valValue = vData.ToString();
                    vIsParse = true;
                }
            }



            LibNumeric insLibNumeric = new LibNumeric();

            if (insLibNumeric.IsDouble(valValue) && !StringClasses.lstNames().Contains(valRevitParameter.Name))
            {
                vResult = GetElementValueDouble(valRevitParameter, valCategoryElementId, valValue);
                if (vResult.Count == 0)
                {
                    if (vIsParse)
                    {
                        vResult = GetElementValueDoubleLessOrEqual(valRevitParameter, valCategoryElementId, valValue, vValueToString);

                        if (vResult.Count == 0)
                        {
                            vResult = GetElementValueDoubleGreaterOrEqual(valRevitParameter, valCategoryElementId, valValue, vValueToString);
                        }

                        if (vResult.Count == 0)
                        {
                            vResult = GetElementValueIntOrstring(valRevitParameter, valCategoryElementId, valValue);

                            if (vResult.Count <= 0)
                            {
                                vResult = FindByInternalValue(valRevitParameter, valCategoryElementId, valValue);
                            }
                        }
                    }
                }
            }
            else
            {
                vResult = GetElementValueIntOrstring(valRevitParameter, valCategoryElementId, valValue);

                if (vResult.Count <= 0)
                {
                    vResult = FindByInternalValue(valRevitParameter, valCategoryElementId, valValue);
                }
            }
            return(vResult);
        }
Exemple #6
0
        public void AddFamilyParameterNote(RevitParameter parameter)
        {
            if (this.textNoteTypeResults == null)
            {
                this.textNoteTypeResults = new List <AddParameterResult>();
            }

            AddParameterResult r = new AddParameterResult {
                Name = parameter.ParamName
            };

            this.textNoteTypeResults.Add(r);
        }
        private IList <Element> FindByInternalValue(RevitParameter valRevitParameter, List <ElementId> valCategoryElementId, string valValue)
        {
            LibNumeric     vLibNumeric     = new LibNumeric();
            List <Element> vResult         = new List <Element>();
            IList <string> vInternalValues = GetInternalValue(valValue);

            foreach (var vInternalValue in vInternalValues)
            {
                if (vLibNumeric.IsDouble(vInternalValue))
                {
                    IList <Element> vSearchResult = GetElementValueDouble(valRevitParameter, valCategoryElementId, vInternalValue);
                    vResult = vResult.Concat(vSearchResult).ToList();
                }
            }
            return(vResult);
        }
Exemple #8
0
        /***************************************************/
        /****              Public methods               ****/
        /***************************************************/

        public static void CopyParameters(this IBHoMObject bHoMObject, Element element, ParameterSettings settings = null)
        {
            if (bHoMObject == null || element == null)
            {
                return;
            }

            List <RevitParameter> parameters = new List <RevitParameter>();

            oM.Adapters.Revit.Parameters.ParameterMap parameterMap = settings?.ParameterMap(bHoMObject.GetType());
            IEnumerable <IParameterLink> parameterLinks            = null;

            if (parameterMap != null)
            {
                Element elementType = element.Document.GetElement(element.GetTypeId());
                IEnumerable <IParameterLink> typeParameterLinks = parameterMap.ParameterLinks.Where(x => x is ElementTypeParameterLink);
                if (elementType != null && typeParameterLinks.Count() != 0)
                {
                    foreach (Parameter parameter in elementType.ParametersMap)
                    {
                        RevitParameter bHoMParameter = parameter.ParameterFromRevit(typeParameterLinks, true);
                        if (bHoMParameter != null)
                        {
                            parameters.Add(bHoMParameter);
                        }
                    }
                }

                parameterLinks = parameterMap.ParameterLinks.Where(x => !(x is ElementTypeParameterLink));
            }

            IEnumerable elementParams = element.ParametersMap;

            if (((Autodesk.Revit.DB.ParameterMap)elementParams).IsEmpty)
            {
                elementParams = element.Parameters;
            }

            foreach (Parameter parameter in elementParams)
            {
                parameters.Add(parameter.ParameterFromRevit(parameterLinks, false));
            }

            bHoMObject.Fragments.Add(new RevitPulledParameters(parameters));
        }
        public bool Contains(string valValueToString, RevitParameter valRevitParameter, Element valElement)
        {
            bool vResult = false;
            List <RevitParameterInfocs> vList = GetParametersBy(valElement);

            if (vList != null)
            {
                if (string.IsNullOrEmpty(valValueToString))
                {
                    vResult = (vList.Where(p => p.ID == valRevitParameter.Id.ToString()).Count() > 0);
                }
                else
                {
                    vResult = (vList.Where(p => p.ID == valRevitParameter.Id.ToString() && p.Value == valValueToString).Count() > 0);
                }
            }
            return(vResult);
        }
        private IList <Element> GetElementValueIntOrstring(RevitParameter valRevitParameter, List <ElementId> valCategoryElementId, string valValue)
        {
            IList <Element> vResult     = new List <Element>();
            IList <Element> vResultTemp = new List <Element>();

            foreach (var vCategoryId in valCategoryElementId)
            {
                IList <ElementFilter>  vList            = new List <ElementFilter>();
                BuiltInCategory        vBuiltInCategory = (BuiltInCategory)vCategoryId.IntegerValue;
                ParameterValueProvider vPovider         = new ParameterValueProvider(valRevitParameter.ElementId);
                string vRulestring = valValue;
                FilterStringRuleEvaluator vEvaluator = new FilterStringEquals();
                FilteredElementCollector  vCollector = new FilteredElementCollector(_Doc);
                vCollector.OfCategory(vBuiltInCategory);
                FilterRule             vRuleRulestring   = new FilterStringRule(vPovider, vEvaluator, vRulestring, false);
                ElementParameterFilter vFilterRulestring = new ElementParameterFilter(vRuleRulestring);
                LibNumeric             insLibNumeric     = new LibNumeric();
                if (insLibNumeric.IsInt(valValue))
                {
                    int vNum = 0;
                    int.TryParse(valValue, out vNum);
                    FilterNumericEquals vEvaluatorNumeri = new FilterNumericEquals();
                    int vRuleIntVal    = vNum;
                    var vFilterIntRule = new FilterIntegerRule(vPovider, vEvaluatorNumeri, vRuleIntVal);
                    var vElementParameterFilterIntRule = new ElementParameterFilter(vFilterIntRule);
                    vList.Add(vElementParameterFilterIntRule);
                }
                vList.Add(vFilterRulestring);
                LogicalOrFilter vLogicalOrFilter = new LogicalOrFilter(vList);
                vCollector.WherePasses(vLogicalOrFilter);
                IList <Element> vElements = vCollector.ToElements();
                if (vElements != null)
                {
                    if (vElements.Count > 0)
                    {
                        foreach (var vElement in vElements)
                        {
                            vResult.Add(vElement);
                        }
                    }
                }
            }
            return(vResult);
        }
        public IList <Element> GetElementValueToString(RevitParameter valRevitParameter, IList <Element> valElements, string valValueToString, string valValue)
        {
            IList <Element> vResult = new List <Element>();

            foreach (var vElement in valElements)
            {
                LibParameters insLibParameters = new LibParameters(_Doc);
                var           vParameter       = vElement.get_Parameter((BuiltInParameter)valRevitParameter.ElementId.IntegerValue);
                var           vDiferen         = Math.Round(vParameter.AsDouble(), 2) - Math.Round(Convert.ToDouble(valValue), 2);
                if (vDiferen < 0)
                {
                    vDiferen = vDiferen * -1;
                }
                if (vDiferen < 0.01)
                {
                    vResult.Add(vElement);
                }
            }
            return(vResult);
        }
Exemple #12
0
        void FilterParameter(string valFilter)
        {
            LibElement            vLibElement       = new LibElement(_Doc);
            LibParameters         inSLibParameters  = new LibParameters(_Doc);
            List <RevitParameter> vParamsList       = inSLibParameters.GetFilterByCategory(CategoriesList());
            RevitParameter        vPickedElement    = (RevitParameter)ListParameter.SelectedItem;
            List <RevitParameter> vCommonParameters = vParamsList.FindAll(p => p.Name.Equals(vPickedElement.Name));
            IList <Element>       vResult           = new List <Element>();

            foreach (RevitParameter vParam in vCommonParameters)
            {
                IList <Element> vList = vLibElement.GetBy(vParam, CategoriesList(), valFilter);
                if (null != vList)
                {
                    vResult = vResult.Concat(vList).ToList();
                }
            }

            ElementList = new ObservableCollection <Element>(vResult);
            ElementListView.ItemsSource = ElementList;
        }
Exemple #13
0
        /***************************************************/
        /****              Private Methods              ****/
        /***************************************************/

        public static bool TrySetTypeFromString(this Element element, IBHoMObject bHoMObject, RevitSettings settings)
        {
            if (element.Category.Id.IntegerValue < 0)
            {
                RevitParameter param = (bHoMObject.Fragments?.FirstOrDefault(x => x is RevitParametersToPush) as RevitParametersToPush)?.Parameters?.FirstOrDefault(x => x.Name == "Type");
                if (param?.Value is string)
                {
                    ElementType et = element.Document.ElementType(null, (string)param.Value, new[] { (BuiltInCategory)element.Category.Id.IntegerValue }, settings);
                    if (et != null)
                    {
                        element.SetParameter(BuiltInParameter.ELEM_TYPE_PARAM, et.Id);
                        return(true);
                    }
                    else
                    {
                        BH.Engine.Reflection.Compute.RecordWarning($"Element type not updated: type named {param.Value} of category {element.Category.Name} could not be found in the model. ElementId: {element.Id.IntegerValue}");
                    }
                }
            }

            return(false);
        }
        public List <RevitParameter> GetFilterByCategory(List <ElementId> valValue)
        {
            List <RevitParameter> vResult = new List <RevitParameter>();

            foreach (var vData in valValue.AsParallel())
            {
                List <ElementId> vFilter = new List <ElementId>();
                vFilter.Add(vData);
                var vList = ParameterFilterUtilities.GetFilterableParametersInCommon(_Doc, vFilter);
                //Category vCategory = _Doc.Settings.Categories.get_Item((BuiltInCategory)vData.IntegerValue);
                foreach (ElementId vElementId in vList.AsParallel())
                {
                    RevitParameter vRecord = new RevitParameter();
                    string         vName   = string.Empty;
                    if (vResult.Where(p => p.Id == vElementId.IntegerValue).Count() == 0)
                    {
                        if (vElementId.IntegerValue < 0)
                        {
                            vName = LabelUtils.GetLabelFor((BuiltInParameter)vElementId.IntegerValue).Trim();
                        }
                        else
                        {
                            vName = _Doc.GetElement(vElementId).Name.Trim();
                        }



                        vRecord.Id        = vElementId.IntegerValue;
                        vRecord.ElementId = vElementId;
                        vRecord.Name      = vName;
                        //vRecord.Definition = vElementId;

                        vResult.Add(vRecord);
                    }
                }
            }
            return(vResult);
        }
        public static object GetRevitParameterValue(this IBHoMObject bHoMObject, string parameterName)
        {
            if (bHoMObject == null)
            {
                return(null);
            }

            RevitParametersToPush pushFragment = bHoMObject.Fragments?.FirstOrDefault(x => x is RevitParametersToPush) as RevitParametersToPush;

            if (pushFragment?.Parameters != null)
            {
                RevitParameter param = pushFragment.Parameters.FirstOrDefault(x => x.Name == parameterName);
                if (param != null)
                {
                    return(param.Value);
                }
            }

            RevitPulledParameters pullFragment = bHoMObject.Fragments?.FirstOrDefault(x => x is RevitPulledParameters) as RevitPulledParameters;

            if (pullFragment?.Parameters != null)
            {
                RevitParameter param = pullFragment.Parameters.FirstOrDefault(x => x.Name == parameterName);
                if (param != null)
                {
                    return(param.Value);
                }
            }

            RevitIdentifiers identifierFragment = bHoMObject.Fragments?.FirstOrDefault(x => x is RevitIdentifiers) as RevitIdentifiers;

            if (identifierFragment != null)
            {
                string paramName = string.Concat(parameterName.Where(c => !char.IsWhiteSpace(c)));
                if (Reflection.Query.PropertyNames(identifierFragment).Contains(paramName))
                {
                    return(Reflection.Query.PropertyValue(identifierFragment, paramName));
                }
            }

            Dictionary <string, object> bHoMPropDic = Reflection.Query.PropertyDictionary(bHoMObject);

            foreach (KeyValuePair <string, object> bHoMPropEntry in bHoMPropDic)
            {
                IBHoMObject bHoMProp = bHoMPropEntry.Value as IBHoMObject;
                if (bHoMProp != null)
                {
                    RevitPulledParameters typePullFragment = bHoMProp.Fragments?.FirstOrDefault(x => x is RevitPulledParameters) as RevitPulledParameters;
                    if (typePullFragment?.Parameters != null)
                    {
                        RevitParameter param = typePullFragment.Parameters.FirstOrDefault(x => x.Name == parameterName);
                        if (param != null)
                        {
                            Engine.Reflection.Compute.RecordWarning("The value for parameter " + parameterName + " for the object with BHoM_Guid " + bHoMObject.BHoM_Guid + " has been retrieved from its property " + bHoMPropEntry.Key + ".");
                            return(param.Value);
                        }
                    }
                }
            }

            return(null);
        }