Работа с API КОМПАС-3D → Урок 2 → Оформление чертежа

  • Tutorial


И снова про API САПР КОМПАС. Новая статья Сергея Норсеева, инженера-программиста АО «ВНИИ «Сигнал», автора книги «Разработка приложений под КОМПАС в Delphi». Первую статью можно прочесть здесь.

Для оформления чертежа используется несколько интерфейсов, среди них:

  • ksSheetPar – задает основные параметры оформления, такие как: используемая библиотека оформлений и конкретное оформление из этой библиотеки;
  • ksStandartSheet – задает параметры стандартного листа. Он определяет размер листа, ориентацию основной надписи и кратность;
  • ksSheetSize – задает параметры нестандартного листа (его размеры).
    В данной статье мы рассмотрим вопрос создания чертежей как на стандартных, так и на нестандартных листах.

Основные параметры оформления


Указатель на интерфейс ksSheetPar возвращается методом GetLayoutParam() интерфейса ksDocumentParam, описывающего параметры документа.

Интерфейса ksSheetPar имеет два свойства:

  • layoutName – имя библиотеки оформлений. Обычно, это библиотека «graphic.lyt», хранящаяся в подкаталоге «Sys» каталога КОМПАС;
  • shtType – тип штампа (основной надписи) из указанной библиотеки оформления.

Для того чтобы понять назначение этих свойств, откройте (или создайте новый) чертеж в КОМПАС. Раскройте список «Листы» в дереве чертежа. Откроется строка со свойствами листа документа.


Дерево документа (Картинка кликабельна)

В прошлых версиях вместо дерева использовался Менеджер документа
Для того чтобы понять назначение этих свойств, откройте (или создайте новый) чертеж в КОМПАС. Выберите пункт меню «Сервис/Менеджер документа». Перед вами появится окно менеджера документа.


Менеджер документа

Строка в колонке «Библиотека оформлений» – это наименование библиотеки, указываемой в поле «layoutName». Свойство shtType задает значение колонки «Оформление». Чтобы увидеть допустимые значения этого свойства для текущей библиотеки оформлений, дважды кликните левой кнопкой мыши по строке в окне менеджера документа. Перед вами появится окно.

Свойство shtType задает значение колонки с ГОСТом под списком «Листы». Чтобы увидеть допустимые значения этого свойства для текущей библиотеки оформлений, дважды кликните левой кнопкой мыши по строке в дереве документа. Перед вами появится окно.


Окно «Оформление»

Строка в колонке «Библиотека» – это наименование библиотеки, указываемой в поле «layoutName».
Нажмите на кнопку «…» справа от поля «Название». Перед вами появится окно.


Диалог выбора оформления

Свойство shtType содержит значение из колонки «Номер» и определяет соответствующее оформление. Например, для документа «Чертеж констр. Первый лист. ГОСТ 2.104-2006» (выделено на рисунке выше) значение свойства shtType должно быть равно 1, а для документа «Титульный лист. ГОСТ 2.104-2006.» – 42 и т. д.

Методов у интерфейса ksSheetPar всего два:

  • Init() – сбрасывает значения свойств к значениям по умолчанию;
  • GetSheetParam() – возвращает указатель на интерфейс ksStandartSheet (для листа стандартных размеров) или ksSheetSize (для листа нестандартных размеров).

Тип размеров листа (стандартные или нет) устанавливается в свойствах интерфейса ksDocumentParam при создании чертежа. В начале рассмотрим работу с листами стандартных размеров.

Стандартные листы


Параметры стандартного листа описываются интерфейсом ksStandartSheet, имеющим три свойства:

  • direct – расположение основной надписи (FALSE – вдоль короткой стороны листа, TRUE – вдоль длинной стороны);
  • format – формат листа (0 – А0, 1 – А1, 2 – А2, 3 – А3, 4 – А4, 5 –А5);
  • multiply – кратность формата листа.

Ниже приводится исходный текст программы, создающей пустой чертеж формата А4 с рамкой и незаполненной основной надписью.

KompasObjectPtr kompas;
//Запускаем КОМПАС
kompas.CreateInstance(L"KOMPAS.Application.5");

//Подготавливаем параметры документа
DocumentParamPtr DocumentParam;
DocumentParam=(DocumentParamPtr)kompas->GetParamStruct(ko_DocumentParam);
DocumentParam->Init();
DocumentParam->type= lt_DocSheetStandart;//Чертеж на стандартном листе

SheetParPtr SheetPar;
SheetPar = (SheetParPtr)DocumentParam->GetLayoutParam();
SheetPar->layoutName[0] = L'0';
SheetPar->shtType = 1;  //Тип документа

//Подготавливаем параметры листа
StandartSheetPtr StandartSheet;
StandartSheet = (StandartSheetPtr)SheetPar->GetSheetParam();
StandartSheet->direct = false; //надпись вдоль короткой стороны
StandartSheet->format = 4;     //А4
StandartSheet->multiply = 1;   //кратность

//Создаем чертеж
Document2DPtr Document2D;
Document2D = (Document2DPtr)kompas->Document2D();
Document2D->ksCreateDocument(DocumentParam);

//Делаем КОМПАС видимым
kompas->Visible = true;
kompas.Unbind();

Обращаю ваше внимание на то, что в свойстве layoutName интерфейса ksSheetPar указывается пустая строка. Если в этом свойстве указать полный путь к библиотеке graphic.lyt, то программа работает неправильно. Ниже приводится внешний вид созданного чертежа.


Рамка чертежа конструкторского со стандартными размерами. Первый лист. ГОСТ 2.104-2006

Нестандартные листы


Параметры нестандартного листа описываются интерфейсом ksSheetSize со следующимия свойствами:

  • height – высота листа в миллиметрах;
  • width – ширина листа в миллиметрах.

Ниже приводится исходный текст программы, создающей пустой чертеж с размером листа 300х300 миллиметров и незаполненной основной надписью.

KompasObjectPtr kompas;
//Запускаем КОМПАС
kompas.CreateInstance(L"KOMPAS.Application.5");

//Подготавливаем параметры документа
DocumentParamPtr DocumentParam;
DocumentParam=(DocumentParamPtr)kompas->GetParamStruct(ko_DocumentParam);
DocumentParam->Init();
DocumentParam->type = lt_DocSheetUser; //Чертеж на нестандартном листе

SheetParPtr SheetPar;
SheetPar = (SheetParPtr)DocumentParam->GetLayoutParam();
SheetPar->layoutName[0] = L'0';
SheetPar->shtType = 1;  //Тип документа

//Подготавливаем параметры листа
SheetSizePtr SheetSize;
SheetSize = (SheetSizePtr)SheetPar->GetSheetParam();
SheetSize->Init();
SheetSize->width  = 300;
SheetSize->height = 300;

//Создаем чертеж
Document2DPtr Document2D;
Document2D = (Document2DPtr)kompas->Document2D();
Document2D->ksCreateDocument(DocumentParam);

//Делаем КОМПАС видимым
kompas->Visible = true;
kompas.Unbind();


Обращаю ваше внимание на то, что для создания чертежа на листе нестандартного размера нужно в свойстве type интерфейса ksDocumentParam указать значение lt_DocSheetUser. После этого метод GetSheetParam() интерфейса ksSheetPar вернет указатель на интерфейс ksSheetSize.
На рисунке ниже показан результат работы этой программы.


Рамка чертежа конструкторского для листа с размерами 300 на 300 мм

При работе с листами нестандартных размеров нужно помнить о том, что многие форматы основных надписей рассчитаны на листы определенных размеров. Когда система КОМПАС пытается приспособить основную надпись к листу, на размеры которого она не рассчитана, то из этого не получается ничего хорошего. Один из таких результатов показан на рисунке ниже.


Рамка чертежа конструкторского для листа с размерами 100 на 100 мм. Части штампа ушли за границы листа

В данном примере создавался лист размером 100х100 миллиметров, и к нему применялась основная надпись типа 1 («Чертеж констр. Первый лист. ГОСТ 2.104-2006»).

Третья часть.

Сергей Норсеев, автор книги «Разработка приложений под КОМПАС в Delphi».
АСКОН
162.98
Крупнейший российский разработчик инженерного ПО
Share post

Similar posts

Comments 2

    0

    API — это замечательно) Практическую пользу вижу в получении результатов расчёта из Компаса в других программах (ERP). А создание чертежа посредством API пользы не несёт — разве что для типовых проектов, но тут можно и шаблоны использовать.

      +1
      Уроки будут идти последовательно. Не зная основ, нельзя сделать более сложные вещи. Понятно что делать отдельный чертёж через API слишком долго.

    Only users with full accounts can post comments. Log in, please.