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

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

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

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

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

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

Последний раз редактировалось Red Nova, 13.03.2009 в 10:11.
Просмотров: 154508
 
Непрочитано 21.05.2008, 05:57
#421
skkkk

AutoCAD_2008->2011
 
Регистрация: 20.03.2008
Московская область
Сообщений: 2,289


Хотелось бы снова вернуться к лиспу с #16(страница 1) и советам VVA #311 и #317(16-я страница). То есть, как дополнить этот код (#16) функцией, убирающей форматирование текста... Также хотелось бы его дополнить функцией замены цвета текста, в который вставляется рассчитанное значение, чтобы идентифицировать обработанные объекты....
(по аналогии с лиспом для суммы длин отрезков http://dwg.ru/f/showthread.php?t=842...D%E8%FF&page=6 , #118)
skkkk на форуме  
 
Непрочитано 21.05.2008, 09:49
#422
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Держи. Коментарии в коде. Нужное выделил красным
Код:
[Выделить все]
(defun c:z-calc-text-value (/ value ent obj ss)
  (vl-load-com)
  (princ
    "\nВыберите текстовые объекты среди которых будет произведененна калькуляция"
    ) ;_ princ
  (setq ss (ssget "_:L" '((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
            "."
            ","
            (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
    ) ;_ 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
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 26.05.2008, 16:30
#423
Red Nova

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


VVA,
Поскольку в разработке главной программы форума пока пауза, у меня возродилась просьба (где то в начале форума уже было). Помнишь самый первый SPEC, еще без гостов. Там все работало кроме швеллеров и двутавров. Прошу добавить возможность их подсчета. Напомню как это выглядело, в базу надо вбить только двутавры с уклоном внутренних граней полок (ГОСТ 8239-89) и швеллеры с уклоном внутренних граней полок (ГОСТ 8240-97).
При этом обозначаем просто, как указанно в файле примера. Примитивно конечно же, но все же, людям ленивым типа меня полезно.
Вложения
Тип файла: dwg
DWG 2004
Напоминание.dwg (48.6 Кб, 1939 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 27.06.2008, 17:54
#424
Red Nova

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


VVA, Появилась идея приспособить лисп к таблицам, как ты думаешь, можно и на таблицы распространить? Все тоже самое, только отмечаем ячейки вместо мтекстов. Продолжать дальше размышления на этот счет, или шансов нет?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 27.06.2008, 20:13
#425
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Red Nova, С таблицами не получится, так как ssget вернет таблицу целиком, а не выбранные ячейки. Хота целиком обрабатывать таблицу может и легче, так как там есть шапка, и известно какой столбец "Марка" , а какой "Масса ед." Но это нужно писать другой код. Пока что я за это браться не буду.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.06.2008, 20:53
#426
Red Nova

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


Цитата:
С таблицами не получится, так как ssget вернет таблицу целиком, а не выбранные ячейки
Я конечно же не бум-бум, но все же ка-то странно что нельзя программно вписать в указанные ячейки нужные значения. Жаль. Хочу на таблицы переходимть, но без spec я теперь никуда, так что таблицы пока отдыхают.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 03.07.2008, 11:27
#427
Red Nova

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


Решил перейти со SPEC на SPEC5D, обнаружил что не все необходимые госты имею. В гугле искал, но есть далеко не все. Поделитесь пожалста следующими гостами
ГОСТ 24045-94 (по моему профильный настил)
ГОСТ 5915-70 (гайки)
ГОСТ 11371-78 (шайбы)
ГОСТ 5336-80 (сетка, нашел только в виде интернет страницы, хочется по культурнее)
ГОСТ 30245-03 (Труба квадратная, тоже нашел только в виде интернет страницы)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 03.07.2008, 12:26
#428
Red Nova

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


VVA
Обнаружил что SPEC5D массу фланцев считает неправильно, причем если пропустить минус, то считает тоже не правильно, но совсем по другому. Прикрепил бы файл, да форум совсем сума сошел, ничего толком не работает
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.07.2008, 16:50
#429
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для VVA с помощью Skype™


подождем файлик
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 03.07.2008, 22:02
#430
Red Nova

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


Ну ни в какую не крепится файл. Попробую в строчном виде написать результат вычисления


ГОСТ19903-74 / Фл. (знак диаметра)327х12 / - / 4 / 30.8 / 123.2

ГОСТ19903-74 / Фл. (знак диаметра)327х12 / / 4 / 0.0308 / 0.1


Оба ответа ошибочны.
__________________
Блог

Последний раз редактировалось Red Nova, 05.07.2008 в 17:57.
Red Nova вне форума  
 
Автор темы   Непрочитано 04.07.2008, 23:02
#431
Red Nova

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


Так хоть понятно? Имелись в виду колонки
Обозначение/ Наименоваие/Длина/ Количество/ Масса ед/ Масса Всех
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 08.07.2008, 11:56
#432
Red Nova

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


До сих пор файл не прикрепляется.
Обнаружил еще следующее:
Если не писать строчку ГОСТ то считает нормально.
/ / Фл. Ø140x12 / / 10 / 1.5 / 14.5 /
/ / Фл. Ø140x12 / - / 10 / 1.5 / 14.5 /
Если же ее писать, то считает неврно.
/ ГОСТ19903-74 / Фл. Ø140x12 / / 10 / 0 / 0.1 /
/ ГОСТ19903-74 / Фл. Ø140x12 / - / 10 / 13.2 / 131.9 /
Тот же ГОСТ для обычной листовой стали считает нормально.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 08.07.2008, 12:19
#433
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Принцип определения типа проката:
1. Если есть ГОСТ и этот ГОСТ описан в файле prokat.ves, то тип проката берется из файла (это ЛИСТ).
2. Если описания ГОСТА нет, то пытаемся определить по вхождению символов в наименование (если есть ФЛ. то это Фланец)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 08.07.2008, 12:57
#434
Red Nova

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


В prokat.ves, в прокатах листовых ГОСТ19903-74 вписан.
Для обычного листа (прямоугольного) массу считает нормально и по ГОСТ19903-74 и по приближенной формуле, а вот для фланца вписывая ГОСТ19903-74 расчет сходит с ума.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 08.07.2008, 16:19
#435
Red Nova

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


Ну вот на конец загрузилось.
Вложения
Тип файла: dwg
DWG 2004
Спецификация'.dwg (50.2 Кб, 1938 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 08.07.2008, 16:30
#436
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Red Nova, Так как вписан ГОСТ19903-74 и он помечен как ЛИСТ, то и считает как лист. Исправленный prokat.ves (добавно разделение в ГОСТ19903-74 на фланцы и листы) Изменения коснулись этих строк
Цитата:
("ЛИСТ" 27 "ГОСТ 19903-74;ГОСТ19903-74&~ФЛ" "Ст3сп" "Прокат листовой горячекатанный ГОСТ 19903-74" (0))
Цитата:
("ФЛ" 41 "ГОСТ 19903-74;ГОСТ19903-74&ФЛ" "Ст3сп" "Прокат листовой горячекатанный ГОСТ 19903-74" (0))
Вложения
Тип файла: zip prokat.ves.zip (14.8 Кб, 119 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 08.07.2008, 17:11
#437
Red Nova

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


Спасибо большое, теперь работает корректно.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 08.07.2008, 17:19
#438
dextron3

Фотограф
 
Регистрация: 01.01.2007
Алматы
Сообщений: 5,042


Red Nova, выложи хоть скриншот со строчками из спецификации 5D которые теперь работают корректно ...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 08.07.2008, 17:39
#439
Red Nova

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


Вот и скрин
Изображения
Тип файла: jpg ФЛ.jpg (9.1 Кб, 665 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 08.07.2008, 22:08
#440
dextron3

Фотограф
 
Регистрация: 01.01.2007
Алматы
Сообщений: 5,042


Red Nova, чето скрин не понятный где еденица измерения длины фланца то, и где шапка у таблицы
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
Ответ
Вернуться   Форум 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