我正在使用 Python 脚本自动创建新产品,并且遇到了交互事件卡在“部件号”对话框中的问题。创建新零件时不会发生这种情况,而只是创建新产品。这是脚本的适用部分(CATIA 已打开):
import win32com.client.dynamic
CATIA = win32com.client.Dispatch("CATIA.Application")
catDocs = CATIA.Documents
# Create a new product
newProductDoc = catDocs.Add("Product")
# "Part Number" window appears, requesting a name for the product
# Interactive processes will not proceed
newProduct = newProductDoc.Product
newProductSet = newProduct.Products
newPart = newProductSet.AddNewComponent("Part", "dummyPart")
...
问题是我正在开发一个小工具供其他人使用,如果挂了它就不是很有用。
单击“取消”会消除对话框,但之后不会发生任何交互操作。单击“确定”可以解决问题,但最好让脚本能够在没有交互的情况下将产品准备为最终结果,以限制用户错误并提高易用性。
我知道我可以创建一个产品并对其进行操作(即添加零件、添加新产品等),然后成功保存它。所以进程正在执行,它们只是不再显示。我似乎无法找到通过“零件编号”对话框的方法。我什至尝试以编程方式命名它,这有效但没有杀死对话框。
打开现有产品效果很好,任何脚本过程都可以继续进行而不会出现问题。但是,以编程方式创建产品、保存和关闭会导致 CATIA 锁定……因此,作为现有产品保存和重新打开的选项不在窗口中。
我还引用了 v5Automation.chm,但我找不到与对话框交互的方法。
我还尝试.Update()
了新产品及其零件。其他一些保证是CATIA.Visible = True
和CATIA.RefreshDisplay = True
。
免责声明: 我知道可以使用 VBA 并且不会造成此问题。我正在寻找使用 Python(2 或 3,没关系)解决此问题的方法。