Программа закрывается перед оператором if (CATIA VBA) - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь реализовать подпрограмму минимального ограничивающего прямоугольника внутри моего макроса. Подпрограмма заканчивается перед входом в if statement. Можете ли вы помочь мне найти решение?

Option Explicit

Sub bounding()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As hybridbody
Set hybridBody1 = hybridBodies1.Item(cevap)

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody1.HybridShapes

Dim axisSystems1 As AxisSystems
Set axisSystems1 = part1.AxisSystems

Dim axisSystem1 As AxisSystem
Set axisSystem1 = part1.FindObjectByName("axissys")



Dim direction As Long


If extindex Mod 2 = 1 Then

direction = 1

Else

direction = 0

End If


Dim reference1 As Reference

MsgBox CStr(extindex)

Select Case extindex

Case 1, 2

Set reference1 = axisSystem1.XAxisDirection

MsgBox CStr(extindex) + "1ve2"

Case 3, 4

Set reference1 = axisSystem1.YAxisDirection
MsgBox CStr(extindex) + "3ve4"

Case Else


Set reference1 = axisSystem1.YAxisDirection
MsgBox CStr(extindex) + "5ve6"

End Select

Debug.Print ("exit if check")

Dim hybridShapeDirection1 As HybridShapeDirection
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference1)


Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("PartBody")

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(body1)

Dim hybridShapeExtremum1 As HybridShapeExtremum
Set hybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference2,                         
hybridShapeDirection1, 0)

part1.Update

hybridBody1.AppendHybridShape hybridShapeExtremum1

part1.InWorkObject = hybridShapeExtremum1

hybridShapeExtremum1.Name = "ext1" + CStr(extindex)



part1.Update

End Sub

Все переменные в программе проверены, и они работают. Я не понимаю, что происходит, и почему это не работает. Я даже проверил все переменные. Программа должна идти внутрь if statement, но не

1 Ответ

0 голосов
/ 04 октября 2019

Свойства AxisSystem XAxisDirection, YAxisDirection и ZAxisDirection относятся к ссылкам, по которым была определена система координат.

Эти свойства можно использовать для редактирования самого объекта AxisSystem, но они не являются «выходными» ссылочными объектами, которые следует использовать для построения последующей геометрии.

Вы можете получить компоненты векторов, используя методы GetXAxis, GetYAxis и GetZAxis (которые всегда будут содержать значения), а затем использовать метод HybridShapeFactory.AddDirectionFromCoord (), чтобы создать направление для экстремума.

...
MsgBox CStr(extindex)
Dim vect(2)
Dim vAxis As Variant
Set vAxis = axisSystem1

Select Case extindex
Case 1, 2
    vAxis.GetXAxis vect
Case 3, 4
    vAxis.GetYAxis vect
Case Else
    vAxis.GetYAxis vect
End Select

Dim hybridShapeDirection1 As HybridShapeDirection
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(vect(0), vect(1), vect(2))
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...