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

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

Нужен лиспик, рисующий биссектрисы треугольника.

Ответ
Поиск в этой теме
Непрочитано 16.01.2018, 18:59
Нужен лиспик, рисующий биссектрисы треугольника.
Dant
 
Регистрация: 15.01.2010
Сообщений: 202

Собственно вопрос в заголовке.
Может у кого-то есть лисп, который может отрисовывать автоматом биссектрисы треугольника?
Просмотров: 3858
 
Непрочитано 19.01.2018, 15:26
#21
1958


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


Цитата:
Сообщение от Setvar Посмотреть сообщение
Сдается мне, что эта программа оказалась значительно проще, чем у koMon, но с другой стороны - вдруг у нашей программы всплывут какие-нибудь камни в процессе эксплуатации, тогда его программа к услугам. Только лень русифицировать её. Вот пусть автор темы выскажется. Я думаю, что и программа с указанием 3 точек тоже сгодится.
Я рад, что не обидел вас. Ваш новый вариант работает. А по вопросу "программа с указанием 3 точек", так можно и объединенный вариант сделать. Только я пока не вижу где можно использовать эти биссектрисы. Так что, отложим на потом.
1958 на форуме  
 
Непрочитано 19.01.2018, 15:27
#22
Кулик Алексей aka kpblc
Moderator

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


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

(defun c:biss (/ adoc ent sysvar coord elev norm center)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (setq sysvar (vl-remove nil
                          (mapcar (function (lambda (x / tmp)
                                              (if (setq tmp (getvar (car x)))
                                                (progn (if (cdr x)
                                                         (setvar (car x) (cdr x))
                                                         ) ;_ end of if
                                                       (cons (car x) tmp)
                                                       ) ;_ end of progn
                                                ) ;_ end of if
                                              ) ;_ end of lambda
                                            ) ;_ end of function
                                  '(("sysmon" . 0) ("cmdecho" . 0) ("menuecho" . 0) ("nomutt" . 1))
                                  ) ;_ end of mapcar
                          ) ;_ end of vl-remove
        ) ;_ end of setq
  (if (and (= (type
                (setq ent (vl-catch-all-apply (function (lambda ()
                                                          (princ "\nВыберите треугольник <Отмена> : ")
                                                          (ssname (ssget "_+.:S:E" '((0 . "LWPOLYLINE") (90 . 3))) 0)
                                                          ) ;_ end of lambda
                                                        ) ;_ end of function
                                              ) ;_ end of vl-catch-all-apply
                      ) ;_ end of setq
                ) ;_ end of type
              'ename
              ) ;_ end of =
           (equal (vla-get-closed (vlax-ename->vla-object ent)) :vlax-true)
           ) ;_ end of and
    (progn (setq elev   (cond ((cdr (assoc 38 (entget ent))))
                              (t 0.)
                              ) ;_ end of cond
                 norm   (cdr (assoc 210 (entget ent)))
                 coord  (mapcar (function (lambda (x) (trans (list (cadr x) (caddr x) elev) norm 0)))
                                (vl-remove-if-not (function (lambda (x) (= (car x) 10))) (entget ent))
                                ) ;_ end of mapcar
                 center (inters (car coord)
                                (polar (car coord)
                                       (* (+ (angle (car coord) (cadr coord)) (angle (car coord) (caddr coord))) 0.5)
                                       1.
                                       ) ;_ end of polar
                                (cadr coord)
                                (polar (cadr coord)
                                       (* (+ (angle (cadr coord) (car coord)) (angle (cadr coord) (caddr coord))) 0.5)
                                       1.
                                       ) ;_ end of polar
                                nil
                                ) ;_ end of inters
                 ) ;_ end of setq
           (mapcar (function (lambda (pt) (entmakex (list (cons 0 "LINE") (cons 10 pt) (cons 11 center)))))
                   coord
                   ) ;_ end of mapcar
           ) ;_ end of progn
    (progn (princ "\nÎøèáêà âûáîðà"))
    ) ;_ end of if
  (foreach item sysvar (setvar (car item) (cdr item)))
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 19.01.2018 в 16:32.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.01.2018, 15:42
#23
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Алексей, твоя программа не работает в примере от 1958 и никаких сообщений не дает.
Offtop: Вот для чего городить такие сложные коды для, в общем-то, несложной задачи?
Setvar вне форума  
 
Непрочитано 19.01.2018, 15:45
#24
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Setvar Посмотреть сообщение
Сдается мне, что эта программа оказалась значительно проще, чем у koMon
Это уж точно)))
И как продолжение к затянувшейся пьянке, я подумал, а чего мелочиться и так сказать модифицировал свой макрос для построения всех биссектрис в любом выбранном многоугольнике! Гулять, так гулять! С чем и обновляю пост №4.

Последний раз редактировалось koMon, 19.01.2018 в 16:02.
koMon вне форума  
 
Непрочитано 19.01.2018, 15:52
#25
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Такая гнусная мысль и у меня была, да я не поддался.
Setvar вне форума  
 
Непрочитано 19.01.2018, 15:59
#26
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Setvar Посмотреть сообщение
Такая гнусная мысль и у меня была, да я не поддался.
Счастливчик!
koMon вне форума  
 
Непрочитано 19.01.2018, 16:33
#27
Кулик Алексей aka kpblc
Moderator

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


Исправил код в #22. А "сложность" кода - для того, чтобы выбирать только то, что реально надо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лиспик, рисующий биссектрисы треугольника.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен ли ПОС в составе РП на реконструкцию Тимофей Технология и организация строительства 21 13.09.2012 11:18
Нужен ли немецкий язык в строительстве? newAndrey Разное 17 22.07.2011 17:55
Бойлерная в подвале. Нужен ли отдельный выход? F0xik Архитектура 1 08.09.2009 11:49
Помогите, срочно нужен ПОС на прокол трассы. Noki Поиск литературы, чертежей, моделей и прочих материалов 8 17.03.2009 01:10
нужен и интересный сортамент арматуры Dvalin Поиск литературы, чертежей, моделей и прочих материалов 4 10.02.2008 19:06