【问题标题】:Customized CATIA V5 Macro to browse Excel coordinate file & plot points自定义 CATIA V5 宏来浏览 Excel 坐标文件和绘图点
【发布时间】:2014-05-30 15:08:55
【问题描述】:

请原谅我对 CATIA VBA 的了解有限。 我在自定义 CATIA V5 宏以浏览 Excel 坐标点并在 CATIA 中绘制它时遇到了一些困难,只需单击自定义的 CATIA 图标即可。

  1. 我有一个包含许多 XYZ 坐标的 Excel 文件,我们称之为 ExcelP1 (excel文件中没有脚本/宏),我想开发 CATIA 中的一个宏,用于从 ExcelP1 读取和绘制点。
  2. 目前我有另一个“带有宏的 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 中运行,我需要添加/修改什么?

【问题讨论】:

  • 您是否尝试过从 Catia 中创建宏并以这种方式导入或读取 excel 文件?这是一个非常直接的操作。此外,读取 CSV 文件更容易读入 Catia VBA 宏。否则,您需要将 catia vba 库添加到您的 excel vba 项目中。我的建议是从 Catia 开始,然后将数据拉入,除非您有特殊需要留在 excel 中。
  • 嗨 GisMofx,我正在尝试在 CATIA(IN 进程)中创建一个宏来浏览 excel 文件并绘制点。运行之前在 Excel 中发布的脚本并在 CATIA(OUT 进程)中绘制点,我没有问题。我的目的是在 excel 中创建一个自定义图标,它将浏览和读取点表 excel。对不起,我对 CATIA vba 的知识非常有限,希望在这里得到一些指导。干杯
  • 好吧,你的评论很混乱...Catia Macro In Process ..你需要获取excel对象:Set myEXCEL = GetObject(, "EXCEL.Application")Set myEXCEL = New Excel.Application '= CreateObject("Excel.Application")你只是想知道在 Catia 脚本中创建点的正确方法吗?如果是,我可以帮助您使用代码 sn-p 来创建积分。
  • 我很抱歉混淆了评论。是的,请告诉我。谢谢
  • 谢谢。会做。我将根据您上面的代码帮助您提供子 CreatePoint 的代码。

标签: vba catia


【解决方案1】:

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

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 之前进行单位转换......或者您想要完成此操作。

让我知道这是否适合你。

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

【讨论】:

  • 感谢 GisMofx 提供这个 sn-p...如果你能在导入文件和创建点的代码上显示就太好了。请原谅我的 VBA 知识很差……我正在努力赶上它。百万感谢
  • @IMch 我已经更新并在我的回复中添加了一个链接,并结合了代码。应该清楚的是,我在代码底部添加了新的 Sub,并在您从 excel 中读取点数据后插入了调用。只要您的 excel 代码正常工作,Catia 调用就应该可以正常工作。
  • @IMch 这解决了您的问题吗?如果是这样,您能否将其标记为已接受的答案?否则,如果您对此有任何其他问题,请告诉我。
  • 您好 GisMofx,感谢您提供代码,但代码在 CATIA VBA(进程中)中不起作用。
  • 嗨 GisMofx,私有子 UserForm_Initialize()
猜你喜欢
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多