如何通过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 我该怎么解决?

lyypf12 回答:如何通过VBscript获得CAD零件的位置?

您的代码有几个问题。

在根本上可能是这样:

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对象与字符串...等进行比较。同样,如果没有递归,您可能永远找不到目标实例,如果它比第一层更深。搜索也可能是比“读取树”更好的查找实例的方式。

更正了所有基础结构错误之后,获取转换矩阵的方法基本上是正确的。

本文链接:https://www.f2er.com/2992236.html

大家都在问