Visual Basic

Автор Сергей***, 06.05.10, 19:47:59

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

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

Сергей***

Пытаюсь создать программу в VB, которая бы работала как прикладная библиотека, но не подключалась к компасу, а самостоятельно запускала бы его, строила необходимый чертеж, сохраняла его в указанный каталог и закрывала компас. Есть пример программки, которая строит контур, см ниже, но я не могу прописать так, чтобы прога запускала компас и сохраняла чертеж. И еще одно, не получается построить размер, не могу вызвать процедуру DrawLinDim. Подскажите где ошибка. Буду рад вашим ответам.

Dim iKompasObject As Object 'KompasObject
Sub DrawLinDim(doc As Object) ' Линейный размер
  Dim iParam As Object ' ksLDimParam
  Set iParam = iKompasObject.GetParamStruct(ko_LDimParam)
  If Not iParam Is Nothing Then
    Dim idPar As Object ' ksDimDrawingParam
    Set idPar = iParam.GetDPar()
    If Not idPar Is Nothing Then
      idPar.Init
      idPar.textPos = 10
      idPar.textBase = 2
      idPar.pt1 = 2
      idPar.pt2 = 2
      idPar.ang = -30
      idPar.lenght = 20
    End If
    Dim isPar As Object ' ksLDimSourceParam
    Set isPar = iParam.GetSPar()
    If Not isPar Is Nothing Then
      isPar.Init
      isPar.X1 = 50
      isPar.Y1 = 50
      isPar.X2 = 70
      isPar.Y2 = 60
      isPar.dx = 0
      isPar.dy = -20
      isPar.basePoint = 1
    End If
    Dim itPar As Object ' ksDimTextParam
    Set itPar = iParam.GetTPar()
    If Not itPar Is Nothing Then
      itPar.Init 0
      itPar.SetBitFlagValue AUTONOMINAL, True
      itPar.SetBitFlagValue PREFIX, True
      itPar.SetBitFlagValue DEVIATION, True
      itPar.SetBitFlagValue unit, True
      itPar.SetBitFlagValue SUFFIX, True
      itPar.sign = 0
      Dim istr As Object ' ksChar255
      Set istr = iKompasObject.GetParamStruct(ko_Char255)
      Dim iarrText As Object ' ksDynamicArray
      Set iarrText = itPar.GetTextArr()
      If Not iarrText Is Nothing Then
        istr.Str = "prefix"
        iarrText.ksAddArrayItem -1, istr
 
        istr.Str = "+0,5"
        iarrText.ksAddArrayItem -1, istr
 
        istr.Str = "-0,5"
        iarrText.ksAddArrayItem -1, istr
 
        istr.Str = "mm"
        iarrText.ksAddArrayItem -1, istr
 
        istr.Str = "pp&04ww&01oo"
        iarrText.ksAddArrayItem -1, istr
      End If
    End If
    Dim obj As Long
    obj = doc.ksLinDimension(iParam)
  End If

  If obj Then
    doc.ksGetObjParam obj, iParam, ALLPARAM
    isPar.X2 = 50
    isPar.Y2 = 60
    iKompasObject.ksMessage "Поменяем параметры"
    doc.ksSetObjParam obj, iParam, ALLPARAM
  End If
  End Sub
Private Sub Command1_Click() 'по клику
    Set Kompas = CreateObject("KOMPAS.Application.5")
    If Not Kompas Is Nothing Then  'если нет Kompas, то включить
      Kompas.Visible = True 'Вкл.видимость
    End If
    Dim iDocument2d As ksDocument2D
    Dim ksDocument2D As Object 'Document2D как объёкт
    Set ksDocument2D = Kompas.ActiveDocument2D 'активизировать документ
    If Not ksDocument2D Is Nothing Then 'если документа нет- открыть
        ksDocument2D.ksArcBy3Points 68, 166, 85, 238, 102, 166, 1
ksDocument2D.ksArcBy3Points 68, 166, 85, 238, 102, 166, 1
ksDocument2D.ksLineSeg 68, 166, 74, 166, 1
ksDocument2D.ksLineSeg 74, 166, 75, 167, 1
ksDocument2D.ksLineSeg 75, 167, 75, 180, 1
ksDocument2D.ksLineSeg 75, 180, 73, 180, 1
ksDocument2D.ksLineSeg 73, 180, 73, 184, 1
ksDocument2D.ksLineSeg 73, 184, 77, 184, 1
ksDocument2D.ksLineSeg 77, 184, 77, 192, 1
ksDocument2D.ksLineSeg 77, 184, 77, 192, 1
ksDocument2D.ksArcBy3Points 77, 192, 69, 200, 77, 208, 1
ksDocument2D.ksLineSeg 77, 208, 93, 208, 1
ksDocument2D.ksLineSeg 77, 208, 93, 208, 1
ksDocument2D.ksArcBy3Points 93, 208, 101, 200, 93, 192, 1
ksDocument2D.ksLineSeg 93, 192, 93, 167, 1
ksDocument2D.ksLineSeg 93, 167, 94, 166, 1
ksDocument2D.ksLineSeg 94, 166, 102, 166, 1

DrawLinDim 'как вызывать эту процедуру ???

     End If
    Kompas.ksMessage "Готово" 'вывести сообщение "Привет"
    'Появится сообщение- сохранить изменения ?
  'Kompas.Quit 'закрытьKompas
  Set Kompas = Nothing '
  End Sub


Сергей***


333

см SDK\Basic\ksContrl

Николай

 Сегей не программист, а инженер-конструктор. Бьётся с этим SDK как рыба об лёд.
Парень, конечно, упёртый, но всё-таки помощи попросил на форуме. И просит разъяснить по конкретному коду, в чём его ошибка.  С сегодняшнего дня он в отпуске, но если будут конкретные советы - я их до него доведу.