 - ;;直线生杆
- (defun c:tt ()
- ;; 等分子函数,根据两点点及等分数量得出等分点列表
- (defun tt-df (p1 p2 n)
- (if (> (1- n) 0)
- (cons (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
- (tt-df (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
- p2
- (1- n)
- )
- )
- )
- )
- (setvar "osmode" 4)
- (setvar "cmdecho" 0)
- (while (and (setq p1 (getpoint "\n杆路起点: "))
- (setq p2 (getpoint p1 "\n杆路终点: "))
- )
- (setq cd (distance p1 p2)
- nn (/ cd 12.)
- n (atoi (rtos nn 2 0))
- lst (tt-df p1 p2 n)
- lst (append (list p1) lst (list p2))
- i 0
- )
- (mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.5)) lst)
- (while (and (setq p1 (nth i lst))
- (setq p2 (nth (1+ i) lst))
- )
- (setq rad (angle p1 p2)
- p1a (polar p1 rad 1.5)
- p2a (polar p2 rad -1.5)
- i (1+ i)
- )
- (COMMAND "LINE" p1a p2a "")
- )
- )
- (princ)
- )
|