我正在使用 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
and CATIA.RefreshDisplay = True
.
免责声明:我知道可以用VBA,不会出现这个问题。我正在寻找使用 Python 解决这个问题的方法(2 或 3,并不重要)。