Re: LISP. Вычисление суммы чисел (например, в экспликации)

тут
http://dwg.ru/dwl/389
тут
http://dwg.ru/dwl/362
и тут
https://www.caduser.ru/forum/topic20299.html

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Да.... а я только пупочку хотел... Ну, спасибо...

Re: LISP. Вычисление суммы чисел (например, в экспликации)

2ZZZ:
а что б результат заменял числа в строке вставки не трогая остальной текст можно сделать?

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Господа, прошу прощения, конечно точка вместо слеша http://geol-dh.ru/kai_stru.html
Извините, с ноября не было возможности смотреть форум.

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Здравствуйте товарищь.
Ваша программа великолепна.
Есть один странный глюк.
ИНОГДА в сумме теряется последний "0". например
91+9=10 а не 100. Что это может быть?

Re: LISP. Вычисление суммы чисел (например, в экспликации)

> ivan
Если это повторяется постоянно в одном файле, при повторном выборе текстов, тогда пришлите мне файл(обрезанный, только глюкнутый текст).

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Нет, это происходит в разных файлах на разных машинах. И не всегда причем. Не могу найти причину. Один и тот же файл на одной машине глючит на другой - нет. При этом глюк бывает на обоих машинах. Мистика!
PS. ACAD-2006

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Код от (2005-08-16 23:24:57) работает как часики,очень удобно. Спасибо огромное разработчику!

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Похоже в последнем варианте от ZZZ:

> ZZZ
дейсвительно присутствует ошибка - если число оканчивается нулями они проглатываются программой.
Исправляется заменой строки

(setq value (vl-string-right-trim ".0" value))

на строку

(setq value (vl-string-right-trim "." (vl-string-right-trim "0" value)))

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Программа работает классно! Но вот подскажите, пожалуйста, как можно сделать на панели размеров (например) кнопку, нажимая на которую будет запускаться данная функция?

Re: LISP. Вычисление суммы чисел (например, в экспликации)

dwg.ru/art/2

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Спасибо, с кнопкой разобрался! Вместо макроса пишу просто название функции. Но возникла другая проблема. При каждом новом запуске AutoCAD приходится заново подгружать файл с данной функцией. (я это делаю через меню Сервис -> AutoLISP -> Приложения...). Извините если вопрос глупый, но как автоматизировать процесс подгрузки таких вот дополнительных файлов функций? (на примере z-calc-text-value.lsp)

Re: LISP. Вычисление суммы чисел (например, в экспликации)

dwg.ru/art/8
:)

Re: LISP. Вычисление суммы чисел (например, в экспликации)

спасибо большое! Очень полезная информация!

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Еще немного модифицировал функцию ZZZ от (2005-08-18 11:32:34), чтобы вставляла результат в чертеж. Кто-нибудь поможет сделать такую же но с умножением?

 (defun c:z-calc-text-value (/ value ent obj ss)
  (vl-load-com)
  (princ
    "\nВыберите текстовые объекты среди которых будет произведененна калькуляция"
    ) ;_ princ
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if (not ss)
    (princ "Не выбраны объекты")
    (progn
      (setq
  value (rtos
    (apply
      (function +)
      (mapcar
        (function
          (lambda (a)
      (atof
        (vl-string-trim
          "%Uu {\\Ll}"
          (vl-string-subst
            "."
            ","
            (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
    ) ;_ rtos
  ) ;_ setq
      (if (vl-string-position (ascii ".") value)
  (setq value (vl-string-right-trim ".0" value))
  ) ;_ if
      (setq value (vl-string-subst "," "." value))
      (princ (strcat "\n Сумма = " value))
      (alert (strcat "Сумма = " value "\nУкажите точку вставки "))
      (setvar "ERRNO" 0)
      (if (and ent
         (vlax-property-available-p
     (setq obj (vlax-ename->vla-object ent))
     'TextString
     ) ;_ vlax-property-available-p
         ) ;_ and
  (progn
    (vlax-put-property obj 'TextString value)
    (vlax-release-object obj)
    ) ;_ progn
  ) ;_ if
      ) ;_ progn
    ) ;_ if
  (setq pt2 (getpoint))
  (setq r (* (getvar "DIMSCALE") (getvar "TEXT,MTEXT"))
   (command "_text" pt2 r 0 value)
  (princ)
  ) ;_ defun

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Виноват, опечатка

(defun c:z-calc-text-value (/ value ent obj ss)
  (vl-load-com)
  (princ
    "\nВыберите текстовые объекты среди которых будет произведененна калькуляция"
    ) ;_ princ
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if (not ss)
    (princ "Не выбраны объекты")
    (progn
      (setq
  value (rtos
    (apply
      (function +)
      (mapcar
        (function
          (lambda (a)
      (atof
        (vl-string-trim
          "%Uu {\\Ll}"
          (vl-string-subst
            "."
            ","
            (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
    ) ;_ rtos
  ) ;_ setq
      (if (vl-string-position (ascii ".") value)
  (setq value (vl-string-right-trim ".0" value))
  ) ;_ if
      (setq value (vl-string-subst "," "." value))
      (princ (strcat "\n Сумма = " value))
      (alert (strcat "Сумма = " value "\nУкажите точку вставки "))
      (setvar "ERRNO" 0)
      (if (and ent
         (vlax-property-available-p
     (setq obj (vlax-ename->vla-object ent))
     'TextString
     ) ;_ vlax-property-available-p
         ) ;_ and
  (progn
    (vlax-put-property obj 'TextString value)
    (vlax-release-object obj)
    ) ;_ progn
  ) ;_ if
      ) ;_ progn
    ) ;_ if
  (setq pt2 (getpoint))
  (setq r (* (getvar "DIMSCALE") (getvar "DIMTXT")))
   (command "_text" pt2 r 0 value)
  (princ)
  ) ;_ defun

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Подскажите пожалуйста, как все цифры
на черетеже увеличить на один и тот же коэффициент?
Очень нада. пожалуйста

Re: LISP. Вычисление суммы чисел (например, в экспликации)

> Алексей
Сам-то понял чего спросил? На будущее: "просто цифр" в файле dwg нет. Есть одно- или многострочные тексты; атрибуты; блоки с атрибутами; величины размеров и т.п. Это раз. Два: один вопрос - одна тема.

Re: LISP. Вычисление суммы чисел (например, в экспликации)

> Алексей
Три. И где пробывал искать?
Увеличение всех отметок на определенную величину

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Вадим (2007-11-08 11:43:36)
работает хорошо, но та же ошибка: съедаются нули в сумме. если сумма чисел равна 20, то ответ: 2
как исправить?

Re: LISP. Вычисление суммы чисел (например, в экспликации)

хотя.. попробовал в другом файле - все работает..

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Здравствуйте, успешно пользуюсь лиспом выложенным Вадимом. Прошу модифицировать лисп, так, чтоб в конце сумма не выводилась в новом тексте, а вписывалась в существующий, по принципу оверрайт. Буду очень благодарен.

Re: LISP. Вычисление суммы чисел (например, в экспликации)

Ой, извеняюсь такой вариант программы тут уже есть.

Re: LISP. Вычисление суммы чисел (например, в экспликации)

У меня имеются куча блоков электроприемников с заданным невидимым атрибутом "P" ( мощность  кВт). Было бы круто если бы можно было лиспом посчитать сумму всех "Р" на чертеже.

Re: LISP. Вычисление суммы чисел (например, в экспликации)

У меня имеются куча блоков электроприемников с заданным невидимым атрибутом "P" ( мощность кВт). Было бы круто если бы можно было лиспом посчитать сумму всех "Р" на чертеже.

Колега, это делается штатными средствами акада, точнее экспресом экспортируете атрибуты блоков а дальше обрабатываете как захотите в эксельке, даже можете группу подшить на блок и погрупам разбивать нагрузку.
команда attout