找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1844|回复: 9

(完成)[编程申请]:求将WORD等字处理软件里面的文字粘贴到ACAD里面的程序...

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2002-8-3 17:37:20 | 显示全部楼层 |阅读模式

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

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

×
用了前几天晓东写的把ACAD里面的文字拷贝到剪切板的程序,很方便,谢谢晓东。

提个申请,把WORD里面的文字先拷贝的剪切板,然后在ACAD里面,把剪切板里面的文字用TEXT给写到ACAD里面的程序,要求可以判断换行,指定字高等等。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-8-3 19:27:27 | 显示全部楼层
;|
   命令:txt2clip
   
   功能:该程序可以把ACAD的字符(text)实体拷贝到剪切板上,一行一个字符串。
        
   命令:clip2txt

   功能:该程序可以把剪切板上的字符拷贝到ACAD(text)实体,和原行字符一致。

   程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
          LISP目录,自己加入到菜单里面就可以非常方便的使用了。
          关于程序的建议请到“晓东CAD空间-编程申请”论坛
          http://www.xdcad.net/forum留言   
   |;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-3 19:52:08 | 显示全部楼层

Re: [编程申请]:求将WORD等字处理软件里面的文字粘贴到ACAD里面的程序...

最初由 marting 发布
[B]用了前几天晓东写的把ACAD里面的文字拷贝到剪切板的程序,很方便,谢谢晓东。

提个申请,把WORD里面的文字先拷贝的剪切板,然后在ACAD里面,把剪切板里面的文字用TEXT给写到ACAD里面的程序,要求可以判断换行,指... [/B]


;|
   命令:txt_getclip
   
   功能:读入系统剪切板中的文字写到ACAD中,方便大家在WORD等字处理软件写好文字排好版后写入ACAD
   
   说明:1、程序可以处理多行文本、可以控制行距、字高、是否保留文字前面的空格
        2、程序可以判断字处理软件中的回车换行符,多个空行处理后只保留一个换行
        3、任何时候文字后面的空格都去除掉。
        4、程序使用当前的字型设置写文字,所以请朋友用本程序前设置好字型。
        5、文字以0度方向写

        程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
        LISP目录,自己加入到菜单里面就可以非常方便的使用了。
        关于程序的建议请到“晓东CAD空间-编程申请”论坛
        http://www.xdcad.net/forum留言         
|;


  1. [FONT=courier new]
  2. (defun c:txt_getclip (/ txt tf pt thigh tintv box n)
  3.   (if (not $txt_clip_thigh)
  4.     (setq $txt_clip_thigh 600)
  5.   )
  6.   (if (not $txt_clip_intv)
  7.     (setq $txt_clip_intv 5)
  8.   )
  9.   (if (not $txt_clip_prefix)
  10.     (setq $txt_clip_prefix t)
  11.   )
  12.   (if (setq txt (xdrx_getclipboard))
  13.     (progn
  14.       (setq tf t)
  15.       (while tf
  16.         (prompt (strcat "\n{当前字高:" (rtos $txt_clip_thigh 2 2)
  17.                         " | 行距系数:" (itoa $txt_clip_intv) " | "
  18.                         (if $txt_clip_prefix
  19.                           "保留前导空格"
  20.                           "去除前导空格"
  21.                         ) " }"
  22.                 )
  23.         )
  24.         (initget 128 "High Intv Space")
  25.         (setq pt (getpoint "\n请点取文字的插入点[字高:High / 行距系数:Intv / 前导空格:Space]<退出>:"))

  26.         (cond
  27.           ((= (type pt) 'LIST)
  28.             (setq tf nil)
  29.           )
  30.           ((= pt "High")
  31.             (if (setq thigh (getreal (strcat "\n请输入字高<" (rtos $txt_clip_thigh
  32.                                                                    2 2
  33.                                                              ) ">:"
  34.                                      )
  35.                             )
  36.                 )
  37.               (setq $txt_clip_thigh thigh)
  38.             )
  39.           )
  40.           ((= pt "Intv")
  41.             (initget 2)
  42.             (if (setq tintv (getint (strcat "\n请输入行距系数(相对字高的几分之几)<"
  43.                                             (itoa $txt_clip_intv) ">:"
  44.                                     )
  45.                             )
  46.                 )
  47.               (setq $txt_clip_intv tintv)
  48.             )
  49.           )
  50.           ((= pt "Space")
  51.             (if (= 1 (setq tspace (xdrx_yesorno "\n是否保留前导空格" 1)))
  52.               (setq $txt_clip_prefix t)
  53.               (setq $txt_clip_prefix nil)
  54.             )
  55.           )
  56.           ((= (type pt) 'STR))
  57.           (t
  58.             (exit)
  59.           )
  60.         )
  61.       )
  62.       (setq txt (xdrx_string_tok txt "\r\n"))
  63.       (foreach n txt
  64.         (setq n (xdrx_string_trimright n))
  65.         (if (not $txt_clip_prefix)
  66.           (setq n (xdrx_string_TrimLeft n))
  67.         )
  68.         (command "._text" pt $txt_clip_thigh "" n)
  69.         (setq box (xdrx_entity_box (entlast))
  70.               pt (mapcar
  71.                    '-
  72.                    (mapcar
  73.                      '+
  74.                      (mapcar
  75.                        '-
  76.                        (car box)
  77.                        (last box)
  78.                      )
  79.                      pt
  80.                    )
  81.                    (list 0.0 (/ $txt_clip_thigh $txt_clip_intv) 0.0)
  82.                  )
  83.         )
  84.       )
  85.     )
  86.   )
  87.   (prompt "\n当前系统剪切板没有数据或者非可识别格式!")
  88.   (princ)
  89. )
  90. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-21 13:55:12 | 显示全部楼层
晓东,谢谢你的工具箱
它解决了很多我们实际使用中的问题
提供了很多方便

但还有个小小的问题
使用读剪贴板功能的时候
要精确控制行距几乎是不可能的,看起来用到了textbox的尺寸,这不是一个直观的数据
指定字高可以但指定两行文字插入点间距就不得齐门而入了,所以只好把你这部分的程序作了一点小小的改动,因为是自己用的,所以直接就用您原来的程序改了,在指定间距时输入的值将直接作为插入点间距,这样在写入到固定格式的材料表中时方便一点。
我的修改后的lsp贴在下面,可能不入法眼吧,不过也许有人用得着。

在此也提一个小小的请求,希望下一版修订的时候,能在读剪贴板功能中除了指定行距系数外,能够加入直接指定行距的选项,不胜感激 :)


  1.   [FONT=courier new]
  2. (defun c:txt_getclip (/ txt tf pt thigh tintv box n)
  3.   (if (not $txt_clip_thigh)
  4.     (setq $txt_clip_thigh 600)
  5.   )
  6.   (if (not $txt_clip_intv)
  7.     (setq $txt_clip_intv 5)
  8.   )
  9.   (if (not $txt_clip_prefix)
  10.     (setq $txt_clip_prefix t)
  11.   )
  12.   (if (setq txt (xdrx_getclipboard))
  13.     (progn
  14.       (setq tf t)
  15.       (while tf
  16.         (prompt (strcat "\n{当前字高:" (rtos $txt_clip_thigh 2 2)
  17.                         " | 行距系数:" (itoa $txt_clip_intv) " | "
  18.                         (if $txt_clip_prefix
  19.                           "保留前导空格"
  20.                           "去除前导空格"
  21.                         ) " }"
  22.                 )
  23.         )
  24.         (initget 128 "High Intv Space")
  25.         (setq pt (getpoint "\n请点取文字的插入点[字高:High / 行距系数:Intv / 前导空格:Space]<退出>:"))

  26.         (cond
  27.           ((= (type pt) 'LIST)
  28.             (setq tf nil)
  29.           )
  30.           ((= pt "High")
  31.             (if (setq thigh (getreal (strcat "\n请输入字高<" (rtos $txt_clip_thigh
  32.                                                                    2 2
  33.                                                              ) ">:"
  34.                                      )
  35.                             )
  36.                 )
  37.               (setq $txt_clip_thigh thigh)
  38.             )
  39.           )
  40.           ((= pt "Intv")
  41.             (initget 2)
  42.             (if (setq tintv (getint (strcat "\n请输入行距系数(相对字高的几分之几)<"
  43.                                             (itoa $txt_clip_intv) ">:"
  44.                                     )
  45.                             )
  46.                 )
  47.               (setq $txt_clip_intv tintv)
  48.             )
  49.           )
  50.           ((= pt "Space")
  51.             (if (= 1 (setq tspace (xdrx_yesorno "\n是否保留前导空格" 1)))
  52.               (setq $txt_clip_prefix t)
  53.               (setq $txt_clip_prefix nil)
  54.             )
  55.           )
  56.           ((= (type pt) 'STR))
  57.           (t
  58.             (exit)
  59.           )
  60.         )
  61.       )
  62.       (setq txt (xdrx_string_tok txt "\r\n"))
  63.       (foreach n txt
  64.         (setq n (xdrx_string_trimright n))
  65.         (if (not $txt_clip_prefix)
  66.           (setq n (xdrx_string_TrimLeft n))
  67.         )
  68.         (command "._text" pt $txt_clip_thigh "" n)
  69.          (setq pt (mapcar
  70.                    '-
  71.                      pt
  72.                    (list 0.0 (* 1.0 $txt_clip_intv) 0.0)
  73.                  )
  74.         )
  75.       )
  76.     )
  77.     (prompt "\n当前系统剪切板没有数据或者非可识别格式!")
  78.   )
  79.   (princ)
  80. )

  81.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-25 21:48:03 | 显示全部楼层
很好用,我以前都用asctext.lsp,现在用这个方便多了,可以象在草稿纸上随写随输入cad。
楼上的John改输入行间距,不错!
但是中文提示都没有改,我改了过来,并试运行通过,代码如下:

  1. <normalfont>
  2. (defun c:txt_getclip (/ txt tf pt thigh tintv box n)
  3.   (if (not $txt_clip_thigh)
  4.     (setq $txt_clip_thigh 400)
  5.   )
  6.   (if (not $txt_clip_intv)
  7.     (setq $txt_clip_intv 700)
  8.   )
  9.   (if (not $txt_clip_prefix)
  10.     (setq $txt_clip_prefix t)
  11.   )
  12.   (if (setq txt (xdrx_getclipboard))
  13.     (progn
  14.       (setq tf t)
  15.       (while tf
  16.         (prompt (strcat "\n{当前字高:" (rtos $txt_clip_thigh 2 2)
  17.                         " | 行间距:" (itoa $txt_clip_intv) " | "
  18.                         (if $txt_clip_prefix
  19.                           "保留前导空格"
  20.                           "去除前导空格"
  21.                         ) " }"
  22.                 )
  23.         )
  24.         (initget 128 "High Intv Space")
  25.         (setq pt (getpoint "\n请点取文字的插入点[字高:High / 行间距:Intv / 前导空格:Space]<退出>:"))

  26.         (cond
  27.           ((= (type pt) 'LIST)
  28.             (setq tf nil)
  29.           )
  30.           ((= pt "High")
  31.             (if (setq thigh (getreal (strcat "\n请输入字高<" (rtos $txt_clip_thigh
  32.                                                                    2 2
  33.                                                              ) ">:"
  34.                                      )
  35.                             )
  36.                 )
  37.               (setq $txt_clip_thigh thigh)
  38.             )
  39.           )
  40.           ((= pt "Intv")
  41.             (initget 2)
  42.             (if (setq tintv (getint (strcat "\n请输入行间距<"
  43.                                             (itoa $txt_clip_intv) ">:"
  44.                                     )
  45.                             )
  46.                 )
  47.               (setq $txt_clip_intv tintv)
  48.             )
  49.           )
  50.           ((= pt "Space")
  51.             (if (= 1 (setq tspace (xdrx_yesorno "\n是否保留前导空格" 1)))
  52.               (setq $txt_clip_prefix t)
  53.               (setq $txt_clip_prefix nil)
  54.             )
  55.           )
  56.           ((= (type pt) 'STR))
  57.           (t
  58.             (exit)
  59.           )
  60.         )
  61.       )
  62.       (setq txt (xdrx_string_tok txt "\r\n"))
  63.       (foreach n txt
  64.         (setq n (xdrx_string_trimright n))
  65.         (if (not $txt_clip_prefix)
  66.           (setq n (xdrx_string_TrimLeft n))
  67.         )
  68.         (command "._text" pt $txt_clip_thigh "" n)
  69.          (setq pt (mapcar
  70.                    '-
  71.                      pt
  72.                    (list 0.0 (* 1.0 $txt_clip_intv) 0.0)
  73.                  )
  74.         )
  75.       )
  76.     )
  77.     (prompt "\n当前系统剪切板没有数据或者非可识别格式!")
  78.   )
  79.   (princ)
  80. )
  81. </font>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-27 22:05:50 | 显示全部楼层
众人拾柴火焰高,我也来添点力!
将文本文件中的文字插入AutoCAD图形中。
;read text from file
(defun C:RTXT ()
    (setq oldvalue (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)
    (setq name (getstring "\n输入文本文件名:"))
    (setq sp (getpoint "\n输入插入图形中的起点:"))
    (setq ts (getdist sp "\n输入字符高:"))
    (setq a  (* 180. (/ (getangle sp "\nRotation 输入字符串角度:") pi)))
    (setq txt (open name "r"))
    (setq dt (read-line txt))
;;  (setq lns (getdist sp "\nEnter line spacing in drawing units:"))
    (setq lns (* 1.333333 ts))
    (setq ls (rtos lns 2 2))
    (setq b (rtos (+ -90. a) 2 2))
    (setq ls (strcat "@" ls "<" b))
    (command "text" sp ts a dt)
    (while (/= dt nil)
         (setq dt (read-line txt))
        (command "text" ls ts a dt)
    )
    (close txt)
    (command "redraw")
    (setvar "CMDECHO" oldvalue)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-29 11:03:36 | 显示全部楼层
小弟汗颜
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-6 16:08:53 | 显示全部楼层
需要那么复杂吗?
在CAD中线“选择性粘贴”,在弹出的对话框中选择“autocad图元”即可.
该操作还可以将EXCEL表格拷贝到CAD中!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-9 09:30:42 | 显示全部楼层
怎样修改一下,直接应用LSP程序文件,不需要加载入晓东工具箱呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-9 10:19:07 | 显示全部楼层

可否不加入晓东工具箱直接用

最初由 zwx123 发布
[B]怎样修改一下,直接应用LSP程序文件,不需要加载入晓东工具箱呢? [/B]



我安不了晓东工具箱,同楼上建议一样,哪位高手再改改?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 22:54 , Processed in 0.477273 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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