gS7 发表于 2022-7-6 06:54:31

将坐标放入单独的

嘿伙计们。。。
 
我不需要什么帮助
(setq ename(vlax-ename->vla-object ss))
(setq points(vlax-safearray->list (vlax-variant-value(vla-get-coordinates ename))))
请看,lisp返回的坐标如下所示
(7.52707 15.8253 24.8824 22.4948 30.4653 7.9432 21.2414 -1.81847
13.9595 -1.09089)
我的目标是把它们全部分开,放到一个列表中
这样地
(7.52707 15.8253) (24.8824 22.4948) (30.4653 7.9432) (21.2414 -1.81847)
(13.9595 -1.09089)
 
帮帮我伙计们
 
当做
甘尼什

MSasu 发表于 2022-7-6 07:07:23

请检查此线程中的函数。

Lee Mac 发表于 2022-7-6 07:12:03

按编号分组列表

gS7 发表于 2022-7-6 07:20:02

非常感谢Mircea&Lee Mac,它帮助我学习了这个方法

gS7 发表于 2022-7-6 07:22:16

@李·麦克
在这几分钟里,我写了一个解决方案,请让我知道我使用它的正确与否
(setq c 0)
(setq mtlist'())
(repeat (1- (length points))
   (setq a(nth c points))
   (setq b(nth (1+ c) points))
   (setq pt(list a b))
   (setq mtlist (cons pt mtlist))
   (setq c (1+ c))
)

marko_ribar 发表于 2022-7-6 07:30:56


(setq c 0)
(setq mtlist'())
(repeat (1- (length points))
(setq a(nth c points))
(setq b(nth (setq c (1+ c)) points))
(setq pt(list a b))
(setq mtlist (cons pt mtlist))
(setq c (1+ c))
)

 
或者另一种方式:
 

(repeat (/ (length points) 2)
(setq pt (list (car points) (cadr points)))
(setq points (cddr points))
(setq mtlist (cons pt mtlist))
)
(reverse mtlist)

 
M、 R。

Lee Mac 发表于 2022-7-6 07:38:32

如果您想使用repeat,我建议您做以下几点:
(defun _groupby2 ( lst / out )
   (repeat (/ (length lst) 2)
       (setq out (cons (list (car lst) (cadr lst)) out)
             lst (cddr lst)
       )
   )
   (reverse out)
)
或递归,
(defun _groupby2 ( lst )
   (if lst (cons (list (car lst) (cadr lst)) (_groupby2 (cddr lst))))
)
这也是我在这里演示的方法。

marko_ribar 发表于 2022-7-6 07:42:13

还有一个链接
 
M、 R。

gS7 发表于 2022-7-6 07:49:12

再次感谢李现在我明白了

gS7 发表于 2022-7-6 07:58:45

非常感谢marko ribar。。感谢您的大力支持
页: [1]
查看完整版本: 将坐标放入单独的