Передать данные из компаса своей библиотеке

Автор оlden, 02.11.05, 09:30:43

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

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

оlden

Подскажите пожалуйста. Рисуешь в компасе например квадрат. Выделяешь его. Нажимаешь на кнопку своей библиотеке. Как считать данные координат с выделенного объекта, например в файл? Если можно то на VB. Если нет то на любом, я разберусь.

ylabz

На основе примеров из SDK step5 (EditTolerance) и step3 (DrawCircle)
получилось следующее:

sub test()
  Set iKompasObject = Kompas
 
  If iKompasObject Is Nothing Then
    Exit Sub
  End If
 
  Dim iDocument2D As Object ’ksDocument2D
  Set iDocument2D = iKompasObject.ActiveDocument2D
 
  If iDocument2D Is Nothing Then
    Exit Sub
  End If
 
  Dim pObj As Long

  Dim iInfo As Object
  Set iInfo = iKompasObject.GetParamStruct(ko_RequestInfo)
 
  If Not iInfo Is Nothing Then
    Dim x As Double
    Dim y As Double
    iInfo.prompt = "Укажите элемент чертежа"
    Dim j As Long
    j = doc.ksCursor(iInfo, x, y, Nothing)
    If j Then
      pObj = doc.ksFindObj(x, y, 1000000)
      If j And doc.ksExistObj(pObj) Then

        Dim typeObj As Integer
        typeObj = doc.ksGetObjParam(pObj, Nothing, 0)      ’ указатель на графический объект

        if typeObj = CIRCLE_OBJ then
          ’ Взять параметры окружности
          Dim par As Kompas6API5.CircleParam          ’ Интерфейс ksCircleParam
          ’ Структура параметров окружности
          Set par = Kompas.GetParamStruct(ko_CircleParam)
 
          If Not par Is Nothing Then                  ’ Интерфейс создан
          doc.ksGetObjParam(p, par, ALLPARAM)   ’ Взять параметры окружности

          Kompas.ksMessage " xc = " & par.xc & " yc = " & par.yc & " rad = " & par.rad & _
                           " tl = " & par.Style
          Set par = Nothing
        end if
      end if
    endif
  End If

end sub


оled

Спасибо. Этоя я понял. Усложним задачу. Если объект, выделенный, состоит из отдельных элементов. Тот же квадрат состоящий не как целый блок в котором есть высота и ширина, а из отдельных линий. Тогда, как узнать сколько выделенно элементов и их координаты.

ylabz

Смотри пример step7, процедура WalkFromMacro