问题:
1. 画线时要取消捕捉(setvar "osmode" 0)
2. (command "array" en2 "" "r" p_num 1 period 0)阵列仅一列就不能再有间距0,应改为(command "array" en2 "" "r" p_num 1 period)
 - [FONT=courier new](defun C:test ()
- ;(cmdla0)
- (setvar "osmode" 0)
- (setq ss1 (ssget)
- i -1
- )
- (while (setq en1 (ssname ss1 (setq i (1+ i))))
- (setq en1_data (entget en1)
- pt1 (cdr (nth 14 en1_data))
- pt3 (cdr (nth 22 en1_data))
- y1 (cadr pt1)
- y3 (cadr pt3)
- )
- (if (> y1 y3)
- (setq temp pt1
- pt1 pt3
- pt3 temp
- ))
- (setq period 2000
- tran 1000
- c_len (abs (- (cadr pt3) (cadr pt1)))
- p_num (fix (/ c_len period))
- shift (/ (- c_len (- (* p_num period) (- period tran))) 2)
- x1 (car pt1)
- x3 (car pt3)
- y (+ (cadr pt1) shift)
- y1 (+ tran (+ (cadr pt1) shift))
- temp1 (list x1 y)
- temp2 (list x3 y)
- temp3 (list x3 y1)
- temp4 (list x1 y1)
- )
- (command "pline" temp1 temp2 temp3 temp4 "c")
- (setq en2 (entlast))
- (command "array" en2 "" "r" p_num 1 period)
- )
- ;(cmdla1)
- (princ)
- )[/FONT]
|