首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python实现CATIA V5自动化

用Python实现CATIA V5自动化
EN

Stack Overflow用户
提问于 2018-01-09 04:28:52
回答 1查看 9.6K关注 0票数 2

我是个Python初学者,我正试图用它来实现CATIA ( despite pacakge)的自动化,但是我遇到了一个问题,尽管我已经广泛地搜索了一个解决方案,但一直无法解决这个问题。

我试图模仿这个VBA宏的行为,它是在CATIA的本机编辑器界面中编写的:

代码语言:javascript
复制
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脚本:

代码语言:javascript
复制
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循环中的最后一个操作外,所有操作都正常工作,后者返回错误:

代码语言:javascript
复制
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 ),但据我所知,这不会影响脚本行为。

我未能成功地排除错误,因为我所能找到的一切都表明对象应该具有属性SetFormatPrecision.我尝试了许多其他的属性,这些属性也应该有,但没有一个能起作用。因为我试图对COM对象进行操作,所以我不知道如何获得法律属性的全面列表,也不知道如何获取存储在aDimValue中的对象类型的任何信息。

我检查了SetFormatPrecisionmakepy输出文件,它确实包含了一个函数定义,所以我猜我有一个语法问题,但是我不知道它是什么。

我知道这是一个焦点很窄的问题,但我希望了解CATIA对象库的人能看到这一点。虽然我并不期待,但如果有人想要多走一步,这里有关于CATIA对象库的文档:

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

起草>起草参考> DrawingDimValue

为了获得特定的对象,我认为我正在使用aDimValue

任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-01-23 16:53:25

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48161447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档