Как получить габариты детали?

Автор А8208, 14.10.11, 11:05:08

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

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

А8208

Здравствуйте!
Небходимо получить габаритные размеры 3D детали пытаюсь сделать примерно так:
If Kompas Is Nothing Then
            Kompas = CreateObject("KOMPAS.Application.7")
            If Not Kompas Is Nothing Then
                Kompas.Visible = True
                'Проверка соответствия пути
                ReDim Stroki_print(1)
                i = 0
                j = 0
                'Цикл обработки списка чертежей использованных в КД
                For a = 1 To UBound(Spisok_oboznach, 1)
                    Filename = Spisok_oboznach(a)
                    For i = 0 To UBound(coll) 'Count - 1
                        j = InStr(1, coll(i), Filename) 'поиск совпадений в строке из списка коллекции с нужным файлом
                        If j <> 0 Then
                            'ОТКРЫТИЕ ДОКУМЕНТА ДЛЯ СЧИТЫВАНИЯ ИНФОРМАЦИИ
                            Kompas.HideMessage = Kompas6Constants.ksHideMessageEnum.ksHideMessageYes
                            Dim Document3D As IKompasDocument 'Documents
                            Document3D = Kompas.Documents.Open(coll(i))
                            Document3D.Active
                            Dim iKompasObject As Object 'KompasObject
                            Dim iDocument3D As Object 'ksDocument3D
                            iKompasObject = Kompas
                            iDocument3D = iKompasObject.iActiveDocument3D





                            Dim Body As IDocument3D
                            'Body = Kompas.ActiveDocument(IGetActive3dDocument())

                            Dim x1, x2, y1, y2, z1, z2 As Double
                            Body.GetGabarit(X1:=x1, Y1:=y1, Z1:=z1, X2:=x2, Y2:=y2, Z2:=z2)

Пытался получить тип IBody7 из объекта "Kompas" выдаёт ошибку.
Подскажите, пожалуйста, как добраться до габаритного размера детали.

Сначала Вам нужно получить IPart7 -> IFeature7 -> IBody7 вроде, как-то так подробнее читайте в SDK.


А8208

Так вот именно на этапе получения IPart7 и возникают проблема в виду малого опыта програмирования.

На Delphi так

var
  doc : IKompasDocument;
  doc3d : IKompasDocument3D;
  part7 : IPart7;
begin
  if doc <> nil then
  begin
    // Получаем документ 3D
    doc3d := doc As IKompasDocument3D;
    if doc3d <> nil then
    begin
      // Получаем верхний компонент
      part7 := doc3d.TopPart;
      if part7 <> nil then
        ...
    end;
  end;
end;

ainis


Dim iDoc3D As Kompas6API5.ksDocument3D = iKompas.ActiveDocument3D
Dim iPart As Kompas6API5.ksPart = iDoc3D.GetPart(Kompas6Constants3D.Part_Type.pTop_Part)
Dim X1, Y1, Z1, X2, Y2, Z2 As Double 'координаты первой и второй точки габаритного параллелепипеда
If iPart.GetGabarit(False, False, X1, Y1, Z1, X2, Y2, Z2) Then 'координаты получены
    XGabaritSize = X2 - X1 'габаритный размер по оси X
    YGabaritSize = Y2 - Y1 'габаритный размер по оси Y
    ZGabaritSize = Z2 - Z1 'габаритный размер по оси Z
Else
    XGabaritSize = 0
    YGabaritSize = 0
    ZGabaritSize = 0
End If



А8208

Спасибо!
Всё работает!
А в API7 как реализовывается получение габаритов детали?