tigcat 发表于 2024-3-1 01:03:45

[请教]有什么快速方法写个10x10的坐标点集

本帖最后由 tigcat 于 2024-3-1 01:13 编辑

如题:有什么好办法可以快速写个如下的坐标点集,其中(0 0)可以是用getpoint获取的点,点的X和Y的距离可以指定,下面示意坐标以(0 0)为起点,X和Y的间距都为100。

(0 0)(100 0)(200 0)....(900 0)
(0 100)(100 100)(200 100)...(900 100)
(0 200)(100 200)(200 200)...(900 200)
...
(0 900)(100 900)(200 900)...(900 900)


w17063 发表于 2024-3-1 08:46:07

都是night cat:lol

caoyin 发表于 2024-3-1 01:23:28

;; 把第一个作为变量点,后面的点作为向量,变量点与每一个向量相加
(defun C:TT (/ P)
(if (setq P (getpoint "\n指定点: "))
    (cons P
      (mapcar '(lambda (P1) (mapcar '+ P P1))
            '((100 0) (200 0) (300 0) (400 0) (500 0) (600 0) (700 0) (800 0) (900 0)
                ;; 此处自行添加完整的点集
               )
      )
    )
)
)

tigcat 发表于 2024-3-1 01:41:09

caoyin 发表于 2024-3-1 01:23
;; 把第一个作为变量点,后面的点作为向量,变量点与每一个向量相加
(defun C:TT (/ P)
(if (setq P (g ...

谢谢caoyin版主指点,我自己写了一个,不太简洁
(setq pt0 (getpoint "\n输入起始点"))
(setq pt0 (list (car pt0)(cadr pt0)))
(setq lst nil)
(setq ii 0)
(setq flag T)
(repeat 16
    (setq lst (cons pt0 lst))
    (setq pt0 (mapcar '+ '(10 0) pt0))
)
(setq lst0 lst)
(repeat 15
    (setq lst (mapcar '(lambda(x)(apply '(lambda(a b)(list a (+ 10 b)))x)) lst))
    (setq lst0 (append lst lst0))
    )

夏生生 发表于 2024-3-1 08:59:46

tigcat 发表于 2024-3-1 01:41
谢谢caoyin版主指点,我自己写了一个,不太简洁
(setq pt0 (getpoint "\n输入起始点"))
(setq pt0...

还能简化
(defun tt(pt m n dis / i lst1 lst2)
    (setq i (- (car pt)dis))
    (repeat m (setq lst1 (cons (setq i (+ dis i)) lst1)))
    (setq i (- (cadr pt)dis))
    (repeat n (setq lst2 (cons (setq i (+ dis i)) lst2)))
    (setq lst1 (reverse lst1)
          lst2 (reverse lst2))
    (mapcar '(lambda (x) (mapcar '(lambda (y) (list y x)) lst1))
          lst2))
(tt '(123 456)10 10 100)

kucha007 发表于 2024-3-1 09:35:37

本帖最后由 kucha007 于 2024-3-1 10:07 编辑

while方便一点
(defun K:Grid->100 (StaPT / x y PTLst)
(setq x 0.0 y 0.0)
(while (<= x 900)
    (while (<= y 900)
      (setq PTLst (cons (list x y) PTLst))
      (setq y (+ y 100))
    )
    (setq x (+ x 100))
    (setq y 0)
)
(mapcar '(lambda (XX) (mapcar '+ StaPT XX)) (reverse PTLst));累加
)



guosheyang 发表于 2024-3-1 12:02:14

如果要生成实体点集也可以这样   
(progn ;指定起点和行间距、列间距生成10X10的阵列点集
(setq p (getpoint "\n 指定起点"))
(entmakex (list '(0 . "POINT") (cons 10 p)))
(setq hjj (getdist "\n 指定y增量") ljj (getdist "\n 指定x增量"))
(command "array" (entlast) "" "R" 10 10 hjj ljj)
)

tigcat 发表于 2024-3-1 12:16:17

太感谢各位大佬出手,集思广益

tigcat 发表于 2024-3-1 12:46:03

夏生生 发表于 2024-3-1 08:59
还能简化

谢谢大佬简化

tigcat 发表于 2024-3-1 12:47:39

kucha007 发表于 2024-3-1 09:35
while方便一点

谢谢,这个写的好
页: [1] 2
查看完整版本: [请教]有什么快速方法写个10x10的坐标点集