Загрузка данных
Option Explicit
Public Sub ТестПолученияModelContainer()
Dim App5 As Object
Dim Doc3D As Object
Dim Part5 As Object
Dim Part7 As Object
Dim Container As Object
Dim Msg As String
On Error GoTo Ошибка
Msg = "ШАГ 1" & vbCrLf
' ========================================================
' API 5
' ========================================================
Set App5 = GetObject(, "KOMPAS.Application.5")
If App5 Is Nothing Then
MsgBox _
"Не удалось получить KOMPAS.Application.5", _
vbCritical
Exit Sub
End If
Msg = Msg & "API5 получен" & vbCrLf
' ========================================================
' ACTIVE DOCUMENT 3D
' ========================================================
Set Doc3D = App5.ActiveDocument3D
If Doc3D Is Nothing Then
MsgBox _
Msg & vbCrLf & _
"ActiveDocument3D НЕ получен.", _
vbExclamation
Exit Sub
End If
Msg = Msg & "ActiveDocument3D получен" & vbCrLf
' ========================================================
' ROOT PART
'
' -1 = сама сборка
' ========================================================
Set Part5 = Doc3D.GetPart(-1)
If Part5 Is Nothing Then
MsgBox _
Msg & vbCrLf & _
"GetPart(-1) НЕ получил корневую сборку.", _
vbExclamation
Exit Sub
End If
Msg = Msg & "GetPart(-1) получен" & vbCrLf
' ========================================================
' ПРОБУЕМ ПОЛУЧИТЬ IPart7
' ========================================================
Set Part7 = Nothing
On Error Resume Next
Set Part7 = Part5
On Error GoTo Ошибка
If Part7 Is Nothing Then
MsgBox _
Msg & vbCrLf & _
"IPart7 НЕ получен.", _
vbExclamation
Exit Sub
End If
Msg = Msg & "IPart7 получен" & vbCrLf
' ========================================================
' MODEL CONTAINER
' ========================================================
Set Container = Nothing
On Error Resume Next
Set Container = Part7.GetModelContainer
On Error GoTo Ошибка
If Container Is Nothing Then
MsgBox _
Msg & vbCrLf & _
"GetModelContainer НЕ получил контейнер.", _
vbExclamation
Exit Sub
End If
Msg = Msg & "ModelContainer ПОЛУЧЕН!" & vbCrLf
' ========================================================
' GET OBJECTS
' ========================================================
Dim Objects As Object
Set Objects = Nothing
On Error Resume Next
Set Objects = Container.GetObjects
On Error GoTo Ошибка
If Objects Is Nothing Then
Msg = Msg & _
"GetObjects не получил коллекцию." & vbCrLf
Else
Msg = Msg & _
"GetObjects ПОЛУЧЕН" & vbCrLf
Msg = Msg & _
"Количество объектов: " & _
Objects.Count & vbCrLf
End If
' ========================================================
' ELEMENTARY BODIES
' ========================================================
Dim Bodies As Object
Set Bodies = Nothing
On Error Resume Next
Set Bodies = Container.ElementaryBodies
On Error GoTo Ошибка
If Bodies Is Nothing Then
Msg = Msg & _
"ElementaryBodies НЕ получены." & vbCrLf
Else
Msg = Msg & _
"ElementaryBodies ПОЛУЧЕНЫ" & vbCrLf
Msg = Msg & _
"Количество тел: " & _
Bodies.Count & vbCrLf
End If
' ========================================================
' PIPE ELEMENTS
' ========================================================
Dim Pipes As Object
Set Pipes = Nothing
On Error Resume Next
Set Pipes = Container.PipeElements
On Error GoTo Ошибка
If Pipes Is Nothing Then
Msg = Msg & _
"PipeElements НЕ получены." & vbCrLf
Else
Msg = Msg & _
"PipeElements ПОЛУЧЕНЫ" & vbCrLf
Msg = Msg & _
"Количество труб: " & _
Pipes.Count & vbCrLf
End If
' ========================================================
' РЕЗУЛЬТАТ
' ========================================================
MsgBox _
Msg & vbCrLf & _
"ТЕСТ ЗАВЕРШЁН", _
vbInformation, _
"Диагностика КОМПАС-3D"
Exit Sub
Ошибка:
MsgBox _
Msg & vbCrLf & vbCrLf & _
"ОШИБКА:" & vbCrLf & _
Err.Number & vbCrLf & _
Err.Description, _
vbCritical, _
"Ошибка диагностики"
End Sub