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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Поле суммы нескольких текстов

Поле суммы нескольких текстов

Ответ
Поиск в этой теме
Непрочитано 25.11.2022, 10:06 #1
Поле суммы нескольких текстов
Ingpro
 
Регистрация: 11.07.2022
Сообщений: 451

Доброго времени суток!
Есть лисп "Суммирование Текста, Мтекста, Размеров указанием или рамкой".
Вставляет значение суммы выбранных текстов в чертеж.
Подскажите, пожалуйста, можно эту сумму вставить полем?

Миниатюры
Нажмите на изображение для увеличения
Название: Сумма текста.png
Просмотров: 104
Размер:	6.2 Кб
ID:	251483  

Вложения
Тип файла: lsp SumT.lsp (5.0 Кб, 31 просмотров)

Просмотров: 5350
 
Непрочитано 06.12.2022, 10:15
#2
Konstr_pgs


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


Можно ли применить такой код поля для суммы нескольких текстов?
Код:
[Выделить все]
  "%<\\AcObjProp Object(%<\\_ObjId "
            (LM:objectid (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
                                ">%).TextString>%" " + "
                                lst
Выбор объектов оставить как в SumT, но вывод результата осуществить полем где-то в этом месте
Код:
[Выделить все]
 (princ "\nРезультат=")(princ (rtos res 2)) 
  (if (not (equal res 0. 1e-3)) 
    (progn 
      (if (= (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE")))) 0.0) ;_ end of =
        (progn ;; нулевая высота текста
   (if (not (setq txt_height (getreal "\nВведите высоту текста <250> : ")))(setq txt_height 250)) 
          (vl-cmdf "_.TEXT" "0,0" txt_height 0 (rtos res 2))) ;_ end of progn
        (progn ;; фиксированнная высота
          (vl-cmdf "_.TEXT" "0,0" 0 txt (rtos res 2))) ;_ end of progn
         )
      (command "_.copybase" "0,0" (entlast) "" "_.erase" (entlast) "" "_.pasteclip" pause) 
      ) ;_ end of progn 
    ) ;_ end of if 
   (princ)
Подскажите, пожалуйста, как это сделать правильно, чтобы оставалась связь с выбранными (просуммированными текстами)?

Последний раз редактировалось Konstr_pgs, 06.12.2022 в 10:45.
Konstr_pgs вне форума  
 
Автор темы   Непрочитано 06.12.2022, 14:10
#3
Ingpro


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


Оказывается есть лисп у Lee Mak FieldArithmeticV1-2.
http://lee-mac.com/fieldmath.html Field Arithmetic | Lee Mac Programming
Лисп позволяет выполнять арифметические операции (сложение/addition, вычитание/subtraction,
умножение/ multiplication, деление/division) над числовым текстом или полями,
при этом результат вычисления представляется с использованием выражения поля.
Единственное неудобство, что нельзя выбрать группу текстов для сложения, например, приходится
каждый раз выбирать текст/add, затем другой текст/add (или enter). А если текстов 20-30...
Лисп очень многофункциональный, может кто-нибудь сможет вытащить оттуда нужные строчки
только для сложения текстовых объектов или полей с добавлением выбора рамкой и вставкой результата суммы полем.

Последний раз редактировалось Ingpro, 14.01.2023 в 10:33.
Ingpro вне форума  
 
Автор темы   Непрочитано 13.01.2023, 14:59
#4
Ingpro


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


Можно ли написать на .arx, выбрать тексты рамкой (или по одному) и сумму текстов вставить полем в чертеж.

Последний раз редактировалось Ingpro, 14.01.2023 в 10:32.
Ingpro вне форума  
 
Непрочитано 13.01.2023, 21:03
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


*.arx - это скомпилированные C++ исходники. Что собираетесь адаптировать то?) Даже если не принимать во внимание, что этот *.arx является частью платной программы...
Сергей812 вне форума  
 
Автор темы   Непрочитано 19.01.2023, 11:56
#6
Ingpro


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


Небольшая экскурсия по форумам касательно темы "Поле суммы текстовых объектов" ни к чему не привела.
"Сумма текстов, Мтекстов" (без полей) - эта тема раскрыта со всеми возможными вариантами.
С полями суммы есть только длины, площади объектов.
Вот тема с 2016 года, тоже осталась без ответа.
Автор Funnare 22 июня 2016г.
https://www.caduser.ru/forum/topic19661-p3.html
"Тема: LISP. Вычисление суммы чисел (например, в экспликации)
Хочется сделать такой лисп, который запоминал бы те объекты, для которых выполнялась сумма.
А в новом текстовом объекте делал бы связь с выделенными ранее. И пересчитывал суммы при регенерации.
(то есть, грубо говоря, должно создаваться поле (field), в котором была бы формула суммы из свойств
объектов суммирования с указанием свойства Содержание).
Что для этого необходимо сделать? Как заставить лисп запоминать все имена объектов, из которых состоял
набор?
Нужно ли будет в лиспе писать строки на Diesel?
Помогите разобраться, либо подскажите, может где-то есть готовое решение, чтобы посмотреть код".
Уважаемые инженеры и энтузиасты лисп, проявите интерес к теме, пожалуйста.

Последний раз редактировалось Ingpro, 19.01.2023 в 12:03.
Ingpro вне форума  
 
Непрочитано 19.01.2023, 12:32
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Чисто теоретически (поскольку времени на написание нет): попытаться составить поле, увидеть параметры форматирование и проч. Потом выбрать тексты / мтексты, для каждого из них вычислить представление ObjectId, и загнать в текст. На форуме были темы на предмет вставки полей.
P.S. Есть еще один вариант - в таблице вставить поля - ссылки на нужные тексты, и потом попробовать просуммировать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.01.2023, 13:57
#8
Ingpro


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


Алексей, чисто теоретически, хотелось бы алгоритм по типу программ, вставляющих поле суммы площадей (длин) нескольких объектов, т.е. выбрать на чертеже текстовые объекты (текст, мтекст) рамкой или по одному и вставить в чертёж поле суммы.
У Lee Mac есть LengthAreaFieldV1-4.lsp, есть у VVA подобные лиспы... но все они считают сумму площадей,
а для суммы текста ничего подобного нет...

Последний раз редактировалось Ingpro, 19.01.2023 в 19:17.
Ingpro вне форума  
 
Непрочитано 19.01.2023, 20:37
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Алексей, чисто теоретически, хотелось бы алгоритм по типу программ, вставляющих поле суммы площадей (длин) нескольких объектов, т.е. выбрать на чертеже текстовые объекты (текст, мтекст) рамкой или по одному и вставить в чертёж поле суммы.
У Lee Mac есть LengthAreaFieldV1-4.lsp, есть у VVA подобные лиспы... но все они считают сумму площадей,
а для суммы текста ничего подобного нет...
алгоритм Алексей выше уже дал - собираете коды полей типа %<\AcObjProp Object(%<\_ObjId 194727168>%).TextString>% и вставляете полями последовательно в тот же мультитекст. Все примеры кодов есть даже тут на форуме, не говоря уж про инет.
Сергей812 вне форума  
 
Автор темы   Непрочитано 19.01.2023, 21:39
#10
Ingpro


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
собираете коды полей типа
Код поля для текста записать не сложно, а вот как вывести поле СУММЫ нескольких текстов, т.е. в поле должна быть
формула суммы текстовых объектов, как это сделать на лисп, я не знаю...
Код:
[Выделить все]
 %<\AcExpr (%<\_FldPtr 877633424>%+%<\_FldPtr 877635920>%+%<\_FldPtr 877640272>%) \f "%lu2">%
Миниатюры
Нажмите на изображение для увеличения
Название: поле суммы.png
Просмотров: 24
Размер:	30.8 Кб
ID:	252697  
Ingpro вне форума  
 
Непрочитано 20.01.2023, 06:50
1 | 1 #11
gumel


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
, как это сделать на лисп, я не знаю...
Эх, тоже сильно плаваю в плане программирования на Лисп. Попробовал переделать то что наделал Lee Mac. Похоже, что получилось. Складывает правильнонаписанные тексты и мтексты
Вложения
Тип файла: lsp Txt2Field.lsp (3.7 Кб, 18 просмотров)
gumel вне форума  
 
Непрочитано 20.01.2023, 09:20
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Ingpro Посмотреть сообщение
т.е. в поле должна быть
формула суммы текстовых объектов
сумма текстовых объектов - это конкатенация (склеивание) строк с точки зрения программирования. А тут внезапно "вылезает", что речь идет о сумме чисел в текстовом виде...
Сергей812 вне форума  
 
Автор темы   Непрочитано 20.01.2023, 09:20
#13
Ingpro


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


Цитата:
Сообщение от gumel Посмотреть сообщение
Попробовал переделать то что наделал Lee Mac. Похоже, что получилось.
gumel, спасибо Вам огромное! Получилось! То что надо! Успехов в программировании!

Не могу в этом лиспе найти строчку, которая устанавливает количество знаков после точки. Если суммировать целые числа,
поле суммы тоже целое число, если десятичные - поле суммы типа 15.260000. Есть ли возможность исправить на 15.26, т.е 2 знака
после точки?

Последний раз редактировалось Ingpro, 20.01.2023 в 10:03.
Ingpro вне форума  
 
Непрочитано 20.01.2023, 12:10
1 | 1 #14
gumel


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Есть ли возможность исправить на 15.26, т.е 2 знака после точки?
да можно, вроде так:
Вложения
Тип файла: lsp Txt2Field.lsp (3.7 Кб, 27 просмотров)
gumel вне форума  
 
Автор темы   Непрочитано 20.01.2023, 12:34
1 | 1 #15
Ingpro


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


Да, gumel, оставляет 2 знака, супер, спасибо...
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Поле суммы нескольких текстов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При завершении копирования (copy) нескольких выделенных объектов, исходный остается активным. AutoCAD 2017. OlegPVQ AutoCAD 13 15.11.2018 01:59
LISP. Построение габаритного контура для нескольких объектов с заданием поворота этого контура. Profan Готовые программы 0 26.01.2017 10:52
Вставка содержимого ячейки таблицы в поле в mtext Witalij AutoCAD 11 22.11.2007 14:15
Overkill поле numeric fuzz MFor AutoCAD 8 26.04.2007 17:22