天各一方 发表于 5 天前

计算边长与方位角案例

本帖最后由 天各一方 于 2025-4-25 11:53 编辑

;计算坐标点与控制点距离与方位角(defun demo1()
(setq list_test'(3885.634 3114.471 4281.739 3592.881 3356.668 3419.507 3373.397 2385.189 3968.103 3005.75))
(setq n (- (/ (length list_test) 2) 1))
(setq flown 1)
(setq p1 (list (nth 0 list_test)(nth 1 list_test) 0))
(setq result '())
(repeat n
(setq num (* flown 2))
(setq x1 (nth num list_test))
(setq y1 (nth (+ num 1) list_test))
(setq p2 (list x1 y1 0))
(setq m1 (list (distance p1 p2)))
(setq m2(list (atof (angtos (angle p1 p2) 0 6))))
(setq string(list (strcat "1→"(itoa (+ 1 flown))"距离及角度" )))
(setq result (append string result))
(setq result (append m1 result))
(setq result (append m2 result))
(setq flown(+ flown 1))
)
(setq result(reverse result))
(princ)
(print result)
(princ)
)


fangmin723 发表于 5 天前

本帖最后由 fangmin723 于 2025-4-25 13:43 编辑

(defun c:demo1(/ lst n pt1 pts split2pt)
(setq lst '(3885.634 3114.471 4281.739 3592.881 3356.668 3419.507 3373.397 2385.189 3968.103 3005.75))
(defun Split2Pt(lst / ptlst x y)
    (setq ptlst nil)
    (while (setq x (car lst))
      (if (setq lst (cdr lst) y (car lst))
      (setq ptlst (cons (list x y) ptlst))
      (setq ptlst (cons (list x 0.0) ptlst))
      )
      (setq lst (cdr lst))
    )
    (reverse ptlst)
)
(setq pts (Split2Pt lst) pt1 (car pts) n 1)
(print
    (mapcar
      '(lambda(x)
         (list
         (list (strcat "1->" (itoa (setq n (1+ n))) "距离") (distance pt1 x))
         (list (strcat "1->" (itoa n) "角度") (atof (angtos (angle pt1 x) 0 6)))
         )
       )
      (cdr pts)
    )
)
(princ)
)

(
(("1->2距离" 621.108) ("1->2角度" 50.3766))
(("1->3距离" 610.616) ("1->3角度" 150.029))
(("1->4距离" 891.201) ("1->4角度" 234.916))
(("1->5距离" 136.46) ("1->5角度" 307.182))
)

天各一方 发表于 5 天前

这是我抄的书。。。
页: [1]
查看完整版本: 计算边长与方位角案例