- PVSM.RU - https://www.pvsm.ru -
И снова про API САПР КОМПАС. Новая статья Сергея Норсеева, инженера-программиста АО «ВНИИ «Сигнал», автора книги «Разработка приложений под КОМПАС в Delphi». Первую статью можно прочесть здесь [1].
Для оформления чертежа используется несколько интерфейсов, среди них:
Указатель на интерфейс ksSheetPar возвращается методом GetLayoutParam() интерфейса ksDocumentParam, описывающего параметры документа.
Интерфейса ksSheetPar имеет два свойства:
Для того чтобы понять назначение этих свойств, откройте (или создайте новый) чертеж в КОМПАС. Раскройте список «Листы» в дереве чертежа. Откроется строка со свойствами листа документа.
[2]
Дерево документа (Картинка кликабельна)
Менеджер документа
Строка в колонке «Библиотека оформлений» – это наименование библиотеки, указываемой в поле «layoutName». Свойство shtType задает значение колонки «Оформление». Чтобы увидеть допустимые значения этого свойства для текущей библиотеки оформлений, дважды кликните левой кнопкой мыши по строке в окне менеджера документа. Перед вами появится окно.
Свойство shtType задает значение колонки с ГОСТом под списком «Листы». Чтобы увидеть допустимые значения этого свойства для текущей библиотеки оформлений, дважды кликните левой кнопкой мыши по строке в дереве документа. Перед вами появится окно.
Окно «Оформление»
Строка в колонке «Библиотека» – это наименование библиотеки, указываемой в поле «layoutName».
Нажмите на кнопку «…» справа от поля «Название». Перед вами появится окно.
Диалог выбора оформления
Свойство shtType содержит значение из колонки «Номер» и определяет соответствующее оформление. Например, для документа «Чертеж констр. Первый лист. ГОСТ 2.104-2006» (выделено на рисунке выше) значение свойства shtType должно быть равно 1, а для документа «Титульный лист. ГОСТ 2.104-2006.» – 42 и т. д.
Методов у интерфейса ksSheetPar всего два:
Тип размеров листа (стандартные или нет) устанавливается в свойствах интерфейса ksDocumentParam при создании чертежа. В начале рассмотрим работу с листами стандартных размеров.
Параметры стандартного листа описываются интерфейсом ksStandartSheet, имеющим три свойства:
Ниже приводится исходный текст программы, создающей пустой чертеж формата А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 со следующимия свойствами:
Ниже приводится исходный текст программы, создающей пустой чертеж с размером листа 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»).
Продолжение следует, следите за новостями блога.
Автор: kompas_3d
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-3/258339
Ссылки в тексте:
[1] здесь: https://habrahabr.ru/company/ascon/blog/328088/
[2] Image: https://habrastorage.org/web/1ba/023/661/1ba02366158a4e5f8f281c1e2d8063f1.png
[3] Источник: https://habrahabr.ru/post/330588/
Нажмите здесь для печати.