- A+
相信大家都对CAD燕秀工具箱并不陌生,都知道里面有个功能就是一件统计顶针坐标,统计好后自动识别顶针大小和顶针镶针的型号。它的工作原理就是读取块的名称,因为名称里面包含,是顶针还是镶针还是螺丝。或者是什么型号,在做块之前,已经把型号已名称的方式记录下来了,因为名称只能有一个,所以,他的名称用一个下划线隔开来的,也可以说是分割符号,下次读取的时候只需读名称分割一下,就知道是什么类别和型号。
提取块的名称如 (2 . "epin_ejp_7");(2 . "图层_类别_型号"),分割符就是 "_"
上原代码例子吧
第一步提取块的名称,
(defun c:kk(/ m1 m2)
(setq ss(ssget))
(setq q1(ssname ss 0));取到选集中的第一个图源
(setq ee1 (entget q1))
(setq q2 (cdr (assoc 2 ee1)))
(setq q3 (cdr (assoc 8 ee1)))
(setq m1(vl-string->fenge q2 "_"));开始分割
(princ m1)
(princ )
)
复制
第二步,把字符串名称发到,字符串分割函数开始分割
;--------字符串分割-------
;string0 字符串
;ffgg 分割符
; 例子:(vl-string->fenge "a_b_c_d" "_");分割后返回一个表(a b c d)
(defun vl-string->fenge(string0 ffgg / m1 m2)
(setq string1 (strlen string0)
string0 (vl-string->list string0);字符转换数组表
ffgg(car(vl-string->list ffgg)))
(repeat string1
(setq string2(car string0)
string0(cdr string0))
(if(= ffgg string2)
(setq m1(cons (vl-list->string (reverse m2)) m1)
m2 NIL)
(setq m2(cons string2 m2))
)
)
(setq m1(append(reverse m1) )
m1(append m1 (LIST(vl-list->string M2))));换数组表转字符
m1
)
复制