Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:

Функция Lisp для вычисления расстояния между точками

Назад к списку функций

Методы вычисления расстояния:

c:accdist - комбинированный
c:accdist1 - вычисление расстояния от первой точки до следующей
c:accdist2 - вычисление расстояния от первой точки до второй
;;;---------------------------------------------------------------------------;
;;;
;;; accdist.lsp
;;;
;;;---------------------------------------------------------------------------;

(defun c:accdist (/ errexit undox restore *error* p1 p2 sum)
  (defun errexit (s)
    (princ)
    (restore)
  )

  (defun undox ()
    (redraw)
    (setq *error* olderr)
    (princ)
  )

  (setq olderr  *error*
        restore undox
        *error* errexit
  )
  (setq p1  (getpoint "\nУкажите первую точку: ")
        p2  "First"
        sum 0
  )
  (while (and p1 p2)
    (if (= p2 "First")
      (progn
        (initget 32)
        (setq p2 (getpoint "\nУкажите вторую точку: " p1))
      )
      (progn
        (initget 32 "First")
        (setq p2 (getpoint "\nУкажите следующую точку или [Первая]: " p1))
      )
    )
    (cond
      ((not p2))
      ((= p2 "First")
       (setq p1 (getpoint "\nУкажите первую точку: "))
      )
      (t
       (grdraw p1 p2 -1 1)
       (setq sum (+ sum (distance p1 p2))
             p1  p2
       )
      )
    )
  )
  (princ "\nНакопленное расстояние = ")
  (princ sum)
  (restore)
)

(defun c:accdist1 (/ p1 p2 sum)
  (setq sum 0)
  (setq p1 (getpoint "\nУкажите первую точку: "))
  (while (and p1
              (not (initget 32))
              (setq p2 (getpoint "\nУкажите следующую точку: " p1))
         )
    (grdraw p1 p2 -1 1)
    (setq sum (+ sum (distance p1 p2)))
    (setq p1 p2)
  )
  (redraw)
  (princ "\nНакопленное расстояние = ")
  (princ sum)
  (princ)
)

(defun c:accdist2 (/ p1 p2 sum)
  (setq sum 0)
  (while
    (and (setq p1 (getpoint "\nУкажите первую точку: "))
         (not (initget 32))
         (setq p2 (getpoint "\nУкажите вторую точку: " p1))
    )
     (setq sum (+ sum (distance p1 p2)))
  )
  (princ "\nНакопленное расстояние = ")
  (princ sum)
  (princ)
)



Copyright © Сайт поддержки пользователей САПР by Victor Tkachenko