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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Возможно ли сделать сумму чисел из выбранных текстовых объектов с префиксами и суффиксами?

Возможно ли сделать сумму чисел из выбранных текстовых объектов с префиксами и суффиксами?

Ответ
Поиск в этой теме
Непрочитано 06.05.2015, 16:56 #1
Возможно ли сделать сумму чисел из выбранных текстовых объектов с префиксами и суффиксами?
SilvioManuel
 
Регистрация: 11.08.2010
Сообщений: 124

Есть длинный трубопровод на который нужно посчитать по длине весь - но нужно складывать длины участков. Приходится "мотать" чертёж вдоль трубы и складывать на калькуляторе. Есть ли такой кодик, что "прочитает" выбранные текстовые объекты и циферкой где нибудь выдаст сумму ?(произведение или пр. арифм. операции). Проблема ещё в том, что у длин есть префиксs (L, L=), а в других чертежах и суффиксы (м, п. м.), а в разных чертежах есть и МТекст и Текст.
Просмотров: 2994
 
Непрочитано 06.05.2015, 18:04
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Как ты вовремя спросил. Вот код, рассчитанный на стиль текста с фиксированной высотой:
Код:
[Выделить все]
;; ********************** сумма.lsp ********************
;; Сумма чисел из текстов вида L=5м.
;;  Автор Владимир Громов.
(defun C:СУММА ( / echo типт namobj entp rmnr ssl ssn1 pp n сумчис mld строка 
                 номдо стрдо номпосле число сумчис текстдлин)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(initget "В М Д Т D V L N")
(setq типт (getkword "\n Что выберем для суммы длин [Выноски/Мтексты/Дтексты/Тексты]<Выноски>: "))
(if (or (= типт "В") (= типт "D") (= типт nil)) (setq namobj "MULTILEADER"))
(if (or (= типт "М") (= типт "V")) (setq namobj "MTEXT"))
(if (or (= типт "д") (= типт "L")) (setq namobj "DTEXT"))
(if (or (= типт "Т") (= типт "N")) (setq namobj "TEXT"))
;; **** Ликвидация предыдущего (текущего) набора
(command "_point" "0,0")
(setq entp (ssget "_L"))
(setq entp nil)
(entdel (entlast))
;; *********************************************
(initget "Р H С C")
(setq rmnr (getkword "\nВыбор объектов с помощью [Рамка/Секрамка]<Рамка>: "))
(if (or (= rmnr "Р") (= rmnr "H") (= rmnr nil))
    (progn
    (princ "Первый угол рамки: ")
    (terpri)
    (command "_Select" "_W" pause)
    (setq ssl (ssget "_P"))
    ) ; progn
) ; if
(if (or (= rmnr "С") (= rmnr "C"))
    (progn
    (princ "Первый угол секущей рамки: ")
    (terpri)
    (command "_Select" "_C" pause)
    (setq ssl (ssget "_P"))
    ) ; progn
) ; if
(if ssl
    (progn
    (setq ssn1 (sslength ssl) n 0 сумчис 0)
    (repeat ssn1
            (setq pp (ssname ssl n))
            (if (= (cdr (assoc 0 (entget pp))) namobj)
                (progn
                (setq mld (vlax-ename->vla-object pp))
                (setq строка (vlax-get-property mld 'TextString))
                (if (vl-string-search "L=" строка)
                    (progn 
                    (princ "\nИсходная строка: ") (princ строка)
                    (setq номдо (vl-string-search "=" строка))
                    (setq стрдо (substr строка (+ номдо 2)))
                    (princ "\nОбрезанная слева ") (princ стрдо)
                    (setq номпосле (vl-string-search "м" стрдо))
                    (setq число (atof (substr стрдо 1 номпосле)))
                    (princ "\nОбрезанная справа ") (princ число)
                    (setq сумчис (+ сумчис число))
                    ) ; progn
                    (princ "\nНет текста с длиной L=")
                ) ; if
                (princ "\nЭто не текст.")
                ) ; progn
            ) ; if
            (setq n (+ n 1))
    ) ; repeat
    (princ "\nСумма длин = ") (princ сумчис) (princ " м")
    (setq текстдлин (strcat " Lсуммарная=" (rtos сумчис 2 1) "м"))
    (princ "\nУкажите точку вставки текста: ")
    (vl-cmdf "_TEXT" pause "0" текстдлин)
    ) ; progn
    (princ "\nОбъекты не выбраны.")
) ; if
(setvar "CMDECHO" echo)
(princ "\nГотово.")
(princ)
)
Profan вне форума  
 
Автор темы   Непрочитано 07.05.2015, 08:49
#3
SilvioManuel


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


Спасибо за код, но я не понял до конца как он работает. Для примера я создал несколько произвольных текстовых объектов (МТекст), включающих числа (типа "иывпорорир56" или"ждлд115прлтд"), выбрал их и после подтверждения выбора программа пригласила меня написать текст.
Забыл отметить ещё, каюсь, что числа имеют не целочисленный характер (если это важно) - типа L15,67 или L4,7

Последний раз редактировалось SilvioManuel, 07.05.2015 в 09:00.
SilvioManuel вне форума  
 
Непрочитано 07.05.2015, 09:03
#4
Кулик Алексей aka kpblc
Moderator

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


SilvioManuel, вопрос задан в разделе AutoCAD. Следовательно, решение должно использовать штатные возможности программы. ИМХО - тебе придется использовать поле с DIESEL-выражением.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.05.2015, 18:34
#5
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


а сам трубопровод нарисован? Полилиниями ? Может просто глянуть длину полилинии или там что-то не так ?
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Автор темы   Непрочитано 08.05.2015, 08:39
#6
SilvioManuel


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


Цитата:
Сообщение от sasha_lif Посмотреть сообщение
а сам трубопровод нарисован? Полилиниями ? Может просто глянуть длину полилинии или там что-то не так ?
далеко не так. можно сказать приходится считать по схемам, где всё не в масштабе
SilvioManuel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Возможно ли сделать сумму чисел из выбранных текстовых объектов с префиксами и суффиксами?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Аттестация в Минрегионе по негосударственной экспертизе Людмила Охр Прочее. Архитектура и строительство 350 14.02.2015 17:50
Возможно ли залить штриховкой сразу несколько выбранных аналогичных объектов MagaShpaga AutoCAD 13 11.04.2011 10:35