示例#1
0
        override protected void Process(IFCAnyHandle styledItem)
        {
            base.Process(styledItem);

            IFCAnyHandle item = IFCImportHandleUtil.GetOptionalInstanceAttribute(styledItem, "Item");

            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(item))
            {
                Item = IFCRepresentationItem.ProcessIFCRepresentationItem(item);
            }

            Name = IFCImportHandleUtil.GetOptionalStringAttribute(styledItem, "Name", null);

            List <IFCAnyHandle> styles = IFCAnyHandleUtil.GetAggregateInstanceAttribute <List <IFCAnyHandle> >(styledItem, "Styles");

            if (styles == null || styles.Count == 0 || IFCAnyHandleUtil.IsNullOrHasNoValue(styles[0]))
            {
                Importer.TheLog.LogMissingRequiredAttributeError(styledItem, "Styles", true);
            }
            if (styles.Count > 1)
            {
                Importer.TheLog.LogWarning(styledItem.StepId, "Multiple presentation styles found for IfcStyledItem - using first.", false);
            }

            Styles = IFCPresentationStyleAssignment.ProcessIFCPresentationStyleAssignment(styles[0]);
        }
示例#2
0
        override protected void Process(IFCAnyHandle styledItem)
        {
            base.Process(styledItem);

            IFCAnyHandle item = IFCImportHandleUtil.GetOptionalInstanceAttribute(styledItem, "Item");

            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(item))
            {
                Item = IFCRepresentationItem.ProcessIFCRepresentationItem(item);
            }

            Name = IFCImportHandleUtil.GetOptionalStringAttribute(styledItem, "Name", null);

            List <IFCAnyHandle> styles = IFCAnyHandleUtil.GetAggregateInstanceAttribute <List <IFCAnyHandle> >(styledItem, "Styles");

            if (styles == null || styles.Count == 0)
            {
                Importer.TheLog.LogMissingRequiredAttributeError(styledItem, "Styles", true);
            }

            foreach (IFCAnyHandle style in styles)
            {
                if (IFCAnyHandleUtil.IsNullOrHasNoValue(style))
                {
                    continue;
                }

                if (IFCImportFile.TheFile.SchemaVersionAtLeast(IFCSchemaVersion.IFC4Obsolete) && IFCAnyHandleUtil.IsValidSubTypeOf(style, IFCEntityType.IfcPresentationStyle))
                {
                    Styles.Add(IFCPresentationStyle.ProcessIFCPresentationStyle(style));
                }
                else
                {
                    if (Styles.Count != 0)
                    {
                        Importer.TheLog.LogWarning(styledItem.StepId, "Multiple presentation styles found for IfcStyledItem - using first.", false);
                        continue;
                    }

                    IFCPresentationStyleAssignment presentationStyleAssignment =
                        IFCPresentationStyleAssignment.ProcessIFCPresentationStyleAssignment(style);
                    if (presentationStyleAssignment != null && presentationStyleAssignment.Styles != null)
                    {
                        Styles.AddRange(presentationStyleAssignment.Styles);
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// Processes an IfcPresentationStyleAssignment entity handle.
        /// </summary>
        /// <param name="ifcPresentationStyleAssignment">The IfcPresentationStyleAssignment handle.</param>
        /// <returns>The IFCPresentationStyleAssignment object.</returns>
        public static IFCPresentationStyleAssignment ProcessIFCPresentationStyleAssignment(IFCAnyHandle ifcPresentationStyleAssignment)
        {
            if (IFCAnyHandleUtil.IsNullOrHasNoValue(ifcPresentationStyleAssignment))
            {
                Importer.TheLog.LogNullError(IFCEntityType.IfcPresentationStyleAssignment);
                return(null);
            }

            IFCEntity presentationStyleAssignment;

            if (!IFCImportFile.TheFile.EntityMap.TryGetValue(ifcPresentationStyleAssignment.StepId, out presentationStyleAssignment))
            {
                presentationStyleAssignment = new IFCPresentationStyleAssignment(ifcPresentationStyleAssignment);
            }
            return(presentationStyleAssignment as IFCPresentationStyleAssignment);
        }
示例#4
0
        /// <summary>
        /// Get the IFCSurfaceStyle associated with this IFCStyledItem.
        /// </summary>
        /// <returns>The IFCSurfaceStyle, if any.</returns>
        public IFCSurfaceStyle GetSurfaceStyle()
        {
            IFCPresentationStyleAssignment styles = Styles;

            if (styles != null)
            {
                ISet <IFCPresentationStyle> presentationStyles = styles.Styles;
                foreach (IFCPresentationStyle presentationStyle in presentationStyles)
                {
                    if (presentationStyle is IFCSurfaceStyle)
                    {
                        return(presentationStyle as IFCSurfaceStyle);
                    }
                }
            }

            return(null);
        }
        /// <summary>
        /// Processes an IfcPresentationStyleAssignment entity handle.
        /// </summary>
        /// <param name="ifcPresentationStyleAssignment">The IfcPresentationStyleAssignment handle.</param>
        /// <returns>The IFCPresentationStyleAssignment object.</returns>
        public static IFCPresentationStyleAssignment ProcessIFCPresentationStyleAssignment(IFCAnyHandle ifcPresentationStyleAssignment)
        {
            if (IFCAnyHandleUtil.IsNullOrHasNoValue(ifcPresentationStyleAssignment))
            {
                Importer.TheLog.LogNullError(IFCEntityType.IfcPresentationStyleAssignment);
                return null;
            }

            IFCEntity presentationStyleAssignment;
            if (!IFCImportFile.TheFile.EntityMap.TryGetValue(ifcPresentationStyleAssignment.StepId, out presentationStyleAssignment))
                presentationStyleAssignment = new IFCPresentationStyleAssignment(ifcPresentationStyleAssignment);
            return (presentationStyleAssignment as IFCPresentationStyleAssignment); 
        }