如何通过 VBscript 获取 CAD 零件的位置?

How can I get the position of a CAD part via VBscript?

我想写一个 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 我该如何解决?

您的代码有几个问题。

根大概是这样的:

set Dokument = CATIA.Documents.Item(n)

CATIA 文档集合将包含许多 windows 没有的文档,CATIA 应用程序为其自身的各种内部目的维护这些文档。所以不能保证 CATIA.Documents.Item(n) 实际上包含一个 CATProduct.

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

Set Dokument = CATIA.ActiveDocument

否则你可以测试一下

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

即使在那之后你也有问题。您正在将 Document 对象与字符串进行比较……以及其他内容。同样,如果没有递归,如果目标实例比第一层更深,您可能永远找不到目标实例。也有可能搜索比 "Reading the tree" 更能找到您的实例。

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