- (setq vertices '()) ; 创建一个空列表用于存储顶点坐标
- (foreach item polyline-info
- (if (= (car item) 10) ; 检查是否为顶点坐标
- (setq vertices (cons (cdr item) vertices)) ; 将顶点坐标添加到列表中
- )
- )
- (setq divs '()) ; 创建一个空列表用于存储等分后的坐标
- (setq given-distance 1000.0) ; 给定的距离
- (repeat (1- (length vertices))
- (setq pt1 (nth 0 vertices)) ; 第一个坐标
- (setq pt2 (nth 1 vertices)) ; 第二个坐标
- (setq len (distance pt1 pt2)) ; 计算两点之间的长度
- (setq segment-count (1+ (fix (/ len given-distance)))) ; 计算线段的等分数量
- (setq dx (/ (- (car pt2) (car pt1)) segment-count)) ; X 轴方向的增量
- (setq dy (/ (- (cadr pt2) (cadr pt1)) segment-count)) ; Y 轴方向的增量
- (repeat segment-count
- (setq divided-vertices (cons pt1 divided-vertices)) ; 将当前坐标添加到列表中
- (setq pt1 (list (+ (car pt1) dx) (+ (cadr pt1) dy))) ; 计算下一个坐标
- )
- (setq vertices (cdr vertices)) ; 移除已处理的坐标
- )
这段代码处理等分的时候,当不能整除会以近似距离等分,我想要定距等分要怎么处理,帮我改一下,谢谢。
|