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

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

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

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

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

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

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

Создание технические требования в 2D чертеже С#

Автор Semargl1990, 24.07.21, 16:13:26

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

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

Semargl1990

Добрый день! Подскажите как создать в 2D чертеже тех требование с нуля?
Вот мой код:
     [/code]
            //Технические требования
            // Получаем указатель на ТТ
            int TechDemRef = ksdoc2d.ksGetReferenceDocumentPart(1);
            //Получаем и указатель на структуру параметров ТТ и создаем ее
            ksTechnicalDemandParam ksdoc2DTechDemPar = kompas.GetParamStruct(78);
            ksdoc2DTechDemPar.Init();
            // Заполняем структуру параметров ТТ данными из текущего документа
            ksdoc2d.ksGetObjParam(TechDemRef, ksdoc2DTechDemPar, -1);

            ksdoc2d.ksOpenTechnicalDemand(0, 0);

            // Получаем указатель на структуру параметров текстовой строки в ТТ и создаем ее
            ksTextLineParam TxtLinePar = kompas.GetParamStruct(29);
           
            ksdoc2d.ksGetObjParam(TechDemRef, TxtLinePar, 1000);

            // Получаем указатель на структуру параметров элемента строки в ТТ и создаем его
            ksTextItemParam TxtItemPar = kompas.GetParamStruct(31);
            TxtItemPar.Init();

            ksDynamicArray TxtArr = (ksDynamicArray)TxtLinePar.GetTextItemArr();
            TxtArr.ksGetArrayItem(1, TxtItemPar);
            kompas.ksMessage(TxtItemPar.s);
            TxtItemPar.s = "I love you";
            TxtArr.ksSetArrayItem(1, TxtItemPar);
            ksdoc2d.ksSetObjParam(TechDemRef, TxtLinePar, 1000);

            ksdoc2d.ksCloseTechnicalDemand();
В конце ничего не происходит, подскажите что делать?

Михаил88


    kompas_document = application.ActiveDocument
    value = '* Размеры для справок'
    iDrawingDocument = kompas_api7_module.IDrawingDocument(kompas_document)
    iTechnicalDemand = iDrawingDocument.TechnicalDemand
    iText = iTechnicalDemand.Text
    iTextLine = iText.Add()
    iTextLine.Align = kompas6_constants.ksAlignAllWidth
    iTextLine.IndentedLine = 0
    iTextLine.LeftEdge = 0
    iTextLine.Level = 0
    iTextLine.Numbering = 1
    iTextLine.RightEdge = 0
    iTextLine.StepAfterParagraph = 0
    iTextLine.StepBeforeParagraph = 0
    iTextLine.Step = 3
    iTextLine.Style = 2
    iTextItem = iTextLine.Add()
    iTextItem.ItemType = CONST2D7.constants.ksTItString
    iTextItem.NewLine = 4096
    iTextItem.Str = value
    iTextItem.SymbolFontName = ''
    iTextFont = kompas_api7_module.ITextFont(iTextItem)
    iTextFont.Bold = False
    iTextFont.Color = 0
    iTextFont.FontName = 'GOST type A'
    iTextFont.Height = 5
    iTextFont.Italic = True
    iTextFont.Underline = False
    iTextFont.WidthFactor = 1
    iTextItem.Update()
    iTechnicalDemand.Update()

Semargl1990

Михаил88 это пример кода из Питона?
Спасибо за код, немножко подкорректировал под С# и заработало.
      // Технические требования
            IApplication kompas7 = kompas.ksGetApplication7();
            IKompasDocument ksdoc2dAPI7 = kompas7.ActiveDocument;
            string value = "* Размеры для справок";
            IDrawingDocument iDrawDoc = (IDrawingDocument)ksdoc2dAPI7;
            ITechnicalDemand iTechDem = iDrawDoc.TechnicalDemand;
            IText iTxt = iTechDem.Text;
            ITextLine iTxtLine = iTxt.Add();
            ksAlignEnum ksAlignAllWidth = default(ksAlignEnum);
            iTxtLine.Align = ksAlignAllWidth;
            iTxtLine.IndentedLine = 0;
            iTxtLine.LeftEdge = 0;
            iTxtLine.Level = 0;
            ksTextNumberingEnum ksTNumbNumber = default(ksTextNumberingEnum);
            iTxtLine.Numbering = ksTNumbNumber;
            iTxtLine.RightEdge = 0;
            iTxtLine.StepAfterParagraph = 0;
            iTxtLine.StepBeforeParagraph = 0;
            iTxtLine.Step = 3;
            iTxtLine.Style = 2;
            ITextItem iTxtItem = iTxtLine.Add();
            ksTextItemEnum ksTItString = default(ksTextItemEnum);
            iTxtItem.ItemType = ksTItString;
            bool ksKompasConsumer = false;
            iTxtItem.NewLine = ksKompasConsumer;
            iTxtItem.Str = value;
            iTxtItem.SymbolFontName = "";
            ITextFont iTxtFont = (ITextFont) iTxtItem;
            iTxtFont.Bold = false;
            iTxtFont.Color = 0;
            iTxtFont.FontName = "GOST type A";
            iTxtFont.Height = 5;
            iTxtFont.Italic = true;
            iTxtFont.Underline = false;
            iTxtFont.WidthFactor = 1;
            iTxtItem.Update();
            iTechDem.Update();

Михаил88


Semargl1990

По коду выше получается вот так:
TechDemand1.PNG
Нужно вот так:
TechDemand2.PNG
Как добавить нумерацию и как добавить спецзнак плюс-минус и дробь?

Михаил88

#5
value = '@3$dIT14; 2$'
Таблица спецсимволов размещена в файле SDK\NumbSymb.frw

изображение_2021-08-01_210239.png

Можно здесь посмотреть
https://forum.ascon.ru/index.php?topic=23519.msg165572#msg165572
https://forum.ascon.ru/index.php?topic=26756.msg197663#msg197663

iTxtLine.Numbering = ksTNumbNumber
судя по этой строчке нумерация должна быть

Slaviation

ЦитироватьКак добавить нумерацию и как добавить спецзнак плюс-минус и дробь?
Добрый день.
Пример во вложении.