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

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

LISP: поиск колличества окружностей и суммы их радиусов..

Ответ
Поиск в этой теме
Непрочитано 12.05.2005, 14:08 #1
LISP: поиск колличества окружностей и суммы их радиусов..
yogeny
 
Регистрация: 12.05.2005
Сообщений: 8

Если ктонибудь располагает такой пограммой или желанием помочь её сделать, буду очень признателен!
А именно: Найти все существующие на чертеже окружности и вывести сумму их радиусов, а также колличество окружностей.
Просмотров: 3130
 
Непрочитано 12.05.2005, 14:57
#2
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Код:
[Выделить все]
(defun c:sum_n_count (/ ss i l sum cir)
  (setq ss (ssget "_x" '((0 . "CIRCLE"))))
  (setq	i 0
	l (sslength ss)
	sum 0
  )
  (while (< i l)
    (setq cir (entget (ssname ss i)))
    (setq sum (+ sum (cdr (assoc 40 cir)))
	  i (+ i 1))    
  )
  (princ (strcat "\nNumber of circles: " (rtos l)))
  (princ (strcat "\nSum of radiuses: " (rtos sum)))
  (princ)
)
Torino вне форума  
 
Автор темы   Непрочитано 12.05.2005, 18:46
#3
yogeny


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


Огромное спасибо!!
yogeny вне форума  
 
Автор темы   Непрочитано 22.05.2005, 21:29
#4
yogeny


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


"(/ ss i l sum cir)"..
sum и cir ясно, а чем являются ss, i, l ? pls
yogeny вне форума  
 
Автор темы   Непрочитано 23.05.2005, 13:25
#5
yogeny


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


Помогите понять эту программу, пожалуйста +)
yogeny вне форума  
 
Непрочитано 23.05.2005, 13:49
#6
Кулик Алексей aka kpblc
Moderator

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


Попробую разобрать(ся), а Torino меня поправит
Код:
[Выделить все]
(defun c:sum_n_count (/ ss i l sum cir) 
  (setq ss (ssget "_x" '((0 . "CIRCLE")))) 
;|
предыдущая строка организовывает Selection Set с именем ss. Selection Set - набор объектов, к элементам которого можно обращаться. Selection Set организовывается по фильтру примитива - окружность. Для этого используется точечная пара '((0 . "CIRCLE"))
В принципе, Selectiom Set является списком примитивов, в котором каждый элемент - отдельный примитив со всеми его свойствами (в частности, слой, тип линии, толщина линии, [b]геометрические характеристики[/b]
|;
  (setq   i 0 
   l (sslength ss) 
; l - длина списка Selection Set'a
   sum 0 
  ) 
  (while (< i l) 
; i - счетчик объектов.
    (setq cir (entget (ssname ss i))) 
; cir - текущий выбранный объект из Selection Set'a по номеру i
    (setq sum (+ sum (cdr (assoc 40 cir))) 
; sum - сумма радиусов. Радиус хранится в примитиве с dxf-кодом №40
     i (+ i 1))    
  ) 
  (princ (strcat "\nNumber of circles: " (rtos l))) 
  (princ (strcat "\nSum of radiuses: " (rtos sum))) 
  (princ) 
)
Torino, поправь меня, поскольку в лиспе я как свинья в ананасах - так, по верхам нахватался...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.05.2005, 16:02
#7
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Прошу прощения, что отвечаю с опозданием, был занят.

Все именно так, как описал kpblc

******поскольку в лиспе я как свинья в ананасах - так, по верхам нахватался******

Да и я не лучше
Torino вне форума  
 
Автор темы   Непрочитано 23.05.2005, 18:04
#8
yogeny


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


СПАСИБО! Побольше бы таких добрых людей;)
yogeny вне форума  
 
Непрочитано 24.05.2005, 07:59
#9
Кулик Алексей aka kpblc
Moderator

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


Несколько уточнений по коду (спасибо Эдуарду):
1.Selection Set это набор примитивов или vla-объектов , но не список (список в лиспе это совершенно другое).
2.Радиус хранится в точечной паре с dxf кодом 40, а не в "примитиве с кодом 40".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP: поиск колличества окружностей и суммы их радиусов..

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

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