Получить формат листа оформления

Автор lyret59, 28.04.21, 00:52:48

« назад - далее »

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

lyret59

Всем здравствуйте. Подскажите пожалуйста, кто знает, как получить формат листа оформления. Нужно для того, чтобы исходя из этого вставить фрагмент по координатам, например если формат А4, то одни координаты, если А1 то другие.
P. S. Начал изучать программирование буквально пару недель назад, SDK всё пересмотрел, но признаюсь новичку очень сложно там ориентироваться, возможно и упустил подобные примеры.

Дмитрий22

Добрый день!
Если через Api5, то так:
int ReturnXFormat(ksDocument2D doc2D1)
        {
            ksDocumentParam DocumentParam = (ksDocumentParam)kompas.GetParamStruct((short)StructType2DEnum.ko_DocumentParam);
            doc2D1.ksGetObjParam(doc2D1.reference, DocumentParam, ldefin2d.ALLPARAM);
            ksSheetPar sheet = (ksSheetPar)DocumentParam.GetLayoutParam();
            int xFormat = 0;
            if (sheet != null)
            {
                ksStandartSheet iStandartSheet = (ksStandartSheet)sheet.GetSheetParam();
                if (iStandartSheet != null)
                {
                    if (iStandartSheet.direct == true)
                    {
                        int[,] intArray = new int[5, 2] { { 1189, 841 }, { 841, 594 }, { 594, 420 }, { 420, 297 }, { 297, 210 } };
                        if (iStandartSheet.multiply == 1)
                            xFormat = intArray[(int)iStandartSheet.format, 0];
                        else
                            xFormat = intArray[(int)iStandartSheet.format, 0] * (iStandartSheet.multiply) * 210 / 297;
                    }
                    else
                    {
                        int[,] intArray = new int[5, 2] { { 841, 1189 }, { 594, 841 }, { 420, 594 }, { 297, 420 }, { 210, 297 } };
                        if (iStandartSheet.multiply == 1)
                            xFormat = intArray[(int)iStandartSheet.format, 0];
                        else
                            xFormat = intArray[(int)iStandartSheet.format, 0] * (iStandartSheet.multiply) * 297 / 210;
                    }
                }
            }
            return xFormat;
        }
Есть еще вариант через Api7 для многолистового документа:
double ReturnXFormatAPI7(ISheetFormat sh1)
        {
            double xFormat = 0.0;
            if (sh1 != null)
            {
                if (sh1.VerticalOrientation == false)
                {
                    int[,] intArray = new int[5, 2] { { 1189, 841 }, { 841, 594 }, { 594, 420 }, { 420, 297 }, { 297, 210 } };
                    if (sh1.FormatMultiplicity == 1)
                        xFormat = intArray[(int)sh1.Format, 0];
                    else
                        xFormat = intArray[(int)sh1.Format, 0] * (sh1.FormatMultiplicity) * 210 / 297;
                }
                else
                {
                    int[,] intArray = new int[5, 2] { { 841, 1189 }, { 594, 841 }, { 420, 594 }, { 297, 420 }, { 210, 297 } };
                    if (sh1.FormatMultiplicity == 1)
                        xFormat = intArray[(int)sh1.Format, 0];
                    else
                        xFormat = intArray[(int)sh1.Format, 0] * (sh1.FormatMultiplicity) * 297 / 210;
                }
            }
            return xFormat;
        }

lyret59

Дмитрий22, огромное спасибо! Мне кажется, что после того как я осознал суть Вашего кода, моё мышление в программировании немного изменилось в лучшую сторону! :sun: