窗口操作的案例,在CATIA开发的时候,可能会在测试代码的时候新建很多零件,这时候一个一个关就非常耗时耗力,很烦。所以就要进行一键关闭,如果想保留当前窗口而关闭其他窗口,就要关闭除当前窗口以外的其他窗口;如果开发半天,最终还是没有开发出来,那就干脆一键毫不留情退出,砸了电脑。
在vba下初始化catia的相关代码
vb.net环境下报错的解决
在catia下进行窗口的切换,鼠标点击窗口,可以切换到其他窗口
在vb.net环境下创建窗口,放置以下3个按钮,分别是一键关闭所有窗体,关闭当前以外其他窗体,退出CATIA
忽略报错,直接关闭所有窗体的方式,使用On Error Resume Next
根据当前窗口的名字进行判断,然后关闭其他窗体
退出catia,用catia.quit方法
model
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
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进行集成和编程,可以遵循以下基本步骤:
设置开发环境:
添加COM引用:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有