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]