vba - 程序在 if 语句之前关闭 (CATIA VBA)
问题描述
我正在尝试在我的宏中实现一个最小边界框子例程。子程序在进入之前结束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
但它没有
解决方案
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))
...
推荐阅读
- babeljs - 使用带有`useBuiltIns:'usage'`的redux-logger时,对象不支持属性或方法'assign'
- docker - Kafka clean startup: WARN ...领导者回复了一个未知的偏移量
- swift - startMonitoringSignificantLocationChanges() 在物理设备上不起作用
- javascript - 如何使用 Promise 在 TypeScript 中重试加载 MediaElement?
- python-3.x - QThread 中的 Robot Framework 测试未在日志文件中显示变量值
- javascript - 如何使用复选框显示/隐藏数据表中的列?
- javascript - 覆盖 DOM 的 Angular 5 和 jQuery 插件
- angular - Angular 6 html2canvas 正在下载没有扩展名的图像和只有指定纸张大小的 pdf
- javascript - 如何为使用 JEST 进行测试的 ReactJs 应用程序忽略 SONAR 中的文件
- zend-framework - ZF2 - 检查每个操作中获取参数的权限