Код приведен ниже (CATScript):
Sub CATMain()
' enter sheet background
Set oView = oDrawingDocument.DrawingRoot.ActiveSheet.Views.Item("Background View")
oView.Activate
' select all views in current screen
Set oSelection = oDrawingDocument.Selection
oSelection.Search "Type=*,scr"
' set visual to black
oSelection.VisProperties.SetRealColor 0, 0, 0, 0
' exit sheet background
Set oView = oDrawingDocument.DrawingRoot.ActiveSheet.Views.Item("Main View")
oView.Activate
End Sub
Код работает без проблем, за исключением того, что oSelection.VisProperties.SetRealColor 255, 255, 255, 0
не изменяет ни одну из выбранных линий и рамок на черные в моем 2D-чертеже. Я могу сделать это вручную, поэтому уверен, что использую неправильный синтаксис. SetVisibleColor
не работает, но я также могу обнаружить, что эти синтаксисы используются для изменения цвета в 3D, и я использую его для 2D-рисунка. Кто-нибудь здесь знает синтаксис для управления цветным значком в рабочем пространстве «Свойства графики» для 2D-чертежа?
@Lankymart Вручную я просто ввожу фон листа, выбираю весь лист (как это делает код), выбираю черный цвет в рабочей области «Свойства графики», и все становится черным. В строке кода, как у меня сейчас, ни один цвет не меняется. Слой находится на «Нет» во время ручного и скриптового процесса.
@Lankymart Также я проверил, зарегистрирован ли выбор с помощью oSelection.Count после активации oSelection.Search "Type = *, scr". Это возвращает «11».
В этом случае я бы предложил пройтись по объекту Selection (с использованием петли For Each
) и вывести, какие объекты выбираются, чтобы подтвердить, что они являются ожидаемыми объектами в выборе. На данный момент сделано слишком много предположений.
@Lankymart выбраны следующие объекты (информация, собранная с помощью цикла, как вы указали): 1. Point2D (1x) - 2. Line2D (2x) - 3. DrawingComponent (5x) - 4. DrawingText (4x).
@Lankymart Получил, что работает. Я использовал следующее: Set oSelectionDC = oDrawingDocument.Selection
oSelectionDC.Search("CATDrwSearch.DrwText,all")
oSelectionDC.VisProperties.SetRealColor 0,0,0,0
Set oSelectionDT = oDrawingDocument.Selection
oSelectionDT.Search("CATDrwSearch.DrwTable,all")
oSelectionDT.VisProperties.SetRealColor 0,0,0,0
@Lankymart то же самое можно было бы сделать со строками, используя oSelectionGI.Search("CATDrwSearch.CATEarlyGenItem,all")
, но я пропустил это из-за времени, необходимого для запуска. Предположим, дизайнер уже рисует черными линиями.
Звучит хорошо, возможно, рассмотрите добавление ответа(вместо того, чтобы добавлять решение вашего вопроса). Не волнуйтесь, ответ на свой вопрос приветствуется.
@Lankymart, хотя моя учетная запись существует какое-то время, я новичок в публикации / ответах. Спасибо за подсказку, обязательно изменю! И еще одно спасибо за то, что вы обдумали решение. :)
Это решение, которое я нашел после некоторых исследований и проб и ошибок:
'CHANGE LINE COLOR
Set oSelectionGI = oDrawingDocument.Selection
oSelectionGI.Search("CATDrwSearch.CATEarlyGenItem,all")
oSelectionGI.VisProperties.SetRealColor 0,0,0,0
'CHANGE TEXT COLOR
Set oSelectionDC = oDrawingDocument.Selection
oSelectionDC.Search("CATDrwSearch.DrwText,all")
oSelectionDC.VisProperties.SetRealColor 0,0,0,0
'CHANGE TABLE COLOR
Set oSelectionDT = oDrawingDocument.Selection
oSelectionDT.Search("CATDrwSearch.DrwTable,all")
oSelectionDT.VisProperties.SetRealColor 0,0,0,0
Глядя на документация, вы, кажется, делаете правильный выбор. Интересно, возможно, это проблема наслоения, нужно ли вам устанавливать определенный слой перед указанием цвета? Я мог бы ошибиться, так как я никогда не использовал CATIA, так что относитесь к моим предположениям с долей скепсиса.