明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 754|回复: 6

[提问] 请问要怎么处理这个坐标,我要给定的距离,不足就不分了

[复制链接]
发表于 2024-1-6 11:11:55 | 显示全部楼层 |阅读模式
  1. (setq vertices '()) ; 创建一个空列表用于存储顶点坐标
  2.   (foreach item polyline-info
  3.     (if (= (car item) 10) ; 检查是否为顶点坐标
  4.       (setq vertices (cons (cdr item) vertices)) ; 将顶点坐标添加到列表中
  5.     )
  6.   )
  7.   (setq divs '()) ; 创建一个空列表用于存储等分后的坐标
  8.   (setq given-distance 1000.0) ; 给定的距离
  9.   (repeat (1- (length vertices))
  10.     (setq pt1 (nth 0 vertices)) ; 第一个坐标
  11.     (setq pt2 (nth 1 vertices)) ; 第二个坐标
  12.     (setq len (distance pt1 pt2)) ; 计算两点之间的长度
  13.     (setq segment-count (1+ (fix (/ len given-distance)))) ; 计算线段的等分数量
  14.     (setq dx (/ (- (car pt2) (car pt1)) segment-count)) ; X 轴方向的增量
  15.     (setq dy (/ (- (cadr pt2) (cadr pt1)) segment-count)) ; Y 轴方向的增量
  16.     (repeat segment-count
  17.       (setq divided-vertices (cons pt1 divided-vertices)) ; 将当前坐标添加到列表中
  18.       (setq pt1 (list (+ (car pt1) dx) (+ (cadr pt1) dy))) ; 计算下一个坐标
  19.     )
  20.     (setq vertices (cdr vertices)) ; 移除已处理的坐标
  21.   )
这段代码处理等分的时候,当不能整除会以近似距离等分,我想要定距等分要怎么处理,帮我改一下,谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-1-6 15:24:38 | 显示全部楼层
你是想每两个节点之间 定距等分? 不是整除的话最后肯定会有剩余的
发表于 2024-1-6 16:51:34 | 显示全部楼层
飞雪神光 发表于 2024-1-6 15:24
你是想每两个节点之间 定距等分? 不是整除的话最后肯定会有剩余的

哥 我很好奇为什么你的最后登录时间是1970-1-1
 楼主| 发表于 2024-1-6 18:17:45 | 显示全部楼层
飞雪神光 发表于 2024-1-6 15:24
你是想每两个节点之间 定距等分? 不是整除的话最后肯定会有剩余的

每段多出来的扔了不要。公式要怎么改。
发表于 2024-1-6 18:20:30 | 显示全部楼层
love1030312 发表于 2024-1-6 16:51
哥 我很好奇为什么你的最后登录时间是1970-1-1

这我也不知道 我看有一部分人就是这样的
发表于 2024-1-6 18:37:25 | 显示全部楼层
本帖最后由 飞雪神光 于 2024-1-6 18:39 编辑

  1. (setq divided-vertices '()) ; 创建一个空列表用于存储等分后的坐标
  2. (setq given-distance 1000.0) ; 给定的距离
  3. (repeat (1- (length vertices))
  4.   (setq pt1 (nth 0 vertices)) ; 第一个坐标
  5.   (setq pt2 (nth 1 vertices)) ; 第二个坐标
  6.   (setq len (distance pt1 pt2)) ; 计算两点之间的长度
  7.   (setq an (angle pt1 pt2)) ; 计算两点之间的长度
  8.   (setq segment given-distance)
  9.   (setq divided-vertices (cons pt1 divided-vertices)) ; 将当前坐标添加到列表中
  10.   (while (< segment len)
  11.     (setq pt1 (polar pt1 an given-distance)) ; 计算下一个坐标
  12.     (setq divided-vertices (cons pt1 divided-vertices)) ; 将当前坐标添加到列表中
  13.     (setq segment (+ segment given-distance))
  14.   )
  15.   (setq vertices (cdr vertices)) ; 移除已处理的坐标
  16. )
 楼主| 发表于 2024-1-7 08:32:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:41 , Processed in 0.175585 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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