Перекрашивание слоев

0 голосов
спросил 11 Май, 10 от TatY (640 баллов) в категории Программные продукты Esri
Здравствуйте, всем!
Вопрос простецкий, только что-то никак не могу найти на него ответ :(
Есть, к примеру, в ArcMap несколько слоев polyline, их необходимо перекрасить в один цвет. Хочу написать макрос, но не могу понять в каком месте указывается цвет? Как мне добраться до свойств слоя, где могу уже указать цвет?
Подскажите, пожалуйста! Embarrassed

6 Ответы

0 голосов
ответил 11 Май, 10 от TDenis (42,620 баллов)
Private Sub ApplySimpleRenderer(SomeLayer As IGeoFeatureLayer)

Dim pSRenderer As ISimpleRenderer
Set pSRenderer = New SimpleRenderer
Dim pFillSymbol As ISimpleFillSymbol
Set pFillSymbol = New SimpleFillSymbol
pFillSymbol.Style = esriSFSForwardDiagonal
Dim pColor As IRgbColor
Set pColor = New RgbColor
pColor.RGB = vbBlue
pFillSymbol.Color = pColor

'Property put by reference, must use "Set"
Set pSRenderer.Symbol = pFillSymbol
pSRenderer.Label = "USA"
'Set the layer’s renderer, also property put by reference
Set SomeLayer.Renderer = pSRenderer
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
pMxDoc.UpdateContents      
'Update legend
pMxDoc.ActiveView.Refresh 'Redraw display
End Sub


http://www.scribd.com/doc/22243489/Introduction-to-Programming-Arc-Objects-With-VBA
    
Понятно, что у вас не SimpleFillSymbol будет, а, наверное, SimpleLineSymbol. Но с этим, думаю, уже сами справитесь.
0 голосов
ответил 11 Май, 10 от TatY (640 баллов)
Спасибо, огромное, за помощь!:)
С одним слоем все получилось, буду разбираться как несколько слоев перебирать.

А вот не подскажите как такая схема работает? Что- то выдает ошибку, что метод или свойство не найдено :(

Dim pRGBColor As RgbColor
Set pRGBColor = New RgbColor
pRGBColor.Red = 210
pRGBColor.Green = 190
pRGBColor.Blue = 150

Dim pColor As IRgbColor
Set pColor = New RgbColor
pColor.RGB = pRGBColor
pLineSymbol.Color = pColor

Заранее, спасибо, если сможете подсказать :)
0 голосов
ответил 11 Май, 10 от TatY (640 баллов)
Разобралась как работает :)
  Dim pRGBColor As IRgbColor
  Set pRGBColor = New RgbColor
  pRGBColor.RGB = RGB(210, 190, 150)

  pLineSymbol.Color = pRGBColor

Спасибо большое еще раз за помощь! и Ссылку! Thumbs Up
0 голосов
ответил 31 Май, 10 от TatY (640 баллов)
Почему-то все слои которые необходимы перекрасились в нужный цвет, но вот какая проблема появилась:
Если цвет одного из этих слоев поменять вручную на другой, то цвет меняют все слои, которые участвовали в Макросе.
ConfusedНикто не подскажет в чем тут загадка?
Заранее, спасибо!
0 голосов
ответил 31 Май, 10 от TDenis (42,620 баллов)
Создавайте для каждого слоя свои объекты. Не приписывайте всем слоям один и тот же настроенный рендерер.
0 голосов
ответил 31 Май, 10 от TatY (640 баллов)
Спасибо, огромное, за совет!!! Все заработало как надо :)
Будем знать! :)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...