Цвет Foreground
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Цвет Foreground

Цвет Foreground

Ответ
Поиск в этой теме
Непрочитано 16.10.2009, 11:47 #1
Цвет Foreground
Mikha
 
Highway Design
 
Tver
Регистрация: 16.09.2007
Сообщений: 27

В AutoCAD есть объект AcCmColor, а у него есть свойство ColorMethod,которое может принимать одно из следующих значений:
acColorMethodByACI
acColorMethodByBlock
acColorMethodByLayer
acColorMethodByRGB
acColorMethodForeground
Собственно вопрос: что означает значение acColorMethodForeground, для чего оно используется и можно ли установить данный цвет для объекта вручную (не программно)?
P.S. С цветами AutoCAD разбираюсь для выбора объектов, имеющих определенный цвет.
Просмотров: 4427
 
Автор темы   Непрочитано 19.10.2009, 15:02
#2
Mikha

Highway Design
 
Регистрация: 16.09.2007
Tver
Сообщений: 27


Неужели никто не сталкивался с этим цветом?
За выходные узнал следующее:
цвет Foreground в DXF-кодах отображается в группе 62 значение 7 (Также как и цвет БЕЛЫЙ)-По своим свойствам цвет Foreground ведет себя как БЕЛЫЙ - на черном фоне он белый, а на белом он черный
Так как Foreground и Белый имеют один и тот же DXF код, то при выборе с помощью фильтра будут выбраны примитивы имеющие один из этих цветов=>для данных цветов использовать фильтр нельзя
Пара функций на эту тему:
Код:
[Выделить все]
Public Function mcIsFilterColor(ByRef tColor As AcadAcCmColor) As Boolean
'Функция проверяет, может ли цвет tColor использоваться в DXF-фильтре
'при создании набора SelectionSet
'Выбор с помощью DXF-фильтра можно использовать только для цветов:
    '-ПоСлою 62.256
    '-ПоБлоку 62.0
    '-Индекс (кроме БЕЛЫЙ) 62.Индекс
'Для всех остальных цветов невозможно применить DXF-фильтр
    '-Индекс(БЕЛЫЙ), т.к. имеет ту же группу и код, что и цвет Foreground
    '-Foreground, т.к. имеет ту же группу и код, что и цвет Индекс(БЕЛЫЙ)
    '-RGB, т.к. выбор по группе 420 невозможен - интересно почему?
    'Примитивы,имеющие один из этих цветов могут быть отобраны из набора только
    'сравнением цвета каждого примитива с требуемым значением (перебор всех объектов
    'в наборе)
With tColor
    If .ColorMethod = acColorMethodByRGB Then 'Цвет RGB
        mcIsFilterColor = False
        Exit Function
    End If
    
    If .ColorMethod = acColorMethodForeground Then 'Цвет Foreground
        mcIsFilterColor = False
        Exit Function
    End If
    
    If (.ColorMethod = acColorMethodByACI) And (.ColorIndex = acWhite) Then 'Цвет БЕЛЫЙ
        mcIsFilterColor = False
        Exit Function
    End If
End With
mcIsFilterColor = True
End Function
Код:
[Выделить все]
Public Function mcIsEqualColors(ByRef tColor1 As AcadAcCmColor, ByRef tColor2 As AcadAcCmColor) As Boolean
'Функция сравнивает два TrueColor цвета
'Результат: true если цвета одинаковые, false в противном случае
Dim b1 As Boolean, b2 As Boolean, b3 As Boolean
If tColor1.ColorMethod <> tColor2.ColorMethod Then
    mcIsEqualColors = False
    Exit Function
End If
Select Case tColor1.ColorMethod
Case acColorMethodByBlock
    mcIsEqualColors = True
    Exit Function
Case acColorMethodByLayer
    mcIsEqualColors = True
    Exit Function
Case acColorMethodForeground
    mcIsEqualColors = True
    Exit Function
Case acColorMethodByACI
    mcIsEqualColors = (tColor1.ColorIndex = tColor2.ColorIndex)
    Exit Function
Case acColorMethodByRGB
    b1 = (tColor1.Red = tColor2.Red)
    b2 = (tColor1.Green = tColor2.Green)
    b3 = (tColor1.Blue = tColor2.Blue)
    mcIsEqualColors = (b1 And b2 And b3)
    Exit Function
Case Else 'Так, на всякий случай:)
    mcIsEqualColors = False
    Exit Function
End Select
End Function
Код:
[Выделить все]
Public Function mcSelectByColorB(ByRef Objects As AcadSelectionSet, ByRef tColor As AcadAcCmColor) As Long
'Функция отбора элементов, цвет которых соответствует цвету tColor
'Objects - исходный набор примитивов AutoCAD; Все элементы, имеющие цвет
'отличный от tColor буду исключены из этого набора
'ВАРИАНТ В - ищутся элементы, цвет которых РАВЕН tColor,первоначальный набор очищается и в него добавляются найденные элементы
Dim SelObjects() As AcadEntity 'Массив примитивов, цвет которых равен tColor
Dim SelMaxCount As Long 'Число элементов в массиве SelObjects
Dim SelStep As Long 'Число, на которое увеличивается размер массива SelObjects при необходимости
Dim i As Long, k As Long

SelMaxCount = 1000
SelStep = 1000
ReDim SelObjects(SelMaxCount - 1) As AcadEntity

k = 0 'Индекс отобранных объектов в массиве SelObjects
    For i = 0 To Objects.count - 1
        If mcIsEqualColors(Objects.Item(i).TrueColor, tColor) Then
            'Запоминаем объекты
            Set SelObjects(k) = Objects.Item(i)
            k = k + 1
            If k > SelMaxCount - 1 Then 'Контроль размера массива remObjects
                SelMaxCount = SelMaxCount + SelStep
                ReDim Preserve SelObjects(SelMaxCount - 1) As AcadEntity
            End If
        End If
    Next i
    Objects.Clear
    If k > 0 Then 'Найден хотя бы один элемент, цвет которого равен tColor
        ReDim Preserve SelObjects(k - 1) As AcadEntity
        'Записываем элементы, цвет которых равен tColor
        Call Objects.AddItems(SelObjects)
    End If
End Function
Mikha вне форума  
 
Непрочитано 21.10.2009, 20:11 Цвет Foreground
#3
DariaPolka


 
Регистрация: 19.10.2009
Сообщений: 5


возник такой вопрос.Делаю табели учета раб. времениЗакрашиваю выходные и праздничные дни в другой цвет.Необходимо, поставить формулуили усл. фрматирование,что от цвета определенной ячейки, данная ячейка тоже будетв этом же цвете.Возможно такое осуществить?
DariaPolka вне форума  
 
Непрочитано 22.10.2009, 01:17
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от DariaPolka Посмотреть сообщение
возник такой вопрос.Делаю табели учета раб. времениЗакрашиваю выходные и праздничные дни в другой цвет.Необходимо, поставить формулуили усл. фрматирование,что от цвета определенной ячейки, данная ячейка тоже будетв этом же цвете.Возможно такое осуществить?
Тебе скорее всего нужно глянуть здесь:

http://forum.developing.ru/showthrea...F7%E5%E9%EA%E8

~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 30.10.2009, 11:48
#5
Mikha

Highway Design
 
Регистрация: 16.09.2007
Tver
Сообщений: 27


Также для примитивов, цвет которых Foreground, команда _list (список) возвращает значение Цвет: 7 (белый).
Поэтому думаю, что цвета Белый и Foreground это одно и тоже. Возможно Foreground устаревшее название и оставлен для совместимости с более ранними версиями
Mikha вне форума  
 
Непрочитано 06.01.2011, 09:05
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,115


А это случайно не цвет фона?
ПК\Настройка...\Экран\Цвета...\Однородный фон
А что такое acColorMethodByACI?
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Цвет Foreground



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Когда цвет white белый, а когда черный asys AutoCAD 21 08.01.2011 15:55
SW: Повторить цвет в сборке Creator SolidWorks 3 21.03.2008 17:24
Цвет и плотность материала в SolidWorks AndrosKV SolidWorks 2 20.12.2007 14:43
Как поменять цвет более автоматизированно?????????? pomka AutoCAD 8 15.12.2005 10:46