Макросъемка в Катиа 5 - PullRequest
0 голосов
/ 20 февраля 2019

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

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

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

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

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

1 Ответ

0 голосов
/ 01 июня 2019

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

...