|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А поискать справку по strcase - нихьть?
https://www.progesoft.com/products/p...ctions/strcase https://www.lee-mac.com/textcasefunctions.html И тому подобное
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Ну в описании локальной функции *error* надо просто прописать строчку с возвращением запомненной в начале кода системной переменной. Эта функция запустится в случае ошибки и сделает всё, что в ней прописано.
Да, именно так. Удобное это семейство, но ведь тоже на каждое "узкое место" их ненапасёшься. Расскажи, пожалуйста, Алексей, как часто и в принципе - в каких местах рекомендуешь вставлять vl-catch-*? Интерактивный ввод? Вычисления, в которых изначально возможны ошибки? Так ведь можно прийти к тому, что чуть ли не каждую строку станет надо обернуть в это вээлкэтч) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ну, лично у меня нет однозначных рекомендаций. В текущих реалиях обычно ставлю когда у пользователя что-то запрашиваю (эта ж зараза в любой момент может Esc нажать), ну и основную команду тоже оборачиваю. Так-то у vl-catch-* есть ограничение - не больше, кажется, 9 уровней вложенности. Так что приходится изгаляться
![]() P.S. Если с этими обертками переборщить, то скорость работы кода может кратно упасть.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Ну как это - "нет"?
![]() Цитата:
А вот почему-то до сих пор не догадался основную функцию в неё обернуть вместо *error*) Надо будет попробовать это сделать |
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Подскажите, как программно настроить межстрочный интервал мультитекста в мультивыноске? В моем примере он установлен автоматически и равен 416,67 и выноска отображается криво (слева). Если его поменять хотя бы на 417 - выноска становится нормальная (справа)
----- добавлено через ~7 мин. ----- Цитата:
----- добавлено через ~17 мин. ----- Любое изменение межстрочного интервала в свойствах уже созданной выноски - приводит ее к нормальному виду. А вот программно почему-то отображается не так как надо. Если же выноска без ссылки на поле - программно отображается нормально. |
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Еще немного поковырялся. Выноска приходит в норму при изменении почти любых параметров мультитекста через панель свойств. А проблема кажется в том, что когда выноска формируется программно - я с помощью функции vla-GetBoundingBox определяю длину мультитекста для своих нужд. Но судя по всему в этот момент программа думает, что верхний текст - это "####" - поле до регенерации. И исходя из этого формирует мультивыноску. Но реальный текст "2" - поэтому выноска выглядит криво. Как с этой проблемой справиться? vla-regen перед vla-GetBoundingBox не помогает, это всего лишь позволяет при вставке выноски получить значение поля. Без vla-regen значение будет "####".
|
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Удалось сделать выноску нормального вида применив в конце лиспа функцию vla-put-TextJustify. Не проверял, но наверное многие функции изменения параметров мультитекста дали бы такой же результат, хотя вот изменение интервала между линиями (vla-put-TextLineSpacingDistance) не сработало.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А vla-update не сработает?
---- Offtop: Оставлю себе на память - сообщение №40 000...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Продолжаю ковыряться с выноской с полем. Образовалась новая проблема. Если поле изменено, то текст смещается относительно полки. Почти любое редактирование выноски через панель свойств приводит ее в норму. Это происходит из-за выравнивания текста выноски по центру. Если выравнивание стоит по умолчанию (влево), то выноска и при изменении поля сразу после регенерации выглядит нормально, то есть текст поля автоматом подстраивается под полку.
Возможное решение - отследить событие изменение содержимого поля и произвести формальное форматирование текста, чтобы он нормально соориентировался относительно полки. Можно ли повесить на мультивыноску с полем реактор, который будет отслеживать изменение содержимого поля? Я попробовал vlr-object-reactor с отслеживанием события :vlr-objectModified - оно не срабатывает при изменении содержимого поля после регенерации. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А если попробовать выполнить обновление поля? Принудительно, программно (ну, на крайний случай - командой)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Восстановить как? Undo? Это не срабатывает.
Вообще нужен способ, который позволяет автоматически, условно скажем "обновить" выноску с полем, после того как выполнена регенерация. Как я вижу тут бы помог реактор, который бы выявил изменение содержимого выноски и в обработчике реактора я бы, например, включил Скрытие заднего плана и тут же выключил. Такие действия через панель свойств приводят выноску в норму. Вопрос в том, какой именно реактор здесь надо использовать? Кажется удобнее всего объектный реактор, но у меня не получилось через :vlr-objectModified. Этот реактор срабатывает, если двигать вершины выноски или вручную менять ее содержимое, но при обновлении поля через регенерацию - не срабатывает. Пробовал _updatefield - не помогает. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Цитата:
Что-то давно у меня подобное было с "кривым отображением". Только таким способом и выкручивался. Может быть - и здесь поможет.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Сет, может, в этой теме найдётся решение?
|
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Прикрутил вот такой костыль к мультивыноскам. Создал командный реактор (cs_regen_reactor) и обработчик события :vlr-commandEnded (cs_regen). После выполнения регенерации выбираю все мультивыноски чертежа и центрирую содержимое мультитекста. Этот подход, конечно, некрасивый, но он работает - выноски с полями после регенерации выглядят нормально.
Код:
Но теперь в командной строке при выполнении других команд появляется мусор ![]() Цитата:
Последний раз редактировалось Сет, 26.07.2024 в 20:32. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
1. Тебе никто не помешает несколько раз зарегистрировать реактор - в текущих реалиях.
2. Кто мешает все же проверять - что болтается в наборе? 3. Не отслеживаешь заблокированные и замороженные слои. 4. ... Обрабатывать реактором вообще все - ИМХО ну так себе затея. Я бы подумал, что и как сделать, чтоб мультивыноска изначально строилась "нормально". Опять же дамп, проверки, изменения и теде. И, может быть, все сработает на реакторе окончания команды вставки мультивыноски. ЗЫ В реактор имя команды, насколько я помню, всегда приходит на английском языке. Могу ошибаться.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.11.2014
Сообщений: 2,606
|
Цитата:
Да. Подправил код, добавил некоторые проверки, наверное еще не все. Код:
Пока да, надо подумать об этом тоже. Цитата:
Да, на английском. По крайней мере в моем случае. REGEN и REGENALL. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |