Esempio n. 1
0
        private void btn_action_Click(object sender, EventArgs e)
        {
            // kết nối với model đang hiện hành.
            tsm.Model model = new tsm.Model();
            if (!model.GetConnectionStatus())
            {
                MessageBox.Show("Tekla is not connected!! @@");
                return;
            }
            // kiểm tra xem đã kết nối được với model chưa.
            //--------------------------------
            // Nhặt 2 đối tượng Rebar group
            tsm.RebarGroup rebargroup0 = null;
            tsm.RebarGroup rebargroup1 = null;
            // Khởi tạo picker
            mui.Picker picker = new mui.Picker();
            string     mess   = "";

            while (rebargroup0 == null & rebargroup1 == null)
            {
                try
                {
                    tsm.ModelObject obj0 = picker.PickObject(mui.Picker.PickObjectEnum.PICK_ONE_OBJECT, mess + "pick a group Rebar 0");
                    if (obj0 as tsm.RebarGroup != null)
                    {
                        rebargroup0 = obj0 as tsm.RebarGroup;
                        mess        = "";
                    }
                    else
                    {
                        mess = "Object is not a Rebar group. ";
                    }
                    tsm.ModelObject obj1 = picker.PickObject(mui.Picker.PickObjectEnum.PICK_ONE_OBJECT, mess + "pick a group Rebar 1");
                    if (obj1 as tsm.RebarGroup != null)
                    {
                        rebargroup1 = obj1 as tsm.RebarGroup;
                        mess        = "";
                    }
                    else
                    {
                        mess = "Object is not a Rebar group. ";
                    }
                }
                catch
                {
                    Operation.DisplayPrompt("not select");
                    return;
                }
            }
        }
Esempio n. 2
0
        public override bool checkModelObjects(_Mark other)
        {
            TSM.RebarGroup part1 = _part as TSM.RebarGroup;
            TSM.RebarGroup part2 = other._part as TSM.RebarGroup;

            T3D.Point p1start = __GeometryOperations.factor1Point(part1.StartPoint, _view as TSD.View);
            T3D.Point p1end   = __GeometryOperations.factor1Point(part1.EndPoint, _view as TSD.View);
            T3D.Point p2start = __GeometryOperations.factor1Point(part2.StartPoint, other._view as TSD.View);
            T3D.Point p2end   = __GeometryOperations.factor1Point(part2.EndPoint, other._view as TSD.View);

            if (!__GeometryOperations.compare2Points(p1start, p2start))
            {
                return(false);
            }
            if (!__GeometryOperations.compare2Points(p1end, p2end))
            {
                return(false);
            }

            ArrayList polygon1 = part1.Polygons;
            ArrayList polygon2 = part2.Polygons;

            if (polygon1.Count != polygon2.Count)
            {
                return(false);
            }

            for (int i = 0; i < polygon1.Count; i++)
            {
                TSM.Polygon poly1 = polygon1[i] as TSM.Polygon;
                TSM.Polygon poly2 = polygon2[i] as TSM.Polygon;

                ArrayList points1 = poly1.Points;
                ArrayList points2 = poly2.Points;

                ArrayList transformed1 = __GeometryOperations.factorPointArray(points1, _view as TSD.View);
                ArrayList transformed2 = __GeometryOperations.factorPointArray(points2, other._view as TSD.View);

                if (!__GeometryOperations.comparePointArray(transformed1, transformed2))
                {
                    return(false);
                }
            }

            return(true);
        }
        static private void ungroupRebar(TSM.RebarGroup current)
        {
            ArrayList currentPolygons = current.GetRebarGeometries(true);

            foreach (TSM.RebarGeometry geo in currentPolygons)
            {
                TSM.Polygon poly   = new TSM.Polygon();
                PolyLine    line   = geo.Shape;
                ArrayList   points = line.Points;

                poly.Points = points;

                SingleRebar single = new SingleRebar();
                single.Polygon = poly;
                single.Father  = current.Father;

                single.Name = current.Name;

                single.Class        = current.Class;
                single.Size         = current.Size;
                single.Grade        = current.Grade;
                single.RadiusValues = current.RadiusValues;

                single.NumberingSeries.StartNumber = current.NumberingSeries.StartNumber;
                single.NumberingSeries.Prefix      = current.NumberingSeries.Prefix;

                single.OnPlaneOffsets = new ArrayList();
                single.OnPlaneOffsets.Add(0.0);
                single.StartHook.Angle  = -90;
                single.StartHook.Length = 10;
                single.StartHook.Radius = 10;
                single.StartHook.Shape  = RebarHookData.RebarHookShapeEnum.NO_HOOK;
                single.EndHook.Angle    = 90;
                single.EndHook.Length   = 10;
                single.EndHook.Radius   = 10;
                single.EndHook.Shape    = RebarHookData.RebarHookShapeEnum.NO_HOOK;

                single.Insert();
            }

            current.Delete();
            MessageBox.Show(currentPolygons.Count.ToString());
        }
Esempio n. 4
0
        public override bool Run(List <InputDefinition> Input)
        {
            try
            {
                GetvaluesFormDialog();
                var identifien1 = (Identifier)Input[0].GetInput();
                var identifien2 = (Identifier)Input[1].GetInput();
                var object1     = new tsm.Model().SelectModelObject(identifien1) as tsm.ModelObject;
                var object2     = new tsm.Model().SelectModelObject(identifien2) as tsm.ModelObject;
                //-------------------------------------------------------------------------
                tsm.RebarGroup rebargroup0 = null;
                tsm.RebarGroup rebargroup1 = null;
                while (rebargroup0 == null & rebargroup1 == null)
                {
                    try
                    {
                        tsm.ModelObject obj0 = object1;
                        if (obj0 as tsm.RebarGroup != null)
                        {
                            rebargroup0 = obj0 as tsm.RebarGroup;
                            r0          = Double.Parse(rebargroup0.Size);
                            sol0        = rebargroup0.GetSolid();
                            maxx0       = sol0.MaximumPoint.X;
                            maxy0       = sol0.MaximumPoint.Y;
                            maxz0       = sol0.MaximumPoint.Z;
                            minx0       = sol0.MinimumPoint.X;
                            miny0       = sol0.MinimumPoint.Y;
                            minz0       = sol0.MinimumPoint.Z;
                        }
                        tsm.ModelObject obj1 = object2;
                        if (obj1 as tsm.RebarGroup != null)
                        {
                            rebargroup1 = obj1 as tsm.RebarGroup;
                            r1          = Double.Parse(rebargroup1.Size);
                            onplan0     = Double.Parse(rebargroup1.OnPlaneOffsets[0].ToString());
                            sol1        = rebargroup1.GetSolid();
                            maxx1       = sol1.MaximumPoint.X;
                            maxy1       = sol1.MaximumPoint.Y;
                            maxz1       = sol1.MaximumPoint.Z;
                            minx1       = sol1.MinimumPoint.X;
                            miny1       = sol1.MinimumPoint.Y;
                            minz1       = sol1.MinimumPoint.Z;
                        }
                        if (r0 >= r1)
                        {
                            r = r1;
                        }
                        else
                        {
                            r = r0;
                        }
                        if (_Combo_Spacing == "Auto")
                        {
                            if (r == 12 || r == 14)
                            {
                                _Spacing = r + 2;
                            }
                            else if (r == 8 || r == 10 || r > 14 & r <= 12)
                            {
                                _Spacing = r + 3;
                            }
                            else if (r == 25)
                            {
                                _Spacing = r + 4;
                            }
                            else
                            {
                                _Spacing = r + 5;
                            }
                        }
                        //------------------------------------------------------------------
                        poly0.Points.Add(new g3d.Point(minx0, maxy0 - r / 2, maxz0 - r / 2));
                        poly0.Points.Add(new g3d.Point(maxx0 - _LapLenght * r - _CrankRatio * r - 50, maxy0 - r / 2, maxz0 - r / 2));
                        poly0.Points.Add(new g3d.Point(maxx0 - _LapLenght * r - 50, maxy0 - r / 2, maxz0 - r / 2 - _Spacing));
                        poly0.Points.Add(new g3d.Point(maxx0, maxy0 - r / 2, maxz0 - r / 2 - _Spacing));

                        poly1.Points.Add(new g3d.Point(maxx0 - _LapLenght * r, maxy1 - r / 2, maxz1 - r / 2));
                        poly1.Points.Add(new g3d.Point(maxx1, maxy1 - r / 2, maxz1 - r / 2));
                        //-------------------------------------------------------------------
                        //end tạo điểm polygon
                        rebargroup0.Polygons.Clear();
                        rebargroup0.Polygons.Add(poly0);
                        rebargroup0.OnPlaneOffsets.Clear();
                        rebargroup0.OnPlaneOffsets.Add(0.0);

                        rebargroup0.Modify();

                        rebargroup1.Polygons.Clear();
                        rebargroup1.Polygons.Add(poly1);
                        rebargroup1.OnPlaneOffsets.Clear();
                        rebargroup1.OnPlaneOffsets.Add(0.0);
                        rebargroup1.Modify();
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(true);
        }
Esempio n. 5
0
        //InterSectionTest 3
        private void button4_Click(object sender, EventArgs e)
        {
            //부재 선택
            Picker picker = new Picker();

            TSM.Part part             = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "철근형태를 수정할 부재를 선택하세요.") as TSM.Part;
            TSM.Part intersectingpart = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "간섭하는 부재를 선택하세요.") as TSM.Part;

            //Intersection 처리
            double partFrontLength    = 0.0;
            double intersectionLength = 0.0; //할당해야함

            TSG.OBB    iPartOBB    = CreateOrientedBoundingBox(intersectingpart);
            TSG.Vector partLVector = new TSG.Vector();

            if (part.GetType().Name == "Beam")
            {
                TSM.Beam        beam        = part as TSM.Beam;
                TSG.LineSegment lineSegment = new TSG.LineSegment(beam.StartPoint, beam.EndPoint);
                TSG.Point       firstPoint  = TSG.Intersection.LineSegmentToObb(lineSegment, iPartOBB).Point1;
                TSG.Point       secondPoint = TSG.Intersection.LineSegmentToObb(lineSegment, iPartOBB).Point2;

                partFrontLength    = TSG.Distance.PointToPoint(beam.StartPoint, firstPoint);
                intersectionLength = TSG.Distance.PointToPoint(firstPoint, secondPoint);
                partLVector        = new TSG.Vector(beam.EndPoint - beam.StartPoint).GetNormal();
            }
            else if (part.GetType().Name == "ContourPlate") //ContourPlate인 경우 추후 작성
            {
                TSM.ContourPlate contourPlate = part as TSM.ContourPlate;
            }

            //철근 그룹화 해제 후 singleRebar 저장
            ModelObjectEnumerator  reinforcement = part.GetReinforcements();
            List <TSM.SingleRebar> singleRebars  = new List <TSM.SingleRebar>();
            List <TSM.SingleRebar> group         = new List <TSM.SingleRebar>(); //그룹화를 위한 List

            int       rebarCount    = 0;                                         //총 단일철근 수량
            ArrayList rebarInterval = new ArrayList();                           //철근 간격 (싱글 타입일 때는 철근 간격을 어떻게 구하지? > 일단 PASS)

            while (reinforcement.MoveNext())
            {
                if (reinforcement.Current.GetType().Name == "SingleRebar") //부재에 속한 철근이 SingleRebar타입일 때
                {
                    TSM.SingleRebar singleRebar = reinforcement.Current as TSM.SingleRebar;
                    singleRebars.Add(singleRebar);

                    MessageBox.Show("SingleRebar 타입은 현재 지원 불가");
                }
                else //부재에 속한 철근이 RebarGroup타입일 때
                {
                    TSM.RebarGroup rebarGroup = reinforcement.Current as TSM.RebarGroup;
                    rebarInterval = rebarGroup.Spacings; //철근 간격 저장

                    TSM.ModelObjectEnumerator rebarEnumerator = TSM.Operations.Operation.Ungrouping(rebarGroup);
                    while (rebarEnumerator.MoveNext())
                    {
                        TSM.ModelObject rebar       = rebarEnumerator.Current;
                        TSM.SingleRebar singleRebar = rebar as TSM.SingleRebar;
                        singleRebars.Add(singleRebar);
                    }
                }
                rebarCount = singleRebars.Count; // 총 단일수량 저장
            }

            //철근 재배치
            for (int i = 0; i < singleRebars.Count - (intersectionLength / (double)rebarInterval[0]); i++) // 딱 안떨어지는 경우 고려해줘야함
            {
                double frontLength = (i * (double)rebarInterval[0]);

                if (frontLength >= partFrontLength)
                {
                    if (i == singleRebars.Count)
                    {
                        break;
                    }
                    else
                    {
                        for (int j = 0; j < singleRebars[i].Polygon.Points.Count; j++)
                        {
                            TSM.SingleRebar newSingleRebar = singleRebars[i];

                            TSG.Point intersectionLengthPoint = new TSG.Point(intersectionLength * partLVector.X, intersectionLength * partLVector.Y, intersectionLength * partLVector.Z);
                            newSingleRebar.Polygon.Points[j] = newSingleRebar.Polygon.Points[j] as TSG.Point + intersectionLengthPoint;
                            singleRebars[i].Delete();
                            newSingleRebar.Insert();

                            group.Add(newSingleRebar);
                        }
                    }
                }
                else
                {
                    group.Add(singleRebars[i]);
                }
            }

            for (int i = singleRebars.Count - (int)(intersectionLength / (double)rebarInterval[0]); i < singleRebars.Count; i++)
            {
                singleRebars[i].Delete();
            }

            TSM.RebarGroup newRebarGroup = TSM.Operations.Operation.Group(group);
        }
Esempio n. 6
0
        //InterSectionTest 2
        private void button1_Click_1(object sender, EventArgs e)
        {
            //부재 선택
            Picker picker = new Picker();

            TSM.ModelObject  part         = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "부재를 선택하세요.") as TSM.ModelObject;
            TSM.ContourPlate contourPlate = part as TSM.ContourPlate;
            Solid            solid        = contourPlate.GetSolid();

            //철근 정보 받기
            //철근 선택 및 그룹철근 분할
            ModelObjectEnumerator  reinforcement = contourPlate.GetReinforcements();
            List <TSM.SingleRebar> singleRebars  = new List <TSM.SingleRebar>();
            List <TSM.SingleRebar> group         = new List <TSM.SingleRebar>(); //수정안된 철근

            while (reinforcement.MoveNext())
            {
                if (reinforcement.Current.GetType().Name == "SingleRebar")
                {
                    TSM.SingleRebar singleRebar = reinforcement.Current as TSM.SingleRebar;
                    singleRebars.Add(singleRebar);
                }
                else
                {
                    TSM.RebarGroup rebarGroup = reinforcement.Current as TSM.RebarGroup;

                    TSM.ModelObjectEnumerator rebarEnumerator = TSM.Operations.Operation.Ungrouping(rebarGroup);
                    while (rebarEnumerator.MoveNext())
                    {
                        TSM.ModelObject rebar       = rebarEnumerator.Current;
                        TSM.SingleRebar singleRebar = rebar as TSM.SingleRebar;
                        singleRebars.Add(singleRebar);
                    }
                }
            }

            //Intersect (마구리와 철근 겹치는 부분을 철근의 새 포인트로 지정한다.)
            TSG.LineSegment rebarLineSegment     = null;
            ArrayList       intersectLinesegment = new ArrayList();

            for (int j = 0; j < singleRebars.Count; j++) //철근 선택 반복문
            {
                TSG.Point       point1         = singleRebars[j].Polygon.Points[0] as TSG.Point;
                TSG.Point       point2         = singleRebars[j].Polygon.Points[1] as TSG.Point;
                TSM.SingleRebar newSingleRebar = singleRebars[j];

                if (singleRebars[j].Polygon.Points.Count == 2) //직선철근일때
                {
                    rebarLineSegment = new TSG.LineSegment(point1, point2);
                }

                intersectLinesegment             = solid.Intersect(rebarLineSegment);
                newSingleRebar.Polygon.Points[0] = intersectLinesegment[0] as TSG.Point;
                newSingleRebar.Polygon.Points[1] = intersectLinesegment[1] as TSG.Point;

                singleRebars[j].Delete();

                newSingleRebar.Insert();

                if (newSingleRebar.Polygon.Points[0] as TSG.Point == point1 && newSingleRebar.Polygon.Points[1] as TSG.Point == point2)
                {
                    group.Add(newSingleRebar);
                }
            }
            TSM.RebarGroup nonmodifiedGroup = TSM.Operations.Operation.Group(group);
        }
Esempio n. 7
0
        //InterSectionTest 1
        private void button3_Click(object sender, EventArgs e)
        {
            //기본 객체 생성
            TSM.Part                girder       = null;
            TSM.Component           component    = new TSM.Component();
            TSM.Part                endPiece     = null;
            List <TSM.ContourPlate> endPieceList = new List <TSM.ContourPlate>();

            //1. 부재를 Input 으로 받는다.
            Picker picker = new Picker();

            TSM.ModelObject part = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "부재를 선택하세요.") as TSM.ModelObject;


            if (part.GetType().Name == "Beam") //선택한 거더가 단일객체일 경우
            {
                girder   = part as TSM.Beam;
                endPiece = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "부재를 선택하세요.") as TSM.ContourPlate; //연장할 마구리를 직접 선택

                //마구리 객체 OBB 생성 (추후 수정 - Girder 단일부재일 때도 마구리 1개이상 가능하므로)
                TSG.OBB         obb = CreateOrientedBoundingBox(endPiece); //마구리 OBB 객체 생성
                TSG.LineSegment rebarLineSegment = null;

                //철근 선택 및 그룹철근 분할
                ModelObjectEnumerator  reinforcement = girder.GetReinforcements();
                List <TSM.SingleRebar> singleRebars  = new List <TSM.SingleRebar>();
                List <TSM.SingleRebar> group1        = new List <TSM.SingleRebar>(); //수정된 철근
                List <TSM.SingleRebar> group2        = new List <TSM.SingleRebar>(); //수정안된 철근

                while (reinforcement.MoveNext())
                {
                    if (reinforcement.Current.GetType().Name == "SingleRebar") //부재 내 철근이 SingleRebar타입일때
                    {
                        TSM.SingleRebar singleRebar = reinforcement.Current as TSM.SingleRebar;
                        singleRebars.Add(singleRebar);
                    }
                    else //부재 내 철근이 rebarGroup타입일때
                    {
                        TSM.RebarGroup rebarGroup = reinforcement.Current as TSM.RebarGroup;

                        TSM.ModelObjectEnumerator rebarEnumerator = TSM.Operations.Operation.Ungrouping(rebarGroup);
                        while (rebarEnumerator.MoveNext())
                        {
                            TSM.ModelObject rebar       = rebarEnumerator.Current;
                            TSM.SingleRebar singleRebar = rebar as TSM.SingleRebar;
                            singleRebars.Add(singleRebar);
                        }
                    }
                }

                for (int j = 0; j < singleRebars.Count; j++) //철근 선택 반복문
                {
                    TSG.Point       rebarStartPoint = singleRebars[j].Polygon.Points[0] as TSG.Point;
                    TSG.Point       rebarEndPoint   = singleRebars[j].Polygon.Points[1] as TSG.Point;
                    TSM.SingleRebar newSingleRebar  = singleRebars[j]; //기존 철근을 삭제하고 형태가 변형된 새 철근 삽입

                    if (singleRebars[j].Polygon.Points.Count == 2)     //직선철근일때
                    {
                        rebarLineSegment = new TSG.LineSegment(rebarStartPoint, rebarEndPoint);
                    }

                    TSG.LineSegment intersectLine = TSG.Intersection.LineSegmentToObb(rebarLineSegment, obb); //만나는 점이 하나일 때 output 형태 > 두 점이 같은지점으로 찍힘

                    if (intersectLine != null)                                                                // 철근과 마구리가 만날때 / 한 점만 만날때는 Linesegment의 point1 과 point2 가 같은 값임
                    {
                        //철근 선을 연장
                        rebarLineSegment = new TSG.LineSegment(rebarStartPoint, rebarEndPoint + new TSG.Point(0, 100000, 0)); //추후 수정( y방향이 아니라 철근의 진행방향으로)
                        intersectLine    = TSG.Intersection.LineSegmentToObb(rebarLineSegment, obb);

                        //마구리 가까운쪽이 철근 Point1 인경우
                        if (intersectLine.Point1.Equals(intersectLine.Point2))
                        {
                            rebarLineSegment = new TSG.LineSegment(rebarStartPoint + new TSG.Point(0, 100000, 0), rebarEndPoint);
                            intersectLine    = TSG.Intersection.LineSegmentToObb(rebarLineSegment, obb);

                            newSingleRebar.Polygon.Points[0] = intersectLine.Point2;
                        }
                        else //마구리 가까운쪽이 철근 Point2 인경우
                        {
                            newSingleRebar.Polygon.Points[1] = intersectLine.Point2;
                        }
                        singleRebars[j].Delete();
                        newSingleRebar.Insert();
                        group1.Add(newSingleRebar);
                    }
                    else
                    {
                        group2.Add(singleRebars[j]); //수정안된 철근들 그룹에 넣기
                    }

                    TSM.RebarGroup modifiedGroup    = TSM.Operations.Operation.Group(group1);
                    TSM.RebarGroup nonmodifiedGroup = TSM.Operations.Operation.Group(group2);
                }
            }
            else if (part.ToString() == "Tekla.Structures.Model.Component") //선택한 거더가 컴포넌트일 경우
            {
                component = part as TSM.Component;

                //반환된 Girder의 타입 결정
                TSM.Assembly assembly = component.GetAssembly();
                if (assembly.GetMainPart().GetType().Name == "Beam")
                {
                    girder = assembly.GetMainPart() as TSM.Beam;
                }
                else if (assembly.GetMainPart().GetType().Name == "ContourPlate")
                {
                    girder = assembly.GetMainPart() as TSM.ContourPlate;
                }

                // Input으로 받은 부재에 연결되어있는 마구리와 철근정보를 받아온다.
                //반환된 Secondaries의 타입 결정

                endPieceList = new List <TSM.ContourPlate>();

                for (int i = 0; i < assembly.GetSecondaries().Count; i++)
                {
                    TSM.Part secondary = assembly.GetSecondaries()[i] as TSM.Part;

                    if (secondary.Name == "EndPiece")
                    {
                        endPieceList.Add(secondary as TSM.ContourPlate);
                    }
                }
            }
        }
Esempio n. 8
0
        private void btn_createRebar_Click(object sender, EventArgs e)
        {
            //철근 정보가 저장된 reabarInfo 클래스, 해당 클래스에는 반경 정보를 비롯한 철근의 정보들이 저장되어있어야함
            //RebarInfo rebarInfo = new RebarInfo();
            TSM.RebarGroup rebarGroup = new TSM.RebarGroup();

            Picker picker = new Picker();

            //부재선택
            TSM.Beam fatherObject = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "철근을 삽입할 부재를 선택하세요.") as TSM.Beam;
            //철근 형태를 결정할 Point 선택
            ArrayList shapePoints = picker.PickPoints(Picker.PickPointEnum.PICK_POLYGON, "철근 형태를 결정할 포인트를 선택하세요.");

            //철근 생성 위치를 결정할 Point 선택
            //ArrayList locationPoints = picker.PickPoints(Picker.PickPointEnum.PICK_POLYGON, "철근 생성 위치를 결정할 포인트를 선택하세요.");

            TSM.Polygon polygon = new TSM.Polygon();
            for (int i = 0; i < shapePoints.Count; i++)
            {
                polygon.Points.Add(shapePoints[i] as TSG.Point);
            }

            rebarGroup.Polygons.Add(polygon);

            //StartPoint와 EndPoint 중간에 또 값이 들어갈 수도 있는데 철근 생성위치 결정에서의 Polygon 대입을 어떻게 하는지 확인해봐야함
            rebarGroup.Father = fatherObject;

            rebarGroup.StartPoint = new TSG.Point(500, 3500, 0);
            rebarGroup.EndPoint   = new TSG.Point(500, 3500, 5000);
            //rebarGroup.StartPoint = (TSG.Point)locationPoints[0];
            //rebarGroup.EndPoint = (TSG.Point)locationPoints[1];

            //철근 기본정보 (추후 rebarInfo에서 로드)
            rebarGroup.Name  = "MainRebar";
            rebarGroup.Size  = "13";
            rebarGroup.Grade = "SD400";
            rebarGroup.Class = 11;
            rebarGroup.RadiusValues.Add(60.00);
            //rebarGroup.NumberingSeries.Prefix = "GR";

            //갈고리 설정 (추후 Form 컨트롤에 연동)
            rebarGroup.StartHook.Shape = RebarHookData.RebarHookShapeEnum.NO_HOOK;
            rebarGroup.EndHook.Shape   = RebarHookData.RebarHookShapeEnum.NO_HOOK;

            //offset설정 (추후 Form 컨트롤에 연동)
            rebarGroup.OnPlaneOffsets.Add(0);
            rebarGroup.FromPlaneOffset       = 0;
            rebarGroup.StartPointOffsetValue = 0;
            rebarGroup.EndPointOffsetValue   = 0;

            //간격 배치방법 설정 (추후 Form 컨트롤에 연동)
            rebarGroup.SpacingType = TSM.BaseRebarGroup.RebarGroupSpacingTypeEnum.SPACING_TYPE_TARGET_SPACE;
            rebarGroup.Spacings.Add(0.0);
            rebarGroup.ExcludeType = BaseRebarGroup.ExcludeTypeEnum.EXCLUDE_TYPE_NONE;
            rebarGroup.StirrupType = RebarGroup.RebarGroupStirrupTypeEnum.STIRRUP_TYPE_POLYGONAL;


            bool result = false;

            result = rebarGroup.Insert();

            if (result == false)
            {
                MessageBox.Show("insert Failed");
            }
        }