将坐标放入单独的
嘿伙计们。。。我不需要什么帮助
(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)
帮帮我伙计们
当做
甘尼什 请检查此线程中的函数。 按编号分组列表 非常感谢Mircea&Lee Mac,它帮助我学习了这个方法 @李·麦克
在这几分钟里,我写了一个解决方案,请让我知道我使用它的正确与否
(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))
)
(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。 如果您想使用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))))
)
这也是我在这里演示的方法。 还有一个链接
M、 R。 再次感谢李现在我明白了 非常感谢marko ribar。。感谢您的大力支持
页:
[1]