在CATIA中利用VBA读取EXCEL中的数据

标签:
杂谈 |
分类: 学习中哦 |
本程序可以把EXCEL表格中按一定格式存储的点、线、面等数据读取到CATIA并创建相应的对象
'点数据是基本数据,线由点组成,面又由线组成,因此只有填写了点数据后才能添加线数据,
'面与线类似。本程序中默认的扩展数据为关键点处的内力数据,其ID应该与点数据的ID一致。
'下表中具体含义:ID—数据编号,(X,Y,Z)—点数据坐标值,(P1,P2)—组成线的点ID,
'(L1,L2)—组成面的线ID,(M,N,Q)—关键点处弯矩、轴力、剪力的数值。
'程序界面如下:
http://img.blog.163.com/photo/Yor1hGdQwsnEOUN1LqVQfQ==/2577466361739995309.jpg
'注意:表格中的数据区可以为空,每一类数据中只要有一行中出现空值,即认为该
'
'
'
'
'
'
'
'
'默认的EXCLE表格中数据格式如下:
http://img.blog.163.com/photo/S2SKtB5bEnA_2t_fphXomQ==/294985775593319210.jpg
'表格可以扩展,具体格式也可能改变,此时须改变下列常数的值,以保证与表格中的一致
'程序中使用的有关常数定义:
Const Data_Start_Row = 3
Const Point_ID_Col = 1
Const Point_X_Col = 2
Const Point_Y_Col = 3
Const Point_Z_Col = 4
Const Line_ID_Col = 6
Const Line_Point1_Col = 7
Const Line_Point2_Col = 8
Const Mesh_ID_Col = 10
Const Mesh_Line1_Col = 11
Const Mesh_Line2_Col = 12
Const Force_ID_Col = 14
Const Force_M_Col = 15
Const Force_N_Col = 16
Const Force_Q_Col = 17
Dim EXCEL As Object
'*************************************
Private Sub
CreatePoint_CheckBox_Change()
CreateLine_CheckBox.Value = CreatePoint_CheckBox.Value
CreateLine_CheckBox.Enabled = CreatePoint_CheckBox.Value
End Sub
Private Sub
CreateLine_CheckBox_Change()
CreateMesh_CheckBox.Value = CreateLine_CheckBox.Value
CreateMesh_CheckBox.Enabled = CreateLine_CheckBox.Value
End Sub
Private Sub ChooseFile_CommandButton_Click()
On Error GoTo error_1
Set EXCEL = CreateObject("EXCEL.Application", "")
Dim DataFileName As String
DataFileName = EXCEL.GetOpenFilename("EXCEL Files (*.xls),
*.xls")
If DataFileName <> "False" Then
End If
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Function Set_Cur_HybridBody() As HybridBody
On Error GoTo error_1
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
Dim temp_name As String
temp_name =
MainForm_UserForm.ChooseFile_CommandButton.Caption
temp_name = StrConv(Mid(temp_name, InStrRev(temp_name, "") + 1),
1)
k = 0
For N = 1 To hybridBodies1.Count
Next N
If k > 0 Then
End If
Set hybridBody1 = hybridBodies1.Add()
hybridBody1.Name = "DATA FROM EXCEL - " + temp_name
Set Set_Cur_HybridBody =
hybridBody1
'Max = 1
'For n = 1 To hybridBodies1.Count
'
'
'
'
'
'
'
'Next n
Exit Function
error_1:
EXCEL.Quit
End Function
Private Sub CreatePoint(Cur_hybridBody As HybridBody)
'On Error GoTo error_1
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 = Cur_hybridBody.HybridBodies.Add()
hybridBody1.Name = "POINT DATA"
Dim i As Integer
Dim ID As String
Dim X As String
Dim Y As String
Dim Z As String
For i = Data_Start_Row To 1000
Next i
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateLine(Cur_hybridBody As HybridBody)
'On Error GoTo error_1
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 = Cur_hybridBody.HybridBodies.Add()
hybridBody1.Name = "LINE DATA"
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Cur_hybridBody.HybridBodies.Item("POINT
DATA").HybridShapes
Dim i As Integer
Dim ID As String
Dim P1 As String
Dim P2 As String
For i = Data_Start_Row To 1000
Next i
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateMesh(Cur_hybridBody As
HybridBody)
On Error GoTo error_1
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 = Cur_hybridBody.HybridBodies.Add()
hybridBody1.Name = "MESH DATA"
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Cur_hybridBody.HybridBodies.Item("LINE
DATA").HybridShapes
Dim i As Integer
Dim ID As String
Dim L1 As String
Dim L2 As String
For i = Data_Start_Row To 1000
Next i
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateForce_M_CommandButton_Click()
On Error GoTo error_1
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
Dim temp_name As String
temp_name =
MainForm_UserForm.ChooseFile_CommandButton.Caption
temp_name = StrConv(Mid(temp_name, InStrRev(temp_name, "") + 1),
1)
Set hybridBody1 = hybridBodies1.Item("DATA FROM EXCEL - " +
temp_name)
Dim Cur_hybridBody As HybridBody
'******************************************
temp_name = "FORCE-M"
k = 0
For t = 1 To hybridBody1.HybridBodies.Count
Next t
If k > 0 Then
End If
'*******************************************
Set Cur_hybridBody = hybridBody1.HybridBodies.Add()
Cur_hybridBody.Name = temp_name
Dim Ref_hybridBody As HybridBody
Set Ref_hybridBody = hybridBody1.HybridBodies.Item("POINT
DATA")
CreateSpline Cur_hybridBody, Ref_hybridBody
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Ref_hybridBody.HybridShapes
Dim i As Integer
Dim ID As String
Dim M As String
For i = Data_Start_Row To 1000
Next i
Cur_hybridBody.AppendHybridShape
hybridShapeSpline_M
hybridShapeSpline_M.Name = "MIDDLE SPLINE"
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateForce_N_CommandButton_Click()
On Error GoTo error_1
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
Dim temp_name As String
temp_name =
MainForm_UserForm.ChooseFile_CommandButton.Caption
temp_name = StrConv(Mid(temp_name, InStrRev(temp_name, "") + 1),
1)
Set hybridBody1 = hybridBodies1.Item("DATA FROM EXCEL - " +
temp_name)
Dim Cur_hybridBody As HybridBody
'******************************************
temp_name = "FORCE-N"
k = 0
For t = 1 To hybridBody1.HybridBodies.Count
Next t
If k > 0 Then
End If
'*******************************************
Set Cur_hybridBody = hybridBody1.HybridBodies.Add()
Cur_hybridBody.Name = temp_name
Dim Ref_hybridBody As HybridBody
Set Ref_hybridBody = hybridBody1.HybridBodies.Item("POINT
DATA")
CreateSpline Cur_hybridBody, Ref_hybridBody
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Ref_hybridBody.HybridShapes
Dim i As Integer
Dim ID As String
Dim N As String
For i = Data_Start_Row To 1000
Next i
Cur_hybridBody.AppendHybridShape
hybridShapeSpline_N
hybridShapeSpline_N.Name = "MIDDLE SPLINE"
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateForce_Q_CommandButton_Click()
On Error GoTo error_1
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
Dim temp_name As String
temp_name =
MainForm_UserForm.ChooseFile_CommandButton.Caption
temp_name = StrConv(Mid(temp_name, InStrRev(temp_name, "") + 1),
1)
Set hybridBody1 = hybridBodies1.Item("DATA FROM EXCEL - " +
temp_name)
Dim Cur_hybridBody As HybridBody
'******************************************
temp_name = "FORCE-Q"
k = 0
For t = 1 To hybridBody1.HybridBodies.Count
Next t
If k > 0 Then
End If
'*******************************************
Set Cur_hybridBody = hybridBody1.HybridBodies.Add()
Cur_hybridBody.Name = temp_name
Dim Ref_hybridBody As HybridBody
Set Ref_hybridBody = hybridBody1.HybridBodies.Item("POINT
DATA")
CreateSpline Cur_hybridBody, Ref_hybridBody
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Ref_hybridBody.HybridShapes
Dim i As Integer
Dim ID As String
Dim Q As String
For i = Data_Start_Row To 1000
Next i
Cur_hybridBody.AppendHybridShape
hybridShapeSpline_Q
hybridShapeSpline_Q.Name = "MIDDLE SPLINE"
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub CreateSpline(Cur_hybridBody As
HybridBody, Ref_hybridBody As HybridBody)
On Error GoTo error_1
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 = Cur_hybridBody
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = Ref_hybridBody.HybridShapes
Dim i As Integer
Dim ID As String
For i = Data_Start_Row To 1000
Next i
hybridBody1.AppendHybridShape hybridShapeSpline1
hybridShapeSpline1.Name = "MIDDLE SPLINE"
part1.Update
Exit Sub
error_1:
EXCEL.Quit
End Sub
Private Sub UserForm_Terminate()
On Error Resume Next
EXCEL.Quit
End Sub
'************程序中存在相似函数并未简化<nuaa_wjz
2007-02-28>********
'*************通过运行"工具"-》"宏"得到结果如下:
http://img.blog.163.com/photo/Soa8OCK0jFSWEhBoiTtOMA==/3967108321760452014.jpg
喜欢
0
赠金笔