|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вопрос по (entmake MTEXT). Правильная реализация.
Воронеж
Регистрация: 26.06.2007
Сообщений: 151
|
||
Просмотров: 6217
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
Насчет dcl мало что могу сказать (кроме того, что можно попробовать, например shift+enter / alt+enter / ctrl+enter ну или в разных вариантах), а вот по поводу entmakex для mtext варианты есть
![]() 1. Обязательными группами являются, по-моему, 100 и 40 (помимо остальных обязательных - тип 0, 10, 7 и т.п.) 2. При создании надо учитывать, что в группе 1 хранятся первые 250 символов текстовой строки, включая знаки форматирования, остальное идет с разбивкой по 250 символов в 3-ю группу. 3. Общая длина текстовой строки не может превышать 32 с чем-то там тысячи символов. 4. Перенос строки в многострочном тексте (по крайней мере в acad 2005) идет как "\\P", в предыдущих версиях, по-моему, было допустимо использовать "\n". И, наконец, последнее. Можно четко по справке узнать, какие dxf-группы необходимы. Это (гарантированно) 100, 0, 10, 71, 72, 1 (возможно, 3 - по правилам, описанным выше) и 50. При использовании "нестандартного" выравнивания обязательно назначение 11-й группы (см. О некоторых свойствах текстовых примитивов - там, конечно, рассматривается однострочный текст, но технология применима и для многострочника, насколько я понимаю). Вопрос о тех, какие dxf минимально необходимы для создания примитива, кстати, решался здесь.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Включил все необходимые группы - всё равно "Ошибка: неверный тип аргумента":
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
Во-первых, в самом списке ошибка.
Во-вторых, чему равна s21 на момент запуска? Такой код работает (acad2k5): Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
1. Ошибку осознал =)
2. строка берёт значение из edit, этому и равна, тут ошибок нет 3. Пробелы в строке будут точно. Запустилась, но с оговорками. Если в edit поставить enter, то в итоговой строке будет знак "?" на этом месте, к тому же перенос осуществится со сдвигом. Всё получится отлично только если в поле edit DCL-файла писать в одну строку, без перехода на след. абзац. [ATTACH]1185049457.jpg[/ATTACH] |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
Это в строке ключ \W надо использовать
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
Для форматирования отдельных символов и слов надписи во внешнем редакторе в текст можно включать управляющие коды. С помощью управляющих кодов можно получать подчеркнутые, надчеркнутые и дробные надписи. Также имеется возможность задавать цвет, шрифт и размер символов. Кроме того, допускается изменение расстояния между символами текста и увеличение их ширины. Перечень управляющих кодов приводится в следующей таблице.
Код Назначение Что вводится Результат \0...\o Включение и отключение надчеркивания Autodesk \OAutoCAD\o \L...\l Включение и отключение надчеркивания надчеркивания Autodesk \OAutoCAD\o \~ Включение и отключение надчеркивания пространстве Autodesk AutoCAD\~LT \\ Вставка обратной косой черты Autodesk \\AutoCAD \{...\} Вставка открывающей и закрывающей фигурных скобок Autodesk \{AutoCAD\} \Cзначение; Изменение шрифта определенный цвет Autodesk \C2;AutoCAD \ имя файла; Изменение шрифта определенный файл шрифтов Autodesk \Ftimes; AutoCAD \Hзначение; Изменение высоты символов высота, определенная в (единицах рисунка) Autodesk \H2;AutoCAD \HзначениеX; Умножение текущей высоты символов на несколько коэффициент (буква Х латинская) Autodesk \H3x;AutoCAD \S...^...; Построение дробного текста с разбиением по символу \\, # или ^ 1.000\S+0.010^-0.000; \Tзначение; Изменение расстояния между символами с коэф. от 0.75 до 4 \T2;Autodesk \Qугол; Изменение угла наклона символов \Q20;Autodesk \Wзначение; Изменение коэффициента растяжения символов \W2;Autodesk \A Установка режима выравнивания; допустимые значения: 0, 1, 2 (вниз, по центру, вверх) \A1;1\S1/2 \P Символ конца абзаца Autodesk\PAutoCAD Допускается вложенность фигурных скобок до восьми уровней. Управляющие коды могут также использоваться в размерных текстах (в частности для обозначения допусков). Пример: Пример: Форматирование текста во внешнем текстовом редакторе Для создания во внешнем редакторе следующей надписи следует ввести следующие строки: {{\H1.5x; Большой текст} \A2; над текстом\A1;/\A0; за текстом}\P {\A0;Базовый: 1 \S1/2;}\P {\A1;По центру: 1 \S1/2;}\P {\A2;Верхняя линия: 1 \S1/2;}\P {Допуски: \A1;1.000\H.75x;\S+0.010^-0.000;}\P {Архитектурный: 9-{\H.666x;\A2;11\A1;/\A0;16}\A2;"}\P
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 23.03.2011 в 02:49. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Хм... а причём здесь внешний редактор? Надо всего лишь, чтобы при нажатии на Enter не происходило сдвига текста и вставки знака вопроса, и текст был немного сжат. И это всё - в поле edit, откуда он сохраняется в переменную и вставляется как Mtext. На каком шаге проделывать операции с данными кодами? Что-то не пойму =)
|
|||
![]() |
|
||||
Регистрация: 29.04.2009
Сообщений: 21
|
Здравствуйте!
У меня тоже возникла проблема с созданием многострочного текста. По поиску нашел эту тему, взял за основу код из сообщения #4 и добавил туда значения, которые для надежности вынул из уже готового текста с нужными параметрами. Вот что получилось: Код:
Код:
Последний раз редактировалось Fynjy87, 22.03.2011 в 23:36. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
После выполнения (test) введи (entget (entlast)) - и ты наверное удивишься - заодно обрати внимание на порядок следования ассоциативных пар.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
entmake возвращает список, а entmakex - ename-указатель на созданный примитив (если, конечно, он был создан)
P.S. Насколько я помню, для многострочного текста последовательность dxf-групп особой роли не должна играть. Или нет?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 29.04.2009
Сообщений: 21
|
Цитата:
Порядок следования сначала был такой, как в примере #4. Но результат получился аналогичным. Это я уже потом отсортировал, чтобы удобнее было проверить, не пропустил ли я чего. Буду благодарен, если объясните понятным новичку языком, в чем проблема. Можно отослать к какой-нибудь статье или конкретной главе в доступной по сети книге, я не против самостоятельно разобраться. Было бы по чему. |
|||
![]() |
|
||||
Переставляй пары местами.
Порядок следования можно посмотреть в entget-листе уже имеющегося на чертеже мультитекста.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |