Программное изменение файл-источника у Скопированных объектов

Автор AlinaM, 12.10.21, 16:23:24

« назад - далее »

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

AlinaM

Всем добрый день!
В "ручном" режиме, в Компас, можно изменить файл-источник у элементов, полученных инструментом Копировать объекты
В SDK, наиболее близко подходит:
DocumentFileName - Имя файла внешнего документаНо это свойство доступно только для чтения!

Подскажите пожалуйста, как я могу программно изменить файл-источник у таких элементов?
файл-источник Копировать объекты.png

KrissKross

Попробуйте подойти с другой стороны
в 20 версии - появился замечательный метод
ReplaceExternalFilesNames - Изменить ссылки на файл в документе
находится в интерфейсе IKompasDocument1

Сигнатура
BOOL ReplaceExternalFilesNames( BOOL allFiles, BSTR OldFileName, BSTR NewFileName );

AlinaM

Цитата: KrissKross от 12.10.21, 19:18:47Попробуйте подойти с другой стороны
в 20 версии - появился замечательный метод
ReplaceExternalFilesNames - Изменить ссылки на файл в документе
находится в интерфейсе IKompasDocument1

Сигнатура
BOOL ReplaceExternalFilesNames( BOOL allFiles, BSTR OldFileName, BSTR NewFileName );
Спасибо за ответ!
А есть ли решение для Компас v18?

KrissKross

Мне кажется
разработчики не предусмотрели такого варианта
так как при замене источника - высока вероятность возникновения ошибки - потери копированных элементов

В таких случаях всегда можно предложить - заново создать Копирование

или все таки найти функции ReplaceExternalFilesNames и попробовать ее в действии
в 19 версии - она в исходниках АПИ - есть
посмотрите может и в 18 тоже - есть
хотя анонс (новые методы) приписан только в справке на 20 версию

или попробовать скомпилировать проект с использованием 20 АПИ
а применять в Вашей 18 версии

AlinaM

Цитата: KrissKross от 12.10.21, 20:53:12разработчики не предусмотрели такого варианта
так как при замене источника - высока вероятность возникновения ошибки - потери копированных элементов
если брать аналогию с программным изменением файл-источника у компонентов в сборке - задача кажется достаточно простой.
Опять же, в "пользовтельском" режиме Компаса, изменение файл-источника, решается в 2 действия, и процедера не кажется такой уж сложной)

graphdark

Вот файл источник у чертежа менял, может поможет.
procedure TForm1.Button1Click(Sender: TObject);
var
  d2d:ksDocument2D;
  iter:ksiterator;
  obj1:reference;
  ksAVP:ksAssociationViewParam;
begin
  StartKompas;
  d2d:=ksDocument2D(Kompas.ActiveDocument2D);
  iter:=ksiterator(kompas.GetIterator);
  iter.ksCreateIterator(VIEW_OBJ,0);
  obj1:=iter.ksMoveIterator('F');
  while obj1<>0  do
  begin
    ksAVP:=ksAssociationViewParam(kompas.GetParamStruct(ko_AssociationViewParam));
    ksavp.Init;
    d2d.ksGetObjParam(obj1,ksAVP,ASSOCIATION_VIEW_PARAM);
    memo1.Lines.Add('//'+ksavp.fileName);
    obj1:=iter.ksMoveIterator('N');
  end;
  iter.ksDeleteIterator;

end;

/|exa_in_da_house

Копайте в сторону iPart.FileName. После не забудте обновить через iPart7.Update()