请加上我对CATIA VBA的有限知识 . 我在定制CATIA V5宏以浏览Excel坐标点并在CATIA中绘制它时遇到一些困难,只需单击自定义的CATIA图标即可 .
-
我有一个带有许多XYZ坐标的Excel文件,我们称之为ExcelP1(excel文件中没有脚本/宏),我想在CATIA中开发一个宏来读取和绘制ExcelP1中的点 .
-
目前我有另一个“带宏的Excel文件”来浏览ExcelP1,并在CATIA中绘制点 . 但我需要首先打开并运行“带宏的Excel文件”来启动CATIA . 脚本如下(我没有开发这个)
Public Filename As String
Private Sub Browse_Click()
'Open File
Mainform.Hide
Filename = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
If Filename <> "False" Then
Application.Visible = False
filenamebox.Value = Filename
Else
Application.Visible = False
Filename = filenamebox.Value
End If
Mainform.Show
End Sub
Private Sub ClearButton_Click()
Mainform.Hide
ActiveWorkbook.Close (False)
Application.Visible = False
End Sub
Private Sub OKButton_Click()
'Set Up Message Labels
Title = "Information Message"
'Check for Entered Values
If filenamebox.Value <> "" Then
Workbooks.Open Filename:=Filename
Application.Visible = False
'Start CATIA and add an Open body to the document
Start_CATIA
Mainform.Hide
'Read Point Data from file and create point in CATIA
i = 2
Do Until Worksheets("Sheet1").Range("a" & i).Value = ""
x = Worksheets("Sheet1").Range("a" & i).Value
y = Worksheets("Sheet1").Range("b" & i).Value
z = Worksheets("Sheet1").Range("c" & i).Value
Create_Point
i = i + 1
Loop
i = i - 2
MsgBox i & " Points Created in New Part", , Title
Else
MsgBox "Enter a Filename", , Title
End If
ActiveWorkbook.Close (False)
Mainform.Show
End Sub
Private Sub UserForm_Initialize()
If Worksheets("Filepath_Location").Range("a1").Value <> "" Then
Filename = Worksheets("Filepath_Location").Range("a1").Value
filenamebox.Value = Filename
End If
End Sub
为了使脚本在CATIA中运行,我需要添加/修改什么?
1 回答
在启动Catia并获得应用程序后,您需要做的第一件事是创建一个新的Part,您将在其中添加点 .
接下来是使用这样的函数从excel数据创建点 . 我喜欢创建一个包装器,但你可以随意改写它:
你会在你的循环中调用
CreateZYXPoint MyPart, PointGeoSet,x,y,z,cstr(i)
最后,在循环结束时,您需要更新该部件,以便调用:
MyPart.Update
在程序结束时执行单个更新比在创建每个点后更新要快得多 .
这应该让你开始 . 请记住,Catia使用毫米作为基本内部单位 . 因此,您的电子表格匹配单位或您必须在调用CreateXYZPoint之前进行单位转换...或者您想要完成该操作 .
如果这对您有用,请告诉我 .
Edit: 以下是与上述代码放在一起的代码的链接 . 您需要确保excel代码正常工作,但我插入Catia代码的位置是正确的:http://pastebin.com/vxFcPw52