明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: xiaocainiao

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

[复制链接]
发表于 2023-12-17 15:43 | 显示全部楼层
本帖最后由 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
);求块中块        
 楼主| 发表于 2023-12-17 15:49 | 显示全部楼层
wzg356 发表于 2023-12-17 15:43
blk块名
blks块名的表
(mapcar (function(lambda(st)(setq blks(append(getblks st)blks))))blks)

谢谢!我试一下
发表于 2023-12-19 22:20 | 显示全部楼层
本帖最后由 1028695446 于 2023-12-26 08:44 编辑
xiaocainiao 发表于 2023-12-17 13:52
谢谢、我想要图块内子块的图元名、我先下载看下自己会不会改

已更新,,,,,,,,,,,,,
 楼主| 发表于 2023-12-25 14:17 | 显示全部楼层
1028695446 发表于 2023-12-19 22:20
已更新,,,,,,,,,,,,,

学习了、万分感谢
 楼主| 发表于 2023-12-27 10:10 | 显示全部楼层
1028695446 发表于 2023-12-19 22:20
已更新,,,,,,,,,,,,,

大神  程序里面好像少了ss-enlst这个函数
发表于 2023-12-27 10:14 | 显示全部楼层
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-27 11:00 | 显示全部楼层
1028695446 发表于 2023-12-27 10:14
;选择集与对象名表互转
(defun ss-enlst        (ss / enlst)
        (cond

谢谢、这回可以了
发表于 2023-12-27 14:52 | 显示全部楼层

你的问题看似简单,其实真有点复杂,说浅了,不顶用,说深了,目前你好像还不懂。建议先放弃。
先从了解“块”开始
发表于 2023-12-27 15:07 | 显示全部楼层
(setq ent (entget (ssname (ssget) 0)))
在图中抓一个块,看看图原表,看看内容
用entnext遍历块中子项,依次提取
修改后用entmode更新
大概如此吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:30 , Processed in 0.204897 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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