明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 562|回复: 20

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

[复制链接]
发表于 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)这行代码最外面的括号去除

相当于将一个表拆分成多个小表
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-9-4 16:54:55 | 显示全部楼层
带最外面的括号是一个表达式,去了就成三个表达式了。

如果你想跟其它的表组合,可以使用 append 、 cons 等函数。
回复 支持 1 反对 0

使用道具 举报

发表于 2024-9-4 23:39:31 | 显示全部楼层
  1. (defun MkPline (pts mode)
  2.   (entmakex (append (list '(0 . "LWPOLYLINE")
  3.             '(100 . "AcDbEntity")
  4.             '(100 . "AcDbPolyline")
  5.             (cons 90 (length pts))
  6.             (cons 70 (if mode 1 0))
  7.       )
  8.       (mapcar '(lambda (x) (cons 10 x)) pts)
  9.     )
  10.   )
  11. )
 楼主| 发表于 2024-9-4 16:57:49 | 显示全部楼层
tryhi 发表于 2024-9-4 16:51
你要不要再看一看你提的问题?

没看出问题有啥不对的地方、主要是今天发现vl-list*函数在创建表的时候、可以把最后一个表的括号去除后添加进去(相当于把我问的第一个表转成第二个表)、但如果是用list、就会按第一个表的形式添加进去、所以才想问一下、有没有函数直接去掉嵌套表外面的括号
发表于 2024-9-4 16:53:43 | 显示全部楼层
指的是princ出来的结果吗?
如果是的话(foreach i lst (princ i))就行了
发表于 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))
发表于 2024-9-4 17:10:30 | 显示全部楼层
vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一个参数是表,这其中的元素被附加到表的尾部
 楼主| 发表于 2024-9-4 17:12:29 | 显示全部楼层
vitalgg 发表于 2024-9-4 16:54
带最外面的括号是一个表达式,去了就成三个表达式了。

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

谢谢!我重新编辑了一下问题、之前可能没有表达清楚
 楼主| 发表于 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))

海哥、不好意思!我重新编辑了一下问题、之前可能没有表达清楚
 楼主| 发表于 2024-9-4 17:15:08 | 显示全部楼层
Scarlet2001 发表于 2024-9-4 17:10
vl-list*将之后一个object 置于结果列表的最后一个cdr处。如果最后一个参数是原子则构成点对标;如果最后一 ...

我重新编辑了一下问题、之前没有表达清楚、其实我就是想实现类似VL-LIST*函数的效果、但是VL-LIST*需要多个表组合时才能去掉最后一个表的括号、我是想一个表就去掉括号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-22 18:35 , Processed in 0.205119 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表