求多点距离,并显示在屏幕- (defun c:dd (/ pt pts dis p1 pp ppp );连续测量线段总长
- (setvar "cmdecho" 0)
- (setq K (getvar "dimscale"))
- (setq t_h (* 3 k))
- (command "style" "xywzgs" "txt,hztxt" t_h 0.8 0 "n" "n" "n")
- (while (setq pt (getpoint "\n请选取点: "))
-
- (if (not p1)
- (setq p1 pt)
-
- )
-
- (setq pts (cons pt pts))
- (if (>= (length pts) 2)
- (grdraw pt p1 1))
- (setq p1 pt)
- )
- (setq dis 0.)
- (if pts
- (mapcar '(lambda (x y)
- (setq dis (+ dis (distance x y)))
- )
- (reverse (cdr (reverse pts)))
- (cdr pts)
- )
- )
- ;;(apply 'command (cons ".pline" pts))
- ;;(command)
- (if (not (zerop dis))
- (progn
- (setq pp (* 0.001 dis))
- (setq ppp (rtos pp 2 3))
- (princ (strcat "\n线段总长 = " ppp "米\n"))
- (command "Text" "s" "xywzgs" p1 "0" PPP )
- (command "move" "L" "" "@" )
- ))
- (princ)
- )
|