Страница 1 из 1
ArcMap Maplex "вертикальная" дробь
Добавлено: 10 мар 2007, 15:00
oleg
есть точки с двумя атрибутами (номер, высота)
нужно подписать через "вертикальную дробь"
номер точки /подчеркивание/ высота
(как на топокартах высота дерева/диаметр)
Спасибо.
Добавлено: 11 мар 2007, 12:04
oleg
[Npp] & vbLF & [Z]
Добавлено: 11 мар 2007, 15:47
oleg
Underline:
"<UND>" & [LABELFIELD] & "</UND>"
, а "одновременно" не получается:
[Z] & vbLF & "<UND>" & [Npp] &"<UND>" - так не работает
??
подскажите, пожалуйста...
Добавлено: 12 мар 2007, 12:23
SAA66
Работающее решение, поля - номер скважины и мощность пласта, массив организовывается для удобства выбора.
Код: Выделить всё
Function FindLabel ( [SKV], [M_OB] )
m = Array(Array([SKV]))
n = Array(Array([M_OB]))
iMxLblSz = 0
FT = "<UND>"
LT = "</UND>"
C_LT = "<CLR red='255' green='255' blue='255'>"
C_RT = "</CLR>"
For i = 0 To UBound(m)
j = m(i)
If (Len(j(0)) > iMxLblSz) Then
iMxLblSz = Len(j(0))
End If
Next
For i = 0 To UBound(n)
g = n(i)
If (Len(g(0)) > iMxLblSz) Then
iMxLblSz = Len(g(0))
End If
Next
For i = 0 To UBound(m)
j = m(i)
g = n(i)
k = iMxLblSz - Len(j(0))
If (g(0)=9999) Then
FindLabel = FindLabel+ j(0)
Else
FindLabel = FindLabel+ FT + j(0) + C_LT + String(k, "_") + C_RT + LT + vbNewLine + FormatNumber(g(0), 2, -1, 0, 0)
End If
rem 9999 - код неизмерения, пустое поле
Next
End Function
Добавлено: 13 мар 2007, 14:26
oleg
ЗдОрово. Спасибо большое!
Добавлено: 13 мар 2007, 18:53
SAA66

Со всей душой, обращайтесь.
Добавлено: 24 авг 2007, 13:22
Каминский Вадим
Решение попроще
"<UND>" & [Name1] & "</UND>" & vbNewLine & [Name2]
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 18 дек 2008, 14:19
oleg
попрошу помощи еще в одном вопросе по подписям.
есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).
\подписывается текущая и планируемая характеристика территории\
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 18 дек 2008, 16:06
Каминский Вадим
Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 18 дек 2008, 17:13
oleg
Каминский Вадим писал(а):Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.

ок
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 18 дек 2008, 17:48
SAA66
oleg писал(а):попрошу помощи еще в одном вопросе по подписям.
есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).
\подписывается текущая и планируемая характеристика территории\
Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 19 дек 2008, 11:52
oleg
SAA66 писал(а):Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.
покажите, пожалуйста, как использовать возможности скрипта для исключения нулевых значений в знаменателе.
Re: ArcMap Maplex "вертикальная" дробь
Добавлено: 22 дек 2008, 04:08
SAA66
Код: Выделить всё
Function FindLabel ( [SKV], [M_OB] )
m = Array(Array([SKV]))
n = Array(Array([M_OB]))
iMxLblSz = 0
FT = "<UND>"
LT = "</UND>"
C_LT = "<CLR red='255' green='255' blue='255'>"
C_RT = "</CLR>"
For i = 0 To UBound(m)
j = m(i)
If (Len(j(0)) > iMxLblSz) Then
iMxLblSz = Len(j(0))
End If
Next
For i = 0 To UBound(n)
g = n(i)
If (Len(g(0)) > iMxLblSz) Then
iMxLblSz = Len(g(0))
End If
Next
For i = 0 To UBound(m)
j = m(i)
g = n(i)
k = iMxLblSz - Len(j(0))
If (g(0)=9999) Then
FindLabel = FindLabel+ j(0)
Else
FindLabel = FindLabel+ FT + j(0) + C_LT + String(k, "_") + C_RT + LT + vbNewLine + FormatNumber(g(0), 2, -1, 0, 0)
End If
rem 9999 - код неизмерения, пустое поле
Next
End Function
Предположим, что m - переменная, содержащая значения из первого поля, n - из второго
проверяешь значение на отличие от длины записи нуля, и, в зависимости от результата, выполняешь или построение дроби, или просто одного числа. Сам код расписывать не буду - попробуй сам. Тот, что приведен выше, содержит функцию определения длины строки.