首页 > 解决方案 > 如何通过 VBscript 获取 CAD 零件的位置?

问题描述

我想编写一个 VBScript,它输出 CAD 零件的位置 (x,y,z)。输入应该是零件号。这是我尝试过的。

Sub CATMain()

    dim pos(11)
    for n = 1 to CATIA.Documents.Count
        set Dokument = CATIA.Documents.Item(n)
        for i = 1 to Dokument.product.products.Count
            set InstDokument = Dokument.product.products.item(i)
            If InstDokument = "my_part" Then
                msgbox InstDokument.Name
                InstDokument.Position.GetComponents pos
                msgbox "Origin Point: X= " &pos(9) &" Y= " &pos(10) &" Z= " &pos(11)
            End If
        next
    next
End Sub

我在第 8 行第 2 列出现错误。对象没有属性或方法。:Dokument.product 我该如何解决?

标签: vbscriptcadcatia

解决方案


您的代码有几个问题。

根源大概是这样的:

set Dokument = CATIA.Documents.Item(n)

CATIA 文档集合将包含许多没有窗口的文档,并且 CATIA 应用程序为它自己的各种内部目的而维护这些文档。因此,不能保证 CATIA.Documents.Item(n) 实际上包含 CATProduct。

在大多数情况下,人们对当前的活动文档感兴趣,它的检索方式如下:

Set Dokument = CATIA.ActiveDocument

否则你可以测试一下

Set Dokument = CATIA.Documents.Item(n)
if typename(Dokument) = "ProductDocument" Then ...

即使在那之后你也有问题。您正在将 Document 对象与字符串进行比较......以及其他内容。同样,如果没有递归,如果目标实例比第一级更深,您可能永远找不到目标实例。与“阅读树”相比,搜索也可能是找到您的实例的更好方法。

一旦您纠正了所有基础设施错误,您获取转换矩阵的方法基本上是正确的。


推荐阅读