|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Увеличение всех отметок на определенную величину
Регистрация: 22.11.2007
Сообщений: 10
|
||
Просмотров: 45720
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Пока не будет образца, решения будут "не те". Отметка - это что? Блок с атрибутом? Просто атрибут? Однострочный текст? Многострочный текст? Поле? Еще-какая-то-фигня?
--- Добавлено: в этом "неизвестно что" отметка с префиксами / суффиксами? Без? С какой точностью после запятой надо добавлять? Блин, когда научатся вопросы задавать...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Прочти что "добавлено" у меня в посте.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 22.11.2007
Сообщений: 10
|
То есть я себе представляю это так - я выделяю весь текст, который нужно изменить, программуля меня спрашивает величину прироста - и я не теряю 1.5 дня на тупое механическое перебивание 1.5 тысяч отметок =)
Отметка выглядит, к примеру как "15.32". Точность до второго знака. ЗЫ: Что за преффиксы и суффиксы? =) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Отметка как "Отм.+16.656". "Отм." - префикс.
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 22.11.2007
Сообщений: 10
|
Спасибо за помощь. Но ничего не происходит! Просит выбрать объекты - выбираю несколько текстовых строк. Допустим, нужно увеличить отметку на 0.08 (8 сантиметров) - ввожу 0.08, Enter - ничего. Текст не меняется. В чем баг?
Блин, то есть мне нужно получить из текста ЧИСЛО, прибавить к нему другое число и засунуть назад в текст. =) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Образец "до" и "после" выполнения команды plus с заданием величины смещения = 6.65
Код немного модифицировал для корректной обработки отрицательных значений: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 22.11.2007
Сообщений: 10
|
Нашел такие баги - при получении в итоге ровной суммы (к примеру 16.00) получаем в результате просто "16". А результат необходим именно как "16.00". Отбрасывание нулей не нужно! Приходится забивать ручками ".00". И еще - не производятся никакие операции с числами, у которых на конце 0. То есть имеем отметку 13.10 - она видимо не переводится в число, не знаю почему. Поможете, господа хорошие?
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Тогда так.
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Кулик Алексей aka kpblc, протестировал твой последний код. Вот что я обнаружил:
1) Число вида ХХХ.ХХ (Х- любая цифра, кроме нуля) считается только если точность выставлена на "0.00" (формат->единицы), при этом числа вида ХХХ.Х0 и ХХХ.00 игнорируются лиспом; 2) При установке точности на "0.0" считаются только числа ХХХ.Х0; 3) А если поставить точность на "0" считаются числа ХХХ.00, (что вполне закономерно), но ответ выдается в виде ХХХ.00.00 Очень полезный лисп, жаль, что так ошибается....Можешь подправить? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Какая точность имеется в виду? luprec? Если есть возможность - пример с указанием версии AutoCAD'a (чтоб мне тут не гадать)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Точность, которая выставляется через меню Формат>Единицы(Units). АКАД 2008 русский. Конкретный пример: надо числа 177.26; 177.10; 177.00 увеличить на 10. Ввожу "_PLUS", на приглашение ком. строки выбираю эти три текста, ENTER, "сколько добавлять" пишу 10, и изменяется только один из них, тот, в котором целых цифр(не нулей) после запятой столько, на сколько установлена точность. Т.е. если установлена "0.00", то посчитается только 177.26, если "0.0", то только 177.10
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Решил проверить предыдущий код с поста #10 - все работает как ни странно... Обрабатывает все числа (ХХХ.ХХ; ХХХ.Х0; ХХХ.00) И в результате в случае нулей пишет "ХХХ.00" или "ХХХ.Х0"
Drweb, может, тебе поможет выставление точности на "0.00" в меню Формат->Единицы (Format->Units). Так что пользуемся и выпускаем во Вселенную позитив, адресованный kpblc'у, пусть поикает ![]() |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Подскажите пожалуйста, что надо добавить в лисп, чтоб увеличенные лиспом тексты меняли цвет при изменении значения.... Ну чтоб определять, какие из текстов уже обработаны, а какие - нет. По совету VVA с пробовал вставить в лисп
Код:
![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Покажи используемый код или дай ссылку
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206
|
skkkk, посмотри здесь:
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=42402mx и здесь: http://dwg.ru/f/showthread.php?t=20686 Буквально вчера ребята мне помогли решить ту же задачу и даже с фенечкой, которую я попросила. До сих пор прыгаю от счастья. Может этот код тебе поможет. Удачи. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Нужное выделил красным
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 05.08.2008 в 20:52. |
|||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
VVA, спасибо,
буду рад модификации 1. Не работает с дробными числами пример 1.213 2. Хочется чтобы был выбор сколько добавлять, сколько отнять, на что умножить, и на что разделить 3. Про изменние цвета это хорошо 4. Самое главно если текст записан так L=400мм, а мы добавили 50, то все оставалось тоже а число было таким L=450мм, п. 4. ну очень нужная вещь при редактировании спецификации к примеру поменялась длинна плиты на 50мм стало меньше, пощелкал по спеке откорректировал за минуту вот и хорошо |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
>dextron3
1.С дробными числами он может работать, есть маленькая хитрость. Нужно точность luprec выставить на столько, сколько у тебя знаков после запятой, в твоем случае - 3. Это можно сделать: а) из командной строки (_luprec>3); б) в меню Формат->Единицы (Format->Units) установить точность на 0.000; в) вставить строку (command "luprec" 3);;; 3 знака после запятой в начало лиспа ПОСЛЕ строчки (defun c ![]() ) ;_ end of defun только измени цифру 3 на нужную. Предполагаю, это не вполне грамотно, ведь я не особый знаток, использовал метод тыка, но у меня работает ![]() 2. За функцию (+-/*) отвечает знак в строке (vla-put-textstring ent (rtos (+ str value) 2 2)), правда придется делать четыре лиспа, и это будет четыре разные команды (например: plus, minus, umn, razd,- не забудь поменять вместе с арифметическим знаком команду в лиспе, ну и для приличия надпись "Сколько добавлять" смени как надо), и можно сделать четыре кнопки с макросами ^C^C(if(null C ![]() 3. Согласен. 4. Есть лисп, который добавляет префикс и суффикс. Он тут: http://forum.dwg.ru/showthread.php?t=10596 Для удобства можешь сделать кнопку с макросом ^C^C(if(null C:AddPS)(Load "Add Prefix Suffix.lsp"));AddPS;L=;мм;, она автоматом вставит "L=" и "мм", останется только выбрать тексты, опять же, не забудь про пути доступа. Попробуй пошарить в поиске по слову "field", есть возможность делать так, чтобы при изменении длины линии автоматом менялось значение текста в "спеке" P.S.: Смайлики с языками читай как двоеточие и латинская P ![]() Последний раз редактировалось skkkk, 17.09.2015 в 10:30. |
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
>dextron3
Да по твоим пунктам... Правда чтобы все правильно работало и по требованиям поста 14 нужно чуть изменить программу: Код:
Код:
![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
skkkk, Выделил фиолетовым в #22
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Спасибо, VVA, только вот после обработки запятая меняется на точку....Можно, чтоб запятая оставалась? И еще не знаете, как исправить ситуацию в этом лиспе, описанную мной в #14, чтобы не зависело от переменной luprec? Т.е., чтобы после обработки лиспом текст был с тем же разделителем и с тем же количеством знаков после него, как и исходный. Так мне для каждой задачи приходится делать отдельный лисп и прописывать в нем значение luprec в зависимости оттого, сколько там знаков после запятой (или точки)
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
skkkk, Пробуй
Текст должен оставаться с тем же разделителем как исходный. Количество знаков определяется как максимальное количество знаков после запятой у обрабатываемого в данный момент текста и введенного числа. Например: текст 2 , число 0.1 - будет округляться до 1 знака после запятой текст 2.12 , число 0.1 - будет округляться до 2 знаков после запятой текст 2 , число 1 - будет округляться до 0 знаков после запятой Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Я в любой момент нажимаю Esc и AutoCAD будет в каком состоянии? Я в ответ на запрос "На какое значение изменить отметки?" нажимаю Enter и программа вылетает. Или ввожу "А_Не_Надо_ничего_менять" - результат будет там же.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
skkkk, Так точно. Вариант с обработкой Мтекста и сносом форматирования
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 07.10.2008
Сообщений: 94
|
Ребят а можно наоборот упростить ? Очень прошу, напишите код. мне нужно сразу к нескольким текстам числовым прибавить или отнять натуральное число 1 или 2 и т.д. для работы со схемами в связке выноска+поле. В лиспе не силен и горю совсем по сроку. Заранее бьюсь лбом в пол. Числа используются натуральные: 1, 7, 26, и т.д. Без дробей и нулей
|
|||
![]() |
|
||||
Регистрация: 06.08.2008
Сообщений: 30
|
Помогите пожалуйста! делю числа 2200 и 400 на 1000 получаю 2 и 0 соответственно, требуется 2.200 и 0.400. как настроить точность? (чтоб ответ автоматически вставлялся с требуемой точностью)
Последний раз редактировалось kshatriy, 22.10.2009 в 15:49. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Могу предположить, что делишь не лиспом, раз такой вопрос. Тогда зайди в команду _UNITS и выставь нужную точность
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 06.08.2008
Сообщений: 30
|
VVA:делю лиспом из поста 32
лисп и видео прикрепил... поправьте если что-то делаю не так ![]() AutoCAD 2009rus |
|||
![]() |
|
||||
Решил задачку "в лоб"
![]() участок кода из поста #52 замени на: Код:
Код:
Код:
Есть, правда, одно "но": если количество знаков после запятой у какого-нибудь из выбранных чисел на чертеже больше, чем введенное значение, то у результата будет столько же знаков после запятой. Пример: выбраны числа "15" "23.5" "123.234", на запрос "Количество знаков после запятой:" введено "4", тогда у всех результатов будет 4 знака после запятой. если же выбраны числа "15.3456" "23.84597" "8974" и введено "4", у всех результатов будет 4 знаков после запятой, кроме второго. Не знаю, хорошо это или плохо ![]() Последний раз редактировалось Do$, 23.10.2009 в 14:46. |
||||
![]() |
|
||||
Регистрация: 06.08.2008
Сообщений: 30
|
Do$: Спасибо огромное РАБОТАЕТ!а с дополнением намного лудше!
![]() небольшой вопрос: когда точность уменьшается (если задаем количество знаком меньше чем было у данного числа до изменения) то почему-то изначальное количество знаков остается: было 2.200(3 знака) делим на 10 ставим 2 знака после запятой,(остается всеравно 3 знака) в чем проблема? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
kshatriy, поищи тему наподобие "суммирование текстов". Точно помню, что подобный вопрос решался.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 06.08.2008
Сообщений: 30
|
Кулик Алексей aka kpblc: ты про это: "Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций)" #522 ?
тот лисп заменяет цифры второго текста на цифры первого удалив все буквы: было:"Уголок L50x5 L=200" и "Уголок L50x5 L=300" выбрал первый текст, выбрал второй. результат: второй текст стал "Уголок L505200x505200 L=505200" dextron3: Использую PS Studio там спецификации заполняются текстами вида: Труба 159x6 L=3400 Швеллер [20 L=370 Уголок L75x6 L=200 возможно програмно отделить длину? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Можно. И в той самой теме есть коды, выполняющие это действие.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Там еще один косяк был - если в запрос точности вводить ноль и результат вычисления получается целым числом с нулями на конце, то они обрезаются. Например: 3500-100 получалось 34. В общем, исправил и дополнил с учетом этого:
|
||||
![]() |
|
||||
Регистрация: 06.08.2008
Сообщений: 30
|
Работает как требовалось спасибо Do$! появилась другая проблемка в текстах с символами юникода
эти символы заменяются вопросительными знаками Было: ДТруба 10x1 L=1140 Двутавр \U+E72910 L=3500 Швеллер \U+E7255П L=1090 Тавр \U+E72B10БТ1 L=770 -100 получаем: Труба 10x1 L=1040 Двутавр ?10 L=3400 Швеллер ?5П L=990 Тавр ?10БТ1 L=670 возможно сохранить эти символы? Последний раз редактировалось kshatriy, 04.11.2009 в 06:17. |
|||
![]() |
|
||||
Символы не должны никуда теряться, если посмотреть свойства текста - то там все как надо написано. Наверное используемый текстовый стиль такие символы не поддерживает.
Файл не могу посмотреть, т.к. у меня акад 2006. |
||||
![]() |
|
||||
Регистрация: 27.11.2007
Сообщений: 126
|
Помогите пожалуйста.
У мена на чертеже идёт нумерация объектов, от 1 и до 500. В середине появляется дополнительный объект, и нумерацию нужно сдвинуть. Ест ли простой лиспик, который мог бы увеличивать выделенные числа (text) на заданую величину? Почемуто лисп из первых постов не работает. ACAD2010. |
|||
![]() |
|
||||
С этим как раз тут разбираемся:
http://forum.dwg.ru/showthread.php?t=58884 |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Все уже придумано и написано.
https://sites.google.com/site/bushma...-zametki/regex Тут можно скачать библиотеку которая меняет что угодно на как угодно. Спасибо говорить Андрею aka hwd |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Как то так : http://forum.dwg.ru/showthread.php?t=88453
|
|||
![]() |
|
||||
Регистрация: 04.07.2012
Сообщений: 36
|
как то не совсем понятно..как открыть проект, например? чем какой именно файл из папки
да и зачем мне вообще это? у меня ссылки не работают Цитата:
|
|||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
timoshetc, Искать и заменять текст следовало так как написано, с кавычками
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Настройте текстовый стиль, чтобы не делать переопределений в самом мультитексте, не используйте курсив и т.п.
В принципе, такие небольшие надписи можно делать текстом а не мультитекстом, тогда эта программа их спокойно переварит. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Чтобы проверять без форматирования - можно подправить "искалку" hwd (см. #78) ну или чиркануть свою в которой mtext.Contents будет устанавливаться из Regex.Replace(mtext.Text,patern,replace).
p.s. Если автор не понял про что написанно - то тогда вресию автокада давай (хотя если у тебя не 2010-ый - компилировать сам будешь - или опять просить кого - т.к. у меня другого просто нет).
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 14.09.2012 в 11:28. |
|||
![]() |
|
||||
Проектирование мостов Регистрация: 29.01.2014
Новосибирск
Сообщений: 431
|
Цитата:
Не работает с запятыми. К 15,005 прибавим 0.001, получим 15.001,005. PS. В программировании не силен, но, судя по постам выше, возможность это исправить есть. |
|||
![]() |
|
||||
Это возможно, но в ряде случаев это может оказаться некстати. Как вариант - используйте стандартный инструмент FIND для замены запятых на точки в тексте, а потом используйте программу.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Проектирование мостов Регистрация: 29.01.2014
Новосибирск
Сообщений: 431
|
Цитата:
----- добавлено через ~8 мин. ----- Do$, и еще просьба. Если не сложно, сделайте то же самое, но с "раскраской". |
|||
![]() |
|
||||
Одни просят убрать, другие добавить...
![]() Найдите в лиспе строчку: Код:
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
+ skkkk, Скорее всего мтекст - форматированный
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Еще примерно столько же кода написать, сколько уже есть в том лиспе. А может даже и побольше...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |