private bool liniya_s_obrivom(Stupica master, double multiply, ksDocument2D doc)
        {
            ksLBreakDimParam param = (ksLBreakDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_LBreakDimParam);

            if (param == null)
            {
                return(true);
            }

            ksBreakDimDrawing dPar = (ksBreakDimDrawing)param.GetDPar();
            ksLBreakDimSource sPar = (ksLBreakDimSource)param.GetSPar();
            ksDimTextParam    tPar = (ksDimTextParam)param.GetTPar();

            if (dPar == null || sPar == null || tPar == null)
            {
                return(true);
            }

            dPar.Init();
            dPar.textPos = 5;
            dPar.pl      = false;
            dPar.pt      = 1; //стрелка внутри
            dPar.angle   = 90;
            dPar.length  = 10;


            sPar.Init();
            //точка размер чего строим
            sPar.x1 = master.l - master.b1;
            sPar.y1 = -(master.d / 2);
            //точки размерной линии
            sPar.x2 = master.l + 15 / multiply;
            sPar.y2 = -(master.d / 2);
            sPar.x3 = master.l + 15 / multiply;
            sPar.y3 = 0;

            tPar.Init(false);
            tPar.bitFlag    = 0; //выводится только номинал
            tPar.style      = 3; //текст размерной надписи????
            tPar.stringFlag = false;
            tPar.sign       = 1; //diametr

            ksChar255      str     = (ksChar255)_kompas.GetParamStruct((short)StructType2DEnum.ko_Char255);
            ksDynamicArray arrText = (ksDynamicArray)tPar.GetTextArr();

            if (str == null || arrText == null)
            {
                return(true);
            }

            str.str = master.d.ToString();
            arrText.ksAddArrayItem(-1, str);

            int obj = doc.ksLinBreakDimension(param); //отрисовка

            return(false);
        }
        void LinRazm(ksDocument2D doc, double x1, double y1, double x2, double y2, short gde_strelka, double vect_x, double vect_y, int type_znaka, int smeschenie_texta = 0)
        {
            ksLDimParam param = (ksLDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_LDimParam);

            if (param == null)
            {
                return;
            }

            ksDimDrawingParam dPar = (ksDimDrawingParam)param.GetDPar();
            ksLDimSourceParam sPar = (ksLDimSourceParam)param.GetSPar();
            ksDimTextParam    tPar = (ksDimTextParam)param.GetTPar();

            if (dPar == null || sPar == null || tPar == null)
            {
                return;
            }

            dPar.Init();
            dPar.textPos  = smeschenie_texta;
            dPar.textBase = 10;
            dPar.pt1      = gde_strelka; //стрелка внутри
            dPar.pt2      = gde_strelka;
            dPar.ang      = 30;
            dPar.lenght   = 20;


            sPar.Init();
            sPar.basePoint = 1;
            sPar.ps        = 2;
            sPar.x1        = x1;
            sPar.y1        = y1;
            sPar.x2        = x2;
            sPar.y2        = y2;
            sPar.dx        = vect_x;
            sPar.dy        = vect_y;

            tPar.Init(false);
            tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, true);
            tPar.SetBitFlagValue(ldefin2d._PREFIX, true);
            tPar.SetBitFlagValue(ldefin2d._DEVIATION, true);
            tPar.SetBitFlagValue(ldefin2d._UNIT, true);
            tPar.SetBitFlagValue(ldefin2d._SUFFIX, true);
            tPar.sign = type_znaka;


            int obj = doc.ksLinDimension(param);    //отрисовка
        }
        private void set_rad_razm(Stupica master, ksDocument2D doc)
        {
            ksRDimParam     aDim     = (ksRDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_RDimParam);
            ksTextLineParam textLine = (ksTextLineParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
            ksTextItemParam textItem = (ksTextItemParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);


            textLine.Init();
            textItem.Init();

            ksDimTextParam     tPar = (ksDimTextParam)aDim.GetTPar();
            ksTextItemFont     font = (ksTextItemFont)textItem.GetItemFont();
            ksDynamicArray     arra = (ksDynamicArray)textLine.GetTextItemArr();
            ksRDimSourceParam  sPar = (ksRDimSourceParam)aDim.GetSPar();
            ksRDimDrawingParam dPar = (ksRDimDrawingParam)aDim.GetDPar();


            tPar.Init(true);
            tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, true);
            tPar.sign = 3; //знак радиуса


            font.Init();
            font.height   = 5;
            font.ksu      = 1;
            font.fontName = "GOST type A";
            font.SetBitVectorValue(ldefin2d.NEW_LINE, true);

            arra.ksAddArrayItem(-1, textItem);


            sPar.Init();
            sPar.xc  = (master.l1 + master.R1);
            sPar.yc  = (master.d1 / 2 + master.R1);
            sPar.rad = (master.R1);

            dPar.Init();
            dPar.textPos  = -15;
            dPar.pt1      = 1; //1 -стрелка изнутри 2-стрелка снаружи 0-нетс стрелки
            dPar.pt2      = 0;
            dPar.shelfDir = 1;
            dPar.ang      = 180 + 45;

            int obj = doc.ksRadDimension(aDim);
        }
        private void Diam_Razmer(double xc, double yc, double rad, int dlina_vinosnoi_linii, short tip_strelki,
                                 int napr_vinosnoi_linii, int angle_vinosnoi_linii, ksDocument2D doc)
        {
            ksRDimParam     aDim     = (ksRDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_RDimParam);
            ksTextLineParam textLine = (ksTextLineParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
            ksTextItemParam textItem = (ksTextItemParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);

            if (aDim == null || textLine == null || textItem == null)
            {
                return;
            }

            textLine.Init();
            textItem.Init();

            ksDimTextParam     tPar = (ksDimTextParam)aDim.GetTPar();
            ksTextItemFont     font = (ksTextItemFont)textItem.GetItemFont();
            ksDynamicArray     arra = (ksDynamicArray)textLine.GetTextItemArr();
            ksRDimSourceParam  sPar = (ksRDimSourceParam)aDim.GetSPar();
            ksRDimDrawingParam dPar = (ksRDimDrawingParam)aDim.GetDPar();

            if (tPar == null || font == null || sPar == null || dPar == null)
            {
                return;
            }

            tPar.Init(true);
            tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, true);
            tPar.sign = 1; //знак диаметра


            /*
             *      font.Init();
             *      font.height = 5;
             *      font.ksu = 1;
             *      font.fontName = "GOST type A";
             *      font.SetBitVectorValue(ldefin2d.NEW_LINE, true);
             */

            arra.ksAddArrayItem(-1, textItem);

            ksDynamicArray arr1 = (ksDynamicArray)tPar.GetTextArr();

            if (arr1 == null)
            {
                return;
            }
            arr1.ksAddArrayItem(-1, textLine);

            sPar.Init();
            sPar.xc  = xc;
            sPar.yc  = yc;
            sPar.rad = rad;

            dPar.Init();
            dPar.textPos  = dlina_vinosnoi_linii;
            dPar.pt1      = tip_strelki;
            dPar.pt2      = tip_strelki;
            dPar.shelfDir = napr_vinosnoi_linii;
            dPar.ang      = angle_vinosnoi_linii;

            int obj = doc.ksDiamDimension(aDim);
        }