Как создать объект IDrawingObjectPtr

Автор ilya1213, 17.07.14, 12:43:18

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

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

ilya1213

Здравствуйте, уважаемые пользователи форума.

Мне необходимо получить текст гиперссылки объекта.
Проход по элементам документа нашел в примерах SDK.
Но для получения текста гиперссылки в качестве одного из параметров функции необходимо передавать IDrawingObject * LinkObject

HRESULT GetHyperLinkObjects( ksHyperLinkTypeEnum Type,
IDrawingObject * LinkObject,
long Level,
BSTR Text,
VARIANT * Result );

Как создать IDrawingObject?

Буду благодарен за помощь.

P.S. язык C++

ilya1213

Если кому-то понадобится. Проблему решил используя обход по документу как в примере Step3_API7_2D .

Тему можно закрыть.

Golovanev

// Записать гиперссылку на объект

procedure CreateHyperLink(_refObj: reference; const Text: WideString);
Var
  lDoc2D  : IKompasDocument2D;
  iunkn   : IUnknown;
  lDoc2D1  : IKompasDocument2D1;
  lDrawingObj :  IDrawingObject1;
  refDoc: Reference;

begin

    refDoc := ksGetCurrentDocument(1);

    lDoc2D := iKApp.ActiveDocument as IKompasDocument2D;
    if lDoc2D <> nil then
    begin
       iunkn := IUnknown( lDoc2D );
       if iunkn <> nil then
       begin
       lDoc2D1 := iunkn as IKompasDocument2D1;
       if lDoc2D1 <> nil then
         begin
         lDrawingObj := (IUnknown(ksTransferReference(_refobj, refDoc)) as IDrawingObject1);
         if lDrawingObj <> nil then
          begin
           lDoc2D1.CreateHyperLink(lDrawingObj, ksHLFile, Text, nil, 0 );
          end;
         end;
       end;
    end;

end;

// Получить объект по гиперссылке

function GetHyperLinkObject(const Text: WideString) : Reference;
Var
  lDoc2D  : IKompasDocument2D;
  iunkn   : IUnknown;
  lDoc2D1  : IKompasDocument2D1;
  lDrawingObj :  IDrawingObject;
  refDoc: Reference;
  oDrwDoc : OleVariant;
begin

Result := 0;

    lDoc2D := iKApp.ActiveDocument as IKompasDocument2D;
    if lDoc2D <> nil then
    begin
       iunkn := IUnknown( lDoc2D );
       if iunkn <> nil then
       begin
       lDoc2D1 := iunkn as IKompasDocument2D1;
       if lDoc2D1 <> nil then
         begin
          iunkn := lDoc2D1.GetHyperLinkObjects(ksHLFile, nil, 0, Text );
          if iunkn <> nil then
          begin
           lDrawingObj :=  iunkn as IDrawingObject;
           if lDrawingObj <> nil then
            begin
              Result := lDrawingObj.Reference;
            end;
          end;
         end;
       end;
    end;

end;
+ Благодарностей: 1