用lisp怎么提取cad中文字-内容-*通用符匹配(值 :设定)生成excel文件

 我来答
朱06CAD
2014-10-12 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18069
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(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)为后缀命名。这个程序就是一个写入表格的示范

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式