Помогите с ksTest и размером

Автор leshijXxX, 21.07.23, 13:40:17

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

leshijXxX

Помогите разобраться с построением текста. Суть такая что когда я создаю линейный размер со своим шрифтом и размером, текст в размере до, после и под номиналом мне нужен, он строится нормально. Но если добавить после построения размера построение текста ksText, то он текст не строится и возвращает 0. Если из размера убрать текст под размерной надписью, то ksText отрабатывает как надо.

                        ksLDimParam lDim = (ksLDimParam)kompas.GetParamStruct((short)StructType2DEnum.ko_LDimParam);                   
                        ksDimTextParam tPar = (ksDimTextParam)lDim.GetTPar();                       
                        ksLDimSourceParam sPar = (ksLDimSourceParam)lDim.GetSPar();                   
                        ksDimDrawingParam dPar = (ksDimDrawingParam)lDim.GetDPar();
                       
                        dPar.Init();
                        dPar.textPos = 0;
                        dPar.textBase = 0;
                        dPar.pt1 = 1;
                        dPar.pt2 = 1;
                        dPar.lenght = 0;
                       
                        sPar.Init();
                        sPar.x1 = 10;
                        sPar.y1 = 20;
                        sPar.x2 = 50;
                        sPar.y2 = 40;
                        sPar.dx = 10;
                        sPar.dy = 10;
                        sPar.ps = 0;
                                               
                        tPar.Init(true);
                        tPar.sign = 0;
                        tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, false);     //определение номинального значения
                        tPar.SetBitFlagValue(ldefin2d._RECTTEXT, false);        //текст в рамке
                        tPar.SetBitFlagValue(ldefin2d._PREFIX, true);           //текст до номинального значения
                        tPar.SetBitFlagValue(ldefin2d._NOMINALOFF, false);      //нет номинала
                        tPar.SetBitFlagValue(ldefin2d._TOLERANCE, false);       //квалитет
                        tPar.SetBitFlagValue(ldefin2d._DEVIATION, false);       //отклонения
                        tPar.SetBitFlagValue(ldefin2d._UNIT, false);            //единица измерения
                        tPar.SetBitFlagValue(ldefin2d._SUFFIX, true);           //текст после номинального значения
                        tPar.SetBitFlagValue(ldefin2d._UNDER_LINE, false);      //размер с подчеркиванием
                        tPar.SetBitFlagValue(ldefin2d._BRACKETS, false);        //размер в скобках
                        tPar.SetBitFlagValue(ldefin2d._SQUARE_BRACKETS, false); //размер в квадратных скобках, используется вместе с _BRACKETS

                        ksDynamicArray arrItemText = (ksDynamicArray)kompas.GetDynamicArray(ldefin2d.TEXT_ITEM_ARR);
                        arrItemText.ksClearArray();
                        ksDynamicArray arrLineText = (ksDynamicArray)kompas.GetDynamicArray(ldefin2d.TEXT_LINE_ARR);
                        arrLineText.ksClearArray();

                        ksTextLineParam lineParam = (ksTextLineParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
                        lineParam.Init();
                        lineParam.style = 3;
                        ksTextItemParam itemParam = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);
                        itemParam.Init();
                        ksTextItemFont itemFont = (ksTextItemFont)itemParam.GetItemFont();
                        itemFont.Init();
                        itemFont.SetBitVectorValue(ldefin2d.NEW_LINE, true);
                        itemFont.height = linDimension.LDimParam.HStr;
                        itemFont.fontName = linDimension.LDimParam.FontName;

                        itemParam.s = "до";
                        arrItemText.ksAddArrayItem(-1, itemParam);
                        lineParam.SetTextItemArr(arrItemText);
                        arrLineText.ksAddArrayItem(-1, lineParam);
                        lineParam.Init();

                        itemParam.s = "номинал";
                        arrItemText.ksAddArrayItem(-1, itemParam);
                        lineParam.SetTextItemArr(arrItemText);
                        arrLineText.ksAddArrayItem(-1, lineParam);
                        lineParam.Init();

                        itemParam.s = "после";
                        arrItemText.ksAddArrayItem(-1, itemParam);
                        lineParam.SetTextItemArr(arrItemText);
                        arrLineText.ksAddArrayItem(-1, lineParam);
                        lineParam.Init();

                        itemParam.s = "под";
                        arrItemText.ksAddArrayItem(-1, itemParam);
                        lineParam.SetTextItemArr(arrItemText);
                        arrLineText.ksAddArrayItem(-1, lineParam);

                        tPar.SetTextArr(arrLineText);
                        //Построение размера
                        int dimension = idoc.ksLinDimension(lDim);

                        idoc.ksText(-100, -100, 14, 20, 1.0, 0, "Text");

Если в размер добавлять строки черезksChar255 str = (ksChar255)kompas.GetParamStruct((short)StructType2DEnum.ko_Char255);, то размер и текст строятся как положено, но нет возможности изменить шрифт размера. Может я что то упускаю из примеров SDK, никак не могу понять.