基于惯性主轴方向的CATIA包围盒(Bounding Box)

基于惯性主轴方向的CATIA包围盒(Bounding Box)

通俗地说,零部件的包围盒(Bounding Box)指的是一个最小的能将对象包含在内的长方体盒子。在机械设计中,零件(部件)的包围盒可用于确定是否和其他零件在装配中发生干涉,或者用于确定加工该零件所需材料的最小尺寸。

CATIA中,使用惯量测量(Mearure Inertia)工具可以直接测量得到3D模型的包围盒,这是一种确定对象包围盒尺寸的常用工具。惯量测量工具所测的包围盒等尺寸为相对于坐标系方向的包围盒,但有时候我们希望测得相对于惯性主轴的包围盒,此时通过简单地测量则不能实现我们的目的。

博文CATIA VBA获取零件“最小”包围盒对相对与坐标系和相对于惯性主轴的包围盒进行了简要的说明,并提供了计算零部件包围盒的CATIA VBA程序,但本博文中给出的代码分享已失效,其他获取该代码的途径是该博文文末给出的原始链接:基于惯量主轴的包围盒创建,该网页为全英文,英文较好的读者可以仔细了解下关于相对于惯性主轴的最小包围盒的讨论、实现和改进过程,以及该方法存在的问题。

本文的重要任务是对基于惯量主轴的包围盒创建中的代码进行简要地说明,并指出使用过程中应注意的问题。

相对于惯性主轴的最小包围盒的CATIA VBA代码摘录

Sub CATMain()
    ' 定义应用程序变量并赋值为CATIA,便于统一修改
    Dim oCATIA As Application
    Set oCATIA = CATIA

    ' 定义部件类型的文档并调用 Get_PartDocument 函数获取应用当前已打开的 Part 类型的文件
    ' 如果不存在 Part 类型的文件,则脚本抛出信息框并退出该子函数
    Dim oPartDocument As PartDocument
    Set oPartDocument = Get_PartDocument

    ' 如果应用未打开任何 Part 类型的文件,则退出脚本
    If oPartDocument Is Nothing Then

        Exit Sub

    End If

    ' 定义Section个对象:其内容一般为用户通过鼠标选中的对象,但也可为搜索到的对象等
    Dim oSelection As Selection
    ' 设置选择对象的内容为 Part 文件当前选中的内容
    Set oSelection = oPartDocument.Selection
    ' 清除选择对象的内容:这3句代码的作用就是让 PartDocument 处于不选中任何内容的状态
    oSelection.Clear

    ' 获取部件的重心
    Dim COGArray
    ' 通过自定义函数 Get_COD 获取部件的重心
    COGArray = Get_COG(oPartDocument)

    ' 获取部件的3个惯性主轴终点的3D坐标,其元素排列是3个点的X坐标为与前3个元素,
    ' 3个点的Y坐标为与中间3个元素,而3个点Z坐标位于数组最后的3个元素
    Dim PrincipalAxes_temp
    PrincipalAxes_temp = Get_PrincipalAxes(oPartDocument)

    ' 重排数组中的坐标值,按点的坐标为一组排列,即处理为:
    ' X方向惯性主轴的终点坐标为数组前3个元素(下标0,1,2),
    ' Y方向惯性主轴的终点坐标为数组中间3个元素(下标3,4,5)
    ' Z方向惯性主轴的终点坐标为数组最后3个元素(下标6,7,8)
    Dim PrincipalAxes
    PrincipalAxes = PrincipalAxesCorrection(PrincipalAxes_temp)

    ' 将 Part文件的部件放入 oPart 对象中
    Dim oPart As Part
    Set oPart = oPartDocument.Part

    ' 如果 Part 中不存在任何形状,则说明虽然有部件,但部件无内容,因此退出脚本
    If oPart.MainBody.Shapes.Count = 0 Then
        MsgBox "The PartBody Is Empty Exiting Script."
        End
    End If

    Dim oHybridBodies As HybridBodies
    Set oHybridBodies = oPart.HybridBodies

    Dim oHybridBo

你可能感兴趣的:(CATIA,#,VBA,catia,vba)