首页 文章

自定义CATIA V5宏以浏览Excel坐标文件和绘图点

提问于
浏览
0

请加上我对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 回答

  • 1

    在启动Catia并获得应用程序后,您需要做的第一件事是创建一个新的Part,您将在其中添加点 .

    Dim MyPartDocument As PartDocument
    Dim MyPart As Part
    Dim PointGeoSet As HybridBody
    Set MyPartDocument = CATIA.Documents.Add("Part")
    Set MyPart = MyPartDocument.Part
    Set PointGeoSet = MyPart.HybridBodies.Add()
    PointGeoSet.Name = "MyPoints"
    

    接下来是使用这样的函数从excel数据创建点 . 我喜欢创建一个包装器,但你可以随意改写它:

    Sub CreateXYZPoint(TargetPart As Part, TargetGeometricalSet As HybridBody, _
                    Xmm As Double, Ymm As Double, Zmm As Double, _
                    PointCount As String)
    Dim HSFactory As HybridShapeFactory
    Dim NewPoint As Point
    
    'get the factory
    Set HSFactory = TargetPart.HybridShapeFactory
    
    'create the point with the factory
    Set NewPoint = HSFactory.AddNewPointCoord(Xmm, Ymm, Zmm)
    
    'Append the point to the geometrical set
    TargetGeometricalSet.AppendHybridShape NewPoint
    
    'rename the point
    NewPoint.Name = "Point." & PointCount
    
    End Sub
    

    你会在你的循环中调用 CreateZYXPoint MyPart, PointGeoSet,x,y,z,cstr(i)

    最后,在循环结束时,您需要更新该部件,以便调用: MyPart.Update

    在程序结束时执行单个更新比在创建每个点后更新要快得多 .

    这应该让你开始 . 请记住,Catia使用毫米作为基本内部单位 . 因此,您的电子表格匹配单位或您必须在调用CreateXYZPoint之前进行单位转换...或者您想要完成该操作 .

    如果这对您有用,请告诉我 .

    Edit: 以下是与上述代码放在一起的代码的链接 . 您需要确保excel代码正常工作,但我插入Catia代码的位置是正确的:http://pastebin.com/vxFcPw52

相关问题