В данной статье рассмотрена возможность создания документов в Компасе.
Одной большой проблемой у программистов при создании документов является список неверных индексов в справке по АПИ Компаса.
В данном примере подробное описание создания документов
procedure TForm1.Button1Click(Sender: TObject);
var
//объект компас
kompas:KompasObject;
//параметры документа
par:ksdocumentparam;
//параметры текстового документа
par1:ksTextDocumentParam;
//параметры страницы документа
sp:kssheetpar;
//специфик5ация
spcdoc:ksspcdocument;
//чертеж и фрагмент
doc2D:ksdocument2d;
//сборка и 3d-деталь
doc3d:ksdocument3d;
//текстовый документ
txtdoc:ksdocumenttxt;
//индекс документа
ind:integer;
//параметры создания 3D-документов
invisible,typeDoc:wordbool;
begin
ind:=combobox1.Itemindex;
//подключаемся к открытому компасу
kompas:=KompasObject(GetActiveOleObject(‘Kompas.Application.5′));
//устанавливаем лицензии на спецификацию и 3D
if kompas.ksIsModuleSpecificationActive=0 then
kompas.ksModuleSpecification(true);
if kompas.ksIsModule3DActive=0 then
kompas.ksModule3D(true);
//в зависимости от того, что мы выбрали в комбобоксе
case ind of
0,1://чертеж и фрагмент
begin
//задаем параметры чертежа или фрагмента
//получаем структуру параметров документа
par:=ksDocumentParam( kompas.GetParamStruct(ko_DocumentParam));
//инициируем
par.Init;
//если чертеж
if combobox1.ItemIndex=0 then
begin
//имя файла
par.fileName:=’c:\0.cdw’;
//коментарии
par.comment:=’Чертеж’;
//автор
par.author:=’DELPHI VS’;
//тип документа
par.type_:=1;
//режим редактирования
par.regime:=0;
//получить ссылку на параметры страницы
sp:=kssheetpar(par.GetLayoutParam);
//Для чертежа — имя библиотеки оформления
//Если строка пустая, берется библиотека Graphic.lyt
sp.layoutName:=»;
//Для чертежа — тип штампа из указанной библиотеки
sp.shtType:=1;
end;
//если фрагмент
if combobox1.ItemIndex=1 then
begin
//имя файла
par.fileName:=’c:\1.frw’;
//коментарии
par.comment:=’Фрагмент’;
//автор
par.author:=’DELPHI VS’;
//тип документа
par.type_:=2;
//режим редактирования
par.regime:=0;
end;
//получаем структуру чертежа или фрагмента
doc2D:=ksdocument2D(kompas.Document2D);
//создаем чертеж или фрагмент относительно заданных параметров
doc2D.ksCreateDocument(par);
//сохраняем чертеж или фрагмент
doc2D.ksSaveDocument(par.fileName);
end;
4://сборка
begin
//получаем структуру сборки
doc3D:=ksdocument3D(kompas.Document3D);
//заполняем параметры
invisible:=false;
typeDoc:=false;
//создаем сборку относительно заданных параметров
doc3d.Create(invisible,typeDoc);
//invisible — признак режима редактирования документа
//(TRUE — невидимый режим,
//FALSE — видимый режим),
//typeDoc — тип документа
//(TRUE — деталь,
//FALSE — сборка)
//ТИП ОБЯЗАТЕЛЬНО wordbool
//сохраняем сборку
doc3d.SaveAs(‘c:\4.a3d’);
end;
5://3D-модель
begin
//получаем структуру 3D-модели
doc3D:=ksdocument3D(kompas.Document3D);
//заполняем параметры
invisible:=false;
typeDoc:=true;
//создаем 3D-модель относительно заданных параметров
doc3d.Create(invisible,typeDoc);
//сохраняем 3D-модель
doc3d.SaveAs(‘c:\5.m3d’);
end;
2://текстовый документ
begin
//задаем параметры текстового документа
//получаем структуру параметров документа
par1:=ksTextDocumentParam( kompas.GetParamStruct(ko_TextDocumentParam));
//инициируем
par1.Init;
//имя файла
par1.fileName:=’c:\2.kdw’;
//коментарии
par1.comment:=’Текстовый документ’;
//автор
par1.author:=’DELPHI VS’;
//тип документа
par1.type_:=3;
//режим редактирования
par1.regime:=0;
//получаем структуру текстового документа
txtdoc:=ksdocumenttxt(kompas.documenttxt);
//создаем текстовый документ относительно заданных параметров
txtdoc.ksCreateDocument(par1);
//сохраняем текстовый документ
txtdoc.ksSaveDocument(par1.fileName);
//здесь мы не указали еще много параметров
//изучить их вы можете самостоятельно из справки
end;
3://спецификация
begin
//задаем параметры текстового документа
//получаем структуру параметров документа
par:=ksDocumentParam( kompas.GetParamStruct(ko_DocumentParam));
//инициируем
par.Init;
//имя файла
par.fileName:=’c:\3.spw’;
//коментарии
par.comment:=’Cпецификация’;
//автор
par.author:=’DELPHI VS’;
//тип документа
par.type_:=4;
//режим редактирования
par.regime:=0;
//получить ссылку на параметры страницы
sp:=kssheetpar(par.GetLayoutParam);
//для спецификации- имя библиотеки стилей
//Если строка пустая, берется библиотека Graphic.lyt
sp.layoutName:=»;
//для спецификации — номер стиля из указанной библиотеки.
sp.shtType:=1;
//получаем структуру спецификации
spcdoc:=ksspcdocument(kompas.spcdocument);
//создаем спецификацию относительно заданных параметров
spcdoc.ksCreateDocument(par);
//сохраняем спецификацию
spcdoc.ksSaveDocument(par.fileName);
end;
end;
end;