求教用ssget如何获取嵌套块中子块的图元名
求教一下!如果用SSGET选择图块、如何获取每个块中子块的图元名?我知道用nentsel可以获取嵌套块中子块的图元名、如下代码:
(setq en (nentsel "\n拾取块内图元:"))
(setq ent (cadddr en))
但是用ssget就不知道怎么操作了
本帖最后由 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
);求块中块 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))
)
)
) 对你来说超纲了
放弃吧 masterlong 发表于 2023-12-16 16:30
对你来说超纲了
放弃吧
要这么复杂吗 你可以搜一下
框选复制块内图元
我印象中论坛有但能用的极少
而且并不完美 块内图元无法加入到选择集。
所以也无法用ssget 取到块内图元。
可以用遍历块定义内图元的方法取到块内图元。
如果知道块名,可以使用 @lisp函数 (block:ent-list "块名")取得块内图元列表。 masterlong 发表于 2023-12-16 16:55
你可以搜一下
框选复制块内图元
我印象中论坛有但能用的极少
我不是要框选复制块内图元、就是想获取块内的子块图元名、想批量对块进行处理、普通图元不考虑 遍历子块 计算子块的包围框的点是否在ssget的包围框内? 本帖最后由 1028695446 于 2023-12-16 17:56 编辑
你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了 1028695446 发表于 2023-12-16 17:53
你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了
谢谢、我想要图块内子块的图元名、我先下载看下自己会不会改 1028695446 发表于 2023-12-16 17:53
你要图块名还是图块的图元名?附件是获取图块名的,想要图元名,稍微改下就行了
求教大神能不能改个获取子块图元名的程序、水平有限、你发的这个不会改
页:
[1]
2