Спецификации: чтение информации из доп. колонок

Автор xander, 06.01.07, 18:26:50

« предыдущая - следующая »

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

xander

Есть вопрос по поводу того, как прочитать информацию, содержащуюся в доп. колонках. Необходимо разобрать спецификацию и получить массы для всех элементов (деталей, сборочных единиц), масса указывается частично в примечаниях, но всегда в доп. колонках ("Масса"). В документации информации не нашлось, так что был бы признателен, если бы кто-нибудь поделился информацией как это можно сделать. :w:

Среда: C++ Builder 6, API версии 5 (копался в примерах CBUILDERAUTO).

Gek

А через ksGetSpcObject не получается что ли?

гость

Может кто нибудь знает, как получить номер подраздела или имя объекта спецификации? Немного может не в тему, но чем то похоже... :)

янс

Для текста первой строки доп колонок (у меня масса) вот что получилось
Где другие значения - надо пробовать. Kompas 10 SP1   Basic. На основе step10. 
Может еще кому понадобится
Dim iKompasObject As Kompas6API5.Application  ' Интерфейс KompasObject
Dim Doc As Kompas6API5.Document2D             ' Интерфейс ksDocument2D
Dim specActiv As Kompas6API5.SpcDocument      ' Интерфейс ksSpcDocument
Dim spec As Kompas6API5.Specification         ' Интерфейс ksSpecification
Sub ShowDopColumn()
  Dim iIter As Kompas6API5.Iterator           ' Интерфейс ksIterator
  Set iIter = iKompasObject.GetIterator()     ' Получить интерфейс итератора
  Dim iKompasObject7 As KompasAPI7.IApplication
  Set iKompasObject7 = iKompasObject.ksGetApplication7
  Dim Doc7 As KompasAPI7.KompasDocument
  Set Doc7 = iKompasObject7.ActiveDocument
   If Not iIter Is Nothing Then                ' Интерфейс получен?
    iIter.ksCreateSpcIterator 0, 0, 0         ' Создаем итератор для навигации по текущей спецификации
     If iIter.reference Then                   ' Итератор создан ?
      Dim obj As Long                         ' Указатель на объект
      obj = iIter.ksMoveIterator("F")         ' Встаем на первый объект спецификации
      If specActiv.ksExistObj(obj) Then       ' Проверить существование объекта
      Dim idopColPar As KompasAPI7.SpecificationBaseObject  'доп колонки  *****************************
      Dim iColumn As KompasAPI7.SpecificationColumn
      Dim buf As String              ' Указатель на строку, в которую требуется положить полученный текст
      Do           ' Узнаем количество колонок у базового объекта спецификации
          Set idopColPar = Doc7.SpecificationDescriptions.Active.BaseObjects(0)
          spec.ksGetSpcColumnType obj, 0, idopColPar
          Set iColumn = idopColPar.AdditionalColumns.Item(0)
          buf = spec.ksGetSpcObjectColumnText(obj, iColumn.columnType, 1, 0) 'Текст первой строки доп колонок (масса)
          obj = iIter.ksMoveIterator("N")     ' Встаем на следующий объект спецификации
        Loop Until obj = 0
      End If
      iIter.ksDeleteIterator                  ' Удалить блок параметров навигации по модели
    End If
  End If
End Sub