CATIA V5自动化与Python脚本
我是一名Python初学者,正在尝试用它在CATIA(Dassault Systemes CAD pacakge)中实现一些自动化,但我遇到了一个问题,尽管我在广泛地搜索解决方案,但仍然无法解决这个问题 我试图模拟在CATIAs本机编辑器界面中编写的VBA宏的行为:CATIA V5自动化与Python脚本,python,catia,Python,Catia,我是一名Python初学者,正在尝试用它在CATIA(Dassault Systemes CAD pacakge)中实现一些自动化,但我遇到了一个问题,尽管我在广泛地搜索解决方案,但仍然无法解决这个问题 我试图模拟在CATIAs本机编辑器界面中编写的VBA宏的行为: Sub CATMain() Dim drawingDocument1 As DrawingDocument Set drawingDocument1 = CATIA.ActiveDocument Dim selection1 A
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'
回溯(最近一次呼叫最后一次):
文件“C:/…”,第15行,在
aDimValue.SetFormatPrecision(1,0.001)
AttributeError:“函数”对象没有属性“SetFormatPrecision”
请注意,我使用了makepy提前绑定COM对象,否则Python无法识别它(返回COMObject[unknown]),但据我所知,这不会影响脚本行为
我无法成功地排除错误,因为我所能找到的一切都表明该对象应该具有属性SetFormatPrecision。我也尝试过其他一些属性,但都不起作用。因为我试图对COM对象进行操作,所以我不知道如何获取法律属性的综合列表,也不知道如何获取存储在aDimValue中的对象类型的任何信息
我检查了makepy输出文件,它确实包含SetFormatPrecision的函数定义,所以我猜我有语法问题,但我不知道它是什么
我知道这是一个狭隘的问题,但我希望了解CATIA对象库的人能看到这一点。尽管我并不期待,但如果有人想多做一点,这里有关于CATIAs对象库的文档:
绘图>绘图参考>绘图尺寸值
在aDimValue
感谢您的帮助。谢谢。aDim.GetValue返回函数对象,而不是调用函数。使用aDim.GetValue()。最后一行的
sel.Clear()
也一样。只是为了确保。。VBA代码工作正常,对吗?是的,VBA脚本工作正常。同样,Python脚本模仿它,只是尝试使用SetFormatPrecision。