sadhu 发表于 2022-7-6 07:29:12

Lisp测量路径-修改

我正在使用下面的代码来测量和跟踪一条路径,它是有效的。
我通常使用它沿着具有相同起点的路径测量点。
 
当我测量连续路径时,起点和大多数初始点是相同的。路径仅在最后几段不同。
 
所以我需要修改它来做到这一点:
 
1.当我重新启动lisp(C:res)时,它应该从(先前测量的)最后一个点开始沿着相同的路径开始测量。
2、按下左箭头键,我可以沿着上一条路径后退。
3.按下向右箭头,我可以沿着路径一直前进到最后一个点,并允许继续测量。
 
4、返回总距离。
 
我被困在如何“通信”和等待左/右箭头键盘用户输入。
 
感谢所有帮助。
(以下大部分代码来自李)
 
(defun c:mes (/ DLST PT PTLST) ;

(if (car
(setq ptLst (list (getpoint "\nSpecify First Point: ")))
   )
   (progn
   (setq q1 (car ptlst))
   (while (setq pt (getpoint "\nSpecify Next Point: " (car ptLst)))
           (mapcar
(function
    (lambda (from to)
      (grdraw from to 3 1)
    )
)

(reverse (setq ptLst (cons pt ptLst)))

(cdr (reverse ptLst))
)

(setq dLst
       (cons (distance (car ptlst) (cadr ptlst)) dLst)
)                                ; change the value

(princ
(strcat "\n<< Distance: "
          (rtos (car dLst) 2 2)
          " -- "
          "Cumulative: "
          (setq d1 (rtos (apply (function +) dLst) 2 2))
          " >>"
)

)
   );while

       (LWPoly ptlst)
      
   );progn                                        ; // added now

   (setq pt (getpoint "\nSpecify Next Point 2 : ")); else
                       
);if


(defun LWPoly (lst)
(entmakex (append (list (cons 0 "LWPOLYLINE")
                         (cons 100 "AcDbEntity")
                         (cons 100 "AcDbPolyline")
                         (cons 90 (length lst))
                         (cons 70 0)) ;cur fit vertices
                  (mapcar (function (lambda (p) (cons 10 p))) lst))))

);defun
页: [1]
查看完整版本: Lisp测量路径-修改