Esempio n. 1
0
        private void btnLimpiarFierro_Click(object sender, EventArgs e)
        {
            ModelObjectEnumerator r;

            r = model.GetModelObjectSelector().GetAllObjectsWithType(Tekla.Structures.Model.ModelObject.ModelObjectEnum.REBARGROUP);

            while (r.MoveNext())
            {
                RebarGroup rg = (RebarGroup)r.Current;
                rg.Grade = "Undefined";
                rg.Modify();
            }

            model.CommitChanges();

            MessageBox.Show("termine");
        }
Esempio n. 2
0
        public override bool Run(List <InputDefinition> Input)
        {
            try
            {
                GetValuesFromDialog();

                //get the footing
                Identifier id           = ((InputDefinition)Input[0]).GetInput() as Identifier;
                Beam       inputFooting = _Model.SelectModelObject(id) as Beam;

                var test = "";

                //Get the needed object properties
                var topLevelFootingGlobal    = 0.0;
                var bottomLevelFootingGlobal = 0.0;
                inputFooting.GetReportProperty("TOP_LEVEL_GLOBAL_UNFORMATTED", ref topLevelFootingGlobal);
                inputFooting.GetReportProperty("BOTTOM_LEVEL_GLOBAL_UNFORMATTED", ref bottomLevelFootingGlobal);

                //get the material properties
                var material = "";
                inputFooting.GetReportProperty("MATERIAL", ref material);

                //Determine the corner points of the footing
                var centerlineFooting = inputFooting.GetCenterLine(false).Cast <Point>().ToList();
                var startPointFooting = centerlineFooting[0];
                var endPointFooting   = centerlineFooting[1];

                double heightFooting = inputFooting.getDouble("HEIGHT") * 0.5;
                double widthFooting  = inputFooting.getDouble("WIDTH") * 0.5;

                var vectorX = inputFooting.GetCoordinateSystem().AxisX.GetNormal();
                var vectorY = inputFooting.GetCoordinateSystem().AxisY.GetNormal();
                var vectorZ = vectorX.Cross(vectorY).GetNormal();

                var leftBottomStart  = centerlineFooting[0] + new Point(-heightFooting * vectorY) + new Point(widthFooting * vectorZ);
                var rightBottomStart = centerlineFooting[0] + new Point(-heightFooting * vectorY) + new Point(-widthFooting * vectorZ);
                var leftTopStart     = centerlineFooting[0] + new Point(heightFooting * vectorY) + new Point(widthFooting * vectorZ);
                var rightTopStart    = centerlineFooting[0] + new Point(heightFooting * vectorY) + new Point(-widthFooting * vectorZ);

                var leftBottomEnd  = centerlineFooting[1] + new Point(-heightFooting * vectorY) + new Point(widthFooting * vectorZ);
                var rightBottomEnd = centerlineFooting[1] + new Point(-heightFooting * vectorY) + new Point(-widthFooting * vectorZ);
                var leftTopEnd     = centerlineFooting[1] + new Point(heightFooting * vectorY) + new Point(widthFooting * vectorZ);
                var rightTopEnd    = centerlineFooting[1] + new Point(heightFooting * vectorY) + new Point(-widthFooting * vectorZ);

                var rightHalfStart   = centerlineFooting[0] + new Point(heightFooting * vectorY);
                var leftHalfStart    = centerlineFooting[0] + new Point(-heightFooting * vectorY);
                var topHalfStart     = centerlineFooting[0] + new Point(widthFooting * vectorZ);
                var bottomtHalfStart = centerlineFooting[0] + new Point(-widthFooting * vectorZ);

                //var controlPoint1 = new ControlPoint(rightHalfStart);
                //var controlPoint2 = new ControlPoint(leftHalfStart);
                //var controlPoint3 = new ControlPoint(topHalfStart);
                //var controlPoint4 = new ControlPoint(bottomtHalfStart);

                //controlPoint1.Insert();
                //controlPoint2.Insert();
                //controlPoint3.Insert();
                //controlPoint4.Insert();

                //
                //BR1 (Bottom Rebar 1st Layer)
                //
                //list needed for the spacings list
                var BR1Spacing     = DistanceList.Parse(_BR1Spacing);
                var BR1SpacingList = BR1Spacing.Select(d => d.Value).ToList();

                //Define spacing type
                var BR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;

                switch (_BR1SpacingType)
                {
                case 0:
                    BR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
                    break;

                case 1:
                    BR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_NUMBER;
                    break;

                case 2:
                    BR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_SPACINGS;
                    break;
                }

                //create rebar instance bottom rebar 1(BR1)
                RebarGroup BR1 = new RebarGroup()
                {
                    Father     = inputFooting,
                    StartPoint = leftBottomStart,
                    EndPoint   = leftTopStart,
                    Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                leftBottomEnd, leftBottomStart, rightBottomStart, rightBottomEnd
                            }
                        }
                    },
                    Size         = _BR1Diameter,
                    RadiusValues = new ArrayList {
                        _BR1Radius
                    },
                    Grade           = _BR1Grade,
                    StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL,
                    Name            = "onderwapening",
                    Class           = 4,
                    NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    },
                    StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    StartPointOffsetValue = _CoverTop,
                    EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    EndPointOffsetValue   = _CoverTop,
                    OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverBottom, _CoverSide
                    },
                    StartFromPlaneOffset = _CoverSide,
                    EndFromPlaneOffset   = _CoverSide,
                    SpacingType          = BR1SpacingType,
                    Spacings             = new ArrayList(BR1SpacingList),
                    ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE
                };

                BR1.Insert();

                ArrayList BR1GeometryList = new ArrayList(BR1.GetRebarGeometries(false));
                double    BR1RealDiameter = 0.0;
                foreach (RebarGeometry item in BR1GeometryList)
                {
                    BR1RealDiameter = item.Diameter;
                }

                //
                //TR1 (Top Rebar 1st Layer)
                //
                //list needed for the spacings list
                var TR1Spacing     = DistanceList.Parse(_TR1Spacing);
                var TR1SpacingList = TR1Spacing.Select(d => d.Value).ToList();

                //Define spacing type
                var TR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;

                switch (_TR1SpacingType)
                {
                case 0:
                    TR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
                    break;

                case 1:
                    TR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_NUMBER;
                    break;

                case 2:
                    TR1SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_SPACINGS;
                    break;
                }

                //create rebar instance top rebar 1(TR1)
                RebarGroup TR1 = new RebarGroup()
                {
                    Father     = inputFooting,
                    StartPoint = leftBottomEnd,
                    EndPoint   = leftTopEnd,
                    Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                leftBottomStart, leftBottomEnd, rightBottomEnd, rightBottomStart
                            }
                        }
                    },
                    Size         = _TR1Diameter,
                    RadiusValues = new ArrayList {
                        _TR1Radius
                    },
                    Grade           = _TR1Grade,
                    StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL,
                    Name            = "bovenwapening",
                    Class           = 2,
                    NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    },
                    StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    StartPointOffsetValue = _CoverBottom,
                    EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    EndPointOffsetValue   = _CoverBottom,
                    OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverTop, _CoverSide
                    },
                    StartFromPlaneOffset = _CoverSide,
                    EndFromPlaneOffset   = _CoverSide,
                    SpacingType          = TR1SpacingType,
                    Spacings             = new ArrayList(TR1SpacingList),
                    ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE
                };

                TR1.Insert();

                ArrayList TR1GeometryList = new ArrayList(TR1.GetRebarGeometries(false));
                double    TR1RealDiameter = 0.0;
                foreach (RebarGeometry item in TR1GeometryList)
                {
                    TR1RealDiameter = item.Diameter;
                }

                //
                //BR2 (Bottom Rebar 2nd Layer)
                //
                //list needed for the spacings list
                var BR2Spacing     = DistanceList.Parse(_BR2Spacing);
                var BR2SpacingList = BR2Spacing.Select(d => d.Value).ToList();

                //Define spacing type
                var BR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;

                switch (_BR2SpacingType)
                {
                case 0:
                    BR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
                    break;

                case 1:
                    BR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_NUMBER;
                    break;

                case 2:
                    BR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_SPACINGS;
                    break;
                }

                //create rebar instance bottom rebar 2(BR2)
                RebarGroup BR2 = new RebarGroup()
                {
                    Father     = inputFooting,
                    StartPoint = leftBottomStart,
                    EndPoint   = rightBottomStart,
                    Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                leftBottomEnd, leftBottomStart, leftTopStart, leftTopEnd
                            }
                        }
                    },
                    Size         = _BR2Diameter,
                    RadiusValues = new ArrayList {
                        _BR2Radius
                    },
                    Grade           = _BR2Grade,
                    StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL,
                    Name            = "onderwapening",
                    Class           = 11,
                    NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    },
                    StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    StartPointOffsetValue = _CoverTop,
                    EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    EndPointOffsetValue   = _CoverTop,
                    OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverBottom, _CoverSide
                    },
                    StartFromPlaneOffset = _CoverSide,
                    EndFromPlaneOffset   = _CoverSide,
                    SpacingType          = BR2SpacingType,
                    Spacings             = new ArrayList(BR2SpacingList),
                    ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE
                };

                BR2.Insert();

                ArrayList BR2GeometryList = new ArrayList(BR2.GetRebarGeometries(false));
                double    BR2RealDiameter = 0.0;
                foreach (RebarGeometry item in BR2GeometryList)
                {
                    BR2RealDiameter = item.Diameter;
                }

                //
                //TR2 (Top Rebar 2nd Layer)
                //
                //list needed for the spacings list
                var TR2Spacing     = DistanceList.Parse(_TR2Spacing);
                var TR2SpacingList = TR2Spacing.Select(d => d.Value).ToList();

                //Define spacing type
                var TR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;

                switch (_TR2SpacingType)
                {
                case 0:
                    TR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
                    break;

                case 1:
                    TR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_NUMBER;
                    break;

                case 2:
                    TR2SpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_SPACINGS;
                    break;
                }

                //create rebar instance top rebar 2(TR2)
                RebarGroup TR2 = new RebarGroup()
                {
                    Father     = inputFooting,
                    StartPoint = leftBottomEnd,
                    EndPoint   = rightBottomEnd,
                    Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                leftBottomStart, leftBottomEnd, leftTopEnd, leftTopStart
                            }
                        }
                    },
                    Size         = _TR2Diameter,
                    RadiusValues = new ArrayList {
                        _TR2Radius
                    },
                    Grade           = _TR2Grade,
                    StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL,
                    Name            = "bovenwapening",
                    Class           = 13,
                    NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    },
                    StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    },
                    StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    StartPointOffsetValue = _CoverBottom,
                    EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS,
                    EndPointOffsetValue   = _CoverBottom,
                    OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverTop, _CoverSide
                    },
                    StartFromPlaneOffset = _CoverSide,
                    EndFromPlaneOffset   = _CoverSide,
                    SpacingType          = TR2SpacingType,
                    Spacings             = new ArrayList(TR2SpacingList),
                    ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE
                };

                TR2.Insert();

                ArrayList TR2GeometryList = new ArrayList(TR2.GetRebarGeometries(false));
                double    TR2RealDiameter = 0.0;
                foreach (RebarGeometry item in TR2GeometryList)
                {
                    TR2RealDiameter = item.Diameter;
                }

                //if (_FlipBR == true)
                //{
                //    BR1 = BR2;
                //    BR2 = BR1;
                //}

                ////Determine the distance between the upper and bottom max bend radiusses
                //var footingHeight = inputFooting.getDouble("LENGTH");
                //var distance = footingHeight - _CoverTop - Math.Max(TR1RealDiameter, TR2RealDiameter) - Math.Max(_TR1Radius, _TR2Radius) -
                //    Math.Max(_BR1Radius, _BR2Radius) - Math.Max(BR1RealDiameter, BR2RealDiameter) - _CoverBottom;

                //define needed variables
                double     SR1RealDiameter = 0.0;
                RebarGroup SR1             = new RebarGroup();
                RebarGroup SR2             = new RebarGroup();


                if (_SRYN == 0)
                {
                    //
                    //SR (Side rebar 1st layer)
                    //
                    //list needed for the spacings list
                    var SRSpacing     = DistanceList.Parse(_SRSpacing);
                    var SRSpacingList = SRSpacing.Select(d => d.Value).ToList();

                    //Define spacing type
                    var SRSpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;

                    switch (_SRSpacingType)
                    {
                    case 0:
                        SRSpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
                        break;

                    case 1:
                        SRSpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_NUMBER;
                        break;

                    case 2:
                        SRSpacingType = BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_EXACT_SPACINGS;
                        break;
                    }

                    //Create rebar instance side rebar 1 (SR1)
                    SR1.Father     = inputFooting;
                    SR1.StartPoint = leftBottomStart;
                    SR1.EndPoint   = leftBottomEnd;
                    SR1.Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                leftHalfStart, leftBottomStart, leftTopStart, rightHalfStart
                            }
                        }
                    };
                    SR1.Size         = _SRDiameter;
                    SR1.RadiusValues = new ArrayList {
                        _SRRadius
                    };
                    SR1.Grade           = _SRGrade;
                    SR1.StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL;
                    SR1.Name            = "flank";
                    SR1.Class           = 6;
                    SR1.NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    };
                    SR1.StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    };
                    SR1.EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    };
                    SR1.StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
                    SR1.StartPointOffsetValue = -0.5 * Overlappingsberekening.Overlappingslengte(Convert.ToInt32(_SRDiameter), material, true);
                    SR1.EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
                    SR1.EndPointOffsetValue   = -0.5 * Overlappingsberekening.Overlappingslengte(Convert.ToInt32(_SRDiameter), material, true);
                    SR1.OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverSide, _CoverSide
                    };
                    SR1.StartFromPlaneOffset = _CoverBottom;
                    SR1.EndFromPlaneOffset   = _CoverTop;
                    SR1.SpacingType          = SRSpacingType;
                    SR1.Spacings             = new ArrayList(SRSpacingList);
                    SR1.ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE;

                    SR1.Insert();

                    ArrayList SRGeometryList = new ArrayList(SR1.GetRebarGeometries(false));
                    foreach (RebarGeometry item in SRGeometryList)
                    {
                        SR1RealDiameter = item.Diameter;
                    }

                    //Create rebar instance side rebar 2 (SR2)
                    SR2.Father     = inputFooting;
                    SR2.StartPoint = leftBottomStart;
                    SR2.EndPoint   = leftBottomEnd;
                    SR2.Polygons   = new ArrayList
                    {
                        new Polygon
                        {
                            Points = new ArrayList {
                                rightHalfStart, rightTopStart, rightBottomStart, leftHalfStart
                            }
                        }
                    };
                    SR2.Size         = _SRDiameter;
                    SR2.RadiusValues = new ArrayList {
                        _SRRadius
                    };
                    SR2.Grade           = _SRGrade;
                    SR2.StirrupType     = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL;
                    SR2.Name            = "flank";
                    SR2.Class           = 6;
                    SR2.NumberingSeries = new NumberingSeries {
                        Prefix = "R", StartNumber = 1
                    };
                    SR2.StartHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    };
                    SR2.EndHook = new RebarHookData
                    {
                        Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK
                    };
                    SR2.StartPointOffsetType  = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
                    SR2.StartPointOffsetValue = -0.5 * Overlappingsberekening.Overlappingslengte(Convert.ToInt32(_SRDiameter), material, true);
                    SR2.EndPointOffsetType    = Reinforcement.RebarOffsetTypeEnum.OFFSET_TYPE_COVER_THICKNESS;
                    SR2.EndPointOffsetValue   = -0.5 * Overlappingsberekening.Overlappingslengte(Convert.ToInt32(_SRDiameter), material, true);
                    SR2.OnPlaneOffsets        = new ArrayList {
                        _CoverSide, _CoverSide, _CoverSide
                    };
                    SR2.StartFromPlaneOffset = _CoverBottom;
                    SR2.EndFromPlaneOffset   = _CoverTop;
                    SR2.SpacingType          = SRSpacingType;
                    SR2.Spacings             = new ArrayList(SRSpacingList);
                    SR2.ExcludeType          = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE;

                    SR2.Insert();
                }



                //
                //Modify rebars
                //
                //Modify BR1
                BR1.StartPointOffsetValue = _CoverTop + _TR1Radius + TR1RealDiameter;
                BR1.EndPointOffsetValue   = _CoverTop + _TR1Radius + TR1RealDiameter;

                if (_TR2Radius > _BR2Radius)
                {
                    BR1.StartFromPlaneOffset = _CoverSide + TR2RealDiameter + _TR2Radius + TR1RealDiameter + SR1RealDiameter;
                }
                else
                {
                    BR1.StartFromPlaneOffset = _CoverSide + BR2RealDiameter + _BR2Radius + TR1RealDiameter + SR1RealDiameter;
                }

                if (_TR2Radius > _BR2Radius)
                {
                    BR1.EndFromPlaneOffset = _CoverSide + TR2RealDiameter + _TR2Radius + SR1RealDiameter;
                }
                else
                {
                    BR1.EndFromPlaneOffset = _CoverSide + BR2RealDiameter + _BR2Radius + SR1RealDiameter;
                }

                BR1.OnPlaneOffsets = new ArrayList {
                    _CoverSide + SR1RealDiameter, _CoverBottom, _CoverSide + SR1RealDiameter
                };

                //Modify TR1
                TR1.StartPointOffsetValue = _CoverBottom + _BR1Radius + BR1RealDiameter;
                TR1.EndPointOffsetValue   = _CoverBottom + _BR1Radius + BR1RealDiameter;

                if (_TR2Radius > _BR2Radius)
                {
                    TR1.StartFromPlaneOffset = _CoverSide + TR2RealDiameter + _TR2Radius + SR1RealDiameter;
                }
                else
                {
                    TR1.StartFromPlaneOffset = _CoverSide + BR2RealDiameter + _BR2Radius + SR1RealDiameter;
                }

                if (_TR2Radius > _BR2Radius)
                {
                    TR1.EndFromPlaneOffset = _CoverSide + TR2RealDiameter + _TR2Radius + BR1RealDiameter + SR1RealDiameter;
                }
                else
                {
                    TR1.EndFromPlaneOffset = _CoverSide + BR2RealDiameter + _BR2Radius + BR1RealDiameter + SR1RealDiameter;
                }

                TR1.OnPlaneOffsets = new ArrayList {
                    _CoverSide + SR1RealDiameter, _CoverTop, _CoverSide + SR1RealDiameter
                };

                //Modify BR2
                BR2.StartPointOffsetValue = _CoverTop + TR1RealDiameter + TR2RealDiameter + _TR2Radius;
                BR2.EndPointOffsetValue   = _CoverTop + TR1RealDiameter + TR2RealDiameter + _TR2Radius;

                if (_TR1Radius > _BR1Radius)
                {
                    BR2.StartFromPlaneOffset = _CoverSide + TR1RealDiameter + _TR1Radius - BR2RealDiameter * 0.5 + SR1RealDiameter;
                }
                else
                {
                    BR2.StartFromPlaneOffset = _CoverSide + BR1RealDiameter + _BR1Radius - BR2RealDiameter * 0.5 + SR1RealDiameter;
                }

                if (_TR1Radius > _BR1Radius)
                {
                    BR2.EndFromPlaneOffset = _CoverSide + TR1RealDiameter + _TR1Radius + TR2RealDiameter - TR2RealDiameter * 0.5 + SR1RealDiameter;
                }
                else
                {
                    BR2.EndFromPlaneOffset = _CoverSide + BR1RealDiameter + _BR1Radius + TR2RealDiameter - TR2RealDiameter * 0.5 + SR1RealDiameter;
                }

                BR2.OnPlaneOffsets = new ArrayList {
                    _CoverSide + SR1RealDiameter, _CoverBottom + BR1RealDiameter, _CoverSide + SR1RealDiameter
                };

                //Modify TR2
                TR2.StartPointOffsetValue = _CoverBottom + BR1RealDiameter + BR2RealDiameter + _BR2Radius;
                TR2.EndPointOffsetValue   = _CoverBottom + BR1RealDiameter + BR2RealDiameter + _BR2Radius;

                if (_TR1Radius > _BR1Radius)
                {
                    TR2.StartFromPlaneOffset = _CoverSide + TR1RealDiameter + _TR1Radius + BR2RealDiameter - BR2RealDiameter * 0.5 + SR1RealDiameter;
                }
                else
                {
                    TR2.StartFromPlaneOffset = _CoverSide + BR1RealDiameter + _BR1Radius + BR2RealDiameter - BR2RealDiameter * 0.5 + SR1RealDiameter;
                }

                if (_TR1Radius > _BR1Radius)
                {
                    TR2.EndFromPlaneOffset = _CoverSide + TR1RealDiameter + _TR1Radius - TR2RealDiameter * 0.5 + SR1RealDiameter;
                }
                else
                {
                    TR2.EndFromPlaneOffset = _CoverSide + BR1RealDiameter + _BR1Radius - TR2RealDiameter * 0.5 + SR1RealDiameter;
                }

                TR2.OnPlaneOffsets = new ArrayList {
                    _CoverSide + SR1RealDiameter, _CoverTop + TR1RealDiameter, _CoverSide + SR1RealDiameter
                };

                //Modify SR1
                SR1.StartFromPlaneOffset = _CoverBottom + _BR2Radius + BR1RealDiameter + SR1RealDiameter;
                SR1.EndFromPlaneOffset   = _CoverTop + _TR2Radius + TR1RealDiameter;

                //Modify SR2
                SR2.StartFromPlaneOffset = _CoverBottom + _BR2Radius + BR1RealDiameter;
                SR2.EndFromPlaneOffset   = _CoverTop + _TR2Radius + TR2RealDiameter + SR1RealDiameter;

                //
                //insert modifications
                //
                BR1.Modify();
                TR1.Modify();
                BR2.Modify();
                TR2.Modify();
                SR1.Modify();
                SR2.Modify();

                //Set the phase of the rebar
                var rebarGroupList = new List <RebarGroup>()
                {
                    BR1, TR1, BR2, TR2, SR1, SR2
                };
                foreach (RebarGroup item in rebarGroupList)
                {
                    item.SetPhase(new Phase(221));
                }
            }
            catch (Exception Exc)
            {
                MessageBox.Show(Exc.ToString());
            }

            return(true);
        }