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

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

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

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

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

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

Вы проверяли документацию по автоматизации CATIA? Если нет, проверьте ключевые слова CaptureToFile и Get/PutBackgroundColor.

ferdo 20.02.2019 17:17

@ferdo Здравствуйте, спасибо за ваш ответ. Проблема с вашим ответом в том, что мы не можем настроить разрешение.

Yusuf Selim KARATAS 20.02.2019 17:31

У вас также есть CatPrintQuality и Viewer (Object)

ferdo 21.02.2019 18:14

@ferdo большое спасибо за вашу помощь. попробую в понедельник. Отличная информация.

Yusuf Selim KARATAS 22.02.2019 14:54

@ferdo Здравствуйте, я только что попробовал CatPrintQuality, но не могу этого сделать. Можешь конкретно напечатать мне как написать именно команду в макрос?

Yusuf Selim KARATAS 25.02.2019 07:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
941
1

Ответы 1

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

Другие вопросы по теме