明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1462|回复: 18

[提问] 求教用ssget如何获取嵌套块中子块的图元名

[复制链接]
发表于 2023-12-16 16:24:49 | 显示全部楼层 |阅读模式
求教一下!如果用SSGET选择图块、如何获取每个块中子块的图元名?


我知道用nentsel可以获取嵌套块中子块的图元名、如下代码:
(setq en (nentsel "\n拾取块内图元:"))
(setq ent (cadddr en))


但是用ssget就不知道怎么操作了
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-17 15:43:34 | 显示全部楼层
本帖最后由 wzg356 于 2023-12-17 15:44 编辑


blk块名
blks块名的表
(mapcar (function(lambda(st)(setq blks(append(getblks st)blks))))blks)
(defun getblks (blk / e dxf lst blk2)
        (setq e(tblobjname "block" blk) lst(list blk))               
        (while(setq e(entnext e))                        
                (and(setq dxf(entget e))                                
                        (wcmatch(cdr(assoc 0 dxf)) "INSERT")
                        (setq blk2(cdr(assoc 2 dxf)))
                        (setq lst(cons blk2 lst))
                        (setq lst(append(getblks blk2)lst))
                )
        )lst
);求块中块        
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-27 10:14:34 | 显示全部楼层
xiaocainiao 发表于 2023-12-27 10:10
大神  程序里面好像少了ss-enlst这个函数

;选择集与对象名表互转
(defun ss-enlst        (ss / enlst)
        (cond
                ((= (type ss) 'PICKSET)
                        (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex SS)))
                )
                ((= (type ss) 'LIST)
                        (setq enlst (ssadd))
                        (last (mapcar '(lambda (x) (ssadd x enlst)) ss))
                )
        )
)
发表于 2023-12-16 16:30:59 | 显示全部楼层
对你来说超纲了
放弃吧
 楼主| 发表于 2023-12-16 16:32:34 | 显示全部楼层
masterlong 发表于 2023-12-16 16:30
对你来说超纲了
放弃吧

要这么复杂吗
发表于 2023-12-16 16:55:04 | 显示全部楼层
你可以搜一下
框选复制块内图元
我印象中论坛有但能用的极少
而且并不完美
发表于 2023-12-16 17:19:33 | 显示全部楼层
块内图元无法加入到选择集。
所以也无法用ssget 取到块内图元。
可以用遍历块定义内图元的方法取到块内图元。

如果知道块名,可以使用 @lisp函数 (block:ent-list "块名")  取得块内图元列表。
 楼主| 发表于 2023-12-16 17:22:28 | 显示全部楼层
masterlong 发表于 2023-12-16 16:55
你可以搜一下
框选复制块内图元
我印象中论坛有但能用的极少

我不是要框选复制块内图元、就是想获取块内的子块图元名、想批量对块进行处理、普通图元不考虑
发表于 2023-12-16 17:35:31 | 显示全部楼层
遍历子块 计算子块的包围框的点是否在ssget的包围框内?
发表于 2023-12-16 17:53:24 | 显示全部楼层
本帖最后由 1028695446 于 2023-12-16 17:56 编辑

你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
tigcat + 1 + 5 很给力!

查看全部评分

 楼主| 发表于 2023-12-17 13:52:32 | 显示全部楼层
1028695446 发表于 2023-12-16 17:53
你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了

谢谢、我想要图块内子块的图元名、我先下载看下自己会不会改
 楼主| 发表于 2023-12-17 14:56:21 | 显示全部楼层
1028695446 发表于 2023-12-16 17:53
你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了

求教大神能不能改个获取子块图元名的程序、水平有限、你发的这个不会改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 02:00 , Processed in 0.162128 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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