예제 #1
0
        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);
        }
예제 #2
0
        private void PrintPar1(ksTextLineParam par2, ksTextItemParam par3, ksDynamicArray arr2)
        {
            string buf = string.Empty;

            buf = string.Format("style = {0}", par2.style);
            kompas.ksMessage(buf);

            int count = arr2.ksGetArrayCount();

            for (int j = 0; j < count; j++)
            {
                arr2.ksGetArrayItem(j, par3);
                ksTextItemFont font = (ksTextItemFont)par3.GetItemFont();
                if (font != null)
                {
                    buf = string.Format("j = {0}, h = {1:.#}, s = {2} \n fontName = {3}",
                                        j, font.height,
                                        par3.s, font.fontName);
                    kompas.ksMessage(buf);
                }
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        // Создать текст
        private void DrawText()
        {
            ksParagraphParam par  = (ksParagraphParam)kompas.GetParamStruct((short)StructType2DEnum.ko_ParagraphParam);
            ksTextParam      par1 = (ksTextParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextParam);
            ksTextLineParam  par2 = (ksTextLineParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
            ksTextItemParam  par3 = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);

            if ((par != null) && (par1 != null) && (par2 != null) && (par3 != null))
            {
                par1.Init();
                par2.Init();
                par3.Init();
                par.Init();
                par.x      = 30;
                par.y      = 30;
                par.height = 25;
                par.width  = 20;

                doc.ksParagraph(par);

                // 4 пример задания дроби и нижнего и верхнего отклонений
                ksTextItemParam itemParam = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);
                if (itemParam != null)
                {
                    itemParam.Init();

                    ksTextItemFont itemFont = (ksTextItemFont)itemParam.GetItemFont();
                    if (itemFont != null)
                    {
                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.NEW_LINE, true);
                        itemParam.s = "111";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.NUMERATOR, true);
                        itemFont.SetBitVectorValue(ldefin2d.ITALIC_ON, true);
                        itemParam.s = "55";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.DENOMINATOR, true);
                        itemParam.s = "77";
                        doc.ksTextLine(itemParam);

                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.END_FRACTION, true);
                        itemFont.SetBitVectorValue(ldefin2d.BOLD_OFF, true);
                        itemFont.SetBitVectorValue(ldefin2d.ITALIC_OFF, true);
                        itemParam.s = "4444";
                        doc.ksTextLine(itemParam);
                    }
                }

                reference p = doc.ksEndObj();

                // в параметрах текста задействованы два массива неопределенной длины :
                ksDynamicArray arr1 = (ksDynamicArray)par1.GetTextLineArr();                   // массив по строкам
                ksDynamicArray arr2 = (ksDynamicArray)par2.GetTextItemArr();                   // массив по компонентам строки
                if ((arr1 != null) && (arr2 != null))
                {
                    // возьмем параметры 1 -ой строки ( индекс 0 )
                    doc.ksGetObjParam(p, par2, 0);

                    PrintPar1(par2, par3, arr2);
                    kompas.ksMessageBoxResult();

                    if (kompas.ksYesNo("Изменять параметры текста ?") == 1)
                    {
                        // у первой строки отключаем ITALIC и BOLD и меняем цвет
                        arr2.ksGetArrayItem(0, par3);
                        ksTextItemFont font = (ksTextItemFont)par3.GetItemFont();
                        if (font != null)
                        {
                            font.SetBitVectorValue(ldefin2d.BOLD_OFF, true);
                            font.SetBitVectorValue(ldefin2d.ITALIC_OFF, true);
                            int clr = Color.FromArgb(0, 0, 255, 0).ToArgb();
                            font.color = clr;
                            arr2.ksSetArrayItem(0, par3);
                            // заменим у текста первую строку
                            doc.ksSetObjParam(p, par2, 0);
                            // возьмем параметры 1 -ой строки ( индекс 0 )  для проверки
                            doc.ksGetObjParam(p, par2, 0);
                            PrintPar1(par2, par3, arr2);
                        }
                    }
                }
            }
        }