
- (defun $zhi-zuo-qu-ge$ (xs ys lst / d i p1 p3 x xs2 xs2-tmp y ys2)
- ;根据一堆X坐标和Y坐标制作区格坐标
- (setq xs (vl-remove nil xs))
- (setq ys (vl-remove nil ys))
- (if (and xs ys)
- (progn
- (setq xs (vl-sort xs '<) ;从小到大排序
- ys (vl-sort ys '>) ;从大到小排序
- )
- (SETQ XS2 (MAPCAR 'LIST XS (CDR XS))) ;X轴链式表
- (SETQ YS2 (MAPCAR 'LIST ys (CDR ys))) ;Y轴链式表
- (setq i 1)
- (while (setq y (car ys2))
- (setq xs2-tmp xs2)
- (while (setq x (car xs2-tmp))
- (setq p1 (list (car x) (car y) 0))
- (setq p3 (list (cadr x) (cadr y) 0))
- (setq d (cons (list (cons "区格号" i)
- (cons "左上角坐标" p1)
- (cons "右下角坐标" p3)
- )
- d
- )
- )
- (setq i (1+ i))
- (setq xs2-tmp (cdr xs2-tmp))
- )
- (setq ys2 (cdr ys2))
- )
- (setq d (reverse d))
- )
- )
- d
- )
- ;测试示例
- (setq x 0
- y 0
- )
- (setq xs nil
- ys nil
- d nil
- )
- (repeat 100 (setq xs (cons (setq x (+ x 5)) xs)))
- (repeat 100 (setq ys (cons (setq y (+ y 5)) ys)))
- (setq qgs ($zhi-zuo-qu-ge$ xs ys nil))
- (setq pts (mapcar (function (lambda (a)
- (setq p1 (cdr (assoc "左上角坐标" a)))
- (setq p3 (cdr (assoc "右下角坐标" a)))
- (command "RECTANG" "_non" p1 "_non" p3)
- )
- )
- qgs
- )
- )
网友答: 太罗嗦了

- (defun abc (x y dx dy ny nx / yy)
- ;;(abc 0 0 5 3 100 100)
- (repeat ny
- (setq yy y)
- (repeat nx
- (setq p1 (list x yy)
- p2 (list (+ x dx) (+ yy dy))
- yy (+ yy dy)
- )
- (command "rectang" "non" p1 "non" p2)
- )
- (setq x (+ x dx))
- )
- )
xyp1964 发表于 2026-2-4 19:53
太罗嗦了
输入条件只有一堆X轴和Y轴的坐标