(defun carnth (i l) 表取头,保留表L前面I-1个元素,函链老数返回新表
(if (= i (length l))
l
(progn
(setq l (reverse l)
i (- (length l) i 1)
l (cdrnth i l)
)
(reverse l)
)
)
)
(defun cdrnth (i l) 表取尾,去老迅除表L后面I个元素,函数返回新表
(repeat (1+ i) (setq l (cdr l)))
)
(defun delnth (i l) 删除表L中第I个元素,函数棚含升返回新表
(append (carnth i l) (cdrnth i l))
)
(defun min2max (l / lp a i k) 表中的数从小到大排序
(while (>(length l) 0)
(setq lp (cons (setq a (apply 'max l)) lp))
(setq i 0
k t
)
(while k
(if (= a (nth i l))
(setq k nil
l (delnth i l)
)
(setq i (1+ i))
)
)
)
lp
)
程序运行及结果:
命令:(min2max '( 1 2 5 4 3))
函数返回值:(1 2 3 4 5)
试用以坦州下程序(defun c:ccc()
(setq cm (getvar "cmdecho")
os (getvar "osmode")
)
(setvar "cmdecho" 0)
(command "_undo" "be")
(if (setq pt0 (getpoint "败信租\左下角:"))
(if (setq pt1 (getcorner pt0 "\n右上角:"))
(progn
(setvar "osmode" 0)
(command "_rectang" pt0 pt1)
(while (setq pdbz (getint "\n要改变长宽吗<输入任意整数则改变,回车则结束>:"))
(setq dxy (mapcar '- pt1 pt0)
ent (entlast)
)
(if (= (setq cd (getreal (strcat "\n当前长度为:" (rtos (car dxy) 2 3) ", 请输入改动值:"))) nil)
(setq cd (car dxy))
)
(if (= (setq kd (getreal (strcat "\n当前宽度为:" (rtos (cadr dxy) 2 3) ", 请输入改察兆动值:"))) nil)
(setq kd (cadr dxy))
)
(if (not (equal dxy (list cd kd)))
(command "_erase" ent ""
"_rectang" pt0 (mapcar '+ pt0 (list cd kd))
)
)
)
)
)
)
(command "_undo" "e")
(setvar "osmode" os)
(setvar "cmdecho" cm)
(princ)
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)