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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel

Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel

Ответ
Поиск в этой теме
Непрочитано 16.11.2013, 00:50 #1
Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel
Andrey_nadym
 
Регистрация: 22.02.2008
Сообщений: 177

Привет всем! После долгих "ручных" подсчетов различных элементов на чертежах назрел вопрос об автоматизации всего этого процесса. Пользуюсь разными лиспами (прилагаются во вложении) как их объединить не знаю, ввиду отсутсвия знаний в программировании на языке Lisp.
Прошу если, кто-то уже с такой задачей сталкивался, помочь в решении данного вопроса. Заранее Благодарен.
Прилагаемые файлы
1. DBCountV1-0.lsp (считает все блоки в т.ч. динамические с учетом видимости, но делает это во всем чертеже, а иногда требуется подсчитать по выделению) можно ли сделать чтобы программа спрашивала по выделению или во всем чертеже считать блоки?
2. CountV1-3.lsp (считает все блоки в т.ч. динамические по выделению и во всем чертеже, но без учета видимости динамических блоков и может экспортировать данные в CSV или ТXТ) можно ли добавить сюда разбивку посчитаных блоков с учетом видимости.
3. Mlen41.lsp (считает длины выделенных линий на определенном слое и выводит результат в EXCEL)
4. АПС и СОУЭ.dwg (сам файл чертежа с динамическими блоками, линиями и полилиниями)

Возможно ли все это собрать в одну программу, которая выводила результат по возможности в EXCEL или в текстовое окно AutoCad как показано ниже

===================================
Block............................................Count
===================================
Выхода..................................................7
запасной выход...................................1
влево вправо......................................1
По лестнице вниз................................1
Порошок Уходи....................................1
Газ Не входить....................................1
Выход.................................................2
---------------------------------------------
Звуковой...............................................1
---------------------------------------------
Извещатель Пожарный Дымовой................3
---------------------------------------------
Извещатель Пожарный Ручной..................1
---------------------------------------------
Извещатель Пожарный Тепловой...............2
---------------------------------------------
Прибор..................................................1
---------------------------------------------
РИП......................................................1
---------------------------------------------
Радио_Передатчик..................................1
---------------------------------------------
Свето_звуковой.....................................1
---------------------------------------------
Устройство Контроля Шлейфа.................1
====================================
Общая длинна всех линейных примитивов по слоям:
шлейф АПС ................................ 24000.0000
шлейф СОУЭ .............................. 24000.0000

Буду признателен за любую помощь в решении вопроса.

Вложения
Тип файла: zip LISPAutoCad.zip (118.8 Кб, 173 просмотров)
Тип файла: dwg
DWG 2007
АПС и СОУЭ.dwg (152.7 Кб, 3641 просмотров)
Тип файла: lsp CountV1-3.lsp (20.6 Кб, 158 просмотров)
Тип файла: lsp DBCountV1-0.lsp (7.7 Кб, 166 просмотров)
Тип файла: lsp Mlen41.lsp (7.4 Кб, 143 просмотров)

Просмотров: 11422
 
Непрочитано 16.11.2013, 01:20
#2
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


А зачем штаны через голову надевать в Exсel, может быть на месте, в Автокад? )
Nike вне форума  
 
Автор темы   Непрочитано 16.11.2013, 10:18
#3
Andrey_nadym


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


Можно и в AutoCad, просто чтобы это делала одна программа, а не три
Andrey_nadym вне форума  
 
Непрочитано 16.11.2013, 10:49
#4
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


А штатное "Извлечение данных" чем не устраивает?
Nike вне форума  
 
Непрочитано 16.11.2013, 10:54
#5
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,480
Отправить сообщение для maratovich с помощью Skype™


А чего тут сложного, вставил в каждый блок атрибут "Количество", а с ним уже что угодно можно сделать. И не только так, а в виде готовой спецификации. Длины - тоже блоком, растянул как надо и автоматом длину просуммировало.
У нас уж третий год такая технология.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 16.11.2013, 11:59
#6
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


Цитата:
Сообщение от maratovich Посмотреть сообщение
А чего тут сложного, вставил в каждый блок атрибут "Количество", а с ним уже что угодно можно сделать. И не только так, а в виде готовой спецификации. Длины - тоже блоком, растянул как надо и автоматом длину просуммировало.
Ну и? Хвастаешься?
Делись давай!
Nike вне форума  
 
Непрочитано 16.11.2013, 12:04
#7
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,480
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Nike Посмотреть сообщение
Ну и? Хвастаешься?
Делись давай!
Можно и извлечением данных, а у нас стоит прога, я уже не раз писал (не сочтите за рекламу)
Прога
Только надо хотя бы пролистать инструкцию.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Автор темы   Непрочитано 16.11.2013, 14:36
#8
Andrey_nadym


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


А из имеющихся лиспов можете собрать то, что надо. Функция выгрузки не всегда удобна. Рисовать линии блоками тоже не айс. Иногда требуется определить длины или количество блоков по выделению.
Andrey_nadym вне форума  
 
Непрочитано 17.11.2013, 07:43
#9
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 529
<phrase 1=


В прилагаемом файле выполнено извлечение данных штатными средствами Акада - проще некуда. Подсчет блоков (не динамических, я их не использую), подсчет длин линий в метрах по масштабу с запасом 20% на спуски-подьемы, хоть поэтажно, хоть на весь комплект чертежей...
Акад 2010, нужные файлы *.dxe прилагаются.
Вложения
Тип файла: zip Извлечение данных.zip (359.0 Кб, 186 просмотров)
__________________
В MEP моя буква - Е
Andi55 вне форума  
 
Непрочитано 17.11.2013, 10:56
#10
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,480
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Andrey_nadym Посмотреть сообщение
А из имеющихся лиспов можете собрать то, что надо. Функция выгрузки не всегда удобна. Рисовать линии блоками тоже не айс. Иногда требуется определить длины или количество блоков по выделению.
Это вопрос ? Или утверждение ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 17.11.2013, 11:57
#11
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


А если в блоки добавить атрибуты "Наименование" и "Марка" - ещё интереснее будет:
Вложения
Тип файла: zip Извлечение данных.zip (358.5 Кб, 151 просмотров)
Nike вне форума  
 
Автор темы   Непрочитано 17.11.2013, 20:10
#12
Andrey_nadym


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


Спасибо за файлы *.dxe. Но хотелось бы решить вопрос про лисп.
Andrey_nadym вне форума  
 
Непрочитано 18.11.2013, 09:49
#13
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 529
<phrase 1=


Цитата:
Сообщение от Andrey_nadym Посмотреть сообщение
Спасибо за файлы *.dxe. Но хотелось бы решить вопрос про лисп.
"Так вам с шашечками или ехать?"
С лиспом ты предлагаешь кому-нибудь поработать на тебя, а с *.dxe делаешь все сам и контролируешь процесс. Что результативнее?
__________________
В MEP моя буква - Е
Andi55 вне форума  
 
Автор темы   Непрочитано 18.11.2013, 11:33
#14
Andrey_nadym


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


Не поработать, а помощи просил в соединении лиспов в один. Как уже писал ввиду отсутствия знаний в программировании на лиспе. Я думаю если кто поможет и сделает то, что требуется многим пригодится ведь не все программировать умеют.

----- добавлено через ~1 ч. -----
Сам когда-либо что-нибудь делаю полезное или для облегчения трудоемких и нудных расчетов непременно делюсь и выкладываю на этом сайте. Всегда помогаю людям работающим в оласти Пожарной безопасности. Вот для примера можно посмотреть
1. калькулятор определения расчётных величин индивидуального пожарного риска http://dwg.ru/dnl/11647
2. Калькулятор определение критической продолжительности пожара по аналитическим соотношениям ОФП http://dwg.ru/dnl/11669
3. Калькулятор расчета времени эвакуации http://dwg.ru/dnl/12298

Наверное повторюсь, но Буду признателен за любую помощь в решении вопроса по совмещению лиспов.

Последний раз редактировалось Andrey_nadym, 18.11.2013 в 12:44.
Andrey_nadym вне форума  
 
Непрочитано 18.11.2013, 12:58
#15
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


Andrey_nadym, я пытался, но не осилил .
Сам не вижу необходимости в данных программах.
В своей работе пользуюсь программой быстрого выбора по образцу SelSim и штатным "Извлечением данных" с использованием атрибутов (см. вложение в моем предыдущем посте).
Динамические блоки не использую.
Nike вне форума  
 
Автор темы   Непрочитано 18.11.2013, 14:03
#16
Andrey_nadym


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


Nike Все равно огромное Спасибо, что не безразлично Вам.
Andrey_nadym вне форума  
 
Непрочитано 18.11.2013, 14:12
#17
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,153


Andrey_nadym, "меня - один!" (c) kpblc
Вот, может пригодится, из моего инструментария несколько простых программ
Код:
[Выделить все]
 ;;;------------------Программа выбора всех одноименных блоков по образцовому ---------------------------------------------------------
(defun c:ыи (/) (c:sb))
(defun c:sb (/ bS blok)
  (setvar "cmdecho" 0)
  (setq bS nil)
  (sssetfirst nil nil)
  (setq blok (vla-get-effectivename (vlax-ename->vla-object (car (entsel "Укажите нужный блок: ")))))
  (setq bS (ssget "_X" '((0 . "INSERT"))))
;;;  (setq bS (ssget "_X" (list (assoc 0 blok) (assoc 2 blok) (assoc 410 blok))))
  (mapcar
    '(lambda (name)
       (if (/= (vl-catch-all-apply 'vla-get-effectivename (list (vlax-ename->vla-object name))) blok)
         (ssdel name bS)

       ) ;_ end of if
     ) ;_ end of lambda
    (vl-remove-if 'listp (mapcar 'cadr (ssnamex bS)))
  )
  (sssetfirst nil bS)
  (princ (strcat "\n*** Всего выбрано " (itoa (sslength bS)) " блоков <" blok ">"))
  (princ)
) ;_ end of defun

;;;------------------Программа выбора всех одноименных блоков вкл динамические по образцовому в области ---------------------------------------------------------
(defun c:ыиы (/) (c:sbb))
(defun c:sbb (/ d_block_name ss1)
  (vl-load-com)
  (princ "выделение аналогичных динамических блоков")
  (setq d_block_name (vla-get-effectivename (vlax-ename->vla-object (car (entsel "Укажите нужный блок: ")))))
  (setq ss1 (ssget '((0 . "INSERT"))))

  (mapcar
    '(lambda (name)
       (if (/= (vl-catch-all-apply 'vla-get-effectivename (list (vlax-ename->vla-object name))) d_block_name)
         (ssdel name ss1)

       ) ;_ end of if
     ) ;_ end of lambda
    (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1)))
  ) ;_ end of mapcar
  (sssetfirst nil ss1)
    (princ (strcat "\n*** Всего выбрано " (itoa (sslength ss1)) " блоков <" d_block_name ">"))
  (princ)

) ;_end_of_defun

;;;------------------Программа выбора всех одноименных блоков на одном слое  ---------------------------------------------------------
(defun c:ыид (/) (c:sbl))
(defun c:sbl (/ bSet blok)
  (setq bSet nil)
  (sssetfirst nil nil)
  (setq blok (entget (car (entsel "\nВыберите блок: "))))
  (setq bSet (ssget "_X" (list (assoc 0 blok) (assoc 2 blok) (assoc 8 blok))))
  (princ (strcat "\n*** Всего выбрано " (itoa (sslength bSet)) " блоков  <" (cdr (assoc 2 blok)) ">"))
  (sssetfirst nil bSet)
  (princ)
) ;_ end of defun

;;;------------------Программа выбора всех одноименных блоков в указываемой области ---------------------------------------------------------
(defun c:ыик (/) (c:sbr))
(defun c:sbr (/ bS blok)
  (setvar "cmdecho" 0)
  (setq bS nil)
  (sssetfirst nil nil)
  (setq blok (entget (car (entsel "\nВыберите блок: "))))
  (setq p1 (getpoint "\nУкажите точку 1: ")) ;setq
  (setq p2 (getcorner p1 "Укажите точку 2: ")) ;setq
  (setq bS (ssget "_w" p1 p2 (list (assoc 0 blok) (assoc 2 blok))))
  (sssetfirst nil bS)
  (princ (strcat "\n*** Всего выбрано " (itoa (sslength bS)) " блоков " (cdr (assoc 2 blok))))
  (princ)
) ;_ end of defun
Nike вне форума  
 
Автор темы   Непрочитано 18.11.2013, 19:29
#18
Andrey_nadym


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


Nike ещё раз огромное Спасибо.
Andrey_nadym вне форума  
 
Автор темы   Непрочитано 07.01.2014, 01:42
1 | #19
Andrey_nadym


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


Обновилась программа DBCountV1-1.lsp (теперь она считает все блоки в т.ч. динамические с учетом видимости по выделению) если кому интересно вот она http://www.lee-mac.com/dynamicblockcounter.html
Andrey_nadym вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19