Python中文
首页
教程
问答
标签
搜索
登录
注册
如何使用自己创建的CATIA V5自动化接口与Python?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我为catiav5创建了自己的自动化接口。我的接口实现了一个<strong>CAA</strong>接口。 下面是<strong>SetComment</strong>方法的示例实现。CAIAinterface是个假名字</p> <pre><code>// MyXYZClass : SetComment HRESULT MyXYZClass::SetComment( CATISpecObject_var ispObject, const CATBSTR &irComment ) { CAAInterface_var spInfo = ispObject; if( !!spInfo ) { CATUnicodeString commentToSet; commentToSet.BuildFromBSTR( irComment ); spInfo->SetComment( commentToSet ); } return S_OK; } </code></pre> <p>我在CATIA环境中使用<strong>CATScript</strong>进行了测试:</p> ^{pr2}$ <p>而且效果很好。 相应的CATIA文件 <a href="https://i.stack.imgur.com/dAiBh.png" rel="nofollow noreferrer">enter image description here</a></p> <p>另外,我创建了visualstudio<strong>VB</strong>项目,添加了引用->COM->类型库(我的CATIA V5 MyXYZAutInterf。如果CATIA正在运行,我可以看到它)。在</p> <pre><code>Imports System.Runtime.InteropServices Imports MyXYZAutInterf Imports MECMOD Imports ProductStructureTypeLib ' attach catia Sub Main() ' retrieve ASMPRODUCT of Part or Product Dim product As Product product = CATIA.ActiveDocument.Product ' Retrieve My Factory of Document Dim myFact As MyFactoryVB myFact = product ' Retrieve Object as part Dim part1 As Part part1 = CATIA.ActiveDocument.Part ' Find object by Name Dim myObject As AnyObject myObject = part1.FindObjectByName("Pad.1") ' SetComment myFact.SetComment(myObject, "comment") End Sub </code></pre> <p>而且效果也很好。在</p> <p>现在我想使用我的自动化接口与<strong>Python</strong></p> <pre><code># First I generated wrapper code for my type library import sys if not hasattr(sys, "frozen"): from comtypes.client import GetModule GetModule("C:/..//MyXYZTypeLib.tlb") #load my module from comtypes.gen import MyXYZAutInterf as myModul # myModul -> MyFactoryVB -- <unbound method MyFactoryVB.SetComment> # Connecting to windows COM catapp = win32com.client.Dispatch("CATIA.Application") documents1 = catapp.Documents partDocument1 = documents1.Item("Part.CATPart") part1 = partDocument1.Part bodies1 = part1.Bodies body1 = bodies1.Item("PartBody") shapes1 = body1.Shapes shape1 = shapes1.Item("Pad.1") myFact = myModul.MyFactoryVB() # now I can see all my implemented methods under _methods_ </code></pre> <p>但现在我无法使用我的事实。 如果我这样做:</p> <pre><code>myFact.SetComment(shape1, "comment") </code></pre> <p>我得到<strong>错误</strong>:需要一个COM this指针作为第一个参数。 我应该将我的事实分配给产品(如CATScript):</p> <pre><code>product1 = catapp.ActiveDocument.Product myFact = product1 </code></pre> <p>但我也得到了<strong>错误</strong>:未知.SetComment. 我真的很沮丧。有人能帮帮我吗,<strong>请</strong>?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我修好了。我使用了GetCustomerFactory(“ALIAS_NAME”)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
从Django temp访问容器的方法
8 回答
从Django temp请求ModelForm实例
10 回答
从Django temp返回JSON
1 回答
从Django timesince模板等效项中删除尾部数据
9 回答
从Django timesin删除尾随数据
6 回答
从Django UpdateView模板下载文件
2 回答
从Django url传递“start”会出现错误“start()只接受2个参数(给定1个)”
7 回答
从Django url运行的websockets错误:RuntimeError:线程“Dummy1”中没有当前事件循环
9 回答
从Django user mod获取用户全名
4 回答
从Django UserCreateForm中删除帮助文本
1 回答
从Django values()获取外键值
8 回答
从Django vi中的按钮获取click事件
5 回答
从Django vi从HttpResponse检索JSON
2 回答
从Django vi以json形式返回的数据中检索元素
2 回答
从Django vi取消或取消eventlet中的芹菜任务
9 回答
从Django vi启动多核后台进程
2 回答
从Django vi开始
4 回答
从Django Vi构建HTML
4 回答
从Django vi访问进程数据
9 回答
从Django vi调用pysnmp发送超时
10 回答