Получение IVariable7 у модели

Автор Lito 2, 24.03.15, 12:44:48

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

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

Lito 2

Подскажите пожалуйста как получить IVariable7 у модели.
Есть

if Kompas7 <> nil then
   begin
           
            //Открытие модели и применение переменных
            Doc := Kompas7.Documents.Open(DocPatch, True, False);
            if Doc <> nil then
              begin
                S3D:= Doc as IKompasDocument3D;
                pPart7:= S3D.TopPart as IPart7;
                Variable7:= ..... as IVariable7; //что надо добавить?
              end;

Для начала получить IFeature7, а потом IVariable7.

Lito 2

В SDK нет описания, что "Интерфейс можно получить с помощью свойств: IFeature7" все есть, а дерево не указано. :o:
Ниже небольшой пример


var i, ds: integer;
      Doc: IKompasDocument;
      S3D: IKompasDocument3D;
      pPart7: IPart7;
      Feature7: IFeature7;
      Variable7: IVariable7;
      prman : variant;
begin

..............

            Doc := Kompas7.Documents.Open(DocPatch, True, False);
            if Doc <> nil then
              begin
                S3D:= Doc as IKompasDocument3D;
                if S3D <> nil then pPart7:= S3D.TopPart as IPart7;
                if pPart7 <> nil then Feature7:= IDispatch(pPart7) as IFeature7;
                if Feature7 <> nil then prman:= Feature7.Variables[False, True];

                if VarType(prman)=(VT_ARRAY or VT_DISPATCH) then ds:= VarArrayHighBound(prman,1);

                if ds > 0 then
                  for i := 0 to ds do
                    begin
                      if VarType(prman)=(VT_ARRAY or VT_DISPATCH) then Variable7:= IDispatch(prman[i]) as IVariable7;
                      if Variable7 <> nil then
                        begin
                        //Тут делаете, что-то свое с переменной

                        end;
                      Variable7:= nil;
                    end;
..............
end;



В SDK описание есть, смотрел SDK от Компас-3D V13.

Lito 2

Вот, что видно в КОМПАС-3D V15


Иногда просто нужно листать SDK, чтобы найти подводные камни.