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

如何通过VBscript获取CAD零件的位置?,vbscript,cad,catia,Vbscript,Cad,Catia,我想写一个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 =

我想写一个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文档集合将包含许多没有窗口的文档,CATIA应用程序维护这些文档是为了其自身的各种内部目的。因此不能保证CATIA.Documents.Item(n)实际上包含CATProduct

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

Set Dokument = CATIA.ActiveDocument
否则,您可以测试它

Set Dokument = CATIA.Documents.Item(n)
if typename(Dokument) = "ProductDocument" Then ...
即使在那之后你也有问题。您正在将文档对象与字符串进行比较。。。等等。同样,如果没有递归,如果目标实例比第一级更深,则可能永远也找不到它。搜索可能是比“阅读树”更好的查找实例的方法

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