使用Python脚本的CATIA V5自动化

时间:2018-01-09 04:28:53

标签: python catia

我是Python的初学者,我正试图用CATIA(Dassault Systemes CAD pacakge)进行一些自动化,但是我遇到了一个问题,即使我搜索过,我也无法解决广泛的解决方案。

我试图模仿在CATIAs本机编辑器界面中编写的此VBA宏的行为:

Sub CATMain()

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = drawingDocument1.Selection

selection1.Search "CATDrwSearch.DrwDimension,all"

For i = 1 To selection1.Count

Dim Dimension1 As DrawingDimension
Set Dimension1 = selection1.Item(i).Value

Dim DimDimValue As DrawingDimValue
Set DimDimValue = Dimension1.GetValue

DimDimValue.SetFormatPrecision 1, 0.001

Next

selection1.Clear

End Sub

为此,我编写了这个Python脚本:

import win32com.client

CATIA = win32com.client.Dispatch('CATIA.Application')

ad = CATIA.ActiveDocument
sel = ad.Selection
sel.Search("CATDrwSearch.DrwDimension,all")

for i in range(1, sel.Count2+1):
    aDim = sel.Item2(i).Value
    aDimValue = aDim.GetValue
    aDimValue.SetFormatPrecision(1,0.001)

sel.Clear

除了返回错误的for循环中的最后一个操作外,一切都有效:

Traceback (most recent call last):
<bound method DrawingDimension.GetValue of <win32com.gen_py.CATIA V5 
DraftingInterfaces Object Library.DrawingDimension instance at 0x67582896>>
File "C:/...", line 15, in <module>
aDimValue.SetFormatPrecision(1,0.001)
AttributeError: 'function' object has no attribute 'SetFormatPrecision'

请注意,我使用 makepy 来提前绑定COM对象,否则Python无法识别它(返回COMObject [unknown]),但据我所知,不应该影响脚本行为。

我无法成功解决错误,因为我能找到的所有内容都表明对象应该具有属性 SetFormatPrecision 。我已经尝试过它应该拥有的一堆其他属性,但它们都不起作用。因为我试图操作COM对象,所以我不知道如何获得合法属性的综合列表,或者获取有关我存储的对象类型的任何信息的方法。强> aDimValue

我检查了 makepy 输出文件,它确实包含了 SetFormatPrecision 的函数定义,所以我的猜测是我有语法问题,但是我在失去了它是什么。

我知道这是一个狭隘的问题,但我希望有人了解CATIA对象库的人会看到这个问题。虽然我不期望它,如果有人想要加倍努力,那里有关于CATIAs对象库的文档:

http://catiadoc.free.fr/online/CAAScdBase/CAAScdAutomationHome.htm

起草&gt;起草参考&gt; DrawingDimValue

获取我认为我在 aDimValue

中工作的特定对象

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

aDim.GetValue返回函数对象,而不是调用函数。使用aDim.GetValue()。与最后一行的sel.Clear()相同。