private static IfcStyledItem ToIfcStyledItem(this Material material, IfcRepresentationItem shape, Document doc) { var color = material.Color.ToIfcColourRgb(doc); var shading = new IfcSurfaceStyleShading(color); var styles = new List <IfcSurfaceStyleElementSelect> { }; styles.Add(new IfcSurfaceStyleElementSelect(shading)); var surfaceStyle = new IfcSurfaceStyle(material.Name, IfcSurfaceSide.POSITIVE, styles); var styleSelect = new IfcPresentationStyleSelect(surfaceStyle); var assign = new IfcPresentationStyleAssignment(new List <IfcPresentationStyleSelect> { styleSelect }); var assignments = new List <IfcPresentationStyleAssignment>(); assignments.Add(assign); var styledByItem = new IfcStyledItem(shape, assignments, material.Name); doc.AddEntity(color); doc.AddEntity(shading); doc.AddEntity(surfaceStyle); doc.AddEntity(styleSelect); doc.AddEntity(assign); return(styledByItem); }
private static Boolean tryGetColorFromIfcRepresentationItem(IfcRepresentationItem reprItem, out Color color) { color = Color.Black; try { if (reprItem.mStyledByItem != null) { IfcStyledItem ifcStyledItem = reprItem.mStyledByItem; IfcPresentationStyleAssignment sas = (IfcPresentationStyleAssignment)ifcStyledItem.Styles[0]; IfcSurfaceStyle ss = (IfcSurfaceStyle)sas.Styles[0]; IfcSurfaceStyleRendering ssr = (IfcSurfaceStyleRendering)ss.Styles[0]; int alpha = Convert.ToInt32((1 - ssr.Transparency) * 255); color = Color.FromArgb(alpha, ssr.SurfaceColour.Colour); return(true); } } catch (Exception e) { //debug += e.Message + "\n"; } return(false); }
/// <summary> /// returns the surfacestyle associated with this PresentationStyleAssignment, null if no sufacestyle is defined /// </summary> /// <param name = "style"></param> /// <returns></returns> public static IfcSurfaceStyle GetSurfaceStyle(this IfcPresentationStyleAssignment style) { return(style.Styles.OfType <IfcSurfaceStyle>().FirstOrDefault()); }