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

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

Биссектриса угла в текущей системе координат (не в мировой)

Ответ
Поиск в этой теме
Непрочитано 22.02.2016, 12:24 #1
Биссектриса угла в текущей системе координат (не в мировой)
Малюк
 
проектировщик
 
Житомир
Регистрация: 03.05.2007
Сообщений: 652

Ест такой lisp

Код:
[Выделить все]
 ;;  Отрезки могут быть параллельны, пересекаться или
;;  пересекаться их продолжение.
;;  Если отрезки не будут лежать в одной плоскости -
;;  результат работы не определен.
;;  Автор Александр Ривилис.
;;----------------------------------------------------
(defun C:BI_LINE ( / en1 en2 e1 e2 p1 p2 p11 p12 p21 p22 tmp d1 d2 _bm)
    (setvar "CMDECHO" 0)
    (setq en1 (car (entsel "\nВыберите первый отрезок: ")))
    (if en1 (redraw en1 3))
    (setq en2 (car (entsel "\nВыберите второй отрезок: ")))
    (if en2 (redraw en2 3))
    (setq _bm (getvar "BLIPMODE")) (setvar "BLIPMODE" 0)
    (if (and en1 en2 (setq e1 (entget en1)) (setq e2 (entget en2))
             (= "LINE" (cdr (assoc 0 e1))) (= "LINE" (cdr (assoc 0 e2))))
     (progn
      (setq p11 (cdr (assoc 10 e1)) p12 (cdr (assoc 11 e1))
            p21 (cdr (assoc 10 e2)) p22 (cdr (assoc 11 e2)))
      (if (> (+ (distance p11 p21) (distance p12 p22))
             (+ (distance p11 p22) (distance p12 p21))) (progn
          ; Меняем местами начало и конец второго отрезка
          (setq tmp (list p21 p22) p21 (cadr tmp) p22 (car tmp))
      ))
      (cond
        ;; Отрезки сами пересекаются
        ((setq p1 (inters p11 p12 p21 p22 T))
          (setq d1 (max (distance p1 p11) (distance p1 p21)))
          (setq d2 (max (distance p1 p12) (distance p1 p22)))
          (setq p11 (polar p1 (angle p1 p11) d1))
          (setq p12 (polar p1 (angle p1 p12) d2))
          (setq p21 (polar p1 (angle p1 p21) d1))
          (setq p22 (polar p1 (angle p1 p22) d2))
        )
        ;; Пересекаются прямые, на которых лежат отрезки
        ((setq p1 (inters p11 p12 p21 p22 nil))
          (if (> (distance p1 p11) (distance p1 p12)) (progn
             (setq tmp (list p11 p12) p11 (cadr tmp) p12 (car tmp))
             (setq tmp (list p21 p22) p21 (cadr tmp) p22 (car tmp))
          )) ;; (if (progn
          (setq d1 (min (distance p1 p11) (distance p1 p21)))
          (setq d2 (max (distance p1 p12) (distance p1 p22)))
          (setq p11 (polar p1 (angle p1 p11) d1))
          (setq p12 (polar p1 (angle p1 p12) d2))
          (setq p21 (polar p1 (angle p1 p21) d1))
          (setq p22 (polar p1 (angle p1 p22) d2))
        )
      ) ;; (cond
      (setq p1 (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p11 p21)))
      (setq p2 (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p12 p22)))
      (command "_.LINE" "_none" (trans p1 0 1)
                        "_none" (trans p2 0 1) "")
     )
     (progn
       (princ "\nЧто-то не выбрано, или выбрано что-то не то!")
     )
    )
    (setvar "BLIPMODE" _bm)
    (if en1 (redraw en1 4))
    (if en2 (redraw en2 4))
    (princ)
)
Беда в том что все построения он производит в мировой системе координат, а мне надо в текущей.
Что надо поменять, чтобы построения производились в текущей системе координат?
Просмотров: 2561
 
Непрочитано 22.02.2016, 12:41
#2
Кулик Алексей aka kpblc
Moderator

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать здание к абсолютной системе координат Родеон Архитектура 15 15.05.2023 21:23
Преобразование координат вершин полилинии из мировой системы координат в текущую молодой человек Программирование 1 16.01.2010 22:57
Почему field возвращает координаты объекта только в мировой системе координат? stumpel AutoCAD 7 20.02.2009 12:43
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
Система координат зеркальная мировой? Елена AutoCAD 2 12.11.2004 08:35