Захват макроса в Catia 5

Мне нужно написать макрос в Catia 5. Моя цель - преобразовать файлы cgm в png с желаемым цветом фона и с желаемым разрешением. Вручную я делаю это с помощью Capture->image->options(установка разрешения и цвета фона)->сохранить как .

Мне нужно сделать это макросом.

Я могу открыть окно Capture с помощью CATIA.StartCommand "Capture", но не могу продолжить дальше. Как я могу продолжить?

Заранее спасибо.

КАК МЫ МОЖЕМ ИСПОЛЬЗОВАТЬ КОМАНДЫ, КОТОРЫЕ ПРЕДОСТАВЛЯЮТСЯ В БРАУЗЕРЕ ОБЪЕКТОВ В МАКРОСЕ? Я НАПРЯМУЮ ПИШУ ЭТО, НО НЕ РАБОТАЕТ.


person Yusuf Selim KARATAS    schedule 20.02.2019    source источник
comment
Вы проверяли документацию по автоматизации CATIA? Если нет, проверьте ключевые слова CaptureToFile и Get/PutBackgroundColor.   -  person ferdo    schedule 20.02.2019
comment
@ferdo Здравствуйте, спасибо за ваш ответ. Проблема с вашим ответом в том, что мы не можем настроить разрешение.   -  person Yusuf Selim KARATAS    schedule 20.02.2019
comment
У вас также есть CatPrintQuality и Viewer (Object)   -  person ferdo    schedule 21.02.2019
comment
@ferdo большое спасибо за вашу помощь. попробую в понедельник. Отличная информация.   -  person Yusuf Selim KARATAS    schedule 22.02.2019
comment
@ferdo Здравствуйте, я только что попробовал CatPrintQuality, но не могу этого сделать. Можешь конкретно напечатать мне как написать именно команду в макрос?   -  person Yusuf Selim KARATAS    schedule 25.02.2019


Ответы (1)


К сожалению, команда Capture недоступна через 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 (хотя интерактивный инструмент Capture может). Эта версия вместо этого записывает в BMP. Режим JPEG чрезмерно сжимает изображение и непригоден для использования. Компас будет виден на снимках, снятых с помощью этого макроса, если он включен в интерактивном сеансе.

person Olle Vidner    schedule 01.06.2019