|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Цитата:
поделюсь опытом: Код:
Программы совсем одинаковые, хочу только обратить внимание что в этих двух программках есть локальная функция round-in-str которая реализуется по разному: в первом случае rtos, во втором vl-princ-to-string - поведение у них различное. Поясню по эпичности: надо будет продумать алгоритм расчленения строк на куски, определение какие из этих кусков числа и их обрабатывать, склейку обратно всего этого добра в строку и при этом предусмотреть все возможные варианты обрабатываемых строк. з.ы. Проблем добавляет тот факт, что atof всеяден и ошибки не выдаст... но может просто потерять часть символов в строке если их предварительно не срезать: Команда: (atof "123.21") 123.21 Команда: (atof "asd123.21") 0.0 Команда: (atof "123.21asd") 123.21
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... Последний раз редактировалось Vladimir_Sergeevich, 10.02.2021 в 06:38. |
||||
|
||||
Регистрация: 08.02.2021
Сообщений: 5
|
Извиняюсь - обсчитался. 1000м - это 3281 фут (значок футов '). Например, имею несколько текстовых объектов, в них есть числа, вот их надо найти и перевести из метров в футы. Их довольно много на чертеже, поэтому думал для начала сделать набор нужных мне объектов в группу ("натыкать"), а далее, чтобы код работал с каждым объектом по очереди, пока объекты не закончатся в группе (while).
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Vladimir_Sergeevich, можно же проще сделать, если сравнивать коды символов (те, что возвращает функция ascii). Вспоминая одну из тем, где Сергей812 открыл мне глаза на то, что функции < и > могут сравнивать помимо чисел и строки (что было для меня откровением), а также подглядев в справке коды цифр, можем заключить, что цифрами являются символы с кодами от 48 до 57 включительно (от 0 до 9), можем сделать как-то так:
Код:
Правда, с текстами в файле-образце выходит, что добавочный текст с футами не влезает в одну строку и переносится. Чтобы было в одну строку, нужно назначить тексту ширину, равную нулю. Почему-то с мтекстами из файла у меня программно не выходит назначить им ширину 0. Создал прям там в файле свои мтексты, установил им ширину в 0 - в них все сработало хорошо. Файл с результатом прилагаю. Однако, очень любопытно, почему код Код:
Нужно также добавить, что данный код, конечно, сработает корректно только для случая, где есть лишь одно число (как в файле-примере). Возможно, для более правильной работы в каком-то случае было бы правильным делать анализ текста на символ "м", и все цифры, что перед ним забирать в качестве числа и обрабатывать их. |
|||
|
||||
skkkk, сравни палитровые свойства текстов
|
||||
|
||||
Очередное волшебство автокада!?
(cvunit) имхо сподручнее будет для конвертации метров в футы. |
||||
|
||||
skkkk, информация о кодах интересна, но простоты не добавляет. Как быть если надо не дописать, а преобразовать число?
В моей практике были случаи когда надо было на чертеже все отметки поднять (из местной системы высот в балтику, например), а в строках бывали не просто числа, а подписи вида "в.оп. 123,12" И счастьем было, если везде в этих строках был пробел по которому это добро можно поделить, обработать число, и склеить обратно.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
вист
выбираем у *текста то что находится/или не находится между пробелом и "м" (строковое число) и ковертируем его из метров в футы. зачем это нужно отечественному проектировщику? skkkk, копание дало следующее. если у мтекста есть колонки, то назначить ему ширину ноль не получается. колонки нужно удалить костылями. кстати в руководстве по dxf у мтекста есть групповой код 75, который якобы отвечает за колонки и который не документируется в этом руководстве и не показывается в dxf дампе, но… см. костыли частного случая в коде после (vla-put-textstring…), которые позволяют сначала назначить ширине ноль, а затем переназначить её под текущую длину строки. Код:
Последний раз редактировалось koMon, 15.02.2021 в 10:09. Причина: от пробела до "м" + от начала строки до "м" |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 10,959
|
|
|||
|
||||
LISP vs .NET
LISP rules! |
||||
|
||||
Завораживающая идея...
написать на шарпе кучу собственных лисп функций, которые разработчики изначально забыли сделать, и продолжать писать костыли на лиспе хмм... а может обернуть лиспом какой-нибудь System.Xml.Linq?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Регистрация: 08.02.2021
Сообщений: 5
|
Цитата:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 10,959
|
Offtop: рулит, если к нему приделывать костыли Единственно неоспоримый плюс лиспа, имхо - что он является родным и встроенным, как VBA в офисе - т.е. на него всегда можно рассчитывать при необходимости что-то написать... Если не выпилят лисп в следующих версиях, конечно)
а потом, написав кучу функций и набив руку в .NetApi - подумать: если все равно придется перекомпилировать .Net сборки под другие версии акада, то зачем эти вставки из лиспа..?! |
|||
|
||||
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
VLIDE уже обозвана "устаревшей" А учитывая ACAD2021, LISPSYS, VS Code & Co - становится немного уныло.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Offtop: Ага, а во FreeCAD вообще командная строка сразу на питоне. Туда все и идем. Хотя в 2021 акаде все лиспы продолжают исправно работать. А VLIDE я открывал только для того, что бы чего нибудь откомпилировать в VLX
rusv, по моему эту тему проработал koMon в #3989
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Регистрация: 08.02.2021
Сообщений: 5
|
Цитата:
|
|||
|
||||
Кажется я упоминал, что задача "обработать все варианты строк" выглядит достаточно эпичной?
У меня такие задачи встречаются редко и разово, по мере надобности коды допиливаются под конкретную задачу. Вам уже накидали пару рабочих вариантов, которые осталось слегка подточить, читай про обработку строк и вперед. з.ы. тема уже поднималась и есть достаточно универсальный инструмент з.з.ы. Код:
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... Последний раз редактировалось Vladimir_Sergeevich, 16.02.2021 в 13:50. Причина: утомила работа, решил отвлечься |
||||
|
||||
эпичная/не эпичная, но решить её универсальным инструментом вряд ли получится. в общем виде алгоритм видится имхо таким.
1. ищем в тексте "м". если литера встречается однажды по условию, то оно и к лучшему) 2. идём "налево" от найденной литеры в поиске цифр до первой не цифры. найденные цифры читаем в число метров. запоминаем индекс начала метров. 3. теперь идём "направо" через "/", через цифры до "'". запоминаем индекс "'", если нашёлся или индекс "м", если не нашёлся. 4. режем строку по найденным индексам и вставляем новую подстроку метры/футы вместо вырезанной. 5. обновляем текст. |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |