• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

Автор 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: