明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 786|回复: 8

[函数] 同时取两个坐标点的方式,遍历坐标集的简单实用方法,有没有呀

[复制链接]
发表于 2018-5-21 16:15 | 显示全部楼层 |阅读模式
本帖最后由 zzl9105 于 2018-5-21 16:16 编辑

如题,已知有n个坐标点的组成的点表,我想依次取得第1、2第2、3个点,依次类推,直到第n、1个点。相当于循环遍历了一遍,这样同时取点表内相邻两个点,向后遍历的方式,有没有什么好的方法呀。

谢谢了。
发表于 2018-5-21 16:19 | 显示全部楼层
本帖最后由 Gu_xl 于 2018-5-21 16:24 编辑

(mapcar 'list  plist (append (cdr plist) (list (car plist))))
or

(mapcar 'list plist (reverse (cons (car plist) (reverse (cdr plist)))))

点评

我理解这个了,这个思路非常棒,谢谢G版。  发表于 2018-5-21 16:37
 楼主| 发表于 2018-5-21 16:28 | 显示全部楼层
本帖最后由 zzl9105 于 2018-5-21 16:31 编辑
Gu_xl 发表于 2018-5-21 16:19
(mapcar 'list  plist (append (cdr plist) (list (car plist))))
or

谢谢G版
假如我的点集是ptb,我如何定义第1、2个点pt1,pt2呀,因为我每定义一次pt1,pt2,我要做一些其它的操作。最后完成这个循环。
发表于 2018-5-21 17:10 | 显示全部楼层
(mapcar '(lambda (pt1 pt2) (list pt1 pt2) ....这里是你想干的事... ) plist (append (cdr plist) (list (car plist))))
发表于 2018-5-21 20:16 | 显示全部楼层
pzweng 发表于 2018-5-21 17:10
(mapcar '(lambda (pt1 pt2) (list pt1 pt2) ....这里是你想干的事... ) plist (append (cdr plist) (list  ...

水平不足,mapcar看不太懂,习惯用length取表长,然后repeat,心情好了用的defun
发表于 2018-5-21 20:33 | 显示全部楼层
lostbalance 发表于 2018-5-21 20:16
水平不足,mapcar看不太懂,习惯用length取表长,然后repeat,心情好了用的defun

我弄错了,举个例子吧 ,
(mapcar '(lambda (pt1 pt2)
           (command "line" "non" pt1 "non" pt2 "") ;这一句是画线,可以替代你想做的事
           (list pt1 pt2);这句一定要放在最后,
         )
        plist
        (append (cdr plist) (list (car plist)))
)
发表于 2018-5-22 18:44 | 显示全部楼层
感觉楼主好厉害,我想了15分钟,没想通G版的思路

点评

不停的把头转到尾,来实现这个目标  发表于 2018-5-22 18:56
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 06:52 , Processed in 0.205952 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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