明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1389|回复: 10

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

[复制链接]
发表于 2024-3-1 01:03:45 | 显示全部楼层 |阅读模式
本帖最后由 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)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-3-1 08:46:07 | 显示全部楼层
都是night cat
回复 支持 1 反对 0

使用道具 举报

发表于 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)
                ;; 此处自行添加完整的点集
               )
      )
    )
  )
)
 楼主| 发表于 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  ...

还能简化
  1. (defun tt  (pt m n dis / i lst1 lst2)
  2.     (setq i (- (car pt)dis))
  3.     (repeat m (setq lst1 (cons (setq i (+ dis i)) lst1)))
  4.     (setq i (- (cadr pt)dis))
  5.     (repeat n (setq lst2 (cons (setq i (+ dis i)) lst2)))
  6.     (setq lst1 (reverse lst1)
  7.           lst2 (reverse lst2))
  8.     (mapcar '(lambda (x) (mapcar '(lambda (y) (list y x)) lst1))
  9.             lst2))
  10. (tt '(123 456)10 10 100)
发表于 2024-3-1 09:35:37 | 显示全部楼层
本帖最后由 kucha007 于 2024-3-1 10:07 编辑

while方便一点
  1. (defun K:Grid->100 (StaPT / x y PTLst)
  2.   (setq x 0.0 y 0.0)
  3.   (while (<= x 900)
  4.     (while (<= y 900)
  5.       (setq PTLst (cons (list x y) PTLst))
  6.       (setq y (+ y 100))
  7.     )
  8.     (setq x (+ x 100))
  9.     (setq y 0)
  10.   )
  11.   (mapcar '(lambda (XX) (mapcar '+ StaPT XX)) (reverse PTLst));累加
  12. )




发表于 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)
)
 楼主| 发表于 2024-3-1 12:16:17 | 显示全部楼层
太感谢各位大佬出手,集思广益
 楼主| 发表于 2024-3-1 12:46:03 | 显示全部楼层

谢谢大佬简化
 楼主| 发表于 2024-3-1 12:47:39 | 显示全部楼层

谢谢,这个写的好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:47 , Processed in 0.190098 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表