|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Изменение полей (fields)
инженер
Москва
Регистрация: 25.04.2006
Сообщений: 1,207
|
||
Просмотров: 13701
|
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Боюсь, что безнадега. В формуле поля вполне жестко и однозначно указывается, что суждено нам увидеть. Такие варианты там недоступны.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Можно, конечно, попробовать RTEXT из ET, только я в дизеле не очень
![]() Да и автоматического обновления ждать не придется ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.03.2004
Сообщений: 172
|
$(strlen, string) - вычисление длины сторки
$(substr, string, start [, length]) - возвращает подстроку с указанного знака, и указанной длинны $(+, val1 [, val2, ..., val9]) - сложение $(–, val1 [, val2 , ..., val9]) - вычитание %<\AcVar Filename \f "%fn7">% - поле Filenamе приняв поле Filenamе за string вы можете вырезать из него подстроки интересующей длины |
|||
![]() |
|
||||
инженер Регистрация: 25.04.2006
Москва
Сообщений: 1,207
|
Цитата:
%<\AcDiesel $(substr,%<\AcVar Filename \f "%fn2">%, 1, $(-, $(strlen, %<\AcVar Filename \f "%fn2">%), 4))>% Возвращает имя файла без нескольких символов на конце. |
|||
![]() |
|
||||
инженер Регистрация: 25.04.2006
Москва
Сообщений: 1,207
|
Цитата:
основная задача решена - поля можно модифицировать не только в рамках стандартных модификаторов. До идеала один шаг - автоматическое их обновление. То есть все превосходно работает, но только если выделяешь поле и нажимаешь кнопочку обновить - все замечательно обновляется. Неужели нельзя добавить последний штрих: изменить значение какой-нибудь там системной переменной, чтобы эти поля апдатились при той же REGENALL. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Я примерно начинаю понимать откуда ростут ноги у подбных вопросов. Что ты понимаешь под словом автоматическое?
если предположить что с FIELDEVAL=31 ты знаком и обновление по save или regen не устраивает, тогда поедем дальше: На компьютере ничего не происходит само собой, на все вычисления, которые нужно произвести нужна либо команда (тобеж действия пользователя) либо реакция на случившееся событие. Если нужно обновление полей в стиле отредактировал текст у которого внутри поле и все изменилось, то нужно нанять программиста который напишет реактор на все команды редактирования ddedit, и т. д. НО!!! обновление полей дело не очень быстрое, как например пересчет простеньких листов в екселе, то такая фича может вызвать у пользователя ощущения тормозов. Пользователи будут начинать колотить по Esc, правой и левой кнопкам мыши, причем они это делают так быстро и так часто (я просто диву даюсь их неумной энергии). ИМХО: я лично принципиально против реакторов, это отнимает минимальное понимание у пользователя происходящих процессов. Надеюсь ответ был исчерпывающим, подробнее в книжках например Полещука. |
|||
![]() |
|
||||
инженер Регистрация: 25.04.2006
Москва
Сообщений: 1,207
|
Цитата:
Спасибо конечно за столь подробную лекцию, но мой вопрос куда более простой. Поля с датой автоматически (при regen, open, save и т.д. - любой вариант мне подходит) не обновляются даже при fieldeval=31 - для обновления полей с датой предусмотрена команда UPDATEFIELD. Но меня это несколько не устраивает поскольку рассматриваемое поле ставится в штампах чертежей с которыми работает много народу и говорить каждому что-то вроде: это поле ты обнови командой regen, это командой UPDATEFIELD, а это через контекстное меню, да еще не забудь переменную fieldeval правильно выставить... не реально. Поэтому и спрашиваю: можно ли автоматически? |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Мда... не знал, что поля с датой такие вредные.
Ну да ладно все равно Код:
А мы берем и подменяем его на вот такой Код:
НО!!! грамотнее было бы сделать вот так: Это статья из журнала AUGIWorld переводил я. Цитата:
|
|||
![]() |
|
||||
инженер Регистрация: 25.04.2006
Москва
Сообщений: 1,207
|
Цитата:
попробую так |
|||
![]() |
|
||||
Регистрация: 10.01.2007
Kiev
Сообщений: 12
|
|
|||
![]() |
|
||||
Регистрация: 23.08.2016
Сообщений: 14
|
Цитата:
$(substr,%<\AcSm Sheet.Number \f "%fn2">%, 1, $(-, $(strlen, %<\AcSm Sheet.Number \f "%fn2">%), 2)) - выводит номер листа с подавлением последнего символа, например если был номер листа 12и ---> станет 12 \AcSm Sheet.Number - номер листа, если вбить эту формулу в dieselexpression то она срабатывает 1 раз. Я бы хотел чтобы при изменении листа в подшивке мое поле менялось тоже. Это можно как-нибудь реализовать..? |
|||
![]() |