НЕМНОГО ИЗМЕНИВ ФУНКЦИЮ ПОЛУЧИМ var
kompas:KompasObject;
d3d:ksDocument3D;
sm:ksselectionmng;
part:kspart;
procedure findattrvalue(spart:kspart;key1,key2,key3:integer;var MMM:Tmemo);
var
a3dc:ksattribute3dcollection;
attrObj:ksAttributeObject;
atr3: ksAttribute3D;
arr:ksdynamicarray;
values:ksUserParam;
val:ksLtVariant;
i,j:integer;
s:string;
begin
attrObj:=ksattributeobject(kompas.GetAttributeObject);
a3dc:=ksattribute3dcollection(d3d.AttributeCollection(key1,key2,key3,0,0,spart));
if a3dc<>nil then
if a3dc.GetCount<>0 then
begin
atr3:=a3dc.First;
for j:=1 to a3dc.GetCount do
begin
values:=ksUserParam(Kompas.GetParamStruct(112));
values.Init;
val:=ksLtVariant(Kompas.GetParamStruct(108));
val.Init;
val.strVal:='';
Arr:=ksDynamicArray(Kompas.GetDynamicArray(23));
values.SetUserArray( Arr );
Arr.ksAddArrayItem( -1, val );
attrObj.ksGetAttrValue(atr3.reference,0,0,nil,nil,values);
s:='';
for i:=0 to arr.ksGetArrayCount-1 do
begin
arr.ksGetArrayItem( i, val );
case val.valType of
1:s:=s+' '+vartostr(val.charVal);
2:s:=s+' '+vartostr(val.uCharVal);
3:s:=s+' '+vartostr(val.intVal);
4:s:=s+' '+vartostr(val.uIntVal);
5:s:=s+' '+vartostr(val.longVal);
6:s:=s+' '+vartostr(val.floatVal);
7:s:=s+' '+vartostr(val.doubleVal);
8:s:=s+' '+vartostr(val.strVal);
10:s:=s+' '+vartostr(val.shortVal);
end;
end;
arr.ksDeleteArray;
mmm.Lines.Add(atr3.nameType+s);
atr3:=a3dc.Next;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
kompas.Visible:=true;
d3d:=ksDocument3D(Kompas.ActiveDocument3D);
sm:=ksselectionmng(d3d.GetSelectionMng);
part:=kspart(sm.Last);
findattrvalue(part,0,0,0,memo1);
end;