用lisp怎么提取cad中文字-内容-*通用符匹配(值 :设定)生成excel文件
1个回答
2014-10-12 · 知道合伙人软件行家
关注
展开全部
(defun C:WZ ( / n ss &kw L ff %k %k1 %k2 %k3 %k4 %k5 %k6);批量选择文字到记事本
(setvar "cmdecho" 0) ;;关闭变量
(setvar "blipmode" 0);;关闭控制点
(vl-load-com) ;;加载vlax扩展函数
(setq n 0 ss '()) ;;取得一个空表
(princ "\n请选择文字")
(setq &kw (ssget '((0 . "TEXT,MTEXT") (1 . "*K*"))));选择文字,文字内容有字母K
(if (/= &kw nil);;如果有选择了文字
(progn
(setq L (sslength &kw)
ff (open "d://文字到表格.xls" "w");建立文本;W会把文本里面的内容清除
);;建立的文本在D盘就可以看到
(repeat L
(setq &kw1 (entget (ssname &kw n))
%k1 (cdr (assoc 10 &kw1)) ;;取得文字坐标
%k2 (cdr (assoc 1 &kw1)) ;;取得文字内容
ss (cons (list %k1 %k2) ss);;加入选择集
n (+ n 1)
)
)
(setq ss (vl-sort ss (function (lambda (x y)(< (car (car x)) (car (car y)))))));;X排序
(setq ss (vl-sort ss (function (lambda (x y)(> (cadr (car x)) (cadr (car y)))))));;Y排序
(setq &kw1 (nth 0 ss)
%k1 (car (car &kw1));;取得第一个文字X坐标
%k2 (cadr (car &kw1));;取得Y坐标
%k3 (cadr &kw1);;取得文字内容
n 1
)
(repeat (- L 1)
(setq &kw2 (nth n ss);;取得第二个文字
%k4 (car (car &kw2));;取得X坐标
%k5 (cadr (car &kw2));;取得Y坐标
%k6 (cadr &kw2);;取得内容
%k (- %k2 %k5);;Y高度比较
n (+ n 1)
)
(if (> %k 20)
(progn
(princ %k3 ff);用princ写入的话,就是这个格式
(princ "\n" ff);这个格式就换行
(setq %k1 %k4 %k2 %k5 %k3 %k6)
)
)
(if (and (<= %k 20) (< %k1 %k4))
(progn
(princ %k3 ff)
(princ "\t" ff);这个格式就是在同一行下一个内容
(setq %k1 %k4 %k2 %k5 %k3 %k6)
)
)
(if (and (<= %k 20) (> %k1 %k4))
(progn
(princ %k6 ff)
(princ "\t" ff)
)
)
)
(princ %k3 ff)
(close ff);;关闭文本(结束后必须关闭)
)
)
(prin1);;结束
)
(prompt "\n《C:WZ》文字写入表格")
(prin1)
;以上复制记事本以(.lsp)为后缀命名。这个程序就是一个写入表格的示范
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询