明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: mokson

[提问] 有这样的命令或函数吗:能将选择集转换成列表?

[复制链接]
发表于 2022-4-21 11:20:54 | 显示全部楼层
本帖最后由 lee50310 于 2022-4-25 11:42 编辑
mokson 发表于 2022-4-20 14:26
目前有没有更好的方法解决慢的问题吗?

(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex  (ssget)))))    ;;將集合物轉圖元串列


這式子最吸引人的地方就是 "簡潔有力"  短短的一行 就可以取代 傳統數十行的效果
不過美中不足就是 當集合物眾多時會拖慢速度
如何能保有此式的優點將缺點去除呢?
發現上面這式子中的  vl-remove-if 有使用到 if 判斷式 若數量多時會拖慢速度
因此修改成不須要 if 判斷式 應該會快很多

;------------------------------------------------------------------------------------
方法 (1):
           (setq lst (cdr(reverse(mapcar 'cadr (ssnamex  (ssget))))))

;-------------------------------------------------------------------------------------

方法 (2):
           (setq sel(mapcar 'cadr (ssnamex  (ssget))))
           (setq lst (vl-remove (last sel) sel))

;-------------------------------------------------------------------------------------


再增加一個
;--------------------------------------------------------------------------------------
方法(3):
        (setq lst((lambda (x) (vl-remove(last x) x)) (mapcar 'cadr(ssnamex(ssget)))))







 楼主| 发表于 2022-4-22 08:39:18 | 显示全部楼层
lee50310 发表于 2022-4-21 11:20
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex  (ssget)))))
上面這式子中的  vl-remove-if  ...

方法真是多,多才多艺。
发表于 2022-4-22 13:07:04 | 显示全部楼层
选择集转表好像有风险?数量多于66000的时候会不会存在数据丢失?
发表于 2022-4-23 10:52:12 | 显示全部楼层
mokson 发表于 2022-4-20 11:30
感谢您,解决了我想要的问题。让我叫你一声大佬吧。

作为菜鸟的你,要有自己的思维,代码不是越短越好,很明显, (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex  (ssget)))))  这一句虽然能实现选择集转图元表,但是,效率比正常写法至少慢3倍,有何意义?是你的硬盘太小,装不下几句代码?建议用其他人贴出的任何写法!
发表于 2022-4-25 22:42:40 | 显示全部楼层
(setq lst(vl-remove-if-not '(lambda (x)(= (type x)'ENAME))(apply 'append(ssnamex ss))))
我都是这么用,忘记在哪里抄的了
发表于 2022-5-8 15:41:31 | 显示全部楼层
向大佬们学习,刚好用到这个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:33 , Processed in 0.178619 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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