Изменить параметры текущего листа

Автор Prog1, 21.05.08, 09:15:02

« предыдущая - следующая »

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

Prog1

Из внешнего приложения строится чертеж. Параметры устанавливаются перед
doc.ksCreateDocument(docPar);
В процессе построения иногда требуется указать другой формат.
stPar.format:=2;
stpar.multiply:=3;

А вот как их установить  в параметрах документа????
Я полагаю через Doc.ksSetObjParam(Ref,stpar,Allpar);
Но тогда где взять Ref (указатель) на стандартный лист???

yarikv


prog1

Попробовала - нет результата.
Doc.ksSetObjParam(Doc.reference,stpar,ALLparam);

yarikv

DocPar:=ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));
DocPar.Init;
DocPar.type_:=lt_DocSheetStandart;

SheetPar:=ksSheetPar(DocPar.GetLayoutParam);
SheetPar.shtType:=1;

StdSheet:=ksStandartSheet(SheetPar.GetSheetParam);
StdSheet.format:=4;
StdSheet.multiply:=1;
StdSheet.direct:=False;

Doc:=ksDocument2D(Kompas.Document2D);
Doc.ksCreateDocument(DocPar);

prog1

Спасибо Вам, Yarikv, за активное участие в моей теме. Давайте уж добьем ee.
Я, вероятно, в первом сообщении не до конца объяснила задачу. Извиняюсь искренне...
Операцию по установке параметров листа я провожу вначале (при создании документа). Форматы вычисляю приблизительно в зависимости от вводимых пользователем данных. Все это успешно проходит. В процессе построения габариты чертежа иногда получаются гораздо больше/меньше чем предполагалось вначале. Вот тут возникает необходимость изменить параметры ТЕКУЩЕГО чертежа (первого листа).
Если я напишу doc.ksCreateDocument(docPar), где docPar- новые параметры, то создастся новый документ.А мне нужно изменить АКТИВНЫЙ. Я, конечно, могу обойти эту проблему таким образом:
1. Отрисовать чертеж во временном документе,
2. узнать его габариты,
3. Скопировать все в буфер
4. создать нвый документ с нужными параметрами
5. скопировать в новый документ из буфера
6. закрыть временный документ без сохранения
Но ведь есть же более корректные пути без использования лишних длительных файловых и буферных операций !!!

yarikv

22.05.08, 10:58:53 #5 Последнее редактирование: 22.05.08, 11:22:04 от yarikv
в строке Doc.ksSetObjParam(Doc.reference,stpar,ALLparam);
вместо stpar(это наверное параметры оформления документа) должны быть параметры документа тип ksDocumentParam

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

iDoc2D:=ksDocument2D(iKompas.ActiveDocument2D);
iDocPar:=ksDocumentParam(iKompas.GetParamStruct(ko_DocumentParam));
iDoc2D.ksGetObjParam(iDoc2D.reference, iDocPar, ALLPARAM);
iSheetPar:=ksSheetPar(iDocPar.GetLayoutParam);
iStandartSheet:=ksStandartSheet(iSheetPar.GetSheetParam);
format:=iStandartSheet.format;
kratnost:=iStandartSheet.multiply;

//изменяю формат и кратность активного чертежа
iStandartSheet.format:=3;
iStandartSheet.multiply:=2;

iDoc2D.ksSetObjParam(iDoc2D.reference, iDocPar, ALLPARAM);

prog1

Отлично! Спасибо огромное.
Тема закрыта.