Серия обучающих вебинаров по nanoCAD
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > сумма площадей объектов

сумма площадей объектов

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 14.09.2011, 14:21 #1
сумма площадей объектов
baaba
 
архитектор
 
Москва
Регистрация: 07.07.2007
Сообщений: 614
Отправить сообщение для baaba с помощью ICQ Отправить сообщение для baaba с помощью Skype™

baaba вне форума Вставить имя

Код:
[Выделить все]
 
(defun c:calcar (/ aaset)
;|Программа суммирует площади выбранных примитивов.
Суммарная площадь выводится в единицах чертежа.
Для архитектурно-строительных измерений надо заменить
в коде программы (calcar aaset (1- (sslength aaset)))
на (/ (calcar aaset (1- (sslength aaset))) (expt 10 6))
Конечно это не отменяет комманду "Area" с опцией "Add" -)|;
(setq aaset (ssget))

(defun calcar (aaset num)
  (if (<= 0 num)
    (progn
      (command "_.area" "_ob" (ssname aaset num))
      (+ (getvar "area") (calcar aaset (1- num)))
    ) 0 )
)

(calcar aaset (1- (sslength aaset))) 
)

Последний раз редактировалось baaba, 14.09.2011 в 14:44.
Просмотров: 4217
 
Непрочитано 14.09.2011, 14:59
#2
Кулик Алексей aka kpblc
Moderator

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


А что будет, если я подсуну в программу, например, отрезок? Или текст?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 14.09.2011, 16:36
#3
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 614
Отправить сообщение для baaba с помощью ICQ Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А что будет, если я подсуну в программу, например, отрезок? Или текст?
Имелось в виду это:
Код HTML:
Selected object does not have an area
?
В ближайшее время добавлю проверку.
baaba вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 14.09.2011, 21:47
#4
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,194
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью Skype™


А чем ObjectARX. GeomProps — площадь, длина, объем выбранных примитивов не устроил?
Или это процесс изучения AutoLisp?
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2011, 11:22
#5
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 614
Отправить сообщение для baaba с помощью ICQ Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
А чем ObjectARX. GeomProps — площадь, длина, объем выбранных примитивов не устроил?
Или это процесс изучения AutoLisp?
Процесс. И потом я хочу менять код, дополнять, перерабатывать под свои нужды. arx мне не очень подходит на данном этапе. C++ я не знаю, исходники никто выкладывать не собирается. С лисп кажется проще.
К сожалению пока не пришло мне в голову как модифицировать код, что бы избежать ошибки на которую указал kpblc. Загвоздка в выхлопе "command "_.area" "_ob" если передать ей отрезок функция просит повторно ввести объекты. Может быть фильтры ssget попробовать? Но тогда очень много исключений.
baaba вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2011, 11:46
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,194
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от baaba Посмотреть сообщение
исходники никто выкладывать не собирается.
Исходники уже публиковались в книге "Н.Н.Полещук. "AutoCAD: разработка приложений, настройка и адаптация".
Цитата:
Сообщение от baaba Посмотреть сообщение
Загвоздка в выхлопе "command "_.area" "_ob" если передать ей отрезок функция просит повторно ввести объекты.
Решение должно быть радикальным - не использовать командные методы (т.е. (command ...)), а ActiveX-модель AutoCAD (функция (vla-get-area)). Примеры найдёшь поиском.
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 29.08.2014, 15:33
#7
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 614
Отправить сообщение для baaba с помощью ICQ Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Исходники уже публиковались в книге "Н.Н.Полещук. "AutoCAD: разработка приложений, настройка и адаптация".

Решение должно быть радикальным - не использовать командные методы (т.е. (command ...)), а ActiveX-модель AutoCAD (функция (vla-get-area)). Примеры найдёшь поиском.
Да, абсолютно согласен!
Нашёл готовый вариант с vla-get-area и ssget, седьмой вариант. Модифицировал его немножко, что бы считал в квадратных метрах:

Код:
[Выделить все]
 
(defun C:APOLI ()
 (setq grupoli(ssget '((0 . "LWPOLYLINE")))
       area 0.00
       index 0
 )      
 (repeat (sslength grupoli)
  (if (= (vla-get-Closed (vlax-ename->vla-object (ssname grupoli index))) :vlax-true)
   (setq area(+ area (vla-get-area (vlax-ename->vla-object (ssname grupoli index)))))
  )
  (setq index(1+ index))
 )
;area
;если результат нужен в квадратных метрах - делю на 10^6
(/ area (expt 10 6))
)
baaba вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.08.2014, 15:39
#8
Кулик Алексей aka kpblc
Moderator

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


Для справки: в некоторых условиях полилиния может быть замкнута, а конструкция
(= (vla-get-closed ent) :vlax-true) вернет nil
Советую использовать equal вместо =
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.08.2014, 18:42
#9
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,194
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Советую использовать equal вместо =
Не поможет, Леша. При помощи equal в этом случае нужно проверять первую и последнюю вершину, а не свойство Closed
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.08.2014, 23:31
#10
Кулик Алексей aka kpblc
Moderator

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


Саш, я не помню, на какой версии я увидел, что свойство Closed равно True, а проверка типа (= (vla-get-closed ...) :vlax-true) возвращала nil - в то время как замена = на equal решила проблему. В последних версиях я этого не проверял - все время использую equal, пока проблем не видел.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.08.2014, 23:47
#11
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,194
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью Skype™


Я не на это хотел акцентировать внимание. А на то, что замкнутая полилиния может быть как физически замкнутая (совпадают первая и последняя вершина) или логически (флаг замкнутости).
По поводу = или equal - очень может быть, что ты прав.
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > сумма площадей объектов

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Техническое задание на ремонт R.Stupakov Поиск литературы, чертежей, моделей и прочих материалов 15 27.07.2011 10:17
Сумма площадей фигур Владимир Сергеевич AutoCAD 2 09.12.2009 22:57
Сумма площадей Rianna AutoCAD 29 04.05.2009 11:42
Сумма площадей выбранных штриховок selvinsky Программирование 2 02.10.2008 01:04
FILTER / фильтр BM60 Справочник команд 0 08.07.2008 15:35

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||