Я автоматизирую создание нового продукта с помощью скрипта 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, не имеет значения).