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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование стека в файлах форм

Использование стека в файлах форм

Ответ
Поиск в этой теме
Непрочитано 13.11.2008, 12:44 #1
Использование стека в файлах форм
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Начал разбирать как пользоваться стеком в файлах форм. Открыл шрифт romans.shx. Для примера взял описание точки.
Вот ее код:
Код:
[Выделить все]
*46,26
2,14,8,(-5,-2),14,5,8,(5,2),1,01A,01E,012,016,2,8,(5,-2),14,6,14,8,(5,-9),0
Не понимаю до конца как это все работает. Начну по порядку разбирая все по косточкам:

2 - убрать перо
14 - флаг вертикальный текст (я так понимаю он действует в пределах одной координаты).
8,(-5,-2) - смещаемся по Х влево на 5 вниз на 2
14 - опять флаг верт. текста (не понимаю для чего)
5 - заносим в стек следующую координату.
8,(5,2) - координата вверх на 5 вправо на 2
1 - поставить перо
01A,01E,012,016 - рисуется ромб
2 - убрать перо
8,(5,-2) - смещаемся вправо на 5 вниз на 2
14 - влаг вертикального текста
6 - извлекаем из стека координату (идем на то место)
14 - опять флаг верт.текста
8,(5,-9) - смещаемся на 5 вправо и на 9 вниз
0 - конец формы


Смотрите вложения. Я все расписал.
Но как на самом деле все работает не пойму...

Миниатюры
Нажмите на изображение для увеличения
Название: точка.jpg
Просмотров: 59
Размер:	10.3 Кб
ID:	12185  

Вложения
Тип файла: dwg
DWG 2004
точка.dwg (37.2 Кб, 290 просмотров)

__________________
Поезд который устал от ржавого здравомыслия рельсов...
Просмотров: 2723
 
Автор темы   Непрочитано 13.11.2008, 12:54
#2
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


2,14,8,(-5,-2),14,5,8,(5,2) - это я так понимаю действует только для вертикального текста и для горизонтального должно все проигнорироваться
1,01A,01E,012,016 тогда откуда будет рисоваться ромб? по идее он рисуется от той точки где я изобразил, но если все впереди игнорируется то рисоваться он должен от точки для гор.текста (слева ниже круг голубой).
2,8,(5,-2) эта координата сместит перо для горизонтального текста вправо на 5 и спустится с вершины ромба на 2. Дальше весь код для гор. текста игнорируется.
Тогда судя по тому что я написал точка должна начинаться рисоваться с вершины ромба из координаты 0,0 и смещать перо вправо на 5. Но в действительности все наоборот. Сначало перо смещается на 5 вправо а затем рисуется ромб. Где я не так понимаю?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 13.11.2008, 13:06
#3
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


Специальный код 00E (14) используется только в описаниях текстовых шрифтов двойной ориентации (горизонтальной и вертикальной). Когда этот код встречается в описании символа, поведение программы по отношению к следующему коду определяется тем, как ориентирован текст. Если выбрана вертикальная ориентация, следующий код обрабатывается; если горизонтальная — пропускается.
Читай в хелпе описание 14 кода там все расписано.
Donhuan вне форума  
 
Непрочитано 13.11.2008, 13:16
#4
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


Грубо говоря в данный код используется для создания в одном описании разных переходов к следующему символу для горизонтальной и вертикальной ориентации текста (не символа). Для горизонтальной вправо, для вертикальной вниз. Для твоего примера это как-то очень мудрено сделано, в хелпе на примере отрисовки символа "D" более понятно расписано.
Donhuan вне форума  
 
Автор темы   Непрочитано 13.11.2008, 14:25
#5
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Donhuan, что касается файлов форм, справку знаю чуть ли не наизусть. Я и написал, что означает код 14. И отлично понимаю что такое вертикальный текст. Вопрос не в этом, а в том, как тогда отрисовывается текст для горизонтальной ориетации, если все, что идет после кода 14 игнорируется. Т.е. 2,14,8,(-5,-2),14,5,8,(5,2) - судя по справке игнорируется.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 13.11.2008, 14:45
#6
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


После 14 кода пропускается (при горизонтальной ориентации) не все, а только ОДИН следующий за ним код, а все остальные обрабатываются как обычно.
Donhuan вне форума  
 
Непрочитано 13.11.2008, 14:54
#7
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


из 14,5,8,(5,2) игнорируется только 5
Donhuan вне форума  
 
Автор темы   Непрочитано 13.11.2008, 15:01
#8
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Вроде догнал... "Хорошая мысля приходит апасля". А сделано все просто супер!
1. 2,14,8,(-5,-2)первый "вектор" определяет начало и конец для горизонтального и вертикального текста. Он идет из вершины ромба в точку 0,0. Потом в стек заносится именно эта координата 0,0!!! а не 8,(5,2) как я думал.
2. Затем перемещается перо на вершину ромба обратно 8,(5,2) и это уже относится к горизонтальному тексту, т.к. перед координатой нет кода 14.
3. Рисуется ромб. (символ точки) 1,01A,01E,012,016
4. Смещаемся 2,8,(5,-2) - отступ для следующей за точкой буквы. Касается только горизонтального текста.
5. 14,6 Переходим на сохраненную в стеке координату 0,0. Касается только вертикального текста.
6. 14,8,(5,-9) смещаемся от точки 0,0 в низ для следующего символа для вертикального текста.
7. 0 - конец формы.
Миниатюры
Нажмите на изображение для увеличения
Название: точка2.jpg
Просмотров: 59
Размер:	12.5 Кб
ID:	12197  
Вложения
Тип файла: dwg
DWG 2004
точка2.dwg (38.2 Кб, 290 просмотров)
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 13.11.2008 в 15:08.
Shoorup вне форума  
 
Автор темы   Непрочитано 13.11.2008, 15:22
#9
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Очень хотелось просто заменить ромб на круг ну и заодно разобрался как работает
Сделал так:
Код:
[Выделить все]
*46,25
2,14,8,(-5,-2),14,5,8,(5,2),1,00A,(1,000),2,8,(5,-2),14,6,14,8,(5,-9),0
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Автор темы   Непрочитано 13.11.2008, 15:34
#10
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Потихоньку начинаю понимать что шрифты в акаде сделанные автодеском делали профи. Очень качественно и грамотно с точки зрения не самого символа ,а то как он описан. Мне почемуто кажется что у них есть программа для рисования форм. Вручную так нарисовать очень сложно.

Offtop: Кстати это мое тысячное сообщение на форуме
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование стека в файлах форм

Размещение рекламы