예제 #1
0
        /// <summary>
        /// Returns the first quantity in the property set pSetName of name qName
        /// </summary>
        /// <typeparam name="TQType"></typeparam>
        /// <param name="pSetName"></param>
        /// <param name="qName"></param>
        /// <returns></returns>
        public TQType GetQuantity <TQType>(string pSetName, string qName) where TQType : IIfcPhysicalQuantity
        {
            var propSets = IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions);
            var rel      = propSets.FirstOrDefault(r => r is IfcElementQuantity && r.Name == pSetName);

            if (rel == null)
            {
                return(default(TQType));
            }
            var eQ = rel as IfcElementQuantity;

            return(eQ == null ? default(TQType) : eQ.Quantities.OfType <TQType>().FirstOrDefault(q => q.Name == qName));
        }
예제 #2
0
        /// <summary>
        /// Returns the first quantity that matches the quantity name
        /// </summary>
        /// <typeparam name="TQType"></typeparam>
        /// <param name="qName"></param>
        /// <returns></returns>
        public TQType GetQuantity <TQType>(string qName) where TQType : IIfcPhysicalQuantity
        {
            var qSets = IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType <IIfcElementQuantity>();

            return(qSets.SelectMany(qset => qset.Quantities).OfType <TQType>().FirstOrDefault(q => q.Name == qName));
        }
예제 #3
0
        public IIfcElementQuantity GetElementQuantity(string pSetName, bool caseSensitive = true)
        {
            var qSets = IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType <IfcElementQuantity>();

            return(qSets.FirstOrDefault(qset => string.Compare(pSetName, qset.Name, !caseSensitive) == 0));
        }