明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3070|回复: 12

[求助]请帮忙用LISP程序编写,先谢了!!!已解决

  [复制链接]
发表于 2004-10-13 16:21:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-10-15 14:05:45 编辑

1、已知条件:AutoCAD中存在一组文本文字。



行数至少1行;


每一行有4列数据(文本文字)<注意:每行中某一列可能无文本文字>(其中,每个数据均用TEXT写入,且对齐方式均为左对齐;


行间距为7;


列间距为30;


举例说明(下面文字格式视同AutoCAD窗口格式,上面为最后行文字,最下面为第一行,左边为第1列,最右边为第4列):


明          经          通          道


Au                                 to                                                                                                        Lisp


2                                                 0                                                         0                                                 4


学    习


二  次  开  发


2、LISP程序要求:


窗选文字后,输出abc.dat(或abc.txt)文本文件


3、abc.dat(或abc.txt)文本文件内容格式如下:


(二 次 开 发)


(学 "" 习 "")


(2 0 0 4)


(Au to "" Lisp)


(明 经 通 道)


4、感谢能为我编写此程序的各位朋友,来这里,我们相信你!!!!
发表于 2004-10-13 18:12:00 | 显示全部楼层
这倒像教课书上的一道练习题。
 楼主| 发表于 2004-10-14 08:08:00 | 显示全部楼层
这个程序对我来说太需要了


我知道咱们的能力的,一定会解决这个问题的,再等等看


我对花费很多时间,为我解决这个程序的各位表示感谢!!!!!
发表于 2004-10-14 08:18:00 | 显示全部楼层

回复

把你写好的dwg数据贴上来,


数据格式讲了半天还是不如发上来明了!


无文本格式是不是是一个 TestString = " ", 等等
 楼主| 发表于 2004-10-14 08:43:00 | 显示全部楼层
无文本格式 就是在该行该列没有文字 [/URL]


文件中仅列出5行文字,其中文字最少为1行,最下面的为第1行,最左边的为第1列

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-10-14 09:25:00 | 显示全部楼层
(二 次 开 发)



(学 "" 习 "")


(2 0 0 4)


(Au to "" Lisp)


(明 经 通 道)


格式不规范啊.如 (明 经 通 道) ,明是一个符号(变量),到了(Au to "" Lisp), au to lisp


都是变量的形式,而 "" 又是字符. 这样的表你怎么利用?


如果写到文本,提取出来变成"(明 经 通 道)" 而(Au to "" Lisp)变成 "(Au to \" \" Lisp)"


这真的是你想要的么?
 楼主| 发表于 2004-10-14 11:27:00 | 显示全部楼层
"" 这两个字符代表一个空格位



(学 "" 习 "")


即表示第3列及第4列没有有字符



要是编程输出""有难度的话,可以输出


(学 nil 习 nil)




再次感谢各位
 楼主| 发表于 2004-10-14 14:18:00 | 显示全部楼层
再等等,我们相信这版块有这个实力解决它的
 楼主| 发表于 2004-10-15 09:14:00 | 显示全部楼层
不会没有人肯帮我吧!!!!
发表于 2004-10-15 12:05:00 | 显示全部楼层
本帖最后由 作者 于 2004-10-15 13:40:28 编辑

文件存在c:\abc.txt下
  1. (defun c:test( / ss i j n entlst ent ents ents2 line_lst lst filename f xmin m)
  2.    (setq ss (ssget '((0 . "TEXT"))))
  3.    (setq i 0)
  4.    (repeat (sslength ss)
  5.        (setq entlst (append entlst (list (ssname ss i))))
  6.        (setq i (1+ i))
  7.    )
  8.    (setq entlst (vl-sort entlst '(lambda(e1 e2) (<
  9.              (cadr (assoc 10 (entget e1)))
  10.              (cadr (assoc 10 (entget e2)))
  11.        ))))
  12.    (setq entlst (vl-sort entlst '(lambda(e1 e2) (<
  13.              (caddr (assoc 10 (entget e1)))
  14.              (caddr (assoc 10 (entget e2)))
  15.        ))))
  16.    (setq i 0 n (length entlst))
  17.    (while (< i (1- n))
  18.        (setq ent (nth i entlst))
  19.        (setq line_lst nil)
  20.        (setq line_lst (append line_lst (list ent)))
  21.        (setq ents (entget ent))
  22.        (setq j (1+ i) m t)      
  23.        (while m
  24.            (setq ent (nth j entlst))
  25.            (setq ents2 (entget ent))           
  26.            (if (equal (caddr (assoc 10 ents)) (caddr (assoc 10 ents2)) 0.001)
  27.   (setq line_lst (append line_lst (list ent)))
  28.   (progn
  29.      (setq lst (append lst (list line_lst)))
  30.      (setq m nil)
  31.      (setq i j)
  32.   )
  33.            )
  34.            (setq j (1+ j))
  35.            (if (>= j n)
  36.   (progn (setq lst (append lst (list line_lst))) (setq m nil) (setq i j))
  37.            )
  38.        )
  39.    )
  40.    (setq lst (mapcar '(lambda(x)
  41.                  (mapcar '(lambda(x / ents)
  42.            (setq ents (entget x)) (cons (cadr (assoc 10 ents)) (cdr (assoc 1 ents))))
  43.                    x))
  44.            lst))
  45.    (setq xmin (apply 'min (mapcar '(lambda(x) (caar x)) lst)))
  46.    (setq filename "c:\\abc.txt")
  47.    (setq f (open filename "w"))
  48.    (mapcar '(lambda(x / i item str m)
  49.            (setq i 0 m 0)
  50.            (setq str "")
  51.            (repeat 4
  52.                (setq item (nth (- i m) x))
  53.                (if (and item (equal (- (car item) xmin) (* i 30.0) 0.001))
  54.      (setq str (strcat str (cdr item) "\t"))
  55.      (progn
  56.          (setq str (strcat str """" "\t"))
  57.          (setq m (1+ m))
  58.      )     
  59.                )
  60.                (setq i (1+ i))
  61.            )
  62.            (write-line (strcat "(" str ")")  f)           
  63.        );lambda
  64.      lst
  65.    );mapcar
  66.    (close f)
  67.    (princ)               
  68. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-18 11:48 , Processed in 0.182161 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表