求教!有没有函数可以直接去掉括号、返回表内数据
本帖最后由 xiaocainiao 于 2024-9-4 17:11 编辑(entmake
(vl-list*
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length pts))
(cons 70 1)
(mapcar (function (lambda (x) (cons 10 x))) pts)
)
)
之前可能没表达清楚问题、重新提问一下
就是我想修改一下上面的创建多段线程序
这个程序是用的VL-LIST*函数创建表的、使用这个函数他会将最后一个表的括号去除后再进行组合
我是想将这个VL-LIST*改成LIST创建
所以想问你一下有没有啥函数、
能将(mapcar (function (lambda (x) (cons 10 x))) pts)这行代码最外面的括号去除
相当于将一个表拆分成多个小表 带最外面的括号是一个表达式,去了就成三个表达式了。
如果你想跟其它的表组合,可以使用 append 、 cons 等函数。 (defun MkPline (pts mode)
(entmakex (append (list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length pts))
(cons 70 (if mode 1 0))
)
(mapcar '(lambda (x) (cons 10 x)) pts)
)
)
) tryhi 发表于 2024-9-4 16:51
你要不要再看一看你提的问题?
没看出问题有啥不对的地方、主要是今天发现vl-list*函数在创建表的时候、可以把最后一个表的括号去除后添加进去(相当于把我问的第一个表转成第二个表)、但如果是用list、就会按第一个表的形式添加进去、所以才想问一下、有没有函数直接去掉嵌套表外面的括号 本帖最后由 tryhi 于 2024-9-4 17:03 编辑
目的是啥? 指的是princ出来的结果吗?
如果是的话(foreach i lst (princ i))就行了 xiaocainiao 发表于 2024-9-4 16:57
没看出问题有啥不对的地方、主要是今天发现vl-list*函数在创建表的时候、可以把最后一个表的括号去除后添 ...
(append '((10 0 0 0) (10 0 1 0) (10 0 0 1)) '(1 2 3)) vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一个参数是表,这其中的元素被附加到表的尾部 vitalgg 发表于 2024-9-4 16:54
带最外面的括号是一个表达式,去了就成三个表达式了。
如果你想跟其它的表组合,可以使用 append 、 con ...
谢谢!我重新编辑了一下问题、之前可能没有表达清楚 tryhi 发表于 2024-9-4 17:05
(append '((10 0 0 0) (10 0 1 0) (10 0 0 1)) '(1 2 3))
海哥、不好意思!我重新编辑了一下问题、之前可能没有表达清楚 Scarlet2001 发表于 2024-9-4 17:10
vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一 ...
我重新编辑了一下问题、之前没有表达清楚、其实我就是想实现类似VL-LIST*函数的效果、但是VL-LIST*需要多个表组合时才能去掉最后一个表的括号、我是想一个表就去掉括号