Доброго форумчане!
Есть ли возможность заменить в файле сборки внешние ссылки на обновленные файлы компонентов сборки в Компас-3D V16 ?
Знаю что есть эта возможность в V20 - IKompasDocument1 => ReplaceExternalFilesNames
в V16 например есть метод SetFileName , но не работает.. ссылка на обновляемый файл не меняется.
Снимок13.JPG
procedure TForm1.Button3Click(Sender: TObject);
var
d2d:ksDocument2D;
obj1:reference;
ksAVP:ksAssociationViewParam;
RoughParam: ksRoughParam;
RoughPar: ksRoughPar;
DynamicArray,DynArray1,DynArray2: ksDynamicArray;
Char255: ksChar255;
MarkerPar: ksMarkerLeaderParam;
MPoint: ksMathPointParam;
kChar: ksTextItemParam;
VarCol: ksVariableCollection;
variable: ksVariable;
ArrayVar: ksDynamicArray;
Count, i: integer;
begin
StartKompas;
d2d:=ksDocument2D(Kompas.ActiveDocument2D);
obj1:=d2d.ksGetReferenceDocumentPart(3);
ksAVP:=ksAssociationViewParam(kompas.GetParamStruct(ko_AssociationViewParam));
ksavp.Init;
d2d.ksGetObjParam(obj1,ksAVP,ASSOCIATION_VIEW_PARAM);
memo1.Lines.Add(ksavp.fileName);
Variable := ksVariable(Kompas.GetParamStruct(85));
ArrayVar := ksDynamicArray(d2d.ksGetDocVariableArray(0));
for I := 0 to 1 do
begin
if arrayVar.ksGetArrayItem(i,Variable) = 1 then
begin
Variable.value := 1000;
arrayVar.ksSetArrayItem(i,Variable);
end;
end;
d2d.ksSetDocVariableArray(0,arrayVar,False);
end;
ksavp.fileName - это свойство содержит ссылку.
graphdark,
мне нужно заменить ссылки в самой сборке 3D модели .a3d а не в чертеже.
решил, получается через свойство :)
iDocument3D = iKompasObject.ActiveDocument3D()
iPartCollection = iDocument3D.PartCollection(True)
Count = iPartCollection.GetCount()
for j in range(int(Count)):
iPart = iPartCollection.GetByIndex(j)
filePatchOLD = iPart.fileName
if "Корпус Old version.m3d" in filePatchOLD:
print(filePatchOLD) #filePatchOLD - содержит старый пусть до файла
filePatchNEW = r"G:\test\Корпус New version.m3d"
# flag = iPart.SetFileName(filePatchNEW) # - почему то не работает
iPart.fileName = filePatchNEW
iPart.Update()
break
iDocument3D.RebuildDocument()
при этом привязки сохранились.