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

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

Нужен LISP для суммы длин отрезков линни

Ответ
Поиск в этой теме
Непрочитано 26.02.2004, 10:13
Нужен LISP для суммы длин отрезков линни
ilka_t
 
Москва
Регистрация: 20.01.2004
Сообщений: 154

Подскажити где можно скачать или поделитись если у кого есть такое.

Полилиния не подходит т.к. эти отрезки разбросаны по всему чертежу, а надобы выбрав несколько линий узнать их общую длинну.
Просмотров: 140323
 
Непрочитано 20.09.2004, 16:05
#21
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Цитата:
Сообщение от kos
Ну, вот отпуск и кончился...
Правильно, хватит отдыхать, за работу, за работу...
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 20.09.2004, 17:49
#22
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Command: _appload GeneralLength.lsp successfully loaded.

Command: ; error: bad argument type: numberp: nil
Vova вне форума  
 
Непрочитано 20.09.2004, 17:54
#23
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Vova
Command: _appload GeneralLength.lsp successfully loaded.

Command: ; error: bad argument type: numberp: nil
Да-а-а?
Бум смотреть.
А в каком Автогаде? Писал под 2004.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 20.09.2004, 18:01
#24
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Я только одного не пойму. В первом сообщении пишет, что лисп загрузился успешно. Это понятно. А где запуск функции? Что, вот так сразу сообщение об ошибке?
Может впереди еще
Код:
добавить?
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 23.09.2004, 10:41
#25
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Vova
Command: _appload GeneralLength.lsp successfully loaded.

Command: ; error: bad argument type: numberp: nil
Vova, так я не понял: работает все-таки или нет?
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 23.09.2004, 14:56
#26
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


На домашнем 2005 вариант от 20 сент. работает, на работе на 2004 нет. Попробую перенести из дома. Возможно, у меня некорректно выполнилось CTRL+C/V. Там русского яз. нет, но должно было работать с вопросительными знаками вместо комментариев на русском или с моим переводом. (все знаки при переводе я оставлял как было, предыдущая версия работала) Хорошо, что умеет считать в любых единицах. Результат доложу
Vova вне форума  
 
Непрочитано 23.09.2004, 21:00
#27
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Все работает отлично, и на работе и дома. Спасибо KOS
Vova вне форума  
 
Непрочитано 24.09.2004, 00:15
#28
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Vova
Все работает отлично, и на работе и дома. Спасибо KOS
Дык, нема за што. Обещал ведь...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 18.10.2004, 11:38
#29
Mike


 
Сообщений: n/a


;******************************************************************************
;
; Lsum -функция определяет суммарные длинну и площадь набора линий и полилиний
;
;******************************************************************************
(defun C:lsum (/ cmdold nabor nl i j prima sum_line sum_pline asum_pline pt_list)
(vl-load-com)
(setq cmdold (getvar "cmdecho"))
(setvar "cmdecho" 0)
(princ "\n Выберите линии и 2D-полилинии:\n")
(if (eq nil (setq nabor (ssget '((-4 . "<OR")
(0 . "line")
(0 . "lwpolyline")
(-4 . "OR>")
) ) ) )
(progn
(princ "***** Среди указаных объектов ни линий, ни 2D-полилиний НЕТ! *****\n")(textscr)(princ)
)
(progn
(setq nl (sslength nabor))
(setq i nl j 0 sum_line 0 sum_pline 0 asum_pline 0)
(while (< 0 i)
(setq i (1- i))
(setq prima (ssname nabor i))
(if (eq "LWPOLYLINE" (cdr (assoc 0 (entget prima))))
(progn
(command "_AREA" "_o" (ssname nabor i))
(setq sum_pline (+ sum_pline (getvar "Perimeter")))
(if (or (eq 1 (cdr (assoc 70 (entget prima))))
(equal (assoc 10 (entget prima)) (assoc 10 (reverse (entget prima))))
)
(setq asum_pline (+ asum_pline (getvar "Area")))
)
)
(progn
(setq sum_line (+ sum_line (vla-get-length (vlax-ename->vla-object prima))))
(setq pt_list (append pt_list (cdr (assoc 10 (entget prima))) (cdr (assoc 11 (entget prima)))))
(setq j (1+ j))
)
)
)
(setvar "cmdecho" cmdold)
(textscr)
(princ " Выбрано: Линий - ")(princ j)(princ "; Полилиний - ")(princ (- nl j))(princ ".\n")
(princ " Сумма длин линий - ")(princ sum_line)(princ "\n")
(princ " Суммарный периметр полилиний - ")(princ sum_pline)(princ "\n")
(princ " Сумма площадей \"замкнутых\" полилиний - ")(princ asum_pline)(princ "\n")
(princ)
)
)
)




(princ "\n Загружена утилита Lsum,\n")
(princ " вычисляющая сумму длин линий и суммарный периметр полилиний,\n")
(princ " для \"замкнутых\" полилиний вычисляется сумма площадей.\n")
(princ " Для работы с утилитой введите в командной строке Lsum.\n")
(textscr)
(princ)
 
 
Непрочитано 18.10.2004, 13:18 2 kos
#30
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


2 kos
Для книги "САПР на базе AutoCAD. Как это делается" был написан набор функций для подсчёта периметра примитивов. Ссылка на головную библиотечную функцию: http://www.kurganobl.ru/cad/book.jsp...=793&tn=main#b
Это библиотечные функции - для создания программы, головная, естественно, должна быть "обёрнута" интерфейсной.
Alaspher вне форума  
 
Непрочитано 18.10.2004, 13:35
#31
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Alaspher, а почему http://www.kurganobl.ru/cad/book.jsp...=793&tn=main#b адресуется только мне? Остальным тоже должно быть интересно...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 18.10.2004, 14:08
#32
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от kos
Alaspher, а почему http://www.kurganobl.ru/cad/book.jsp...=793&tn=main#b адресуется только мне? Остальным тоже должно быть интересно...
Как автору похожего по типу кода (для сравнительного анализа).
А по ссылке, естественно, может сходить каждый, кому это интересно, она-ж не запаролена. Т.е., это не: "2 kos only" :-)
Alaspher вне форума  
 
Непрочитано 18.10.2004, 14:48
#33
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Alaspher, спасибо. Кстати, не далее как в пятницу принесли указанную Вами книгу. Курим...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 02.11.2004, 21:54
#34


 
Сообщений: n/a


По наводке Fantomasa
Цитата:
Сдесь http://www.resourcecad.com в разделе Downloads. Только надо зарегистрироваться.
набрел на лиспик SUMMIT, который меряет даже длину сплайна.
 
 
Непрочитано 03.11.2004, 09:44
#35
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Anonymous
По наводке Fantomasa
Цитата:
Сдесь http://www.resourcecad.com в разделе Downloads. Только надо зарегистрироваться.
набрел на лиспик SUMMIT, который меряет даже длину сплайна.
Процитирую сам себя (Вт Авг 10, 2004 12:02) :
Цитата:
...обсчитываются только примитивы, подпадающие под определение "курва" (curve). Т.е. линейные примимтивы. Блок к ним не относится.
А сплайн - линейный примитив и моей функцией также обсчитывается...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 16.12.2004, 22:43
#36
proekt

конструктор
 
Регистрация: 11.12.2004
Сообщений: 216


Зачем изобретать велосипед. Есть програмулька vetcad, там есть куча примочек для подсчетов.
proekt вне форума  
 
Непрочитано 17.12.2004, 04:16
#37
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Proekt> Автокад это сплошной велодром, здесь много есть такого, что можно изобрести. LISP от KOS для подсчета суммарной длины отрезков, полилиний, дуг, сплайнов, окружностей и многоугольников, то есть всего линейного, очень хорош. Если грамотно расположить те элементы, что надо будет измерить, по слоям, или выбрать их Qselect, то эта программа моментально все просуммирует и сообщит, сколько объектов она обработала и сколько из них обсчитала, отбраковав нелинейные.
Vova вне форума  
 
Непрочитано 13.01.2005, 09:22
#38
Новичок


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


Цитата:
;******************************************************************************
;
; Lsum -функция определяет суммарные длинну и площадь набора линий и полилиний
;
;******************************************************************************
(defun C:lsum (/ cmdold nabor nl i j prima sum_line sum_pline asum_pline pt_list)
(vl-load-com)
(setq cmdold (getvar "cmdecho"))
(setvar "cmdecho" 0)
(princ "\n Выберите линии и 2D-полилинии:\n")
(if (eq nil (setq nabor (ssget '((-4 . "<OR")
(0 . "line")
(0 . "lwpolyline")
(-4 . "OR>")
) ) ) )
(progn
(princ "***** Среди указаных объектов ни линий, ни 2D-полилиний НЕТ! *****\n")(textscr)(princ)
)
(progn
(setq nl (sslength nabor))
(setq i nl j 0 sum_line 0 sum_pline 0 asum_pline 0)
(while (< 0 i)
(setq i (1- i))
(setq prima (ssname nabor i))
(if (eq "LWPOLYLINE" (cdr (assoc 0 (entget prima))))
(progn
(command "_AREA" "_o" (ssname nabor i))
(setq sum_pline (+ sum_pline (getvar "Perimeter")))
(if (or (eq 1 (cdr (assoc 70 (entget prima))))
(equal (assoc 10 (entget prima)) (assoc 10 (reverse (entget prima))))
)
(setq asum_pline (+ asum_pline (getvar "Area")))
)
)
(progn
(setq sum_line (+ sum_line (vla-get-length (vlax-ename->vla-object prima))))
(setq pt_list (append pt_list (cdr (assoc 10 (entget prima))) (cdr (assoc 11 (entget prima)))))
(setq j (1+ j))
)
)
)
(setvar "cmdecho" cmdold)
(textscr)
(princ " Выбрано: Линий - ")(princ j)(princ "; Полилиний - ")(princ (- nl j))(princ ".\n")
(princ " Сумма длин линий - ")(princ sum_line)(princ "\n")
(princ " Суммарный периметр полилиний - ")(princ sum_pline)(princ "\n")
(princ " Сумма площадей \"замкнутых\" полилиний - ")(princ asum_pline)(princ "\n")
(princ)
)
)
)




(princ "\n Загружена утилита Lsum,\n")
(princ " вычисляющая сумму длин линий и суммарный периметр полилиний,\n")
(princ " для \"замкнутых\" полилиний вычисляется сумма площадей.\n")
(princ " Для работы с утилитой введите в командной строке Lsum.\n")
(textscr)
(princ)
А к в этом Lisp добавить чтоб выводилась длина каждого отрезка
Подскажите пожалуйста!
Новичок вне форума  
 
Непрочитано 13.01.2005, 20:19
#39
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Скорей всего что то вроде

Код:
[Выделить все]
........
(progn 
(setq l_line (vla-get-length (vlax-ename->vla-object prima)))
(princ "\nОтрезок ")
(princ l_line)
(setq sum_line (+ sum_line l_line))
(setq pt_list (append pt_list (cdr (assoc 10 (entget prima))) (cdr (assoc 11 (entget prima))))) 
(setq j (1+ j)) 
) 
.......
не проверял....
vk вне форума  
 
Непрочитано 14.01.2005, 06:15
#40
Новичок


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


Cпасибо большое!!!!!!
немного подправил и заработало
Новичок вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен LISP для суммы длин отрезков линни

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

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