Не получается изменить текст шероховатостей на чертеже.
Есть примеры как создать шероховатость с нуля, но редактирования нигде не нашел.
Вот текст пробной процедуры, где просто ко всем текстам прибавляется "----".
var
iter: ksIterator;
CurObj: Reference;
arrText : ksDynamicArray;
i, j: Integer;
tLinePar: ksTextLineParam;
RoughParam: ksRoughParam;
RoughPar: ksRoughPar;
str: ksChar255;
arrpTextItem: ksDynamicArray;
itemPar: ksTextItemParam;
begin
iter:=ksIterator(kompas.GetIterator());
iter.ksCreateIterator(ROUGH_OBJ,0);
CurObj:=iter.ksMoveIterator('F');
while CurObj<>0 do begin
RoughParam:=ksRoughParam(kompas.GetParamStruct(ko_RoughParam));
doc.ksGetObjParam(CurObj,RoughParam,ALLPARAM);
RoughPar:=ksRoughPar(RoughParam.GetrPar);
arrText := ksDynamicArray(RoughPar.GetpText);
if RoughPar.style = INDICATIN_TEXT_LINE_ARR then begin
tLinePar := ksTextLineParam( kompas.GetParamStruct(ko_TextLineParam) );
for i := 0 to arrText.ksGetArrayCount() - 1 do begin
arrText.ksGetArrayItem( i, tLinePar );
arrpTextItem := ksDynamicArray( tLinePar.GetTextItemArr() );
if arrpTextItem=nil then Exit;
itemPar := ksTextItemParam( kompas.GetParamStruct(ko_TextitemParam) );
for j := 0 to arrpTextItem.ksGetArrayCount() - 1 do begin
arrpTextItem.ksGetArrayItem( j, itemPar );
itemPar.s := itemPar.s + '----';
if arrpTextItem.ksSetArrayItem(j, itemPar) = 1 then ShowMessage('Сохранено arrpTextItem ' + itemPar.s);
end;
if tLinePar.SetTextItemArr(arrpTextItem) then ShowMessage('Сохранено tLinePar');
if arrText.ksSetArrayItem(i, tLinePar) = 1 then ShowMessage('Сохранено arrText');
end;
end else begin // этот блок никогда не срабатывает
str:=ksChar255(kompas.GetParamStruct(ko_Char255));
for i:=0 to arrText.ksGetArrayCount()-1 do begin
arrText.ksGetArrayItem(i,str);
str.str := str.str + '--';
arrText.ksSetArrayItem(i,str);
end;
end;
if RoughPar.SetpText(arrText) then ShowMessage('Сохранено RoughPar');
if RoughParam.SetrPar(RoughPar) then ShowMessage('Сохранено RoughParam');
// вот эта строка не сохраняет
if doc.ksSetObjParam(CurObj,RoughParam,ALLPARAM) = 1 then ShowMessage('Сохранено CurObj');
CurObj:=iter.ksMoveIterator('N');
end;
iter.ksDeleteIterator;
end;
При всех операциях сохранения появляется диагностическое сообщение "Сохранено ****".
Не работает только последнее сохранение ksSetObjParam.
Из-за него, видимо, в итоге ничего не сохраняется.
Может как-то по другому нужно действовать?
Все получилось.
У меня было лишнее сохранение параметров RoughParam.SetrPar(RoughPar)
Без этой строки все сохраняется.