网上下的,应该可以满足楼主要求

- [FONT=courier new]
- (defun C:CM ()
- (setq A nil)
- (setq OM (getvar "OSMODE"))
- (setvar "OSMODE" 33)
- (setq PNT1 (getpoint "\n方向起点: "))
- (setq PNT2 (getpoint "\n方向终点: " PNT1))(terpri)
- (initget 1 "M E N")
- (prompt "\n选择复制方式: ")
- (setq CTYPE
- (getkword "[最大间距(M)/精确间距(E)/数量(N)]: "))
- (if (= CTYPE "M")
- (setq SP (getdist "\n最大对象间距: ")))
- (if (= CTYPE "E")
- (setq SP (getdist "\n精确对象间距: ")))
- (if (= CTYPE "N")
- (setq SP (getreal "\n对象数量: ")))
- (setq DIST (distance PNT1 PNT2))
- (setq ANG (angle PNT1 PNT2))
- (setq TEMP1 (/ DIST SP))
- (setq TEMP2 (fix (/ DIST SP)))
- (setq INC1 SP)
- (setq INC2 (/ DIST (+ 1 (fix (/ DIST SP)))))
- (setq INC3 (/ DIST (- SP 1)))
- (if (= TEMP1 TEMP2) (setq INC INC1) (setq INC INC2))
- (if (= CTYPE "E") (setq INC INC1) (setq INC INC))
- (if (= CTYPE "N") (setq INC INC3) (setq INC INC))
- (setq TMS (FIX (+ 0.00001 (/ DIST INC))))
- (setvar "OSMODE" 0)
- (setq A (ssget))
- (setq INCR 0)
- (repeat TMS
- (setq INCR (+ INCR INC))
- (setq NEWPT (polar PNT1 ANG INCR))
- (command "copy" A "" PNT1 NEWPT)
- )
- (setvar "OSMODE" OM)
- (setq A nil)
- )
- [/FONT]
|