/// <summary>
        /// Initializes a new instance of the <see cref="WindowConstructionShadeAbridged" /> class.
        /// </summary>
        /// <param name="windowConstruction">A WindowConstructionAbridged object that serves as the \&quot;switched off\&quot; version of the construction (aka. the \&quot;bare construction\&quot;). The shade_material and shade_location will be used to modify this starting construction. (required).</param>
        /// <param name="shadeMaterial">Identifier of a An EnergyWindowMaterialShade or an EnergyWindowMaterialBlind that serves as the shading layer for this construction. This can also be an EnergyWindowMaterialGlazing, which will indicate that the WindowConstruction has a dynamically-controlled glass pane like an electrochromic window assembly. (required).</param>
        /// <param name="shadeLocation">Text to indicate where in the window assembly the shade_material is located.  Note that the WindowConstruction must have at least one gas gap to use the \&quot;Between\&quot; option. Also note that, for a WindowConstruction with more than one gas gap, the \&quot;Between\&quot; option defalts to using the inner gap as this is the only option that EnergyPlus supports..</param>
        /// <param name="controlType">Text to indicate how the shading device is controlled, which determines when the shading is “on” or “off.”.</param>
        /// <param name="setpoint">A number that corresponds to the specified control_type. This can be a value in (W/m2), (C) or (W) depending upon the control type.Note that this value cannot be None for any control type except \&quot;AlwaysOn.\&quot;.</param>
        /// <param name="schedule">An optional schedule identifier to be applied on top of the control_type. If None, the control_type will govern all behavior of the construction..</param>
        /// <param name="identifier">Text string for a unique object ID. This identifier remains constant as the object is mutated, copied, and serialized to different formats (eg. dict, idf, osm). This identifier is also used to reference the object across a Model. It must be &lt; 100 characters, use only ASCII characters and exclude (, ; ! \\n \\t). (required).</param>
        /// <param name="displayName">Display name of the object with no character restrictions..</param>
        public WindowConstructionShadeAbridged
        (
            string identifier, WindowConstructionAbridged windowConstruction, string shadeMaterial,                                                                                                  // Required parameters
            string displayName = default, ShadeLocation shadeLocation = ShadeLocation.Interior, ControlType controlType = ControlType.AlwaysOn, double setpoint = default, string schedule = default // Optional parameters
        ) : base(identifier: identifier, displayName: displayName)                                                                                                                                   // BaseClass
        {
            // to ensure "windowConstruction" is required (not null)
            this.WindowConstruction = windowConstruction ?? throw new ArgumentNullException("windowConstruction is a required property for WindowConstructionShadeAbridged and cannot be null");
            // to ensure "shadeMaterial" is required (not null)
            this.ShadeMaterial = shadeMaterial ?? throw new ArgumentNullException("shadeMaterial is a required property for WindowConstructionShadeAbridged and cannot be null");
            this.ShadeLocation = shadeLocation;
            this.ControlType   = controlType;
            this.Setpoint      = setpoint;
            this.Schedule      = schedule;

            // Set non-required readonly properties with defaultValue
            this.Type = "WindowConstructionShadeAbridged";
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WindowConstructionShadeAbridged" /> class.
        /// </summary>
        /// <param name="windowConstruction">A WindowConstructionAbridged object that serves as the \&quot;switched off\&quot; version of the construction (aka. the \&quot;bare construction\&quot;). The shade_material and shade_location will be used to modify this starting construction. (required).</param>
        /// <param name="shadeMaterial">Identifier of a An EnergyWindowMaterialShade or an EnergyWindowMaterialBlind that serves as the shading layer for this construction. This can also be an EnergyWindowMaterialGlazing, which will indicate that the WindowConstruction has a dynamically-controlled glass pane like an electrochromic window assembly. (required).</param>
        /// <param name="shadeLocation">Text to indicate where in the window assembly the shade_material is located.  Note that the WindowConstruction must have at least one gas gap to use the \&quot;Between\&quot; option. Also note that, for a WindowConstruction with more than one gas gap, the \&quot;Between\&quot; option defalts to using the inner gap as this is the only option that EnergyPlus supports..</param>
        /// <param name="controlType">Text to indicate how the shading device is controlled, which determines when the shading is “on” or “off.”.</param>
        /// <param name="setpoint">A number that corresponds to the specified control_type. This can be a value in (W/m2), (C) or (W) depending upon the control type.Note that this value cannot be None for any control type except \&quot;AlwaysOn.\&quot;.</param>
        /// <param name="schedule">An optional schedule identifier to be applied on top of the control_type. If None, the control_type will govern all behavior of the construction..</param>
        /// <param name="identifier">Text string for a unique object ID. This identifier remains constant as the object is mutated, copied, and serialized to different formats (eg. dict, idf, osm). This identifier is also used to reference the object across a Model. It must be &lt; 100 characters, use only ASCII characters and exclude (, ; ! \\n \\t). (required).</param>
        /// <param name="displayName">Display name of the object with no character restrictions..</param>
        /// <param name="userData">Optional dictionary of user data associated with the object.All keys and values of this dictionary should be of a standard data type to ensure correct serialization of the object (eg. str, float, int, list)..</param>
        public WindowConstructionShadeAbridged
        (
            string identifier, WindowConstructionAbridged windowConstruction, string shadeMaterial,                                                                                                                             // Required parameters
            string displayName = default, Object userData = default, ShadeLocation shadeLocation = ShadeLocation.Interior, ControlType controlType = ControlType.AlwaysOn, double setpoint = default, string schedule = default // Optional parameters
        ) : base(identifier: identifier, displayName: displayName, userData: userData)                                                                                                                                          // BaseClass
        {
            // to ensure "windowConstruction" is required (not null)
            this.WindowConstruction = windowConstruction ?? throw new ArgumentNullException("windowConstruction is a required property for WindowConstructionShadeAbridged and cannot be null");
            // to ensure "shadeMaterial" is required (not null)
            this.ShadeMaterial = shadeMaterial ?? throw new ArgumentNullException("shadeMaterial is a required property for WindowConstructionShadeAbridged and cannot be null");
            this.ShadeLocation = shadeLocation;
            this.ControlType   = controlType;
            this.Setpoint      = setpoint;
            this.Schedule      = schedule;

            // Set non-required readonly properties with defaultValue
            this.Type = "WindowConstructionShadeAbridged";

            // check if object is valid, only check for inherited class
            if (this.GetType() == typeof(WindowConstructionShadeAbridged))
            {
                this.IsValid(throwException: true);
            }
        }
 public static List <HB.IEnergyWindowMaterial> GetConstructionMaterials(HB.WindowConstructionAbridged construction)
 {
     return(construction.Layers.Select(_ => GetWindowMaterialByName(_)).ToList());
 }
 public static List <HBEng.IMaterial> GetConstructionMaterials(HB.WindowConstructionAbridged construction)
 {
     return(construction.Layers.Select(_ => GetWindowMaterialByIdentifier(_)).ToList());
 }