Я пытаюсь имитировать поведение этого макроса VBA, написанного в собственном интерфейсе редактора CATIA:
Код: Выделить всё
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
Код: Выделить всё
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
Код: Выделить всё
Traceback (most recent call last):
File "C:/...", line 15, in
aDimValue.SetFormatPrecision(1,0.001)
AttributeError: 'function' object has no attribute 'SetFormatPrecision'
Мне не удалось успешно устранить эту ошибку, поскольку все, что я могу найти, предполагает, что объект должен иметь атрибут SetFormatPrecision. . Я перепробовал кучу других атрибутов, которые у него тоже должны быть, но ни один из них не работает. Поскольку я пытаюсь работать с COM-объектом, я не знаю, как получить полный список допустимых атрибутов или как получить какую-либо информацию о типе объекта, который я сохранил в aDimValue
Я проверил выходной файл makepy и обнаружил, что он содержит определение функции для SetFormatPrecision, так что я предполагаю, что у меня есть проблема с синтаксисом, но я не понимаю, что это такое.
Я знаю, что это узконаправленный вопрос, но я надеюсь, что кто-нибудь, знакомый с библиотеками объектов CATIA, увидит это. И хотя я этого не ожидаю, если кто-то захочет приложить дополнительные усилия, здесь есть документация по библиотекам объектов CATIA:
http://catiadoc.free.fr/online/CAAScdBase /CAAScdAutomationHome.htm
Чертеж > Справочник по черчению > DrawingDimValue
, чтобы перейти к конкретному объекту, который, как я думаю, я работа с aDimValue
Подробнее здесь: https://stackoverflow.com/questions/481 ... hon-script