Мне нужно написать макрос в Catia 5. Моя цель - преобразовать файлы cgm в png с желаемым цветом фона и с желаемым разрешением. Вручную я делаю это с помощью Capture->image->options(установка разрешения и цвета фона)->сохранить как .
Мне нужно сделать это макросом.
Я могу открыть окно Capture с помощью CATIA.StartCommand "Capture" но не может продолжать дальше. Как я могу продолжить?
Заранее спасибо.
КАК МЫ МОЖЕМ ИСПОЛЬЗОВАТЬ КОМАНДЫ, КОТОРЫЕ ПРЕДОСТАВЛЯЮТСЯ В БРАУЗЕРЕ ОБЪЕКТОВ В МАКРОСЕ? Я НАПРЯМУЮ ПИШУ ЭТО, НО НЕ РАБОТАЕТ.
@ferdo Здравствуйте, спасибо за ваш ответ. Проблема с вашим ответом в том, что мы не можем настроить разрешение.
У вас также есть CatPrintQuality и Viewer (Object)
@ferdo большое спасибо за вашу помощь. попробую в понедельник. Отличная информация.
@ferdo Здравствуйте, я только что попробовал CatPrintQuality, но не могу этого сделать. Можешь конкретно напечатать мне как написать именно команду в макрос?





К сожалению, команда Захватывать недоступна через API макросов. Однако я успешно использовал этот обходной путь:
Sub CaptureViewport(strFileName As String, Optional intWidth As Integer = 1024, Optional intHeight As Integer = 1024)
Dim objWindow As SpecsAndGeomWindow
Dim objViewer As Variant ' Viewer3D
Dim objCamera As Camera3D
Dim objViewpoint As Variant ' Viewpoint3D
Dim arrOldBackgroundColor(2) As Variant
Dim intOldRenderingMode As CatRenderingMode
Dim intOldLayout As CatSpecsAndGeomWindowLayout
Set objWindow = CATIA.ActiveWindow
Set objCamera = CATIA.ActiveDocument.Cameras.Item(1)
Set objViewer = objWindow.ActiveViewer
Set objViewpoint = objViewer.Viewpoint3D
objViewer.GetBackgroundColor arrOldBackgroundColor
intOldRenderingMode = objViewer.RenderingMode
intOldLayout = objWindow.Layout
' This might be extended to record the old window dimensions as well
objViewer.FullScreen = False
objViewer.PutBackgroundColor Array(1, 1, 1) ' White
objViewer.RenderingMode = catRenderShadingWithEdges
objWindow.Layout = catWindowGeomOnly
objWindow.Width = intWidth
objWindow.Height = intHeight
objViewpoint.PutSightDirection Array(-1, -1, -1) ' Isometric
objViewpoint.PutUpDirection Array(0, 0, 1)
objViewpoint.ProjectionMode = catProjectionCylindric ' Parallel projection
objViewer.Reframe
' Without this, the picture is not always sized correctly
CATIA.RefreshDisplay = True
objViewer.Update
objViewer.CaptureToFile catCaptureFormatBMP, strFileName
CATIA.RefreshDisplay = False
objViewer.PutBackgroundColor arrOldBackgroundColor
objViewer.RenderingMode = intOldRenderingMode
objWindow.Layout = intOldLayout
' This might be extended to restore the old window dimensions as well
End Sub
Он работает, временно изменяя цвет фона (среди прочего, например, видимость дерева, режим рендеринга и настройки камеры) и используя метод CaptureToFile. Изменяя размер окна, вы также изменяете размеры захваченного изображения. К сожалению, он не может записывать в формат PNG (хотя интерактивный инструмент Захватывать может). Эта версия вместо этого записывает в BMP. Режим JPEG чрезмерно сжимает изображение и непригоден для использования. Компас будет виден на снимках, снятых с помощью этого макроса, если он включен в интерактивном сеансе.
Вы проверяли документацию по автоматизации CATIA? Если нет, проверьте ключевые слова CaptureToFile и Get/PutBackgroundColor.