• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Параметры документа

Автор andrew1233, 18.11.10, 17:19:04

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

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

andrew1233

Подскажите пожалуйста, только начал заниматься этим вопросом не пойму почему не выдает параметры?
Sub Open_parametr()
Dim Kompas As Object
  If Kompas Is Nothing Then
   Set Kompas = CreateObject("KOMPAS.Application.5")
    If Not Kompas Is Nothing Then
      Kompas.Visible = True
    Dim ksDocument2D As Object
    fileName = "C:\5.cdw"
    Set ksDocument2D = Kompas.Document2D
      ksDocument2D.ksOpenDocument (fileName), False
        End If
  Dim docPar As Kompas6API5.DocumentParam
  Set docPar = Kompas.GetParamStruct(ko_DocumentParam)
Dim doc  As Kompas6API5.Document2D
  If Not docPar Is Nothing Then
    docPar.Init
    ksDocument2D.ksGetObjParam ksDocument2D.Reference, docPar, ALLPARAM
            Kompas.ksMessage "Имя файла : " & docPar.fileName
            Kompas.ksMessage "type = " & docPar.Type
            Kompas.ksMessage "Комментарий : " & docPar.Comment
            Kompas.ksMessage "Автор : " & docPar.Author
    End If
      End If
        End Sub

Ищите проблему здесь ksDocument2D.ksGetObjParam ksDocument2D.Reference, docPar, ALLPARAM

пример использования  ksGetObjParam на Delphi
//==============================================================================
type
TLineSeg = class(TComponent)// отрезок
private  // Закрытые объявления
  FLineSegParam:ksLineSegParam;
  FSLInterface:TSLInterface; // Класс записи-чтения в файл
protected // Защищенные объявления
public // Открытые объявления
  Obj:PReference;
  constructor Create(AOwner:TComponent); override;
  destructor Destroy; override;
  procedure SaveLineSeg(var F:File);
  procedure LoadLineSeg(var F:File; var Doc2D:ksDocument2D);
published // Публикуемые объявления
  property LineSegParam:ksLineSegParam read FLineSegParam write FLineSegParam;
  property SLInterface:TSLInterface read FSLInterface write FSLInterface;
end;
//==============================================================================
type // динамический указатель
PLineSeg = ^TLineSeg;
//==============================================================================
type
TLineSegApi = class(TComponent)// Отрезок интерфейс
private  // Закрытые объявления
  FLineSegIter:ksIterator;
  FLineSeg:PLineSeg;
  FLineSegArray:TList; // Массив отрезоков
protected // Защищенные объявления
public // Открытые объявления
  constructor Create(AOwner:TComponent); override;
  destructor Destroy; override;
  procedure SaveLineSeg(var F:File; var Doc2D:ksDocument2D); // Запись массива отрезков
  procedure LoadLineSeg(var F:File; var Doc2D:ksDocument2D); // Чтение массива отрезков
published // Публикуемые объявления
end;
//==============================================================================
procedure TLineSegApi.SaveLineSeg(var F:File; var Doc2D:ksDocument2D); // Запись массива отрезков
var
I,II:Integer;
begin // Заполнение массива отрезков
  FLineSegIter:=ksIterator(Kompas.GetIterator);
  FLineSegIter.ksCreateIterator(LINESEG_OBJ,0);
  FLineSeg^.Obj^:=FLineSegIter.ksMoveIterator('F');
  while BOOL(Doc2D.ksExistObj(FLineSeg^.Obj^)) do
   begin
     if(Doc2D.ksGetObjParam(FLineSeg^.Obj^,FLineSeg^.LineSegParam,LINESEG_OBJ))<>0 then
      begin
        FLineSegArray.Add(FLineSeg);
        New(FLineSeg);
        FLineSeg^:=TLineSeg.Create(Self);
      end;
     FLineSeg^.Obj^:=FLineSegIter.ksMoveIterator('N');
   end;
  FLineSeg^.Destroy;
  Dispose(FLineSeg);
// Запись всех объектов типа отрезок
  BlockWrite(F,FLineSegArray.Count,4);
  for I:=0 to FLineSegArray.Count-1 do
   begin
     FLineSeg:=FLineSegArray.Items;
     FLineSeg^.SaveLineSeg(F);
   end;
end;
//==============================================================================

Что у Вас есть Object
Dim doc  As Kompas6API5.Document2D - doc не используется нигде.
смотри SDK пример 3  на Basic


andrew1233

Все разобрался оказывается в примере не правильно указано

Вот рабочий код

Private Sub Command()
        Dim Kompas As Object
  If Kompas Is Nothing Then
   Set Kompas = CreateObject("KOMPAS.Application.5")
    If Not Kompas Is Nothing Then
      Kompas.Visible = True
    Dim ksDocument2D As Object
    FileName = "C:\5.cdw"
    Set ksDocument2D = Kompas.Document2D
      ksDocument2D.ksOpenDocument (FileName), False
    End If
  Dim doc As Object
  Set doc = Kompas.ActiveDocument2D
  Dim docPar As Kompas6API5.DocumentParam
  Set docPar = Kompas.GetParamStruct(ko_DocumentParam)
  If Not docPar Is Nothing Then
    doc.ksGetObjParam Reference, docPar, -1 (в примере написано allparam)
            Kompas.ksMessage "Имя файла: " & docPar.FileName
            Kompas.ksMessage "type = " & docPar.Type
            Kompas.ksMessage "Комментарий: " & docPar.Comment
            Kompas.ksMessage "Автор: " & docPar.Author   
End If
End If
End Sub

bergovin

Цитата: andrew1233 от 22.11.10, 13:14:27
Все разобрался оказывается в примере не правильно указано
    doc.ksGetObjParam Reference, docPar, -1 (в примере написано allparam)
Всё в примере правильно, просто не нужно игнорировать  раздел General, в котором прописана константа
Public Const ALLPARAM = -1                   ' все параметры объекта в системе координат владельца

Стандартная ошибка новичков :)