public virtual object copy(bool cyclic)
        {
            TakeoffConditionTable obj = (TakeoffConditionTable)Clone();

            obj.LinesList  = new List <TakeoffLineTable>();
            obj.AreaList   = new List <TakeoffAreaTable>();
            obj.SpotList   = new List <TakeoffPointTable>();
            obj.LegendList = new List <TakeoffLegendTable>();

            if (LinesList != null)
            {
                foreach (TakeoffLineTable toff in LinesList)
                {
                    toff = (TakeoffLineTable)toff.copy(cyclic);
                    if (cyclic)
                    {
                        toff.ConditionTable = obj;
                    }
                    obj.LinesList.Add(toff);
                }
            }
            if (AreaList != null)
            {
                foreach (TakeoffAreaTable toff in AreaList)
                {
                    toff = (TakeoffAreaTable)toff.copy(cyclic);
                    if (cyclic)
                    {
                        toff.ConditionTable = obj;
                    }
                    obj.AreaList.Add(toff);
                }
            }
            if (SpotList != null)
            {
                foreach (TakeoffPointTable toff in SpotList)
                {
                    toff = (TakeoffPointTable)toff.clone();
                    if (cyclic)
                    {
                        toff.ConditionTable = obj;
                    }
                    obj.SpotList.Add(toff);
                }
            }
            if (LegendList != null)
            {
                foreach (TakeoffLegendTable toff in LegendList)
                {
                    toff = (TakeoffLegendTable)toff.clone();
                    if (cyclic)
                    {
                        toff.ConditionTable = obj;
                    }
                    obj.LegendList.Add(toff);
                }
            }

            return(obj);
        }
        public virtual object Clone()
        {
            TakeoffConditionTable obj = new TakeoffConditionTable();

            obj.Id               = Id;
            obj.Title            = Title;
            obj.Description      = Description;
            obj.Colour           = Colour;
            obj.Grouping         = Grouping;
            obj.ConditionType    = ConditionType;
            obj.PatternType      = PatternType;
            obj.ShapeType        = ShapeType;
            obj.Elevation        = Elevation;
            obj.ElevationSamples = ElevationSamples;
            obj.Height           = Height;
            obj.Width            = Width;
            obj.Thickness        = Thickness;
            obj.Depth            = Depth;
            obj.EditorId         = EditorId;
            obj.CreateUserId     = CreateUserId;
            obj.TakeoffType      = TakeoffType;
            obj.Qty1Type         = Qty1Type;
            obj.Qty2Type         = Qty2Type;
            obj.Qty3Type         = Qty3Type;
            obj.LastUpdate       = LastUpdate;
            obj.CreateDate       = CreateDate;
            obj.Uom1             = Uom1;
            obj.Uom2             = Uom2;
            obj.Uom3             = Uom3;
            obj.Qty1             = Qty1;
            obj.Qty2             = Qty2;
            obj.Qty3             = Qty3;

            return(obj);
        }