lisp字符串分割提取燕秀工具箱里面的顶针名称型号

  • A+
所属分类:CAD二次开发

相信大家都对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
)

复制

 

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: