Beispiel #1
0
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #region Frame-Parts

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            // JambsAlum -->>
            for (int i = 0; i < 2; i++)
            {
                decimal doorPanel = decimal.Zero;

                doorPanel = this.Parent.SubAssemblies[0].SubAssemblyHieght;

                part = new Part(4352, "JambsAlum<>", this, 1, m_subAssemblyHieght - calkJoint);
                part.PartGroupType = "Frame-Parts";
                decimal step = (doorPanel - 15.0m);
                step /= Convert.ToDecimal((FrameWorks.Functions.HingeCount(doorPanel) - 1));
                step  = Math.Round(step, 4);
                //string msg = "";
                part.PartLabel = "1) MiterTop\r\n" +
                                 "2) [911.m]Cope Jamb Bottom->\r\n" +
                                 "3) Position 0rigin TOU @ ->" + (7.5m + 0.875m).ToString() + "\r\n" +
                                 "4) Hinge Backer Prep->[1982.m] "
                                 + FrameWorks.Functions.HingeCount(doorPanel).ToString() + "@<" + step.ToString() + ">O.C.";
                m_parts.Add(part);
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            // HeadAlum ^^
            part = new Part(4352, "HeadAlum", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterEnds\r\n" +
                                 "2)[1987.m]Position 0rigin Shoot Strike";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrFrame

            //////////////////////////////////////////////////////////////////////////////////////////

            // AglBrktAlum
            part = new Part(3206, "AglBrktAlum", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////

            // PointSetScrew
            part = new Part(1545, "PointSetScrew", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            //////////////////////////////////////////////////////////////////////////////////////////

            // PVC ASTRAGAL
            part = new Part(1901, "PVC ASTRAGAL", this, 1, m_subAssemblyHieght - headReduct - botumRedut);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////

            // ASTRAGAL_COVER
            part = new Part(4589, "ASTRAGAL_COVER", this, 1, m_subAssemblyHieght - headReduct - botumRedut);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////

            // PairShootStrike
            part = new Part(5309, "PairShootStrike", this, 2, 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            //////////////////////////////////////////////////////////////////////////////////////////

            //FrameSealKfolD
            decimal peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

            for (int i = 0; i < 1; i++)
            {
                peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght - kFoldRedut - calkJoint, m_subAssemblyWidth - 2 * kFoldRedut);

                part = new Part(2274, "FrameSealKfolD", this, 1, peri - m_subAssemblyWidth);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #region AlumTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeftLD
            part = new Part(4355, "StileLeftLD", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeftRD
            part = new Part(4355, "StileLeftRD", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRightLD
            part = new Part(4355, "StileRightLD", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRightRD
            part = new Part(4355, "StileRightRD", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTopLD
            part = new Part(4355, "RailTopLD", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTopRD
            part = new Part(4355, "RailTopRD", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBotLD
            part = new Part(4355, "RailBotLD", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBotRD
            part = new Part(4355, "RailBotRD", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(4269, "HDPELockEdge", this, 2, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(4268, "HDPEHingEdge", this, 2, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // HDPETop
            part = new Part(4269, "HDPETop", this, 2, (m_subAssemblyWidth - doorReduceX2 - doorGapMid + hdpExtX2) / 2.0m);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(4270, "HDPEBot", this, 2, (m_subAssemblyWidth - doorReduceX2 - doorGapMid + hdpExtX2) / 2.0m);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntins

            ////////////////////////////////////////////////////////////////////////////////////

            // ExtMuntHorz
            for (int i = 0; i < 4; i++)
            {
                part = new Part(4588, "ExtMuntHorz", this, 1, (m_subAssemblyWidth - sidMuntGPExt2 - centMuntGPExt) / 2.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "WELD_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // IntMuntHorz
            for (int i = 0; i < 4; i++)
            {
                part = new Part(4587, "IntMuntHorz", this, 1, (m_subAssemblyWidth - sidMuntGPInt2 - centMuntGPInt) / 2.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "BEVEL_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpLeftLD |<<--
            part = new Part(4341, "AlumGlsStpLeftLD", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpLeftRD <<--|
            part = new Part(4341, "AlumGlsStpLeftRD", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpRightLD |<<--
            part = new Part(4341, "AlumGlsStpRightLD", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpRightRD -->>|
            part = new Part(4341, "AlumGlsStpRightRD", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTopLD ^^<<--
            part = new Part(4341, "AlumGlsStpTopLD", this, 1, (m_subAssemblyWidth - stopRed2x - stopRedMid) / 2.0m);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTopRD ^^-->>
            part = new Part(4341, "AlumGlsStpTopRD", this, 1, (m_subAssemblyWidth - stopRed2x - stopRedMid) / 2.0m);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpBotLD ||<<--
            part = new Part(4341, "AlumGlsStpBotLD", this, 1, (m_subAssemblyWidth - stopRed2x - stopRedMid) / 2.0m);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpBotRD ||-->>
            part = new Part(4341, "AlumGlsStpBotRD", this, 1, (m_subAssemblyWidth - stopRed2x - stopRedMid) / 2.0m);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            // GlassPanel
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5503);
                part.FunctionalName    = "GlassPanel";
                part.PartGroupType     = "Glass";
                part.Qnty              = 1;
                part.ContainerAssembly = this;
                part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2 - glsDrGapMID) / 2.0m;
                part.PartLength        = (m_subAssemblyHieght - glsDrGap - glsDrGapBot);
                part.PartThick         = 1.25m;
                part.PartLabel         = "SDL_1x3";
                m_parts.Add(part);
            }

            #endregion

            #region Handle

            //////////////////////////////////////////////////////////////////////////////

            // Handle_Sets
            part = new Part(5218, "Handle_Sets", this, 2, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // Dummy_Block
            part = new Part(5422, "Dummy_Block", this, 1, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // SpindleSplit_Dummy
            part = new Part(3270, "SpindleSplit_Dummy", this, 1, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrDoor

            //////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 64, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointPassive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointPassive GearBox =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointPassive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearBox.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            // StrikePlateRH_LHR
            part = new Part(5338, "StrikePlateRH_LHR", this, 1, 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            //SwivSpin
            part = new Part(5329, "SwivSpin", this, 1, 0.0m);
            part.PartGroupType = "HardWare-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            for (int i = 0; i < 2; i++)
            {
                part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
                part.PartGroupType = "Hardware-Parts";
                part.PartLabel     = ".25_RAD_Corner";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            // BackerHinge
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4101, "BackerHinge", this, HingeCount(m_subAssemblyHieght), 0.0m);
                part.PartGroupType = "Hardware-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //KfolDrEdge
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(2274, "KfolDrEdge", this, 1, (periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd) / 2.0m);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid + hdpExtX2) / 2.0m);
            part.PartGroupType = "Seal";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //EPDM_PreSet
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(4314, "EPDM_PreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //EPDM_Wedge
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(4284, "EPDM_Wedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            // EPDM_PreSet
            for (int i = 0; i < 8; i++)
            {
                part = new Part(4314, "EPDM_PreSet", this, 1, (m_subAssemblyWidth - sidMuntGPExt2 - centMuntGPExt) / 2.0m);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            // EPDM_Wedge
            for (int i = 0; i < 8; i++)
            {
                part = new Part(4284, "EPDM_Wedge", this, 1, (m_subAssemblyWidth - sidMuntGPInt2 - centMuntGPInt) / 2.0m);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ////////////////////////////////////////////////////////////////////////////////////

            #region Frame-Parts

            ////////////////////////////////////////////////////////////////////////////////////

            // JambsAlum -->>
            for (int i = 0; i < 2; i++)
            {
                decimal doorPanel = decimal.Zero;
                doorPanel          = this.Parent.SubAssemblies[0].SubAssemblyHieght;
                part               = new Part(4352, "JambsAlum<>", this, 1, m_subAssemblyHieght - calkJoint);
                part.PartGroupType = "Frame-Parts";
                decimal step = (doorPanel - 15.0m);
                step /= Convert.ToDecimal((FrameWorks.Functions.HingeCount(doorPanel) - 1));
                step  = Math.Round(step, 4);
                //string msg = "";
                part.PartLabel = "1) MiterTop\r\n" +
                                 "2) [911.m]Cope Jamb Bottom->\r\n" +
                                 "3) Position 0rigin TOU @ ->" + (7.5m + 0.875m).ToString() + "\r\n" +
                                 "4) Hinge Backer Prep->[1982.m] "
                                 + FrameWorks.Functions.HingeCount(doorPanel).ToString() + "@<" + step.ToString() + ">O.C.";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // HeadAlum ^^
            part = new Part(4352, "HeadAlum", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterEnds\r\n" +
                                 "2)[1987.m]Position 0rigin Shoot Strike";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region ThrehGutAssy

            ////////////////////////////////////////////////////////////////////////////////////

            // ThresGut ^^
            part = new Part(5587, "ThresGut", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "ThrehGutAssy-Parts";
            part.PartLabel     = "Top";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ThresGutBot ^^
            part = new Part(5587, "ThresGut", this, 1, m_subAssemblyWidth + trhGutterAdd);
            part.PartGroupType = "ThrehGutAssy-Parts";
            part.PartLabel     = "Bottom";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrFrame

            ////////////////////////////////////////////////////////////////////////////////////

            // AglBrktAlum
            part = new Part(3206, "AglBrktAlum", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // PointSetScrew
            part = new Part(1545, "PointSetScrew", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            ////////////////////////////////////////////////////////////////////////////////////

            // PVC ASTRAGAL
            part = new Part(1901, "PVC ASTRAGAL", this, 1, m_subAssemblyHieght - headReduct - botumRedut);
            part.PartGroupType = "HardWare-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ASTRAGAL_COVER
            part = new Part(4496, "ASTRAGAL_COVER", this, 1, m_subAssemblyHieght - headReduct - botumRedut);
            part.PartGroupType = "HardWare-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // PairShootStrike
            part = new Part(5309, "PairShootStrike", this, 2, 0.0m);
            part.PartGroupType = "HardWare-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            //FrameSealKfolD
            decimal peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
            for (int i = 0; i < 1; i++)
            {
                peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght - kFoldRedut - calkJoint, m_subAssemblyWidth - 2 * kFoldRedut);
                part = new Part(2274, "FrameSealKfolD", this, 1, peri - m_subAssemblyWidth);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            ////////////////////////////////////////////////////////////////////////////////////

            #region AlumTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5131, "StileLeft", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
                part.PartGroupType = "AlumTB3inch";
                part.PartLabel     = "1) Miter_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5131, "StileRight", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
                part.PartGroupType = "AlumTB3inch";
                part.PartLabel     = "1) Miter_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5131, "RailTop", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
                part.PartGroupType = "AlumTB3inch";
                part.PartLabel     = "1) Miter_Ends ";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5131, "RailBot", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid) / 2.0m);
                part.PartGroupType = "AlumTB3inch";
                part.PartLabel     = "1) Miter_Ends ";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(5537, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPE_Shim_0.218
            part = new Part(5538, "HDPE_Shim_0.218", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(5060, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPE_Shim_0.3125
            part = new Part(5536, "HDPE_Shim_0.218", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop
            part = new Part(5537, "HDPETop", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop_Shim_0.218
            part = new Part(5538, "HDPETop_Shim_0.218", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(5539, "HDPEBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot_Shim_0.218
            part = new Part(5538, "HDPEBot_Shim_0.218", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntins

            ////////////////////////////////////////////////////////////////////////////////////

            // MuntHorz
            for (int i = 0; i < 24; i++)
            {
                part = new Part(5306, "MuntHorz", this, 1, (m_subAssemblyWidth - sidMuntGP2 - centMuntGP) / 4.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "?_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // MuntVert
            for (int i = 0; i < 16; i++)
            {
                part = new Part(5306, "MuntVert", this, 1, (m_subAssemblyHieght - topMuntGp - botMuntGp) / 4.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "?_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region CrossBrace

            ////////////////////////////////////////////////////////////////////////////////////

            //CrossBrace2X2
            part = new Part(5267, "Cross_Bracket", this, 12, 0);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "Cross_3.025";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //SetScrew_10_32
            part = new Part(3518, "SetScrew_10_32", this, 96, PointSetScrew);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "10-32x1/4";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpVert
            for (int i = 0; i < 4; i++)
            {
                part = new Part(5123, "AlumGlsStpVert", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
                part.PartGroupType = "StopAlum-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTopBot
            for (int i = 0; i < 4; i++)
            {
                part = new Part(5123, "AlumGlsStpTopBot", this, 1, (m_subAssemblyWidth - stopRed2x - stopRedMid) / 2.0m);
                part.PartGroupType = "StopAlum-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            ////////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5322);
                part.FunctionalName    = "Glass";
                part.PartGroupType     = "Glass-Parts";
                part.Qnty              = 1;
                part.ContainerAssembly = this;
                part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2 - glsDrGapMID) / 2.0m;
                part.PartLength        = (m_subAssemblyHieght - glsDrGap - glsDrGapBot);
                part.PartThick         = 1.125m;
                part.PartLabel         = "SDL_2x4";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            ////////////////////////////////////////////////////////////////////////////////////

            // Handle_Sets
            part = new Part(5218, "Handle_Sets", this, 2, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // Dummy_Block
            part = new Part(5422, "Dummy_Block", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // SpindleSplit_Dummy
            part = new Part(3270, "SpindleSplit_Dummy", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrDoor

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 64, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            ////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointPassive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointPassive GearBox =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointPassive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearBox.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            for (int i = 0; i < 2; i++)
            {
                part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
                part.PartGroupType = "Hardware-Parts";
                part.PartLabel     = ".25_RAD_Corner";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // BackerHinge
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4101, "BackerHinge", this, HingeCount(m_subAssemblyHieght), 0.0m);
                part.PartGroupType = "Hardware-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            //KfolDrEdge
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(2274, "KfolDrEdge", this, 1, (periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd) / 2.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            for (int i = 0; i < 2; i++)
            {
                part = new Part(1518, "DoorBotPVC", this, 1, (m_subAssemblyWidth - doorReduceX2 - doorGapMid + hdpExtX2) / 2.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDM_PreSet
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(4314, "EPDM_PreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDM_Wedge
            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(4284, "EPDM_Wedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // EPDM_Wedge_Munt_INT
            for (int i = 0; i < 24; i++)
            {
                part = new Part(2772, "EPDM_Wedge_Munt_INT", this, 1, (m_subAssemblyWidth - sidMuntGP2 - centMuntGP) / 4.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // EPDM_Wedge_Munt_EXT
            for (int i = 0; i < 24; i++)
            {
                part = new Part(5557, "EPDM_Wedge_Munt_EXT", this, 1, (m_subAssemblyWidth - sidMuntGP2 - centMuntGP) / 4.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // EPDM_Wedge_Munt_INT
            for (int i = 0; i < 16; i++)
            {
                part = new Part(2772, "EPDM_Wedge_Munt_INT", this, 1, (m_subAssemblyHieght - topMuntGp - botMuntGp) / 4.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // EPDM_Wedge_Munt_EXT
            for (int i = 0; i < 16; i++)
            {
                part = new Part(5557, "EPDM_Wedge_Munt_EXT", this, 1, (m_subAssemblyHieght - topMuntGp - botMuntGp) / 4.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ///////////////////////////////////////////////////////////////////////////

            #region AlumTB_FRKN

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(5710, "StileLeft", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "AlumTB_FRKN";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(4355, "StileRight", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "AlumTB_FRKN";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(5710, "RailTop", this, 1, m_subAssemblyWidth - railCut);
            part.PartGroupType = "AlumTB_FRKN";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(5710, "RailBot", this, 1, m_subAssemblyWidth - railCut);
            part.PartGroupType = "AlumTB_FRKN";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(6879, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            // HDPELockEdge
            part = new Part(6879, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(6880, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(6971, "HDPEBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopL <--
            part = new Part(5711, "AlumGlsStopL", this, 1, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopR -->
            part = new Part(5711, "AlumGlsStopR", this, 1, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopT ^^
            part = new Part(5711, "AlumGlsStopT", this, 1, m_subAssemblyWidth - stopReduce - stopRedWIDE);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopB ||
            part = new Part(5711, "AlumGlsStopB", this, 1, m_subAssemblyWidth - stopReduce - stopRedWIDE);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            //GlassPanel
            part = new Part(5785);
            part.FunctionalName    = "Glass";
            part.PartGroupType     = "Glass";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGap - glsDrGpWd);
            part.PartLength        = (m_subAssemblyHieght - glsDrGapX2);
            part.PartThick         = 1.25m;
            part.PartLabel         = "SNX 62/27";
            m_parts.Add(part);

            #endregion

            #region Handle

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            #endregion

            #region AssyHrdwrDoor

            //////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(502, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#8-32x3/16_UndercutHead";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(5180, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#10x5/8_SheetMetal_18_8_SS";
            m_parts.Add(part);

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(5180, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#10x5/8_SheetMetal_18_8_SS";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(502, "FlatHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#8-32x3/16_UndercutHead";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal + edgeSealAdd);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //EPDM_PreSet
                part = new Part(4314, "EPDM_PreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //EPDM_Wedge
                part = new Part(4284, "EPDM_Wedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;



            #region BrzTB3inch


            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4312, "StileLeft", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Miter_Ends";
                m_parts.Add(part);
            }


            // StileRight
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4312, "StileRight", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Miter_Ends";

                m_parts.Add(part);
            }


            // RailTop
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4312, "RailTop", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }


            // RailMid
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4386, "RailMid", this, 1, m_subAssemblyWidth - midRailRedX2);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Cope_Ends ";

                m_parts.Add(part);
            }



            // RailBot
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4312, "RailBot", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region HDPE



            // HDPELockEdge
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4269, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileL = "";

                m_parts.Add(part);
            }



            // HDPEHingEdge
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4268, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileL = "";

                m_parts.Add(part);
            }



            // HDPETop
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4269, "HDPETop", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileR = "";

                m_parts.Add(part);
            }


            // HDPEBot
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4270, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileR = "";

                m_parts.Add(part);
            }



            #endregion

            #region PanelBrz


            // ExtiraPanel ^^
            part = new Part(4043);
            part.FunctionalName    = "ExtiraPanel";
            part.PartGroupType     = "PanelBrz";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - 2 * glassDrGap);
            part.PartLength        = (BrzPanelSwgDr);

            m_parts.Add(part);


            /////////////////////////////////////////////////////////////////////////////////////////////////


            // BrassC464
            for (int i = 0; i < 2; i++)
            {
                // BrassC464
                part = new Part(4042);
                part.FunctionalName    = "BrassC464";
                part.PartGroupType     = "PanelBrz";
                part.Qnty              = 1;
                part.ContainerAssembly = this;
                part.PartWidth         = (m_subAssemblyWidth - 2 * glassDrGap);
                part.PartLength        = (BrzPanelSwgDr);

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region Muntin

            //////////////////////////////////////////////////////////////////////////////

            // BrzMntHrz3Lt
            for (int i = 0; i < 4; i++)
            {
                part = new Part(4313, "BrzMntHrz3Lt", this, 1, m_subAssemblyWidth - muntStileRedX2);
                part.PartGroupType = "Muntin-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopBrz

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4298, "BrzGlsStpVert", this, 1, m_subAssemblyHieght - stopReduce - stopRedPAN);
                part.PartGroupType = "StopBrz-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            // BrzPNLStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4298, "BrzPNLStpVert", this, 1, stpPanHth);
                part.PartGroupType = "StopBrz-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpTopBot
            for (int i = 0; i < 4; i++)
            {
                part = new Part(4298, "BrzGlsStpTopBot", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "StopBrz-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////



            #endregion

            #region Glass3SDL

            /////////////////////////////////////////////////////////////////////////////////////////////
            // 3 SDL GlassPanels
            for (int i = 0; i < 1; i++)
            {
                // 3 SDL GlassPanel
                part = new Part(4419);

                part.FunctionalName    = "Gls3SDLite";
                part.PartGroupType     = "Glass3SDL-Parts";
                part.Qnty              = 1;
                part.ContainerAssembly = this;
                part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
                part.PartLength        = (m_subAssemblyHieght - glassDrGap - glsPanGap);
                part.PartThick         = 1.25m;

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            //Alum_CornerBrace

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4831, "Alum_CornerBrace", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            // SMS_10_1/2_FH

            for (int i = 0; i < 16; i++)
            {
                part = new Part(4832, "SMS_10_1/2_FH", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Alum_CornerBrace

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4830, "Alum_CornerBrace", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            // SMS_10_5/8_FH

            for (int i = 0; i < 16; i++)
            {
                part = new Part(4833, "SMS_10_5/8_FH", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Blue_CnrBrcSS14ga_0.4662

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4855, "Blue_CnrBrcSS14ga_0.4662", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //Black_CnrBrcSS14ga_0.638

            for (int i = 0; i < 8; i++)
            {
                part = new Part(4854, "Black_CnrBrcSS14ga_0.638", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //MS_FlatHead_8-32x3/16_SS

            for (int i = 0; i < 48; i++)
            {
                part = new Part(4876, "MS_FlatHead_8-32x3/16_SS", this, 1, 0.0m);
                part.PartGroupType = "AssyBrackets-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic


            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";

            m_parts.Add(part);

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive

            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping


            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC

            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";

            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazePreSet
                part = new Part(4314, "GlazePreSet", this, 1, periSeal - botPanRedX2 - 8.0m * epdmReduce);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazeWedgeSeals
                part = new Part(4399, "GlazeWedgeSeals", this, 1, periSeal - botPanRedX2 - 8.0m * epdmReduce);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazePreSet
                part = new Part(4314, "GlazePreSet", this, 1, periSeal - topPanRedX2 - 8.0m * epdmReduce);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazeWedgeSeals
                part = new Part(4399, "GlazeWedgeSeals", this, 1, periSeal - topPanRedX2 - 8.0m * epdmReduce);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ////////////////////////////////////////////////////////////////////////////////////

            #region Frame-Parts

            ////////////////////////////////////////////////////////////////////////////////////

            // JamAlumL -->>
            decimal doorPanel = decimal.Zero;
            doorPanel          = this.Parent.SubAssemblies[0].SubAssemblyHieght;
            part               = new Part(4352, "JamAlumL<", this, 1, m_subAssemblyHieght - calkJoint);
            part.PartGroupType = "Frame-Parts";
            decimal step = (doorPanel - 15.0m);
            step /= Convert.ToDecimal((FrameWorks.Functions.HingeCount(doorPanel) - 1));
            step  = Math.Round(step, 4);
            //string msg = "";
            part.PartLabel = "1) MiterTop\r\n" +
                             "2) [911.m]Cope Jamb Bottom->\r\n" +
                             "3) Position 0rigin TOU @ ->" + (7.5m + 0.875m).ToString() + "\r\n" +
                             "4) Hinge Backer Prep->[1982.m] "
                             + FrameWorks.Functions.HingeCount(doorPanel).ToString() + "@<" + step.ToString() + ">O.C.";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // JamAlumR -->>
            part = new Part(4352, "JamAlumR|>", this, 1, m_subAssemblyHieght - calkJoint);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterTop\r\n" +
                                 "2)[1962.m]Position 0rigin Strike Plate";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HeadAlum ^^
            part = new Part(4352, "HeadAlum", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterEnds\r\n" +
                                 "2)[1987.m]Position 0rigin Shoot Strike";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region ThrehGutAssy

            ////////////////////////////////////////////////////////////////////////////////////

            // ThresGut ^^
            part = new Part(5587, "ThresGut", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "ThrehGutAssy-Parts";
            part.PartLabel     = "Top";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ThresGutBot ^^
            part = new Part(5587, "ThresGut", this, 1, m_subAssemblyWidth + trhGutterAdd);
            part.PartGroupType = "ThrehGutAssy-Parts";
            part.PartLabel     = "Bottom";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrFrame

            ////////////////////////////////////////////////////////////////////////////////////

            // AglBrktAlum
            part = new Part(3206, "AglBrktAlum", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // PointSetScrew
            part = new Part(1545, "PointSetScrew", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            ////////////////////////////////////////////////////////////////////////////////////

            // StrikePlateLH_RHR
            part = new Part(5335, "StrikePlateLH_RHR", this, 1, 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ShootStrikeLH_RHR
            part = new Part(5308, "ShootStrikeLH_RHR", this, 1, 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ShootStrikeRH_LHR
            part = new Part(5310, "ShootStrikeRH_LHR", this, 1, 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            //FrameSealKfolD
            decimal peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
            for (int i = 0; i < 1; i++)
            {
                peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght - calkJoint, m_subAssemblyWidth);
                part = new Part(2274, "FrameSealKfolD", this, 1, peri - m_subAssemblyWidth - 4.0m);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            ////////////////////////////////////////////////////////////////////////////////////

            #region AlumTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(5131, "StileLeft", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(5131, "StileRight", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(5131, "RailTop", this, 1, m_subAssemblyWidth - doorReduceX2);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(5131, "RailBot", this, 1, m_subAssemblyWidth - doorReduceX2);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(5537, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPE_Shim_0.218
            part = new Part(5538, "HDPE_Shim_0.218", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(5060, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPE_Shim_0.3125
            part = new Part(5536, "HDPE_Shim_0.218", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop
            part = new Part(5537, "HDPETop", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop_Shim_0.218
            part = new Part(5538, "HDPETop_Shim_0.218", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(5539, "HDPEBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot_Shim_0.218
            part = new Part(5538, "HDPEBot_Shim_0.218", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntins

            ////////////////////////////////////////////////////////////////////////////////////

            // MuntHorz
            for (int i = 0; i < 12; i++)
            {
                part = new Part(5306, "MuntHorz", this, 1, (m_subAssemblyWidth - sidMuntGP2) / 2.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "?_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // MuntVert
            for (int i = 0; i < 8; i++)
            {
                part = new Part(5306, "MuntVert", this, 1, (m_subAssemblyHieght - topMuntGp - botMuntGp) / 4.0m);
                part.PartGroupType = "Muntins";
                part.PartLabel     = "?_Ends";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5123, "AlumGlsStpVert", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
                part.PartGroupType = "StopAlum-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTopBot
            for (int i = 0; i < 2; i++)
            {
                part = new Part(5123, "AlumGlsStpTopBot", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "StopAlum-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            ////////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            part = new Part(5322);
            part.FunctionalName    = "GlassPanel";
            part.PartGroupType     = "Glass-Parts";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGap - glsDrGapBot);
            part.PartThick         = 1.125m;
            part.PartLabel         = "SDL_2x4";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            ////////////////////////////////////////////////////////////////////////////////////

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrDoor

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            ////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            //KfolDrEdge
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDMglazeDart
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(4314, "EPDMglazeDart", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDMglazeWedge
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                part = new Part(4284, "EPDMglazeWedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            #region BrzTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(4312, "StileLeft", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(4312, "StileRight", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(4312, "RailTop", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailMid
            part = new Part(4312, "RailMid", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(4312, "RailBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Kick_Panel

            ////////////////////////////////////////////////////////////////////////////////////

            // ExtiraPanel ^^
            part = new Part(4043);
            part.FunctionalName    = "ExtiraPanel";
            part.PartGroupType     = "PanelBrz";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (extiraHeight);
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // BrassC464
            part = new Part(4042);
            part.FunctionalName    = "BrassC464Ext";
            part.PartGroupType     = "PanelBrz";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - muntinDrReduceX2);
            part.PartLength        = (heightBPExt);
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // BrassC464
            part = new Part(4042);
            part.FunctionalName    = "BrassC464Int";
            part.PartGroupType     = "PanelBrz";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - stopReduceX2);
            part.PartLength        = (heightBPInt);
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region BeadMuntin

            //////////////////////////////////////////////////////////////////////////////

            // BeadMuntin_Hrz
            for (int i = 0; i < 2; i++)
            {
                part = new Part(6889, "BeadMuntin_Hrz", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "BeadMuntin";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // BeadMuntin_Vert
            for (int i = 0; i < 3; i++)
            {
                part = new Part(6889, "BeadMuntin_Vert", this, 1, (m_subAssemblyHieght - stopReduceX3 - heightBPInt) / 3.0m);
                part.PartGroupType = "BeadMuntin";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntin_Flat

            /////////////////////////////////////////////////////////////////////////////

            // Muntin_FlatHrz
            for (int i = 0; i < 2; i++)
            {
                part = new Part(6887, "Muntin_FlatHrz", this, 1, m_subAssemblyWidth - muntinDrReduceX2);
                part.PartGroupType = "Muntin_Flat";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // MntVertExt
            for (int i = 0; i < 3; i++)
            {
                part = new Part(6887, "MntVertExt", this, 1, (m_subAssemblyHieght - muntinDrReduceX3 - muntinHozRedX2 - heightBPExt) / 3.0m);
                part.PartGroupType = "Muntin_Flat";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopBrz

            ////////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(6888, "BrzGlsStpVert", this, 1, m_subAssemblyHieght - stopReduceX2 - heightBPInt - muntinDrReduce);
                part.PartGroupType = "StopBrz-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpTop
            part = new Part(6888, "BrzGlsStpTop", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpBot
            part = new Part(6888, "BrzGlsStpBot", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(5330, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(5536, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            // HDPEHingEdge
            part = new Part(5060, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(5538, "HDPEBot", this, 1, m_subAssemblyWidth + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            // HDPEBot
            part = new Part(5539, "HDPEBot", this, 1, m_subAssemblyWidth + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass2X3SDL

            ////////////////////////////////////////////////////////////////////////////////

            // Glass2X3SDL
            part = new Part(6898);
            part.FunctionalName    = "Glass2X3SDL";
            part.PartGroupType     = "Glass2X3SDL-Parts";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGapX2 - muntinDrReduce - heightBPInt);
            part.PartThick         = 1.00m;
            part.PartLabel         = "2x3SDL";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            ////////////////////////////////////////////////////////////////////////////////

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //AlumPVC_CornerBrace
            part = new Part(5611, "AlumPVC_CornerBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Green_CnrBrcSS14ga_0.7049
            part = new Part(4829, "Green_CnrBrcSS14ga_0.7049", this, 8, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Yellow_CnrBrcSS14ga_0.4625
            part = new Part(4784, "Yellow_CnrBrcSS14ga_0.4625", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "Yellow";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //MS_FlatHead_8-32x3/16_SS
            part = new Part(502, "MS_FlatHead_8-32x3/16_SS", this, 48, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            ////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount2(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazePreSet
                part = new Part(4314, "GlazePreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazeWedgeSeals
                part = new Part(4399, "GlazeWedgeSeals", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;



            #region BRZtbAlWD


            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4325, "StileLeft", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "BRZtbAlWD";
                part.PartLabel     = "1) Miter_Ends";
                m_parts.Add(part);
            }


            // StileRight
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4325, "StileRight", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "BRZtbAlWD";
                part.PartLabel     = "1) Miter_Ends";

                m_parts.Add(part);
            }


            // RailTop
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4325, "RailTop", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "BRZtbAlWD";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }


            // RailBot
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4325, "RailBot", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "BRZtbAlWD";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region StopAlum


            // AlumGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4327, "AlumGlsStpVert", this, 1, m_subAssemblyHieght - stopReduceX2);
                part.PartGroupType = "StopAlum-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////


            // AlumGlsStpTopBot
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4327, "AlumGlsStpTopBot", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "StopAlum-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////



            #endregion

            #region WoodCladDr


            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4337, "StileLeft", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "WoodCladDr";
                part.PartLabel     = "1) Miter_Ends";
                m_parts.Add(part);
            }


            // StileRight
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4337, "StileRight", this, 1, m_subAssemblyHieght);
                part.PartGroupType = "WoodCladDr";
                part.PartLabel     = "1) Miter_Ends";

                m_parts.Add(part);
            }


            // RailTop
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4337, "RailTop", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "WoodCladDr";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }


            // RailBot
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4337, "RailBot", this, 1, m_subAssemblyWidth);
                part.PartGroupType = "WoodCladDr";
                part.PartLabel     = "1) Miter_Ends ";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region StopWood


            // WoodGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4331, "WoodGlsStpVert", this, 1, m_subAssemblyHieght - stopReduceX2);
                part.PartGroupType = "StopWood-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////


            // WoodGlsStpTopBot
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4331, "WoodGlsStpTopBot", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "StopWood-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////



            #endregion

            #region HDPE



            // HDPELockEdge
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4269, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileL = "";

                m_parts.Add(part);
            }



            // HDPEHingEdge
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4268, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileL = "";

                m_parts.Add(part);
            }



            // HDPETop
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4269, "HDPETop", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileR = "";

                m_parts.Add(part);
            }


            // HDPEBot
            for (int i = 0; i < 1; i++)
            {
                part = new Part(4270, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
                part.PartGroupType = "HDPE-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = labelStileR = "";

                m_parts.Add(part);
            }



            #endregion

            #region Glass



            // GlassPanel
            for (int i = 0; i < 1; i++)
            {
                //GlassPanel
                part = new Part(4550);
                part.FunctionalName    = "GlassPanel";
                part.PartGroupType     = "Glass-Parts";
                part.Qnty              = 1;
                part.ContainerAssembly = this;
                part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
                part.PartLength        = (m_subAssemblyHieght - glsDrGapX2);
                part.PartThick         = 1.230m;
                part.PartLabel         = "";

                m_parts.Add(part);
            }



            #endregion

            #region AssyBraces

            //Alum_PVC_Corner_Bracket

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4857, "Alum_PVC_Corner_Bracket", this, 1, 0.0m);
                part.PartGroupType = "AssyBraces-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //MS_FlatHead_8-32x3/4_SS

            for (int i = 0; i < 32; i++)
            {
                part = new Part(4858, "MS_FlatHead_8-32x3/4_SS", this, 1, 0.0m);
                part.PartGroupType = "AssyBraces-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////

            // Black_CrnBrSS14ga_0.6377

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4854, "Black_CrnBrSS14ga_0.6377", this, 1, 0.0m);
                part.PartGroupType = "AsemblHrdwr-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // Blue_CrnBrSS14ga_0.4662

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4855, "Blue_CrnBrSS14ga_0.4662", this, 1, 0.0m);
                part.PartGroupType = "AsemblHrdwr-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // Orange_CrnBrSS14ga_0.4662

            for (int i = 0; i < 4; i++)
            {
                part = new Part(4866, "Orange_CrnBrSS14ga_0.4662", this, 1, 0.0m);
                part.PartGroupType = "AsemblHrdwr-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // MS_FlatHead_8-32x3/16_SS

            for (int i = 0; i < 48; i++)
            {
                part = new Part(1545, "MS_FlatHead_8-32x3/16_SS", this, 1, 0.0m);
                part.PartGroupType = "AsemblHrdwr-Parts";
                part.PartWidth     = part.Source.Width;
                part.PartThick     = part.Source.Height;
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";

            m_parts.Add(part);

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive

            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping


            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC

            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";

            m_parts.Add(part);


            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazDartEPDM
                part = new Part(4314, "GlazDartEPDM", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //GlazWedgEPDM
                part = new Part(4284, "GlazWedgEPDM", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";

                m_parts.Add(part);
            }
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            #region BrzTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(4312, "StileLeft", this, 1, m_subAssemblyHieght - m_subAssemblyDepth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            // StileRight
            part = new Part(4312, "StileRight", this, 1, m_subAssemblyHieght - m_subAssemblyDepth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            // RailT_StretchForm
            part = new Part(4312, "RailT_StretchForm", this, 1, (m_subAssemblyWidth * π) / 2.0m);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);


            // RailBot
            part = new Part(4312, "RailBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            // HDPELockEdge
            part = new Part(4780, "HDPELockEdge", this, 2, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";;
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            // HDPEHingEdge
            part = new Part(5536, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            // HDPEHingEdge
            part = new Part(5060, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            // HDPEBot
            part = new Part(5538, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            // HDPEBot
            part = new Part(5539, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            #endregion

            #region StopBrz

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            part = new Part(6888, "BrzGlsStpVert", this, 2, m_subAssemblyHieght - stopReduceX2 - m_subAssemblyDepth);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpT_StretchForm
            part = new Part(6888, "BrzGlsStpT_StretchForm", this, 1, (m_subAssemblyWidth - stopReduceX2 * π / 2.0m) + grip2X);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpBot
            part = new Part(6888, "BrzGlsStpTopBot", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntin_1.25

            //////////////////////////////////////////////////////////////////////////////

            // BrzMntHrz6Lt
            for (int i = 0; i < 3; i++)
            {
                part = new Part(6887, "BrzMntHrz6Lt", this, 1, m_subAssemblyWidth - muntinDrReduceX2);
                part.PartGroupType = "Muntin_1.25";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            // BrzMntVert6Lt
            for (int i = 0; i < 4; i++)
            {
                part = new Part(6887, "BrzMntVert6Lt", this, 1, (m_subAssemblyHieght - muntinDrReduceX2) / 4.0m);
                part.PartGroupType = "Muntin_1.25";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // BeadMuntHrz6Lt
            for (int i = 0; i < 6; i++)
            {
                part = new Part(6889, "BeadMuntHrz6Lt", this, 1, (m_subAssemblyWidth - stopReduceX2) / 2.0m);
                part.PartGroupType = "StopBrz";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            // BeadMuntVert6Lt
            for (int i = 0; i < 4; i++)
            {
                part = new Part(6889, "BeadMuntVert6Lt", this, 1, (m_subAssemblyHieght - stopReduceX2) / 4.0m);
                part.PartGroupType = "StopBrz";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass


            ////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            part = new Part(6898);
            part.FunctionalName    = "Gls2x4_SDL";
            part.PartGroupType     = "Glass-Parts";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGapX2);
            part.PartThick         = 1.00m;
            part.PartLabel         = "2x4_Pattern";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            #endregion

            #region HardWare Logic

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount2(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive

            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            // AlumPVC_CornerBrace
            part = new Part(5611, "AlumPVC_CornerBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Green_CnrBrcSS14ga_0.7049
            part = new Part(4829, "Green_CnrBrcSS14ga_0.7049", this, 8, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //Blue_CnrBrcSS14ga_0.4662
            part = new Part(4855, "Blue_CnrBrcSS14ga_0.4662", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            //MS_FlatHead_8-32x3/16_SS
            part = new Part(502, "MS_FlatHead_8-32x3/16_SS", this, 48, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ///////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazePreSet
                part = new Part(4314, "GlazePreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazeWedgeSeals
                part = new Part(4399, "GlazeWedgeSeals", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Component Component;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #region Frame-Components

            // JamAlumL -->>

            decimal doorPanel = decimal.Zero;

            doorPanel = this.Parent.SubAssemblies[0].SubAssemblyHieght;

            Component = new Component(4352, "JamAlumL>|", this, 1, m_subAssemblyHieght - calkJoint);
            Component.ComponentGroupType = "Frame-Components";
            decimal step = (doorPanel - 15.0m);
            step /= Convert.ToDecimal((FrameWorks.Functions.HingeCount(doorPanel) - 1));
            step  = Math.Round(step, 4);
            //string msg = "";
            Component.ComponentLabel = "1) MiterTop\r\n" +
                                       "2) [911.m]Cope Jamb Bottom->\r\n" +
                                       "3) Position 0rigin TOU @ ->" + (7.5m + 0.875m).ToString() + "\r\n" +
                                       "4) Hinge Backer Prep->[1982.m] "
                                       + FrameWorks.Functions.HingeCount(doorPanel).ToString() + "@<" + step.ToString() + ">O.C.";

            m_Components.Add(Component);

            // JamAlumR <<--

            Component = new Component(4352, "JamAlumR|<", this, 1, m_subAssemblyHieght - calkJoint);
            Component.ComponentGroupType = "Frame-Components";
            Component.ComponentLabel     = "1)MiterTop\r\n" +
                                           "2)[1962.m]Position 0rigin Strike Plate";

            m_Components.Add(Component);

            // HeadAlum ^^
            Component = new Component(4352, "HeadAlum", this, 1, m_subAssemblyWidth);
            Component.ComponentGroupType = "Frame-Components";
            Component.ComponentLabel     = "1)MiterEnds\r\n" +
                                           "2)[1987.m]Position 0rigin Shoot Strike";

            m_Components.Add(Component);


            #endregion

            #region AssyHrdwrFrame


            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            // AglBrktAlum
            for (int i = 0; i < 4; i++)
            {
                Component = new Component(3206, "AglBrktAlum", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrFrame";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // PointSetScrew
            for (int i = 0; i < 16; i++)
            {
                Component = new Component(1545, "PointSetScrew", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrFrame";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region HardWare

            // StrikePlateRH_LHR
            Component = new Component(5334, "StrikePlateRH_LHR", this, 1, 0.0m);
            Component.ComponentGroupType = "Hardware-Components";
            Component.ComponentLabel     = "";

            m_Components.Add(Component);

            // ShootStrikeLH_RHR
            Component = new Component(5308, "ShootStrikeLH_RHR", this, 1, 0.0m);
            Component.ComponentGroupType = "Hardware-Components";
            Component.ComponentLabel     = "";

            m_Components.Add(Component);

            // ShootStrikeRH_LHR
            Component = new Component(5310, "ShootStrikeRH_LHR", this, 1, 0.0m);
            Component.ComponentGroupType = "Hardware-Components";
            Component.ComponentLabel     = "";

            m_Components.Add(Component);

            #endregion

            #region Seal/Weatherstripping

            decimal peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght - calkJoint, m_subAssemblyWidth);

                //FrameSealKfolD
                Component = new Component(2274, "FrameSealKfolD", this, 1, peri - m_subAssemblyWidth - 4.0m);
                Component.ComponentGroupType = "Seal-Components";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #region AlumTB3inch


            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4355, "StileLeft|<", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
                Component.ComponentGroupType = "AlumTB3inch";
                Component.ComponentLabel     = "1) Miter_Ends";
                m_Components.Add(Component);
            }


            // StileRight
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4355, "StileRight>|", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
                Component.ComponentGroupType = "AlumTB3inch";
                Component.ComponentLabel     = "1) Miter_Ends";

                m_Components.Add(Component);
            }


            // RailTop
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4355, "RailTop^", this, 1, m_subAssemblyWidth - doorReduceX2);
                Component.ComponentGroupType = "AlumTB3inch";
                Component.ComponentLabel     = "1) Miter_Ends ";

                m_Components.Add(Component);
            }


            // RailBot
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4355, "RailBot_", this, 1, m_subAssemblyWidth - doorReduceX2);
                Component.ComponentGroupType = "AlumTB3inch";
                Component.ComponentLabel     = "1) Miter_Ends ";

                m_Components.Add(Component);
            }

            ////////////////////////////////////////////////////////////////////////////////////


            #endregion

            #region HDPE

            // HDPELockEdge
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4269, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                Component.ComponentGroupType = "HDPE-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = labelStileL = "";

                m_Components.Add(Component);
            }

            // HDPEHingEdge
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4268, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
                Component.ComponentGroupType = "HDPE-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = labelStileL = "";

                m_Components.Add(Component);
            }

            // HDPETop
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4269, "HDPETop", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
                Component.ComponentGroupType = "HDPE-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = labelStileR = "";

                m_Components.Add(Component);
            }


            // HDPEBot
            for (int i = 0; i < 1; i++)
            {
                Component = new Component(4270, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
                Component.ComponentGroupType = "HDPE-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = labelStileR = "";

                m_Components.Add(Component);
            }

            #endregion

            #region StopAlum

            // AlumGlsStpVert
            for (int i = 0; i < 2; i++)
            {
                Component = new Component(4341, "AlumGlsStpVert||", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
                Component.ComponentGroupType = "StopAlum-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTopBot
            for (int i = 0; i < 2; i++)
            {
                Component = new Component(4341, "AlumGlsStpTopBot^_", this, 1, m_subAssemblyWidth - stopReduceX2);
                Component.ComponentGroupType = "StopAlum-Components";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            // GlassPanel
            for (int i = 0; i < 1; i++)
            {
                //GlassPanel
                Component = new Component(3300);
                Component.FunctionalName     = "GlassPanel";
                Component.ComponentGroupType = "Glass-Components";
                Component.Qnty = 1;
                Component.ContainerAssembly = this;
                Component.ComponentWidth    = (m_subAssemblyWidth - glsDrGapX2);
                Component.ComponentLength   = (m_subAssemblyHieght - glsDrGap - glsDrGapBot);
                Component.ComponentThick    = 1.25m;
                Component.ComponentLabel    = "";

                m_Components.Add(Component);
            }

            #endregion

            #region AssyHrdwrDoor


            //////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            for (int i = 0; i < 4; i++)
            {
                Component = new Component(4784, "SS_0.4625_InsetCrnBrace", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // FlatHead_8-32x3/16_UndercutHead
            for (int i = 0; i < 16; i++)
            {
                Component = new Component(502, "FlatHead_8-32x3/16_UndercutHead", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            //////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            for (int i = 0; i < 4; i++)
            {
                Component = new Component(4830, "AlumCnrBrace", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            for (int i = 0; i < 16; i++)
            {
                Component = new Component(4833, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // AlumCnrBrace
            for (int i = 0; i < 4; i++)
            {
                Component = new Component(4831, "AlumCnrBrace", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            for (int i = 0; i < 16; i++)
            {
                Component = new Component(4833, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            ////////////////////////////////////////////////////////////////////////////////


            // SS_0.7049_OutsetCrnBrace
            for (int i = 0; i < 8; i++)
            {
                Component = new Component(4829, "SS_0.7049_OutsetCrnBrace", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            // FlatHead_8-32x3/16_UndercutHead
            for (int i = 0; i < 32; i++)
            {
                Component = new Component(502, "FlatHead_8-32x3/16_UndercutHead", this, 1, 0.0m);
                Component.ComponentGroupType = "AssyHrdwrDoor";
                Component.ComponentWidth     = Component.Source.Width;
                Component.ComponentThick     = Component.Source.Height;
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            //////////////////////////////////////////////////////////////////////////////


            #endregion

            #region HardWare Logic

            // Hinges
            Component = new Component(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            Component.ComponentGroupType = "Hardware-Components";
            Component.ComponentLabel     = ".25_RAD_Corner";

            m_Components.Add(Component);

            // BackerHinge
            Component = new Component(4101, "BackerHinge", this, HingeCount(m_subAssemblyHieght), 0.0m);
            Component.ComponentGroupType = "Hardware-Components";
            Component.ComponentLabel     = "";

            m_Components.Add(Component);

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive

            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Component innerComponent in GearAssy.Components)
            {
                //inner
                this.Components.Add(innerComponent);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping


            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //KfolDrEdge
                Component = new Component(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                Component.ComponentGroupType = "Seal-Components";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC

            Component = new Component(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            Component.ComponentGroupType = "Seal-Components";
            Component.ComponentLabel     = "";

            m_Components.Add(Component);


            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //EPDM_PreSet
                Component = new Component(4314, "EPDM_PreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                Component.ComponentGroupType = "Seal-Components";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //EPDM_Wedge
                Component = new Component(4284, "EPDM_Wedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                Component.ComponentGroupType = "Seal-Components";
                Component.ComponentLabel     = "";

                m_Components.Add(Component);
            }
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            #endregion
        }
Beispiel #10
0
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;


            #region AlumTBNrw

            /////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(5710, "StileLeft", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "AlumTBNrw";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(5710, "StileRight", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "AlumTBNrw";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(5710, "RailTop", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "AlumTBNrw";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailMid
            part = new Part(5710, "RailMid", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "AlumTBNrw";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(5710, "RailBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "AlumTBNrw";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardwareBump

            ////////////////////////////////////////////////////////////////////////////////////

            // StileBO
            part = new Part(5710, "StileBO", this, 1, 13.75m);
            part.PartGroupType = "HardwareBump";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpVert
            part = new Part(5711, "AlumGlsStpVert", this, 1, 13.75m);
            part.PartGroupType = "HardwareBump-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpHorz1
            part = new Part(5711, "AlumGlsStpHorz", this, 1, 1.53125m);
            part.PartGroupType = "HardwareBump-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            // AlumGlsStpHorz2
            part = new Part(5711, "AlumGlsStpHorz", this, 1, 1.53125m);
            part.PartGroupType = "HardwareBump-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region KickPanel

            //////////////////////////////////////////////////////////////////////////////

            // KickPanelInt
            part = new Part(6962, "KickPanelInt", this, 1, m_subAssemblyWidth - muntinReduce2X);
            part.PartGroupType = "KickPanel";
            part.PartWidth     = 5.78125m;
            part.PartLabel     = "PanelCladInt";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            //PanelCore1
            part = new Part(4043, "PanelCore", this, 1, m_subAssemblyWidth - panelCoreRed2X);
            part.PartGroupType = "KickPanel";
            part.PartWidth     = 6.1906m;
            part.PartThick     = 1.0m;
            part.PartLabel     = "PanelCore";
            m_parts.Add(part);

            //PanelCore2
            part = new Part(4043, "PanelCore", this, 1, m_subAssemblyWidth - panelCoreRed2X);
            part.PartGroupType = "KickPanel";
            part.PartWidth     = 6.1906m;
            part.PartThick     = 1.0m;
            part.PartLabel     = "PanelCore";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // KickPanChanelExt
            part = new Part(6963, "KickPanChanelExt", this, 1, m_subAssemblyWidth - muntinReduce2X);
            part.PartGroupType = "KickPanel";
            part.PartWidth     = 4.90625m;
            part.PartLabel     = "PanalCladExt";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge1
            part = new Part(6879, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            // HDPELockEdge2
            part = new Part(6879, "HDPELockEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(6880, "HDPEHingEdge", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "HDPE";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(6971, "HDPEBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "HDPE";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopL <--
            part = new Part(5711, "AlumGlsStopL", this, 1, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopR -->
            part = new Part(5711, "AlumGlsStopR", this, 1, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopT ^^
            part = new Part(5711, "AlumGlsStopT", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStopB ||
            part = new Part(5711, "AlumGlsStopB", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            //Glass
            part = new Part(6883);
            part.FunctionalName    = "Glass";
            part.PartGroupType     = "Glass";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGap - glsBotRailGap);
            part.PartThick         = 1.25m;
            part.PartLabel         = "";

            m_parts.Add(part);

            #endregion

            #region Handle

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            #endregion

            #region AssyHrdwrDoor

            //////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(502, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#8-32x3/16_UndercutHead";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(5180, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#10x5/8_SheetMetal_18_8_SS";
            m_parts.Add(part);

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(5180, "FlatHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#10x5/8_SheetMetal_18_8_SS";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            // FlatHead
            part = new Part(502, "FlatHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "#8-32x3/16_UndercutHead";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            // StrikePlateRH_LHR
            part = new Part(5338, "StrikePlateRH_LHR", this, 1, 0.0m);
            part.PartGroupType = "Hardware";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            for (int i = 0; i < 1; i++)
            {
                part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
                part.PartGroupType = "Hardware";
                part.PartLabel     = ".25_RAD_Corner";
                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, (periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd) / 2.0m);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal";
            part.PartLabel     = "";
            m_parts.Add(part);

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //EPDM_PreSet
                part = new Part(4314, "EPDM_PreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 2; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                //EPDM_Wedge
                part = new Part(4284, "EPDM_Wedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";

                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
Beispiel #11
0
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            #region BrzTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(4312, "StileLeft", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(4312, "StileRight", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(4312, "RailTop", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(4312, "RailBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(4269, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(4268, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop
            part = new Part(4269, "HDPETop", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(4270, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopBrz

            ////////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            part = new Part(4298, "BrzGlsStpVert", this, 2, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpTopBot
            part = new Part(4298, "BrzGlsStpTopBot", this, 2, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            ////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            part = new Part(4419);
            part.FunctionalName    = "GlassPanel";
            part.PartGroupType     = "Glass-Parts";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGapX2);
            part.PartThick         = 1.25m;
            part.PartLabel         = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            ////////////////////////////////////////////////////////////////////////////////

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            ////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            ////////////////////////////////////////////////////////////////////////////////

            //Alum_CornerBrace
            part = new Part(4831, "Alum_CornerBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // SMS_10_1/2_FH
            part = new Part(4933, "SMS_10_1/2_FH", this, 16, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //Alum_CornerBrace
            part = new Part(4830, "Alum_CornerBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // SMS_10_5/8_FH
            part = new Part(5180, "SMS_10_5/8_FH", this, 16, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //Blue_CnrBrcSS14ga_0.4662
            part = new Part(4855, "Blue_CnrBrcSS14ga_0.4662", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //Black_CnrBrcSS14ga_0.638
            part = new Part(4854, "Black_CnrBrcSS14ga_0.638", this, 8, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //MS_FlatHead_8-32x3/16_SS
            part = new Part(502, "MS_FlatHead_8-32x3/16_SS", this, 48, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartWidth     = part.Source.Width;
            part.PartThick     = part.Source.Height;
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazePreSet
                part = new Part(4314, "GlazePreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazeWedgeSeals
                part = new Part(4399, "GlazeWedgeSeals", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            #region BrzTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(4312, "StileLeft", this, 1, m_subAssemblyHieght - rise);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(4312, "StileRight", this, 1, m_subAssemblyHieght);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            for (int i = 0; i < 2; i++)
            {
                part = new Part(4312, "RailTop_Stretch_Form", this, 1, m_subAssemblyDepth);
                part.PartGroupType = "BrzTB3inch";
                part.PartLabel     = "1) Miter_Ends ";
                m_parts.Add(part);
            }


            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(4312, "RailBot", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "BrzTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(5330, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(5536, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(5060, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(5538, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(5539, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE-Parts";
            part.PartLabel     = labelBotRail = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region BeadMuntin

            //////////////////////////////////////////////////////////////////////////////

            // BeadMuntin_Hrz
            for (int i = 0; i < 3; i++)
            {
                part = new Part(6889, "BeadMuntin_Hrz", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "BeadMuntin";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntin_Flat

            //////////////////////////////////////////////////////////////////////////////

            // Muntin_FlatHrz
            for (int i = 0; i < 3; i++)
            {
                part = new Part(6887, "Muntin_FlatHrz", this, 1, m_subAssemblyWidth - muntinDrReduceX2);
                part.PartGroupType = "Muntin_Flat";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Muntin_Dia

            //////////////////////////////////////////////////////////////////////////////

            // 3in_Ø_Circle
            for (int i = 0; i < 8; i++)
            {
                part = new Part(6910, "3in_Ø_Circle", this, 1, 3.0m);
                part.PartGroupType = "Muntin_Dia";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // MntDiaExt
            for (int i = 0; i < 16; i++)
            {
                part = new Part(6903, "MntDiaExt", this, 1, 25.1875m);
                part.PartGroupType = "Muntin_Dia";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            // MntDiaInt
            for (int i = 0; i < 16; i++)
            {
                part = new Part(6903, "MntDiaInt", this, 1, 25.1875m);
                part.PartGroupType = "Muntin_Dia";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopBrz

            ////////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            part = new Part(6888, "BrzGlsStpVert", this, 1, m_subAssemblyHieght - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpVert
            part = new Part(6888, "BrzGlsStpVert", this, 1, m_subAssemblyHieght - rise - stopReduce);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpTop
            for (int i = 0; i < 2; i++)
            {
                part = new Part(6888, "BrzGlsStp_Stretch_Form", this, 1, m_subAssemblyDepth);
                part.PartGroupType = "StopBrz-Parts";
                part.PartLabel     = "Stretch_Form";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            // BrzGlsStpBot
            part = new Part(6888, "BrzGlsStpBot", this, 2, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopBrz-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            ////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            part = new Part(6898);
            part.FunctionalName    = "Gls1x4_SDL";
            part.PartGroupType     = "Glass-Parts";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGapX2);
            part.PartThick         = 1.0m;
            part.PartLabel         = "1x4_Pattern";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Delivery

            ////////////////////////////////////////////////////////////////////////////////

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Delivery-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare Logic

            ////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(5594, "Hinges", this, HingeCount2(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "Hardware-Parts";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            ////////////////////////////////////////////////////////////////////////////////

            //AlumPVC_CornerBrace
            part = new Part(5611, "AlumPVC_CornerBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //Blue_CnrBrcSS14ga_0.4662
            part = new Part(4855, "Blue_CnrBrcSS14ga_0.4662", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "Blue";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //Black_CnrBrcSS14ga_0.638
            part = new Part(4854, "Black_CnrBrcSS14ga_0.638", this, 8, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "Black";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            //MS_FlatHead_8-32x3/16_SS
            part = new Part(502, "MS_FlatHead_8-32x3/16_SS", this, 48, 0.0m);
            part.PartGroupType = "AssyBrackets-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //KfolDrEdge
                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal-Parts";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////

            // GlazeWedgeSeals
            for (int i = 0; i < 6; i++)
            {
                part = new Part(5714, "GlazeWedgeSeals", this, 1, m_subAssemblyWidth - stopReduceX2);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            //////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazePreSet
                part = new Part(5713, "GlazePreSet", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);
                //GlazeWedgeSeals
                part = new Part(5714, "GlazeWedgeSeals", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal-Parts";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////

            #endregion
        }
        //Bill of Material
        public override void Build()
        {
            Part part;

            decimal pweight = FrameWorks.Functions.PanelWieghtS2000(m_subAssemblyWidth, m_subAssemblyHieght);

            string labelStileR  = string.Empty;
            string labelStileL  = string.Empty;
            string labelTopRail = string.Empty;
            string labelBotRail = string.Empty;

            ///////////////////////////////////////////////////////////////////////////

            #region Frame-Parts

            ////////////////////////////////////////////////////////////////////////////////////

            // JamAlumL <<--
            part = new Part(4352, "JamAlumL|<", this, 1, m_subAssemblyHieght - calkJoint);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterTop\r\n" +
                                 "2)[1962.m]Position 0rigin Strike Plate";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // JamAlumR -->>
            decimal doorPanel = decimal.Zero;
            doorPanel = this.Parent.SubAssemblies[0].SubAssemblyHieght;

            part = new Part(4352, "JamAlumR>|", this, 1, m_subAssemblyHieght - calkJoint);
            part.PartGroupType = "Frame-Parts";
            decimal step = (doorPanel - 15.0m);
            step /= Convert.ToDecimal((FrameWorks.Functions.HingeCount(doorPanel) - 1));
            step  = Math.Round(step, 4);
            //string msg = "";
            part.PartLabel = "1) MiterTop\r\n" +
                             "2) [911.m]Cope Jamb Bottom->\r\n" +
                             "3) Position 0rigin TOU @ ->" + (7.5m + 0.875m).ToString() + "\r\n" +
                             "4) Hinge Backer Prep->[1982.m] "
                             + FrameWorks.Functions.HingeCount(doorPanel).ToString() + "@<" + step.ToString() + ">O.C.";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HeadAlum ^^
            part = new Part(4352, "HeadAlum", this, 1, m_subAssemblyWidth);
            part.PartGroupType = "Frame-Parts";
            part.PartLabel     = "1)MiterEnds\r\n" +
                                 "2)[1987.m]Position 0rigin Shoot Strike";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrFrame

            ////////////////////////////////////////////////////////////////////////////////////

            // AglBrktAlum
            part = new Part(3206, "AglBrktAlum", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // PointSetScrew
            part = new Part(1545, "PointSetScrew", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrFrame";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            ////////////////////////////////////////////////////////////////////////////////////

            // StrikePlateRH_LHR
            part = new Part(5334, "StrikePlateRH_LHR", this, 1, 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ShootStrikeLH_RHR
            part = new Part(5308, "ShootStrikeLH_RHR", this, 1, 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // ShootStrikeRH_LHR
            part = new Part(5310, "ShootStrikeRH_LHR", this, 1, 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            decimal peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

            ////////////////////////////////////////////////////////////////////////////////////

            //FrameSealKfolD
            for (int i = 0; i < 1; i++)
            {
                peri = FrameWorks.Functions.Perimeter(m_subAssemblyHieght - calkJoint, m_subAssemblyWidth);

                part = new Part(2274, "FrameSealKfolD", this, 1, peri - m_subAssemblyWidth - 4.0m);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            ///////////////////////////////////////////////////////////////////////////

            #region AlumTB3inch

            ////////////////////////////////////////////////////////////////////////////////////

            // StileLeft
            part = new Part(4355, "StileLeft|<", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // StileRight
            part = new Part(4355, "StileRight>|", this, 1, m_subAssemblyHieght - doorReduce - doorGapBot);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailTop
            part = new Part(4355, "RailTop^", this, 1, m_subAssemblyWidth - doorReduceX2);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // RailBot
            part = new Part(4355, "RailBot_", this, 1, m_subAssemblyWidth - doorReduceX2);
            part.PartGroupType = "AlumTB3inch";
            part.PartLabel     = "1) Miter_Ends ";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HDPE

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPELockEdge
            part = new Part(4269, "HDPELockEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEHingEdge
            part = new Part(4268, "HDPEHingEdge", this, 1, m_subAssemblyHieght + hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileL = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPETop
            part = new Part(4269, "HDPETop", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // HDPEBot
            part = new Part(4270, "HDPEBot", this, 1, m_subAssemblyWidth + 2.0M * hdpExtnd);
            part.PartGroupType = "HDPE";
            part.PartLabel     = labelStileR = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region StopAlum

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpLeft
            part = new Part(4341, "AlumGlsStpLeft", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpRight
            part = new Part(4341, "AlumGlsStpRight", this, 1, m_subAssemblyHieght - stopReduce - stopRedBot);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpTop
            part = new Part(4341, "AlumGlsStpTop", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumGlsStpBot
            part = new Part(4341, "AlumGlsStpBot", this, 1, m_subAssemblyWidth - stopReduceX2);
            part.PartGroupType = "StopAlum";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Glass

            ////////////////////////////////////////////////////////////////////////////////////

            // GlassPanel
            part = new Part(5503);
            part.FunctionalName    = "GlassPanel";
            part.PartGroupType     = "Glass";
            part.Qnty              = 1;
            part.ContainerAssembly = this;
            part.PartWidth         = (m_subAssemblyWidth - glsDrGapX2);
            part.PartLength        = (m_subAssemblyHieght - glsDrGap - glsDrGapBot);
            part.PartThick         = 1.25m;
            part.PartLabel         = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Handle

            ////////////////////////////////////////////////////////////////////////////////////

            // Handle_Set
            part = new Part(5218, "Handle_Set", this, 1, 0.0m);
            part.PartGroupType = "Handle";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyHrdwrDoor

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.4625_InsetCrnBrace
            part = new Part(4784, "SS_0.4625_InsetCrnBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4830, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // AlumCnrBrace
            part = new Part(4831, "AlumCnrBrace", this, 4, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_#10x5/8_SheetMetal_18_8_SS
            part = new Part(5180, "FlatHead_#10x5/8_SheetMetal_18_8_SS", this, 16, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // SS_0.7049_OutsetCrnBrace
            part = new Part(4829, "SS_0.7049_OutsetCrnBrace", this, 8, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // FlatHead_8-32x3/16_UndercutHead
            part = new Part(502, "FlatHead_8-32x3/16_UndercutHead", this, 32, 0.0m);
            part.PartGroupType = "AssyHrdwrDoor";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region HardWare

            ////////////////////////////////////////////////////////////////////////////////////

            // Hinges
            part = new Part(3685, "Hinges", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = ".25_RAD_Corner";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            // BackerHinge
            part = new Part(4101, "BackerHinge", this, HingeCount(m_subAssemblyHieght), 0.0m);
            part.PartGroupType = "HardWare";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //AmesburyMultipointActive
            FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive GearAssy =
                new FrameWorks.Makes.Hardware.Amesbury40.Premiere2000.MultipointActive(m_subAssemblyHieght - doorReduce - doorGapBot, this);
            foreach (Part innerpart in GearAssy.Parts)
            {
                //inner
                this.Parts.Add(innerpart);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region AssyBrackets

            ////////////////////////////////////////////////////////////////////////////////////

            //SS_0.4525_TYPE1
            part = new Part(4408, "SS_.4575_TYPE1", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //SS_0.6637 _TYPE2
            part = new Part(4409, "SS_.6637_TYPE2", this, 8, 0.0m);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //Alum_0.7808_TYPE4
            part = new Part(4525, "ALUM_.7808_TYPE4", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //Alum_1.0446_TYPE5
            part = new Part(4529, "ALUM_1.0446_TYPE5", this, 4, 0.0m);
            part.PartGroupType = "AssyBrackets";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion

            #region Seal/Weatherstripping

            ////////////////////////////////////////////////////////////////////////////////////

            //KfolDrEdge
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(2274, "KfolDrEdge", this, 1, periSeal - m_subAssemblyWidth + 4.0m * edgeSealAdd);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //DoorBotPVC
            part = new Part(1518, "DoorBotPVC", this, 1, m_subAssemblyWidth + 2.0m * hdpExtnd);
            part.PartGroupType = "Seal";
            part.PartLabel     = "";
            m_parts.Add(part);

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDMglazeDart
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(4314, "EPDMglazeDart", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            //EPDMglazeWedge
            for (int i = 0; i < 1; i++)
            {
                decimal periSeal = FrameWorks.Functions.Perimeter(m_subAssemblyHieght, m_subAssemblyWidth);

                part = new Part(4284, "EPDMglazeWedge", this, 1, periSeal - 4.0m * epdmReduce + 4.0m * epdmADD);
                part.PartGroupType = "Seal";
                part.PartLabel     = "";
                m_parts.Add(part);
            }

            ////////////////////////////////////////////////////////////////////////////////////

            #endregion
        }