找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1257|回复: 4

[编程申请]:我想实现这样一个功能,把dwg中的text输出到一个*.txt文件

  [复制链接]
发表于 2002-4-29 01:43:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
能把dwg中的text输出到一个*.txt文件吗?
问题的提出:
在平时写施工图设计说明时,我们可能要插入一些已经写好的文字说明图块,然后在acad中调整,大小、字体形式、字距、行距,很费事,特别是大批的文字:),如果能把dwg中的文字用一个程序全输出到*.txt文件中,然后修改,完后在插入dwg文件中,这样比较整齐、好看、省事。
希望大家帮忙解决!

上传一图纸说明,供大家编程测试:)(附赠一字体)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

发表于 2002-4-29 02:09:26 | 显示全部楼层
这种程序可以说也是多如牛毛了,到cadalog上找找吧...

我提供的那个PowerTools里面也有一个(是别人写的),实现了dwg中的Text和文本文件间的输入输出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-4-29 11:37:04 | 显示全部楼层
收集的lsp

  1. ;program 1
  2. (defun c:txttof        (/    mma  2pi        fn   ss          name str  str1 a    p0   x
  3.                  x0   y           y1        h    h1          hn   w    wn         n    n1   l
  4.                  lwz  lwz1 tfhz
  5.                 )
  6.   (if (and (setq name (getfiled "请输入文本文件的名称:" "" "" 1))
  7.            (princ "\n请选取要转换成文本文件的文字 <退出>: ")
  8.            (setq ss (ssget '((0 . "TEXT"))))
  9.       )
  10.     (progn
  11.       (sndtin)
  12.       (setq mma        1e-3
  13.             2pi        (+ pi pi)
  14.             hn        0
  15.             wn        0
  16.             n1        0
  17.             x0        1e9
  18.       )
  19.       (transws ss 0)
  20.       (while (slb_slb 0)
  21.         (setq a (gcolor 50))
  22.         (if (or (equal a 0 mma) (equal a 2pi mma))
  23.           (progn
  24.             (setq p0  (gcolor 10)
  25.                   str (gcolor 1)
  26.                   h   (gcolor 40)
  27.                   w   (* h (gcolor 41))
  28.                   n   (strlen str)
  29.             )
  30.             (if        (> (ascii str) 160)
  31.               (setq tfhz T
  32.                     n         (/ n 2)
  33.               )
  34.             )
  35.             (setq hn  (+ hn (* h n))
  36.                   wn  (+ wn (* w n))
  37.                   n1  (+ n1 n)
  38.                   x   (car p0)
  39.                   x0  (if (< x x0)
  40.                         x
  41.                         x0
  42.                       )
  43.                   lwz (cons (list (cadr p0) x str) lwz)
  44.             )
  45.           )
  46.         )
  47.       )
  48.       (setq h        (/ hn n1 2)
  49.             w        (/ wn
  50.                    n1
  51.                    (if tfhz
  52.                      2
  53.                      1
  54.                    )
  55.                 )
  56.             lwz        (reverse (apply 'getspt lwz))
  57.             fn        (open name "w")
  58.       )
  59.       (while lwz
  60.         (setq l           (car lwz)
  61.               y1   (car l)
  62.               lwz  (cdr lwz)
  63.               lwz1 (list (cdr l))
  64.               h1   0
  65.         )
  66.         (while (and (setq l (car lwz))
  67.                     (> h
  68.                        (setq y        (car l)
  69.                              h1        (- y1 y)
  70.                        )
  71.                     )
  72.                )
  73.           (setq        lwz  (cdr lwz)
  74.                 lwz1 (cons (cdr l) lwz1)
  75.           )
  76.         )
  77.         (setq h1   (fix (- (/ h1 h 3) 0.5))
  78.               lwz1 (apply 'mkpatb lwz1)
  79.               str1 ""
  80.               n1
  81.                    0
  82.         )
  83.         (foreach l lwz1
  84.           (setq        n   (fix (+ 0.5 (/ (- (car l) x0) w)))
  85.                 str (cadr l)
  86.           )
  87.           (cond
  88.             ((> n n1)
  89.              (repeat (- n n1)
  90.                (setq str1 (strcat str1 " "))
  91.              )
  92.             )
  93.             ((< n n1) (setq str1 (substr str1 1 n)))
  94.           )
  95.           (setq        str1 (strcat str1 str)
  96.                 n1   (strlen str1)
  97.           )
  98.         )
  99.         (write-line str1 fn)
  100.         (repeat        h1
  101.           (write-line "" fn)
  102.         )
  103.       )
  104.       (close fn)
  105.       (slb_sld)
  106.     )
  107.   )
  108.   (princ)
  109. )

  110. ;; program 2
  111. (defun c:errmir        (/ ss ss1 e e1 e71 na h a p1 p2 tf)
  112.   (princ "\n请选取要恢复镜象的文字或属性 <退出>: ")
  113.   (if (setq ss (ssget '((0 . "TEXT,INSERT"))))
  114.     (progn
  115.       (pouts "0")
  116.       (setvar "mirrtext" 0)
  117.       (transws ss 0)
  118.       (while (setq e (slb_slb 0))
  119.         (setq na  (gcolor 0)
  120.               e71 (gcolor 71)
  121.         )
  122.         (cond
  123.           ((= 0 e71)
  124.            (if (and (= 2 (gcolor 72))
  125.                     (= 2 (gcolor 73))
  126.                     (wcmatch (gcolor 1) "*m")
  127.                     (setq h   (gcolor 40)
  128.                           ss1 (ssget "X"
  129.                                      (list '(0 . "TEXT")
  130.                                            '(1 . "2, 2")
  131.                                            (cons 40 (/ h 2))
  132.                                      )
  133.                               )
  134.                     )
  135.                )
  136.              (progn
  137.                (setq p1        (gcolor 10)
  138.                      a        (gcolor 50)
  139.                      h        (* 2 h)
  140.                )
  141.                (transws ss1 1)
  142.                (while (and (setq e1 (slb_slb 1))
  143.                            (or (setq p2        (gcolor 10)
  144.                                      tf        (> (distance p1 p2) h)
  145.                                )
  146.                                (not (ssmemb e1 ss))
  147.                            )
  148.                       )
  149.                )
  150.                (if (not tf)
  151.                  (progn
  152.                    (setq p1 (polar p2 a h)
  153.                          p2 (polar p1 (+ a _pi2) 1e3)
  154.                    )
  155.                    (command ".mirror" e e1 "" p1 p2 "y")
  156.                  )
  157.                )
  158.              )
  159.            )
  160.           )
  161.           ((= "TEXT" na) (chslb 71 0))
  162.           ((= "INSERT" na)
  163.            (while (and (xdout)
  164.                        (= "ATTRIB" (gcolor 0))
  165.                   )
  166.              (chslb 71 0)
  167.            )
  168.            (entmod (list (cons -1 e)))
  169.           )
  170.         )
  171.       )
  172.       (mkstr2)
  173.     )
  174.   )
  175.   (princ)
  176. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-4-30 07:22:51 | 显示全部楼层
3月25日在AutoCAD软件使用技术贴过的程序,再贴一遍。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-28 07:39:53 | 显示全部楼层

  1. (DEFUN Qj (Q@ QQ) (CDR (ASSOC Q@ QQ)))
  2. (SETQ Ql (GETVAR "cmdecho"))
  3. (SETVAR "cmdecho" 0)
  4. (TEXTSCR)
  5. (WHILE (= NIL (FINDFILE "acad.out"))
  6.   (SETQ Q& (OPEN "acad.out" "w"))
  7.   (PRINC "3" Q&)
  8.   (CLOSE Q&)
  9. )
  10. (SETQ Q& (OPEN "acad.out" "r"))
  11. (SETQ Q1 (READ (READ-LINE Q&)))
  12. (CLOSE Q&)
  13. (IF (OR        (= Q1 3)
  14.         (= Q1 9)
  15.         (= Q1 27)
  16.         (= Q1 81)
  17.         (= Q1 243)
  18.         (= Q1 729)
  19.         (= Q1 2187)
  20.         (= Q1 6561)
  21.         (= Q1 19683)
  22.         (= Q1 59049)
  23.         (= Q1 177147)
  24.         (= Q1 531441)
  25.     )
  26.   (PROGN (IF (= Q1 3)
  27.            (SETQ Q# "1 time.")
  28.          )
  29.          (IF (= Q1 9)
  30.            (SETQ Q# "2 times.")
  31.          )
  32.          (IF (= Q1 27)
  33.            (SETQ Q# "3 times.")
  34.          )
  35.          (IF (= Q1 81)
  36.            (SETQ Q# "4 times.")
  37.          )
  38.          (IF (= Q1 243)
  39.            (SETQ Q# "5 times.")
  40.          )
  41.          (IF (= Q1 729)
  42.            (SETQ Q# "6 times.")
  43.          )
  44.          (IF (= Q1 2187)
  45.            (SETQ Q# "7 times.")
  46.          )
  47.          (IF (= Q1 6561)
  48.            (SETQ Q# "8 times.")
  49.          )
  50.          (IF (= Q1 19683)
  51.            (SETQ Q# "9 times.")
  52.          )
  53.          (IF (= Q1 59049)
  54.            (SETQ Q# "10 times.")
  55.          )
  56.          (IF (= Q1 177147)
  57.            (SETQ
  58.              Q#        (STRCAT
  59.                   "11 (bonus) times."
  60.                   "\nAfter this use TXT-OUT.LSP will become inoperative."
  61.                 )
  62.            )
  63.          )
  64.          (SETQ
  65.            Q0 (STRCAT "\n TXT-OUT.LSP has already been loaded " Q# " \n")
  66.          )
  67.   )
  68.   (SETQ        Q0
  69.          (STRCAT
  70.            "\n ** LSP program has already been loaded 10 times and is become inoperative ** ;\n"
  71.          )
  72.   )
  73. )
  74. (TEXTPAGE)
  75. (PRINC
  76.   (STRCAT
  77.     "\n This program may be loaded 10 times afterwhich it will become non-functioning. \n"
  78.     Q0
  79.     "\n If you find the TXT-OUT.LSP routine useful contact Peter Landeck at"
  80.     "\n [email]100314.1364@compuserve.com[/email] to order an unlimited use disk copy $20. \n"
  81.     "\n Other LSP routines may be found at:\n [url]http://ourworld.compuserve.com/homepages/PLANDECK[/url] \n"
  82.     "\n under FREELANCE...AUTOLISP\n"
  83.     "\n Press return key to continue. \n")
  84. )
  85. (GETINT)
  86. (SETQ Q& (OPEN "acad.out" "r"))
  87. (SETQ Q1 (READ (READ-LINE Q&)))
  88. (CLOSE Q&)
  89. (IF (OR        (= Q1 3)
  90.         (= Q1 9)
  91.         (= Q1 27)
  92.         (= Q1 81)
  93.         (= Q1 243)
  94.         (= Q1 729)
  95.         (= Q1 2187)
  96.         (= Q1 6561)
  97.         (= Q1 19683)
  98.         (= Q1 59049)
  99.         (= Q1 177147)
  100.         (= Q1 531441)
  101.     )
  102.   (PROGN (SETQ Q& (OPEN "acad.out" "w"))
  103.          (PRINC (* Q1 3) Q&)
  104.          (CLOSE Q&)
  105.          (GRAPHSCR)
  106.          (PROMPT "\nType TO to run TXT-OUT.LSP  \n")
  107.          (PROMPT "\nSelect text IN ORDER to write to file.  \n")
  108.          (DEFUN        C:TO (/ Q$ Q1 QO Q| FILE Q% Q?j Qjj Q@j QQj)
  109.            (PROMPT "\nSelect text IN ORDER to write to file.  \n")
  110.            (SETQ Q$ (SSGET))
  111.            (SETQ Q1 0)
  112.            (SETQ QO (SSLENGTH Q$))
  113.            (SETQ Q| (GETVAR "dwgname"))
  114.            (SETQ Q?j (STRCAT Q| ".TXT"))
  115.            (SETQ Q& (OPEN Q?j "w"))
  116.            (WHILE (< Q1 QO)
  117.              (SETQ Qjj (SSNAME Q$ Q1))
  118.              (SETQ Q1 (1+ Q1))
  119.              (SETQ Q@j (ENTGET Qjj))
  120.              (SETQ QQj (Qj 0 Q@j))
  121.              (IF (EQ "TEXT" (Qj 0 Q@j))
  122.                (WRITE-LINE (Qj 1 Q@j) Q&)
  123.              )
  124.              (PROMPT ".")
  125.            )
  126.            (CLOSE Q&)
  127.            (PROMPT (STRCAT "\nTxt file written to " Q?j "\n"))
  128.          )
  129.          (PRINC)
  130.          (SETVAR "cmdecho" Ql)
  131.   )
  132. )
  133. (PRINC)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-10-11 04:24 , Processed in 0.416538 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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