Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций) - Страница 28
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций)

Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций)

Ответ
Поиск в этой теме
Непрочитано 26.01.2008, 13:15
Расчет спецификаций из мтекстов
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

Я не пользуюсь таблицами AutoCADа, черчу ячейки, в них по мтексту. Вопрос как оперативно соcчитать сумму цифр их содержимого. Слышал есть такой калькулятор, по моему calcacad называется, но на 2008-й Cad не идет. Что делать?

Добавлено.
Постепенно форум перешел в разработку липа для расчета спецификаций из мтекстов, и расчет суммы из мтекстов стал просто полезной добавкой к расчету спецификации. Последний вариант программы находится тут

Последний раз редактировалось Red Nova, 13.03.2009 в 10:11.
Просмотров: 202757
 
Непрочитано 18.11.2008, 14:33
#541
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Попробуй добавить типа такого
("ФЛ" "FL" "ФЛАНЕЦ" "Фланец")
Попробуй запустить код #539 из редактора Visual Lispa, а не из командной строки (команда VLISP)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.11.2008, 15:47
#542
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Ну и еще в редакторе VLIDE выполни такой код:
Код:
[Выделить все]
(setq txt (cdr(assoc 1 (entget(car(entsel "\nТкни в армянский текст"))))))
(vl-string->list txt)
(mapcar 'chr (vl-string->list txt))
(vl-string->list (strcase txt))
(mapcar 'chr (vl-string->list (strcase txt)))
и скриншот результата выложи здесь (пример внизу).
Миниатюры
Нажмите на изображение для увеличения
Название: Безимени-1.jpg
Просмотров: 145
Размер:	120.3 Кб
ID:	12354  
CB вне форума  
 
Автор темы   Непрочитано 18.11.2008, 20:46
#543
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Цитата:
Попробуй добавить типа такого
("ФЛ" "FL" "ФЛАНЕЦ" "Фланец")
Не пойму как это может повлиять на армянскую спецификацию?
Цитата:
Попробуй запустить код #539 из редактора Visual Lispa, а не из командной строки (команда VLISP)
Вот что вернуло
Код:
[Выделить все]
"\U+0547\U+0580\U+057B\U+0561\U+0576"
Попробовал заправить это дело в наш код (у меня ранее было тоже но без плюсов), но бестолку...

CB,
Выдает
Код:
[Выделить все]
"\U+0547\U+0580\U+057B\U+0561\U+0576" 
(92 85 43 48 53 52 55 92 85 43 48 53 56 48 92 85 43 48 53 55 66 92 85 43 48 53 54 49 92 85 43 48 53 55 54) 
("\\" "U" "+" "0" "5" "4" "7" "\\" "U" "+" "0" "5" "8" "0" "\\" "U" "+" "0" "5" "7" "B" "\\" "U" "+" "0" "5" "6" "1" "\\" "U" "+" "0" "5" "7" "6") 
(92 85 43 48 53 52 55 92 85 43 48 53 56 48 92 85 43 48 53 55 66 92 85 43 48 53 54 49 92 85 43 48 53 55 54) 
("\\" "U" "+" "0" "5" "4" "7" "\\" "U" "+" "0" "5" "8" "0" "\\" "U" "+" "0" "5" "7" "B" "\\" "U" "+" "0" "5" "6" "1" "\\" "U" "+" "0" "5" "7" "6") 
_$
__________________
Блог

Последний раз редактировалось Red Nova, 19.11.2008 в 18:26.
Red Nova вне форума  
 
Непрочитано 19.11.2008, 16:03
#544
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Red Nova, с другими шрифтами проверял? ну к примеру с ивритом
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 19.11.2008, 18:28
#545
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


dextron3, До иврита пока не дошел.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 20.11.2008, 16:45
#546
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Попробовал заправить это дело в наш код (у меня ранее было тоже но без плюсов), но бестолку...
Учти, что в коде вместо одного слеша нужно писать два. Типа такого
Код:
[Выделить все]
"\\U+0547\\U+0580\\U+057B\\U+0561\\U+0576"
Соответсвенноно шаблон
("ФЛ" "FL" "ФЛАНЕЦ" "\\U+0547\\U+0580\\U+057B\\U+0561\\U+0576")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 20.11.2008, 16:48
#547
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, CB, Если задачка тупиковая, то может как-то обойти ее? Может можно заменить все условие для фланцев? Ведь с трубами к примеру армянские символы прошли.

Добавлено
VVA,
Цитата:
Соответсвенноно шаблон
("ФЛ" "FL" "ФЛАНЕЦ" "\\U+0547\\U+0580\\U+057B\\U+0561\\U+0576")
Не помогает
__________________
Блог
Red Nova вне форума  
 
Непрочитано 20.11.2008, 16:55
#548
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Для армянских шрифтов какой в стиле файл используешь?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.11.2008, 21:32
#549
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


>Red Nova
Дай ссылку на весь лисп, а то по фрагменту в #525 не понятно что делает ((vl-position (car WHAT) '("ФЛ" "FL" "ФЛАНЕЦ")) и почему в начале двойная скобка...
CB вне форума  
 
Автор темы   Непрочитано 20.11.2008, 22:40
#550
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Вот шрифт который я использую и строка которую нужно считать как фланец.
CB,
Последняя версия в этой теме, на #449.
Вложения
Тип файла: rar Шрифт + пример.rar (40.0 Кб, 113 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 23.11.2008, 22:26
#551
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Может все же посмотрите прикрепленный на #550 файл? Я все в spec5d перевел на армянский, только фланец остался
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.11.2008, 08:21
#552
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


>Red Nova
Попробуй заменить в лиспе строку
Код:
[Выделить все]
((vl-position (car WHAT) '("ФЛ" "FL" "ФЛАНЕЦ")) ;_Сталь листовая
на
Код:
[Выделить все]
 
((wcmatch (strcase (car WHAT)) "ФЛ*,FL*,ФЛАНЕЦ*,\U+0547\U+0580\U+057B\U+0561\U+0576") ;_Сталь листовая
причем текст, выделенный синим должен быть скопирован из VLIDE, после выполнения кода:
Код:
[Выделить все]
(strcase (cdr(assoc 1 (entget(car(entsel "\nТкни в армянский текст"))))))
CB вне форума  
 
Автор темы   Непрочитано 24.11.2008, 15:29
#553
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


CB,
Не помогает. Дело наверное в алгоритме.
По некой причине этот алгоритм не переваривает армянские буквы, а вот алгоритм расчета труб распознает их нормально.
Код:
[Выделить все]
;;;======= СТАЛЬ ЛИСТОВАЯ ДЛЯ ФЛАНЦЕВЫХ ДЕТАЛЕЙ ?
    ((vl-position (car WHAT) '("ФЛ" "FL" "ФЛАНЕЦ" "\U+0547\U+0580\U+057B\U+0561\U+0576")) ;_Сталь листовая
    (setq L (vl-string-translate "X" "Х" (car(str-str-lst (cadr what) " ")))) ;;;_ Заменяем  английское X на русское Х на у первых символов до пробела
    (setq L (str-str-lst L "Х"))
                      ;;;Вес стали для фланцев определяем как Пи умножить на 0.5 диаметра в квадрате умножить на длину и на *STAL*
                      ;;;Диаметр - большее число, длина - меньнее
                     (setq L     (mapcar 'atof L))
                     (setq Diam  (apply 'max L) ;_ диаметр
                           sH (apply 'min L) ;_ длинна
                           )
    (setq *MPROF* (STRCAT "Лист " (dwgru-string-replace (rtos Sh 2 0) ".0" "")))
                      (setq ves_det_1 (* pi 0.25 Diam Diam sH *STAL*)
                            ves_det_1   (if (_get_sumT_Ves1)(atof(_sumT_Ves_okr ves_det_1)) ves_det_1)
                            ves_det_all (* count ves_det_1))
                    )
;;;======= ТРУБЫ КРУГЛЫЕ +
   ((vl-position (vl-string-trim  "%UuoOСсCc \t" (car WHAT)) '("ТРУБАКРУГЛАЯ" "ТР" "TR" "TP" "TР" "ТP" "ТРУБА" "\U053d\U0578\U0572." "\U053d\U0578\U0572\U0578\U057e\U0561\U056f")) ;_ТРУБЫ КРУГЛЫЕ
    (setq L (vl-string-translate "X" "Х" (car(str-str-lst (cadr what) " ")))) ;;;_ Заменяем  английское X на русское Х на у первых символов до пробела
    (setq L (str-str-lst L "Х"))
    ;;;Вес стали для труб определяем как Пи умножить на 0.5 диаметра в квадрате умножить на длину и на *STAL*
    ;;;Диаметр - большее число, длина - меньнее
                     (setq L (mapcar 'atof L))
                     (setq Diam (apply 'max L) ;_ диаметр
                           Ts (apply 'min L) ;_ толщина стенки
                           Diam (* 0.5 Diam)    ;_внешний радиус
                           sH (- Diam Ts)    ;_внутренний радиус
                           )
(setq *MPROF* (strcat "Труба круглая " (rtos (* 2 Diam) 2 0) "х" (rtos Ts 2 0)))                    
                      (setq ves_det_1 (*  (- (* Diam Diam)(* sH sH)) DLN pi *STAL*)
                            ves_det_1   (if (_get_sumT_Ves1)(atof(_sumT_Ves_okr ves_det_1)) ves_det_1)
                            ves_det_all (* count ves_det_1))
                    )
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.11.2008, 16:29
#554
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Правильно, в алгоритме (именно ф-ция mark_parser)
В алгоритме заложено, что если есть UNICODE, то только ОДИН символ (диаметр или профиль)
Поэтому
1. Замени ф-цию mark_parser этой
Код:
[Выделить все]
;;;Текстовый анализатор позиции марка
(defun mark_parser (str / i buf)
 ;;;Удаляем подчеркивание и надчеркивание, пробелы, знаки табуляции 
 (setq str (vl-string-trim  "%UuoO \t" str))
 ;;;Проверяем, используются ли UNICOD символу (типа \U+EXXXX)
(setq buf "")  
 (while (= (substr str 1 3) "\\U+")
   (setq buf (strcat buf (substr str 1 7)) str (substr str 8))
   )
 (while (setq i (VL-STRING-SEARCH "\\U+" str))
   (setq str(dwgru-string-replace str (substr str (1+ i) 7) ""))
   )
   
 (setq str (vl-string-trim  "%UuoO \t" str))
  ;;;Удаляем в остатке строки символы-паразиты
  ;;; Пока что это диаметр
  ;;;Строка приведена в верхнему регисту
 (mapcar '(lambda(txt)
            (setq str(dwgru-string-replace str txt ""))
            )
         '("%%U" "%%O" "%%C" "\\U+E712")
         )
            
 (setq i 0 )
   (while (not(vl-position (substr str (setq i (1+ i)) 1)
            '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "")
            )
              )
     )
  (if (> i 0)(setq i (1- i)))
  (list
    (strcat buf (strcase(vl-string-trim  "%UuoO \t"  (substr str 1 i))))
    (strcase(vl-string-trim  "%UuoO \t" (if (zerop i) str (substr str (1+ i)))))
    )
  )
2. Сам шаблон
Код:
[Выделить все]
;;;======= СТАЛЬ ЛИСТОВАЯ ДЛЯ ФЛАНЦЕВЫХ ДЕТАЛЕЙ ?
    ((vl-position (car WHAT) '("ФЛ" "FL" "ФЛАНЕЦ" "\\U+0547\\U+0580\\U+057В\\U+0561\\U+0576" )) ;_Сталь листовая
    (setq L (vl-string-translate "X" "Х" (car(str-str-lst (cadr what) " ")))) ;;;_ Заменяем  английское X на русское Х на у первых символов до пробела
    (setq L (str-str-lst L "Х"))
                      ;;;Вес стали для фланцев определяем как Пи умножить на 0.5 диаметра в квадрате умножить на длину и на *STAL*
                      ;;;Диаметр - большее число, длина - меньнее
                     (setq L     (mapcar 'atof L))
                     (setq Diam  (apply 'max L) ;_ диаметр
                           sH (apply 'min L) ;_ длинна
                           )
...
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 24.11.2008, 18:58
#555
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Спасибо. Теперь работает
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 09.12.2008, 17:25
#556
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA
По поводу основного кода.
1. В приложенном ролике показано в чем дело. Если к примеру в столбце количество получилось наложение текстов, то когда рассчитываем только эту строку то выходит сообщение о том что в количестве столбцов есть не соответствия. А если рассчитывать сразу несколько строк, то это сообщение к сожалению не выходит, что затрудняет работу. Я в одном проекте минут 20 искал в чем ошибка, пока не врубился. Прошу изменить код так, чтобы сообщение о несоответствии количества столбцов выходило и в отмеченом случае. Еще было бы хорошо, чтобы эта строка краснела. Так можно будет оперативно ее вычислить, а не искать ошибку во всей спецификацие.

2. Прошу добавить в "Итог Работы" в конце каждого ГОСТа строку с суммой масс всех профилей, и в самом конце общюю сумму всех масс. Вот так
Код:
[Выделить все]
============= ИТОГ РАБОТЫ ==============

Класс : Арматура АС1
ГОСТ 5781-82
     Арматура d= 18  -  25.2 кг.
     Арматура d= 22  -  4.6 кг.
                     Итог  - 29.8 кг.
-------------------------------------------------
Класс : Прокат ВСТ3КП2
ГОСТ 10704-91
     Труба круглая 60х4  -  5.6 кг.
     Труба круглая 89х4  -  22.1 кг.
     Труба круглая 114х4  -  28.6 кг.
     Труба круглая 127х4  -  154.3 кг.
                     Итог  - 210.6 кг.
-------------------------------------------------
ГОСТ 19903-74
     Лист 5  -  14.4 кг.
     Лист 6  -  3.4 кг.
     Лист 8  -  9.0 кг.
     Лист 10  -  9.6 кг.
     Лист 12  -  41.2 кг.
     Лист 16  -  20.1 кг.
                     Итог  - 97.7 кг.
-------------------------------------------------
ГОСТ 8509-93
     Уголок 30Х30Х3  -  4.0 кг.
     Уголок 40Х40Х4  -  15.2 кг.
     Уголок 50Х50Х5  -  22.4 кг.
                     Итог  - 41.6 кг.
-------------------------------------------------
ГОСТ 103-76
     Полоса 4  -  1.6 кг.
                     Итог  - 1.6 кг.
-------------------------------------------------
            Общий  Итог  - 381.3 кг.
-------------------------------------------------
Вложения
Тип файла: rar CamCapture11eada_Screen.rar (32.0 Кб, 104 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 11.02.2009, 14:34
#557
acyxou


 
Регистрация: 12.07.2008
Сообщений: 211


Перепробовал кучу программулек, как ваших так и наших англоязычных собратьев и остался разочарован.... У каждой есть свой недостаток, и нет такого чтоб выбрал одну определенную и пользуешься ей..... Нужно использовать несколько разных, потому что одна считает атрибуты, но секущей рамкой не выбирает, другая секущей рамкой выбирает, но не считает атрибуты, третья не считает размеры, четвертая позволяет вставлять резутльтат только как новый текст, пятой нужно все время что-то постоянно вводить с клавиатуры чтоб она работала.... Вобщем идей много и хороших, но все они разбросаны.... Нет чтобы собрать все в кучу.... Ну да ладно... и на том всем спасибо
__________________
Users are not stupid, they are busy.
acyxou вне форума  
 
Непрочитано 11.02.2009, 14:36
#558
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Нет чтобы собрать все в кучу.
Тогда получится СПДС
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 11.02.2009, 16:29
#559
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


__________________
Блог

Последний раз редактировалось Red Nova, 15.02.2009 в 22:25.
Red Nova вне форума  
 
Непрочитано 11.02.2009, 17:11
#560
acyxou


 
Регистрация: 12.07.2008
Сообщений: 211


Цитата:
Сообщение от VVA Посмотреть сообщение
Тогда получится СПДС
Тоже верно
__________________
Users are not stupid, they are busy.
acyxou вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Предложения по расчетным моделям сооружений aldt Расчетные программы 8 06.07.2009 17:53
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46