xiaocainiao 发表于 2024-9-4 16:42:30

求教!有没有函数可以直接去掉括号、返回表内数据

本帖最后由 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)这行代码最外面的括号去除

相当于将一个表拆分成多个小表

vitalgg 发表于 2024-9-4 16:54:55

带最外面的括号是一个表达式,去了就成三个表达式了。

如果你想跟其它的表组合,可以使用 append 、 cons 等函数。

xyp1964 发表于 2024-9-4 23:39:31

(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)
    )
)
)

xiaocainiao 发表于 2024-9-4 16:57:49

tryhi 发表于 2024-9-4 16:51
你要不要再看一看你提的问题?

没看出问题有啥不对的地方、主要是今天发现vl-list*函数在创建表的时候、可以把最后一个表的括号去除后添加进去(相当于把我问的第一个表转成第二个表)、但如果是用list、就会按第一个表的形式添加进去、所以才想问一下、有没有函数直接去掉嵌套表外面的括号

tryhi 发表于 2024-9-4 16:51:10

本帖最后由 tryhi 于 2024-9-4 17:03 编辑

目的是啥?

Scarlet2001 发表于 2024-9-4 16:53:43

指的是princ出来的结果吗?
如果是的话(foreach i lst (princ i))就行了

tryhi 发表于 2024-9-4 17:05:32

xiaocainiao 发表于 2024-9-4 16:57
没看出问题有啥不对的地方、主要是今天发现vl-list*函数在创建表的时候、可以把最后一个表的括号去除后添 ...

(append '((10 0 0 0) (10 0 1 0) (10 0 0 1)) '(1 2 3))

Scarlet2001 发表于 2024-9-4 17:10:30

vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一个参数是表,这其中的元素被附加到表的尾部

xiaocainiao 发表于 2024-9-4 17:12:29

vitalgg 发表于 2024-9-4 16:54
带最外面的括号是一个表达式,去了就成三个表达式了。

如果你想跟其它的表组合,可以使用 append 、 con ...

谢谢!我重新编辑了一下问题、之前可能没有表达清楚

xiaocainiao 发表于 2024-9-4 17:13:35

tryhi 发表于 2024-9-4 17:05
(append '((10 0 0 0) (10 0 1 0) (10 0 0 1)) '(1 2 3))

海哥、不好意思!我重新编辑了一下问题、之前可能没有表达清楚

xiaocainiao 发表于 2024-9-4 17:15:08

Scarlet2001 发表于 2024-9-4 17:10
vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一 ...

我重新编辑了一下问题、之前没有表达清楚、其实我就是想实现类似VL-LIST*函数的效果、但是VL-LIST*需要多个表组合时才能去掉最后一个表的括号、我是想一个表就去掉括号
页: [1] 2 3
查看完整版本: 求教!有没有函数可以直接去掉括号、返回表内数据