Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CATIA V5自动化与Python脚本_Python_Catia - Fatal编程技术网

CATIA V5自动化与Python脚本

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

我是一名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'
回溯(最近一次呼叫最后一次):
文件“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。