ayunger 发表于 2009-2-6 19:52:00

[求助]如何快速获取块中所包含的多层嵌套块名称

<p>如题所说为从多层嵌套块中提取某块其包含的所有子块名称问题,如:</p><p>例1: 某块A,其中包含多个实体,其中还有块B 和块C,其中B块又包含D、E、F块,C块包含G、H块。</p><p>例2:" 客厅"块中包含"电视"块、"茶几"块及"沙发"块,其中"电视"块包含"电视机"块和"电视柜"块;"茶几"块包含"中几"块和"角几"块;</p><p>"沙发"块中包含"三人沙发"块和"单人沙发"块,等等等等...</p><p>但是如何快速获得"客厅"块或"茶几"块各自中包含的所有子块的名称呢?请高手出手相助,非常感谢!</p>

caoyin 发表于 2009-2-7 09:58:00

(defun TEST (BlockName / NAME BLST)<br/>&nbsp; (vlax-for X<br/>&nbsp;&nbsp;&nbsp; (vla-item (vla-get-blocks<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-activedocument (vlax-get-acad-object))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BlockName<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if (= (vla-get-objectName X) "AcDbBlockReference")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq BLST (append BLST (list (setq NAME (vla-get-Name X))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LST&nbsp; (TEST NAME)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if LST (setq&nbsp; BLST (append BLST (list LST))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; BLST<br/>)

ayunger 发表于 2009-2-8 16:42:00

<p>非常感谢caoyin版主,祝你工作愉快!</p>
页: [1]
查看完整版本: [求助]如何快速获取块中所包含的多层嵌套块名称