ArcMap Maplex "вертикальная" дробь
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
ArcMap Maplex "вертикальная" дробь
есть точки с двумя атрибутами (номер, высота)
нужно подписать через "вертикальную дробь"
номер точки /подчеркивание/ высота
(как на топокартах высота дерева/диаметр)
Спасибо.
нужно подписать через "вертикальную дробь"
номер точки /подчеркивание/ высота
(как на топокартах высота дерева/диаметр)
Спасибо.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 11 мар 2007, 12:01
- Репутация: 0
- Откуда: Якутия
Работающее решение, поля - номер скважины и мощность пласта, массив организовывается для удобства выбора.
Код: Выделить всё
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
Последний раз редактировалось SAA66 18 апр 2007, 09:15, всего редактировалось 1 раз.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 11 мар 2007, 12:01
- Репутация: 0
- Откуда: Якутия
-
- Активный участник
- Сообщения: 138
- Зарегистрирован: 18 авг 2005, 18:05
- Репутация: 0
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: ArcMap Maplex "вертикальная" дробь
попрошу помощи еще в одном вопросе по подписям.
есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).
\подписывается текущая и планируемая характеристика территории\
есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).
\подписывается текущая и планируемая характеристика территории\
-
- Активный участник
- Сообщения: 138
- Зарегистрирован: 18 авг 2005, 18:05
- Репутация: 0
Re: ArcMap Maplex "вертикальная" дробь
Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: ArcMap Maplex "вертикальная" дробь
окКаминский Вадим писал(а):Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 11 мар 2007, 12:01
- Репутация: 0
- Откуда: Якутия
Re: ArcMap Maplex "вертикальная" дробь
Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.oleg писал(а):попрошу помощи еще в одном вопросе по подписям.
есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).
\подписывается текущая и планируемая характеристика территории\
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: ArcMap Maplex "вертикальная" дробь
покажите, пожалуйста, как использовать возможности скрипта для исключения нулевых значений в знаменателе.SAA66 писал(а):Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 11 мар 2007, 12:01
- Репутация: 0
- Откуда: Якутия
Re: ArcMap Maplex "вертикальная" дробь
Код: Выделить всё
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
проверяешь значение на отличие от длины записи нуля, и, в зависимости от результата, выполняешь или построение дроби, или просто одного числа. Сам код расписывать не буду - попробуй сам. Тот, что приведен выше, содержит функцию определения длины строки.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей