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
);求块中块 wzg356 发表于 2023-12-17 15:43
blk块名
blks块名的表
(mapcar (function(lambda(st)(setq blks(append(getblks st)blks))))blks)
谢谢!我试一下 本帖最后由 1028695446 于 2023-12-26 08:44 编辑
xiaocainiao 发表于 2023-12-17 13:52
谢谢、我想要图块内子块的图元名、我先下载看下自己会不会改
已更新,,,,,,,,,,,,, 1028695446 发表于 2023-12-19 22:20
已更新,,,,,,,,,,,,,
学习了、万分感谢 1028695446 发表于 2023-12-19 22:20
已更新,,,,,,,,,,,,,
大神程序里面好像少了ss-enlst这个函数 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))
)
)
) 1028695446 发表于 2023-12-27 10:14
;选择集与对象名表互转
(defun ss-enlst (ss / enlst)
(cond
谢谢、这回可以了 :dizzy:
你的问题看似简单,其实真有点复杂,说浅了,不顶用,说深了,目前你好像还不懂。建议先放弃。
先从了解“块”开始 (setq ent (entget (ssname (ssget) 0)))
在图中抓一个块,看看图原表,看看内容
用entnext遍历块中子项,依次提取
修改后用entmode更新
大概如此吧
页:
1
[2]