AutoCAD中块的计数与替换 |
|
盛青
块(BLOCK)是AutoCAD制图中一种重要的实体。在工程图纸中,许多已形成规范或标准的设备元件的图形 符号往往被制成图块,编入图库,以利于今后调用。有时候一张图纸中需要统计相同元件的个数,例如电气开 关、照明灯具等,或者应客户要求需要改变设备,以另一种设备替换,在设备元件较多的情况下,手工处理显 然不合适。笔者于是编写了以下两个小程序,供大家参考。程序在AutoCAD12或更高版本下均获得通过。
程序1:统计所选择的块的数量。 (defunc:count(/s1 s2 sum) (setq s1nil s2 nil sum0) (setq s1(ssget));选择一个块 (setq s1(ssnames10));获得实体名称 (setq s1(entgets1)) (setq s1(cdr(assoc2 s1)));获得块名 (setq s2(ss get″x″(list(cons0″INSERT″)(cons2s1))));将同名块加入选择集 (setq sum(ss length s2));统计数量 (terpri);输出结果 (princ″″) (princs1) (princ″″) (princsum) (princ″found.″) (princ))
程序2:以新块替换旧块,并保持插入点、比例、角度不变。 (defunc :replace(/en s0 s1s2 s3 s4) (setq s0 nil s1 nil s2 nil s3 nil s4 nil en nil) (setq s0(ss get));选择一个块 (setq en(ss names00));获得实体名称 (setq s0(en tgeten)) (setq s1(cdr(assoc2s0)));获得块名 (setq s2(cdr(assoc10s0)));获得插入点 (setq s3(cdr(assoc41s0)));获得比例因子 (setq s4(cdr(assoc50s0)));获得旋转角度 (setq s1(getstring″Replace blockname:″));输入新块名 (COMMAND ″ERASE″ en″″);删除旧块 (COMMAND ″INSERT″ s1 s2 s3 s3 s4);插入新块完成替换)
当然,在最新的AutoCAD14中的bonus工具里,有一个名为count.lsp的AutoLISP程序,可以统计出全图内 所有图块的数量,大家也可以尽情享用。 |