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

Вернуться   Форум 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.
Просмотров: 202669
 
Непрочитано 06.08.2008, 15:07
#481
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Можешь подсказать ссылочку??
skkkk вне форума  
 
Автор темы   Непрочитано 06.08.2008, 15:08
#482
Red Nova

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


какую ссылочку?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 09.08.2008, 20:49
#483
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Ну где про атрибуты можно почитать... Хотя я книжку уже нашел, спасибо
skkkk вне форума  
 
Непрочитано 11.08.2008, 13:00
#484
OHUKC


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


привет, парниа можно ли сделать деление М-ТЕКСТОВ....аналогично суммированию и умножению????
OHUKC вне форума  
 
Непрочитано 11.08.2008, 16:20
#485
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


В лиспе из #422 поменяй в строчке
Код:
плюс на нужный тебе знак, и имя команды измени, сделав несколько lsp-файлов, если хочешь, чтоб работало несколько арифм. функций
skkkk вне форума  
 
Непрочитано 11.08.2008, 16:26
#486
OHUKC


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


это я понял....а как сделать так , чтоб при произведение 2-ух чисел
результат выводился делённый на 1000????.....у меня просто в спецификации сечение развёртки в мм., общая длина в метрах, а площадь должна быть в метрах кв.....а в коде програмы не могу найти какой переменной, присваивается численное значение из строки...
OHUKC вне форума  
 
Непрочитано 11.08.2008, 22:11
#487
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Тогда старайся точнее вопрос ставить
Это сделать можно точно, но без гуру лиспа не обойтись. Можешь, пока они не пришли, попробовать вариант отсюда http://dwg.ru/f/showthread.php?t=152...EC%E5%F2%EE%EA
# 41, только в строке
Код:
[Выделить все]
(setq newstr  (+ (atof str) value))
поставь нужный знак. Надо выбрать тексты, потом набрать число, на которое разделить (в оригинале - прибавить, ясное дело). Не супер вариант, но лучше, чем вручную считать. Можно рамкой выбирать тексты и быстрым выбором. Только там результат "зеленеет", но это удобно - не перепутаешь обработанные тексты. Там найдешь строку с комментарием о номере цвета и поставить можешь нужный
skkkk вне форума  
 
Непрочитано 12.08.2008, 09:35
#488
OHUKC


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


спасибо....но хотелось бы чтоб это при умножении делалось
OHUKC вне форума  
 
Непрочитано 12.08.2008, 09:46
#489
OHUKC


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


не ...чето не получается ...ноль выдаёт
OHUKC вне форума  
 
Непрочитано 12.08.2008, 10:53
#490
CB

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


В каком номере топика находится программа (что-то не хочется листать 25 страниц)
CB вне форума  
 
Непрочитано 12.08.2008, 10:57
#491
OHUKC


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


пост №16. страница 1.....
OHUKC вне форума  
 
Непрочитано 12.08.2008, 11:13
#492
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


А не лучше вариант из #422 на 22-й странице?
Добавлено.
Даже последняя редакция в #476, стр 24. Этот лисп может сразу форматировать обрабатываемый мтекст, также обрабатывает и тексты, атрибуты, ячейки таблицы и может менять цвет результата.

Последний раз редактировалось skkkk, 12.08.2008 в 11:51.
skkkk вне форума  
 
Непрочитано 12.08.2008, 12:05
#493
OHUKC


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


он навороченный и долго выбирать из всяких подменюшек....
мне этот больше понравился
OHUKC вне форума  
 
Непрочитано 12.08.2008, 12:47
#494
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Там же нет никаких подменюшек... А чтобы не выскакивало окно "Сумма =", достаточно просто поставить перед словом "alert" в тексте кода точку с запятой.
А что у тебя не получилось, там где одни нули, я не понял?

Уважаемые гуру, не могли бы вы помимо задачи OHUKCA немного усложнить данный лисп, чтобы он выполнял следующее: пусть есть тексты с числами a, b и c. Нужно,чтобы лисп выполнял действие (а-b):c*1000. Хотелось бы так: вызываем лисп, кликаем а, b, c, затем правой кнопкой мыши (enter), затем кликаем текст-приемник. Ну и чтобы цвет менял как в #422 и 476. Заранее благодарен:-)
skkkk вне форума  
 
Непрочитано 12.08.2008, 13:03
#495
CB

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


По заявке OHUKC (синим - новое, красным - что закомментировали)
Код:
[Выделить все]
(defun c:z-calc-text-value (/ value ent obj ss action devide)
  (vl-load-com)
  (princ
    "\nВыберите текстовые объекты среди которых будет произведененна калькуляция"
    ) ;_ princ
  (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  (if (not ss)
    (princ "Не выбраны объекты")
    (progn
 
(initget "+ — * /")
(setq action (getkword "\nКакое действие произвести [+ — * /] :<+> "))
(if (not action)
 (setq action "+")
) ;_ end of if
(initget "Y N _ Н Т")
(setq devide (getkword "\nДелить результат на 1000? [Yes/No] :<No>"))
 
  (setq value
   (rtos
(/
    (apply
'((lambda () (eval (read action))))
      
;;;      (function '+)
 
      (mapcar
        (function
          (lambda (a)
      (atof
        (vl-string-trim
          "%Uu {\\Ll}"
          (vl-string-subst
            "."
            ","
            (mip_MTEXT_Unformat (cdr (assoc 1 (entget a)))) ;_Снос форматирования
            ) ;_ vl-string-subst
          ) ;_ vl-string-trim
        ) ;_ atof
      ) ;_ lambda
          ) ;_ function
        (vl-remove-if
          (function listp)
          (mapcar (function cadr)
            (ssnamex ss)
            ) ;_ mapcar
          ) ;_ vl-remove-if
        ) ;_ mapcar
      ) ;_ apply
 
(if devide 1000. 1.)
)
    
    ) ;_ rtos
  ) ;_ setq
      (if (vl-string-position (ascii ".") value)
  (setq value (vl-string-right-trim ".0" value))
  ) ;_ if
      (princ (strcat "\n Сумма = " value))
      (alert (strcat "Сумма = " value))
      (setvar "ERRNO" 0)
      (while
  (and (not (setq  ent
       (car
         (nentsel
           (strcat
             "\n Выберите текстовый объект для записи значения <Выход>:"
             ) ;_ strcat
           ) ;_ entsel
         ) ;_ car
      ) ;_ setq
      ) ;_ not
       (equal (getvar "ERRNO") 7)
       ) ;_ and
   (setvar "ERRNO" 0)
   ) ;_ while
      (if (and ent
         (vlax-property-available-p
     (setq obj (vlax-ename->vla-object ent))
     'TextString
     ) ;_ vlax-property-available-p
  (vlax-write-enabled-p obj)      
         ) ;_ and
  (progn
    (vlax-put-property obj 'TextString value)
    (vla-put-color obj 3)  ;_Цвет текста 3 - зеленый
    (vlax-release-object obj)
    ) ;_ progn
  ) ;_ if
      ) ;_ progn
    ) ;_ if
  (princ)
  ) ;_ defun
(defun mip_MTEXT_Unformat ( Mtext / text Str )
  (setq Text "")
   (while (/= Mtext "")
        (cond
          ((wcmatch (strcase (setq Str (substr Mtext 1 2))) "\\[\\{}]")
            (setq Mtext (substr Mtext 3) Text   (strcat Text Str)))
          ((wcmatch (substr Mtext 1 1) "[{}]")(setq Mtext (substr Mtext 2)))
          ((wcmatch (strcase (setq Str (substr Mtext 1 2))) "\\[LO`~]")
    (setq Mtext (substr Mtext 3)))
          ((wcmatch (strcase (substr Mtext 1 2)) "\\[ACFHQTW]")
            (setq Mtext (substr Mtext (+ 2 (vl-string-search ";" Mtext)))))
          ((wcmatch (strcase (substr Mtext 1 2)) "\\P")
            (if (or(= " " (substr Text (strlen Text)))
     (= " " (substr Mtext 3 1)))
               (setq Mtext (substr Mtext 3))
               (setq Mtext (substr Mtext 3) Text (strcat Text " "))))
   ((wcmatch (strcase (substr Mtext 1 2)) "\\S")
            (setq Str   (substr Mtext 3 (- (vl-string-search ";" Mtext) 2))
                  Text  (strcat Text (vl-string-translate "#^\\" "/^\\" Str))
                  Mtext (substr Mtext (+ 4 (strlen Str)))))
   (t (setq Text (strcat Text (substr Mtext 1 1)) Mtext (substr Mtext 2)))
   ))
  Text
  )
CB вне форума  
 
Непрочитано 12.08.2008, 14:10
#496
OHUKC


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


спасибо то что надо
OHUKC вне форума  
 
Непрочитано 12.08.2008, 14:24
#497
OHUKC


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


а не подскажешь, где точность изменить ????...мне до 4-ого знака надо
OHUKC вне форума  
 
Непрочитано 12.08.2008, 14:33
#498
OHUKC


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


и ещё не подскажешь , как сделать так чтоб результат при вставке не становился зелёным, а оставался такого же цвета , какого был М-Текст до вставки????
OHUKC вне форума  
 
Непрочитано 12.08.2008, 15:06
#499
OHUKC


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


с цветом разобрался , а вот с точностью чё-то не догоняю где поменять????
OHUKC вне форума  
 
Непрочитано 12.08.2008, 15:35
#500
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


попробуй добавить после первой строки в коде строки
Код:
[Выделить все]
(command "luprec" 4); включает точность до четвертого знака
(command "dimzin" 0); отключает подавление нулей
При подавлении нулей (dimzin = 8) числа вида Х.ХХХ0 будут показаны как Х.ХХХ
skkkk вне форума  
Ответ
Вернуться   Форум 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