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

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

Помогите найти lisp для создания точек на концах отрезков

Ответ
Поиск в этой теме
Непрочитано 19.07.2017, 20:51 #1
Помогите найти lisp для создания точек на концах отрезков
Полусолнце
 
Конструктор
 
ЮФО
Регистрация: 13.03.2012
Сообщений: 112

Доброго времени суток. Сам понимаю, что лисп плевый, но нигде не могу найти именно такой. На форуме есть лисп по созданию точек в вершинах полилиний, но он не подходит. Заранее спасибо!
__________________
С уважением PDF
Просмотров: 1918
 
Непрочитано 19.07.2017, 22:28
1 | #2
Кулик Алексей aka kpblc
Moderator

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


В том лиспе переделок на 2 минуты. Ссылку хотя бы приведи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2017, 05:53
1 | #3
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Да зачем ссылка, лисп-то плёвый:
Код:
[Выделить все]
(defun C:POIL ( / ssl lssl n ln pto pte)
(setq ssl (ssget '((0 . "LINE"))))
(if ssl
    (progn
    (setq lssl (sslength ssl) n 0)
    (repeat lssl
            (setq ln (ssname ssl n))
            (setq pto (cdr (assoc 10 (entget ln))) pte (cdr (assoc 11 (entget ln))))
            (vl-cmdf "_POINT" pto)  (vl-cmdf "_POINT" pte)
            (setq n (+ n 1))
     ) ; repeat
     ) ; progn
     (princ "\nНе выбраны отрезки.")
) ; if
(princ)
)
Возможно, придется настроить вид точки.
Profan вне форума  
 
Автор темы   Непрочитано 20.07.2017, 07:07
#4
Полусолнце

Конструктор
 
Регистрация: 13.03.2012
ЮФО
Сообщений: 112
<phrase 1=


Спасибо огромное! Выручили! Вид точек не проблема, укажу какой нужен)
__________________
С уважением PDF
Полусолнце вне форума  
 
Непрочитано 20.07.2017, 08:01
#5
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (vl-load-com)

(defun c:pt-on-lines (/ selset adoc elev norm)
  (if (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "LINE,LWPOLYLINE"))))))))
         'pickset
         ) ;_ end of =
    (progn (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
           (foreach ent (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset))))
             (cond ((= (cdr (assoc 0 ent)) "LINE")
                    (mapcar '(lambda (x) (entmakex (list (cons 0 "POINT") (cons 10 (cdr x)))))
                            (vl-remove-if-not '(lambda (x) (member (car x) '(10 11))) ent)
                            ) ;_ end of mapcar
                    )
                   ((= (cdr (assoc 0 ent)) "LWPOLYLINE")
                    (setq elev (cond ((cdr (assoc 38 ent)))
                                     (t 0.)
                                     ) ;_ end of cond
                          norm (cdr (assoc 210 ent))
                          ) ;_ end of setq
                    (mapcar '(lambda (x)
                               (entmakex (list (cons 0 "POINT") (cons 10 (trans (list (cadr x) (caddr x) elev) norm 0))))
                               ) ;_ end of lambda
                            (vl-remove-if-not '(lambda (x) (= (car x) 10)) ent)
                            ) ;_ end of mapcar
                    )
                   ) ;_ end of cond
             ) ;_ end of foreach
           (vla-endundomark adoc)
           ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.07.2017, 08:16
#6
Полусолнце

Конструктор
 
Регистрация: 13.03.2012
ЮФО
Сообщений: 112
<phrase 1=


Еще раз спасибо! Протестирую обе и отпишусь)
Вообще раскрою суть идеи, для чего мне он нужен. Может уже существует более действенный способ.
Хочу использовать связку триангуляции 3д граней по точкам. этот лисп и написанный вами для подговки расчетной схемы для ЛИРЫ. С ровными поверхностями все просто (сделать в лире), а вот с куполом каким нибудь уже не то. Пластины буду использовать для передачи снеговых и ветровых нагрузок.
Большое спасибо за помощь!

UPD. Протестил. Работают оба варианта. pt-on-lines работает в разы быстрее. Большое спасибо за помощь еще раз!)
__________________
С уважением PDF

Последний раз редактировалось Полусолнце, 20.07.2017 в 12:43.
Полусолнце вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите найти lisp для создания точек на концах отрезков

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти литературу по теме "преднапряжение изгибаемых и сжато-изгибаемых элементов с натяжением арматуры на бетон! S.Gerrard Поиск литературы, чертежей, моделей и прочих материалов 1 13.08.2013 14:56
Помогите найти описание функций lisp'a - vlisp-* Кулик Алексей aka kpblc Поиск литературы, чертежей, моделей и прочих материалов 4 30.06.2010 16:45
Помогите найти чертежи православных храмов leonbka Поиск литературы, чертежей, моделей и прочих материалов 5 12.03.2010 11:31
Lisp, помогите с алгоритмом "подтягивания" поллиний 2123 LISP 1 03.02.2010 23:58
Помогите найти Коттедж zeker Поиск литературы, чертежей, моделей и прочих материалов 11 19.01.2009 13:16