434939575 发表于 2013-12-25 09:27 
谢谢院长的指导。这么晚了。还出手相助。真的很感动!  - ;排列圆.以半径为距离排列圆.有问题.
- ;modfiy by edata @2013-12-25 10:51:17
- (defun c:tt(/ CEN-10 EN I O_CMD O_OS PT0 PTY RAD-40 SS SS0);局部变量要设置
- (princ " \n 按大小点选圆");无排序函数,按选择排序
- (setq o_cmd (getvar "CMDECHO"));保存要更改的变量值
- (setq o_os (getvar "osmode"));保存要更改的变量值
- (setvar "CMDECHO" 0);_关闭命令提示
- (Setvar "osmode" 0);_关闭捕捉
- (if (setq ss (ssget '((0 . "circle"))))
- (progn
- (setq pt0 (getpoint "排列起始点"));可运行成功
- (setq i 0)
- (repeat (sslength ss)
- (setq ss0 (ssname ss i)
- en (entget ss0)
- cen-10(cdr (assoc 10 en)) ;pt=圆心坐标
- rad-40(cdr (assoc 40 en)) ;pt=圆半径
- i (1+ i)
- ); (setq ss0
- ;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- (setq pty(polar cen-10 0 rad-40));获得原来圆的右面点
- (setq pt0(polar pt0 0 (+ rad-40 rad-40)));设置新的右边点
- ;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- ;;;;------------------------------------------------------------------
- ;;; (setq ptz(polar pt0 pi rad-40 ) );圆左边点。
- ;;; (setq pty (polar ptz 0 (* rad-40 2) ) );圆右边点。
- ;;; (setq pt0 pty );圆左边点赋值给pt0 。
- ;------------------------------------------------------------------
- (command "move" ss0 "" pty pt0 "") ;command
- ); (repeat
- )
- )
- (and o_cmd (setvar "CMDECHO" o_cmd));恢复更改的变量值
- (and o_os (setvar "osmode" o_os));恢复更改的变量值
- )
|