前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CATIA VB.net案例——窗口操作

CATIA VB.net案例——窗口操作

原创
作者头像
Arya
发布于 2025-01-23 05:45:34
发布于 2025-01-23 05:45:34
1390
举报
文章被收录于专栏:后端开发专栏后端开发专栏

CATIA VB.net案例——窗口操作

窗口操作案例

窗口操作的案例,在CATIA开发的时候,可能会在测试代码的时候新建很多零件,这时候一个一个关就非常耗时耗力,很烦。所以就要进行一键关闭,如果想保留当前窗口而关闭其他窗口,就要关闭除当前窗口以外的其他窗口;如果开发半天,最终还是没有开发出来,那就干脆一键毫不留情退出,砸了电脑。

在vba下初始化catia的相关代码

vb.net环境下报错的解决

在catia下进行窗口的切换,鼠标点击窗口,可以切换到其他窗口

1.页面设计

在vb.net环境下创建窗口,放置以下3个按钮,分别是一键关闭所有窗体,关闭当前以外其他窗体,退出CATIA

2.一键关闭所有窗体

忽略报错,直接关闭所有窗体的方式,使用On Error Resume Next

3.关闭当前以外其他的窗体

根据当前窗口的名字进行判断,然后关闭其他窗体

4.退出catia

退出catia,用catia.quit方法

5.完整代码

model

代码语言:java
AI代码解释
复制
Imports MECMOD
Imports PARTITF
Imports HybridShapeTypeLib

Module Module1
    Public CATIA As INFITF.Application
    Public oPartDoc As PartDocument
    Public oPart As Part
    Public oBodies As Bodies
    Public oBody As Body
    Public oHBodies As HybridBodies
    Public oHBody As HybridBody
    Public oSF As ShapeFactory
    Public oHSF As HybridShapeFactory


    ' ***********************************************************************
    '   目的:      初始化CATIA产品文档,并初始化必要的基本变量
    '
    '   输入:      bNewProduct:   初始化时是否新建产品文件
    '                              可选,默认新建文件
    '               strProduct:    初始化时是否打开已经存在的产品文件
    '                              可选,默认新建文件
    ' ***********************************************************************
    Sub InitCATIAPart(Optional ByVal bNewPart As Boolean = True,
                      Optional ByVal strPart As String = "")
        On Error Resume Next '有错误的话会忽略,继续执行下一句 
        ' 如果打开catia,就获取当前的这个

        CATIA = GetObject(, "CATIA.Application")
        If Err.Number <> 0 Then
            ' 如果没有打开catia,则打开新的catia
            CATIA = CreateObject("CATIA.Application")
            CATIA.Visible = True
        End If

        If bNewPart Then
            oPartDoc = CATIA.Documents.Add("Part")
        Else
            If strPart = "" Then
                oPartDoc = CATIA.ActiveDocument
                If oPartDoc Is Nothing Then
                    Err.Clear()
                    oPartDoc = CATIA.Documents.Add("Part")
                End If
            Else
                If Dir(strPart) <> "" Then
                    oPartDoc = CATIA.Documents.Open(strPart)
                Else
                    MsgBox("指定的文件不存在!")
                    End
                End If
            End If
        End If


        On Error GoTo 0

        oPartDoc = CATIA.ActiveDocument
        oPart = oPartDoc.Part
        oBodies = oPart.Bodies
        oBody = oBodies.Item(1)
        oHBodies = oPart.HybridBodies
        oHBody = oHBodies.Add()
        oSF = oPart.ShapeFactory
        oHSF = oPart.HybridShapeFactory

    End Sub


    ' --------------------------------------------------------------
    ' 窗口属性设定API声明
    ' --------------------------------------------------------------
    Private Declare Function SetWindowPos Lib "user32" (
                                    ByVal hwnd As Long,
                                    ByVal hWndInsertAfter As Long,
                                    ByVal x As Long, ByVal y As Long,
                                    ByVal cx As Long, ByVal cy As Long,
                                    ByVal wFlags As Long) As Long
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2

    ' ***********************************************************************
    '   目的:      设置窗口使其始终在其它窗口上面
    '
    '   输入:      iHwnd:    要设置的窗口句柄
    '               bOnTop:   设置或取消窗口的置顶属性
    '                         可选,默认为真
    ' ***********************************************************************
    Sub MakeMeOnTop(iHwnd As Long, Optional bOnTop As Boolean = True)

        If bOnTop Then
            SetWindowPos(iHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE)
        Else
            SetWindowPos(iHwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE)
        End If

    End Sub


End Module

form

代码语言:java
AI代码解释
复制
Imports MECMOD
Imports HybridShapeTypeLib
Imports INFITF

Public Class Form1

    ' 窗体初始化的函数
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        On Error Resume Next '有错误的话会忽略,继续执行下一句 
        ' 如果打开catia,就获取当前的这个

        CATIA = GetObject(, "CATIA.Application")
        If Err.Number <> 0 Then
            ' 如果没有打开catia,则打开新的catia
            CATIA = CreateObject("CATIA.Application")
            CATIA.Visible = True
        End If
        On Error GoTo 0

        ' 让catia始终在最上层
        MakeMeOnTop(Me.Handle, True)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        On Error Resume Next
        For i = 1 To 25
            CATIA.ActiveDocument.Close()
        Next
        On Error GoTo 0
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        On Error Resume Next
        Dim m As String = CATIA.ActiveDocument.Name

        For Each doc In CATIA.Documents
            If doc.Name <> m Then
                doc.close()
            End If
        Next

        On Error GoTo 0
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        CATIA.Quit()
    End Sub
End Class

总结

使用VB.NET与CATIA进行集成和编程,可以遵循以下基本步骤:

设置开发环境:

  • 确保已安装CATIA V5或更高版本。
  • Windows上安装Visual Studio,并选择VB.NET作为编程语言。

添加COM引用:

  • 在Visual Studio中创建新的VB.NET项目。
  • 通过“项目” > “添加引用” > “COM”选项卡,找到并添加CATIA的COM库引用。通常是“CATIA V5 Interfaces”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档